blob: 12eac1e6fd60e0ccb0e003b526680f2834312bf6 [file] [log] [blame] [edit]
#
# Makefile for slurm API library
AUTOMAKE_OPTIONS = foreign
INCLUDES = -I$(top_srcdir) $(BG_INCLUDES)
if WITH_GNU_LD
VERSION_SCRIPT = \
version.map
OTHER_FLAGS = \
-Wl,--version-script=$(VERSION_SCRIPT)
PMI_VERSION_SCRIPT = \
pmi_version.map
PMI_OTHER_FLAGS = \
-Wl,--version-script=$(PMI_VERSION_SCRIPT)
endif
# libslurm version information :
#
# Update META file information before a public release only!
#
# Note that libtool builds libslurm.so.<major>.<age>.<rev>
# where major = API_MAJOR = (API_CURRENT - API_AGE)
# and age = API_AGE
# and rev = API_REVISION
#
# The following examples are based upon initial values of API_CURRENT = 6,
# API_AGE = 4, API_REVISION = 6.
#
# If any interfaces have been added: increment API_CURRENT, increment API_AGE,
# and set API_REVISION = 0 (e.g. libslurm.so.2.4.6 -> libslurm.so.2.5.0)
#
# If any interfaces have been removed: increment API_CURRENT, set API_AGE = 0,
# and set API_REVISION = 0 (e.g. libslurm.so.2.4.6 -> libslurm.so.7.0.0)
#
# If any interfaces have changed: increment API_CURRENT only
# (e.g. libslurm.so.2.4.6 -> libslurm.so.3.4.6)
#
# If the interfaces have not changed, but underlying code has changed at all:
# increment API_REVISION only (e.g. libslurm.so.2.4.6 -> libslurm.so.2.4.7)
#
current = $(SLURM_API_CURRENT)
age = $(SLURM_API_AGE)
rev = $(SLURM_API_REVISION)
# libpmi version informaiton
#
# The libpmi interface shouldn't be changing any time soon, so for SLURM's
# libpmi only the library REVISION and AGE should change (and it is debatable
# whether these parts of the .so version should change).
#
# REVISION is changed if the source of the library has changed so linkers
# prefer the new version.
# AGE is changed if interfaces are added but compatibility is not broken.
libpmi_current = 0
libpmi_age = 0
libpmi_rev = 0
lib_LTLIBRARIES = libslurm.la libpmi.la
# BUILT_SOURCES tells automake that when "make" is called, these targets
# need to be built before anything else. For instance, this takes care
# of libpmi.la's dependency on libslurm.la, as long as you use "make"
# and NOT "make libpmi.la".
BUILT_SOURCES = $(VERSION_SCRIPT) $(PMI_VERSION_SCRIPT) libslurm.la
# Note that libslurmhelper is mostly the same as libslurm, except that
# it exports ALL symbols used by the process, libcommon, libeio, etc.
# Only link with libslurmhelper if you are sure you are not going to be
# loading a plugin that could use something you yourself are not
# calling from here.
# libslurm.o only contains all the api symbols and will export
# them to plugins that are loaded.
# Also, libslurmhelper, libslurm.o are for convenience, they are not installed.
noinst_LTLIBRARIES = libslurmhelper.la
noinst_PROGRAMS = libslurm.o
slurmapi_src = \
allocate.c \
allocate_msg.c \
cancel.c \
checkpoint.c \
complete.c \
config_info.c \
init_msg.c \
job_info.c job_info.h \
job_step_info.c \
node_info.c \
block_info.c \
partition_info.c \
reservation_info.c \
signal.c \
slurm_hostlist.c \
slurm_pmi.c slurm_pmi.h \
step_ctx.c step_ctx.h \
step_io.c step_io.h \
step_launch.c step_launch.h \
pmi_server.c pmi_server.h \
submit.c \
suspend.c \
topo_info.c \
triggers.c \
reconfigure.c \
update_config.c
common_dir = $(top_builddir)/src/common
slurmapi_add = \
$(common_dir)/libcommon.la \
$(common_dir)/libspank.la \
$(common_dir)/libeio.la \
-lpthread
libslurmhelper_la_SOURCES = $(slurmapi_src)
libslurmhelper_la_LIBADD = $(slurmapi_add)
libslurmhelper_la_LDFLAGs = \
$(LIB_LDFLAGS) \
-version-info $(current):$(rev):$(age)
convenience_libs = \
$(top_builddir)/src/api/libslurmhelper.la
libslurm_la_SOURCES =
libslurm_la_LIBADD = $(convenience_libs)
libslurm_la_LDFLAGS = \
$(LIB_LDFLAGS) \
-version-info $(current):$(rev):$(age) \
$(OTHER_FLAGS)
#
# The libpmi_la_LIBADD specification below causes libpmi.la to relink
# when running "make install", but removing it prevents essential slurm
# symbols from being available in programs linking with libpmi
#
libpmi_la_SOURCES = pmi.c
libpmi_la_LIBADD = $(top_builddir)/src/api/libslurm.la
libpmi_la_LDFLAGS = $(LIB_LDFLAGS) \
-version-info $(libpmi_current):$(libpmi_rev):$(libpmi_age) \
$(PMI_OTHER_FLAGS)
# This was made so we could export all symbols from libcommon
# on multiple platforms
libslurm_o_SOURCES =
libslurm_o_LDADD = $(top_builddir)/src/common/libeio.o \
$(top_builddir)/src/common/libspank.o \
$(top_builddir)/src/common/libcommon.o
libslurm.o: $(libslurmhelper_la_OBJECTS) $(libslurm_o_LDADD)
$(LINK) $(libslurmhelper_la_OBJECTS) $(libslurm_o_LDADD)
force:
$(libslurm_o_LDADD) $(convenience_libs) $(slurmapi_add) : force
@cd `dirname $@` && $(MAKE) `basename $@`
$(VERSION_SCRIPT) :
(echo "{ global:"; \
echo " islurm_*;"; \
echo " slurm_*;"; \
echo " local: *;"; \
echo "};") > $(VERSION_SCRIPT)
$(PMI_VERSION_SCRIPT) :
(echo "{ global:"; \
echo " PMI_*;"; \
echo " local: *;"; \
echo "};") > $(PMI_VERSION_SCRIPT)
CLEANFILES = \
$(VERSION_SCRIPT) $(PMI_VERSION_SCRIPT)
DISTCLEANFILES = \
$(VERSION_SCRIPT) $(PMI_VERSION_SCRIPT)