From bf26d99230ef1bcd6af5155f715a28ee7934e88b Mon Sep 17 00:00:00 2001
From: "Christopher J. Morrone" <morrone2@llnl.gov>
Date: Thu, 3 Aug 2006 22:57:20 +0000
Subject: [PATCH] Make make a convenience library libslurmhelper.la which has
 the same contents as libslurm.  However, libslurmhelper exports ALL symbols,
 not just the ones in the SLURM API.  This can be used by slurm commands that
 want to use both libcommon and libslurm functions.

---
 src/api/Makefile.am     | 21 +++++++++--
 src/api/Makefile.in     | 83 +++++++++++++++++++++++++++--------------
 src/salloc/Makefile.am  |  5 +--
 src/salloc/Makefile.in  | 10 +----
 src/sattach/Makefile.am |  4 +-
 src/sattach/Makefile.in |  8 +---
 src/sbatch/Makefile.am  |  4 +-
 src/sbatch/Makefile.in  |  8 +---
 src/slaunch/Makefile.am |  6 +--
 src/slaunch/Makefile.in | 12 +-----
 10 files changed, 85 insertions(+), 76 deletions(-)

diff --git a/src/api/Makefile.am b/src/api/Makefile.am
index 374b0b8197c..41baf976176 100644
--- a/src/api/Makefile.am
+++ b/src/api/Makefile.am
@@ -40,10 +40,14 @@ current = $(SLURM_API_CURRENT)
 age     = $(SLURM_API_AGE)
 rev     = $(SLURM_API_REVISION)
 
-lib_LTLIBRARIES = libslurm.la \
-	libpmi.la
+lib_LTLIBRARIES = libslurm.la libpmi.la
 
-libslurm_la_SOURCES =    \
+# Note that libslurmhelper is mostly the same as libslurm, except that
+# it exports ALL symbols, including those from libcommon, libeio, etc.
+# Also, libslurmhelper is a convenience library, it is not installed.
+noinst_LTLIBRARIES = libslurmhelper.la
+
+slurmapi_src =           \
 	allocate.c       \
 	cancel.c         \
 	checkpoint.c     \
@@ -67,6 +71,8 @@ libslurm_la_SOURCES =    \
 	reconfigure.c    \
 	update_config.c
 
+libslurm_la_SOURCES = $(slurmapi_src)
+libslurmhelper_la_SOURCES = $(slurmapi_src)
 libpmi_la_SOURCES = pmi.c
 
 BUILT_SOURCES = 	\
@@ -74,18 +80,25 @@ BUILT_SOURCES = 	\
 
 common_dir = $(top_builddir)/src/common
 
-libslurm_la_LIBADD	= 		\
+slurmapi_add = 				\
 	$(common_dir)/libcommon.la	\
 	$(common_dir)/libspank.la       \
 	$(common_dir)/libeio.la		\
 	-lpthread
 
+libslurm_la_LIBADD = $(slurmapi_add)
+libslurmhelper_la_LIBADD = $(slurmapi_add)
+
 libpmi_la_LIBADD	= libslurm.la 
 
 libslurm_la_LDFLAGS        = \
 	$(LIB_LDFLAGS)       \
 	-version-info $(current):$(rev):$(age) \
 	$(OTHER_FLAGS)
+libslurmhelper_la_LDFLAGs = \
+	$(LIB_LDFLAGS) \
+	-version-info $(current):$(rev):$(age)
+
 libpmi_la_LBFLAGS = $(LIB_LDFLAGS)
 
 force:
diff --git a/src/api/Makefile.in b/src/api/Makefile.in
index 9f1b76112d3..e0ac72d4e3c 100644
--- a/src/api/Makefile.in
+++ b/src/api/Makefile.in
@@ -17,7 +17,7 @@
 #
 # Makefile for slurm API library
 
-SOURCES = $(libpmi_la_SOURCES) $(libslurm_la_SOURCES)
+SOURCES = $(libpmi_la_SOURCES) $(libslurm_la_SOURCES) $(libslurmhelper_la_SOURCES)
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -76,19 +76,24 @@ am__vpath_adj = case $$p in \
 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(lib_LTLIBRARIES)
+LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 libpmi_la_DEPENDENCIES = libslurm.la
 am_libpmi_la_OBJECTS = pmi.lo
 libpmi_la_OBJECTS = $(am_libpmi_la_OBJECTS)
-libslurm_la_DEPENDENCIES = $(common_dir)/libcommon.la \
+am__DEPENDENCIES_1 = $(common_dir)/libcommon.la \
 	$(common_dir)/libspank.la $(common_dir)/libeio.la
-am_libslurm_la_OBJECTS = allocate.lo cancel.lo checkpoint.lo \
-	complete.lo config_info.lo init_msg.lo job_info.lo \
-	job_step_info.lo node_info.lo node_select_info.lo \
-	partition_info.lo signal.lo slurm_pmi.lo spawn.lo step_ctx.lo \
-	step_io.lo step_launch.lo step_pmi.lo submit.lo suspend.lo \
-	reconfigure.lo update_config.lo
+libslurm_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_1 = allocate.lo cancel.lo checkpoint.lo complete.lo \
+	config_info.lo init_msg.lo job_info.lo job_step_info.lo \
+	node_info.lo node_select_info.lo partition_info.lo signal.lo \
+	slurm_pmi.lo spawn.lo step_ctx.lo step_io.lo step_launch.lo \
+	step_pmi.lo submit.lo suspend.lo reconfigure.lo \
+	update_config.lo
+am_libslurm_la_OBJECTS = $(am__objects_1)
 libslurm_la_OBJECTS = $(am_libslurm_la_OBJECTS)
+libslurmhelper_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libslurmhelper_la_OBJECTS = $(am__objects_1)
+libslurmhelper_la_OBJECTS = $(am_libslurmhelper_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/slurm
 depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp
 am__depfiles_maybe = depfiles
@@ -100,8 +105,10 @@ LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 CCLD = $(CC)
 LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libpmi_la_SOURCES) $(libslurm_la_SOURCES)
-DIST_SOURCES = $(libpmi_la_SOURCES) $(libslurm_la_SOURCES)
+SOURCES = $(libpmi_la_SOURCES) $(libslurm_la_SOURCES) \
+	$(libslurmhelper_la_SOURCES)
+DIST_SOURCES = $(libpmi_la_SOURCES) $(libslurm_la_SOURCES) \
+	$(libslurmhelper_la_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -314,10 +321,13 @@ INCLUDES = -I$(top_srcdir)
 current = $(SLURM_API_CURRENT)
 age = $(SLURM_API_AGE)
 rev = $(SLURM_API_REVISION)
-lib_LTLIBRARIES = libslurm.la \
-	libpmi.la
+lib_LTLIBRARIES = libslurm.la libpmi.la
 
-libslurm_la_SOURCES = \
+# Note that libslurmhelper is mostly the same as libslurm, except that
+# it exports ALL symbols, including those from libcommon, libeio, etc.
+# Also, libslurmhelper is a convenience library, it is not installed.
+noinst_LTLIBRARIES = libslurmhelper.la
+slurmapi_src = \
 	allocate.c       \
 	cancel.c         \
 	checkpoint.c     \
@@ -341,23 +351,31 @@ libslurm_la_SOURCES = \
 	reconfigure.c    \
 	update_config.c
 
+libslurm_la_SOURCES = $(slurmapi_src)
+libslurmhelper_la_SOURCES = $(slurmapi_src)
 libpmi_la_SOURCES = pmi.c
 BUILT_SOURCES = \
 	$(VERSION_SCRIPT)
 
 common_dir = $(top_builddir)/src/common
-libslurm_la_LIBADD = \
+slurmapi_add = \
 	$(common_dir)/libcommon.la	\
 	$(common_dir)/libspank.la       \
 	$(common_dir)/libeio.la		\
 	-lpthread
 
+libslurm_la_LIBADD = $(slurmapi_add)
+libslurmhelper_la_LIBADD = $(slurmapi_add)
 libpmi_la_LIBADD = libslurm.la 
 libslurm_la_LDFLAGS = \
 	$(LIB_LDFLAGS)       \
 	-version-info $(current):$(rev):$(age) \
 	$(OTHER_FLAGS)
 
+libslurmhelper_la_LDFLAGs = \
+	$(LIB_LDFLAGS) \
+	-version-info $(current):$(rev):$(age)
+
 libpmi_la_LBFLAGS = $(LIB_LDFLAGS)
 CLEANFILES = \
 	$(VERSION_SCRIPT)
@@ -426,10 +444,21 @@ clean-libLTLIBRARIES:
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
 libpmi.la: $(libpmi_la_OBJECTS) $(libpmi_la_DEPENDENCIES) 
 	$(LINK) -rpath $(libdir) $(libpmi_la_LDFLAGS) $(libpmi_la_OBJECTS) $(libpmi_la_LIBADD) $(LIBS)
 libslurm.la: $(libslurm_la_OBJECTS) $(libslurm_la_DEPENDENCIES) 
 	$(LINK) -rpath $(libdir) $(libslurm_la_LDFLAGS) $(libslurm_la_OBJECTS) $(libslurm_la_LIBADD) $(LIBS)
+libslurmhelper.la: $(libslurmhelper_la_OBJECTS) $(libslurmhelper_la_DEPENDENCIES) 
+	$(LINK)  $(libslurmhelper_la_LDFLAGS) $(libslurmhelper_la_OBJECTS) $(libslurmhelper_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -606,7 +635,7 @@ maintainer-clean-generic:
 clean: clean-am
 
 clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
+	clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -655,17 +684,17 @@ ps-am:
 uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-exec \
-	install-exec-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-info-am \
-	uninstall-libLTLIBRARIES
+	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+	ctags distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-libLTLIBRARIES install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-info-am uninstall-libLTLIBRARIES
 
 
 force:
diff --git a/src/salloc/Makefile.am b/src/salloc/Makefile.am
index 023a2a2d579..2b635d060a1 100644
--- a/src/salloc/Makefile.am
+++ b/src/salloc/Makefile.am
@@ -8,10 +8,7 @@ bin_PROGRAMS = salloc
 
 salloc_SOURCES = salloc.c opt.c opt.h msg.c msg.h
 
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la \
-	$(top_builddir)/src/common/libeio.la
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 
 salloc_LDADD = \
 	$(convenience_libs) 
diff --git a/src/salloc/Makefile.in b/src/salloc/Makefile.in
index af81fbcdfb9..1c8f1df49ad 100644
--- a/src/salloc/Makefile.in
+++ b/src/salloc/Makefile.in
@@ -73,9 +73,7 @@ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am_salloc_OBJECTS = salloc.$(OBJEXT) opt.$(OBJEXT) msg.$(OBJEXT)
 salloc_OBJECTS = $(am_salloc_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la \
-	$(top_builddir)/src/common/libeio.la
+am__DEPENDENCIES_1 = $(top_builddir)/src/api/libslurmhelper.la
 salloc_DEPENDENCIES = $(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/slurm
 depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp
@@ -269,11 +267,7 @@ target_vendor = @target_vendor@
 AUTOMAKE_OPTIONS = foreign
 INCLUDES = -I$(top_srcdir) 
 salloc_SOURCES = salloc.c opt.c opt.h msg.c msg.h
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la \
-	$(top_builddir)/src/common/libeio.la
-
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 salloc_LDADD = \
 	$(convenience_libs) 
 
diff --git a/src/sattach/Makefile.am b/src/sattach/Makefile.am
index 236d57f1d8f..f48897ae7ff 100644
--- a/src/sattach/Makefile.am
+++ b/src/sattach/Makefile.am
@@ -8,9 +8,7 @@ bin_PROGRAMS = sattach
 
 sattach_SOURCES = sattach.c opt.h opt.c
 
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 
 sattach_LDADD = \
 	$(convenience_libs) 
diff --git a/src/sattach/Makefile.in b/src/sattach/Makefile.in
index eef93ada189..5a82d3e9a5f 100644
--- a/src/sattach/Makefile.in
+++ b/src/sattach/Makefile.in
@@ -73,8 +73,7 @@ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am_sattach_OBJECTS = sattach.$(OBJEXT) opt.$(OBJEXT)
 sattach_OBJECTS = $(am_sattach_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la
+am__DEPENDENCIES_1 = $(top_builddir)/src/api/libslurmhelper.la
 sattach_DEPENDENCIES = $(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/slurm
 depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp
@@ -268,10 +267,7 @@ target_vendor = @target_vendor@
 AUTOMAKE_OPTIONS = foreign
 INCLUDES = -I$(top_srcdir) 
 sattach_SOURCES = sattach.c opt.h opt.c
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la
-
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 sattach_LDADD = \
 	$(convenience_libs) 
 
diff --git a/src/sbatch/Makefile.am b/src/sbatch/Makefile.am
index 02695ecc045..de93daff02f 100644
--- a/src/sbatch/Makefile.am
+++ b/src/sbatch/Makefile.am
@@ -8,9 +8,7 @@ bin_PROGRAMS = sbatch
 
 sbatch_SOURCES = sbatch.c opt.c opt.h
 
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 
 sbatch_LDADD = \
 	$(convenience_libs) 
diff --git a/src/sbatch/Makefile.in b/src/sbatch/Makefile.in
index cb21706e9ff..fe2b2c18b06 100644
--- a/src/sbatch/Makefile.in
+++ b/src/sbatch/Makefile.in
@@ -73,8 +73,7 @@ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am_sbatch_OBJECTS = sbatch.$(OBJEXT) opt.$(OBJEXT)
 sbatch_OBJECTS = $(am_sbatch_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la
+am__DEPENDENCIES_1 = $(top_builddir)/src/api/libslurmhelper.la
 sbatch_DEPENDENCIES = $(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/slurm
 depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp
@@ -268,10 +267,7 @@ target_vendor = @target_vendor@
 AUTOMAKE_OPTIONS = foreign
 INCLUDES = -I$(top_srcdir) 
 sbatch_SOURCES = sbatch.c opt.c opt.h
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/api/libslurm.la
-
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 sbatch_LDADD = \
 	$(convenience_libs) 
 
diff --git a/src/slaunch/Makefile.am b/src/slaunch/Makefile.am
index a70ad07df34..b44637681c2 100644
--- a/src/slaunch/Makefile.am
+++ b/src/slaunch/Makefile.am
@@ -20,11 +20,7 @@ slaunch_SOURCES = \
 	multi_prog.c multi_prog.h \
 	slaunch.wrapper.c
 
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/common/libspank.la \
-	$(top_builddir)/src/common/libeio.la \
-	$(top_builddir)/src/api/libslurm.la
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 
 slaunch_LDADD = \
 	$(convenience_libs) 
diff --git a/src/slaunch/Makefile.in b/src/slaunch/Makefile.in
index 5ab00747ef9..9eac82c7d46 100644
--- a/src/slaunch/Makefile.in
+++ b/src/slaunch/Makefile.in
@@ -75,10 +75,7 @@ am_slaunch_OBJECTS = slaunch.$(OBJEXT) opt.$(OBJEXT) attach.$(OBJEXT) \
 	fname.$(OBJEXT) sigstr.$(OBJEXT) core-format.$(OBJEXT) \
 	multi_prog.$(OBJEXT) slaunch.wrapper.$(OBJEXT)
 slaunch_OBJECTS = $(am_slaunch_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/common/libspank.la \
-	$(top_builddir)/src/common/libeio.la \
-	$(top_builddir)/src/api/libslurm.la
+am__DEPENDENCIES_1 = $(top_builddir)/src/api/libslurmhelper.la
 slaunch_DEPENDENCIES = $(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/slurm
 depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp
@@ -285,12 +282,7 @@ slaunch_SOURCES = \
 	multi_prog.c multi_prog.h \
 	slaunch.wrapper.c
 
-convenience_libs = \
-	$(top_builddir)/src/common/libcommon.la \
-	$(top_builddir)/src/common/libspank.la \
-	$(top_builddir)/src/common/libeio.la \
-	$(top_builddir)/src/api/libslurm.la
-
+convenience_libs = $(top_builddir)/src/api/libslurmhelper.la
 slaunch_LDADD = \
 	$(convenience_libs) 
 
-- 
GitLab