Whamcloud - gitweb
LU-5541 build: build static and dynamic liblustreapi 25/11625/31
authorfrank zago <fzago@cray.com>
Sun, 13 Aug 2017 18:11:26 +0000 (14:11 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 28 Aug 2017 06:25:54 +0000 (06:25 +0000)
libtool knows how to build both, so no need to hack the Makefile. As
two added benefits, the utilities will now use the dynamic version,
thus reducing their footprint, and calling make twice in a row won't
rebuild objects already built.

Test-Parameters: trivial

Change-Id: If4191e1ff1564793c476ffe03f5d4b6ad5295421
Signed-off-by: frank zago <fzago@cray.com>
Reviewed-on: https://review.whamcloud.com/11625
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Henri Doreau <henri.doreau@cea.fr>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre.spec.in
lustre/tests/Makefile.am
lustre/tests/mpi/Makefile.am
lustre/utils/Makefile.am

index fc1a301..8e44505 100644 (file)
@@ -413,6 +413,8 @@ find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \;
 find $RPM_BUILD_ROOT/lib/modules -name \*.ko -type f -exec chmod u+x {} \;
 %endif
 
+rm -f $RPM_BUILD_ROOT%{_libdir}/liblustreapi.la
+
 %if %{with lustre_tests}
 :> lustre-tests.files
 echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files
@@ -448,8 +450,13 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files
 /sbin/mount.lustre
 %{_libdir}/libptlctl.a
 %{_libdir}/libcfsutil.a
+%if %{with static}
 %{_libdir}/liblustreapi.a
+%endif
+%if %{with shared}
 %{_libdir}/liblustreapi.so
+%{_libdir}/liblustreapi.so.*
+%endif
 %if %{with manpages}
 %{_mandir}/man?/*
 %endif
index 33bb37a..f4ddc1d 100644 (file)
@@ -1,5 +1,5 @@
 LIBCFS = $(top_builddir)/libcfs/libcfs/libcfs.a
-LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.a
+LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la
 
 # Lustre test Makefile
 AM_CFLAGS := -fPIC -D_GNU_SOURCE \
@@ -60,31 +60,35 @@ nobase_noinst_DATA += clientapi/simple_test.c
 EXTRA_DIST = $(noinst_SCRIPTS) $(noinst_DATA) \
              $(nobase_noinst_SCRIPTS) $(nobase_noinst_DATA)
 
+THETESTS = openunlink truncate directio writeme mlink utime
+THETESTS += tchmod fsx test_brw sendfile
+THETESTS += createmany chownmany statmany multifstat createtest
+THETESTS += opendirunlink opendevunlink unlinkmany checkstat
+THETESTS += statone runas openfile rmdirmany
+THETESTS += small_write multiop ll_sparseness_verify
+THETESTS += ll_sparseness_write mrename ll_dirstripe_verify mkdirmany
+THETESTS += openfilleddirunlink rename_many memhog
+THETESTS += mmap_sanity writemany reads flocks_test flock_deadlock
+THETESTS += write_time_limit rwv lgetxattr_size_check checkfiemap
+THETESTS += listxattr_size_check check_fhandle_syscalls badarea_io
+THETESTS += llapi_layout_test orphan_linkea_check llapi_hsm_test
+THETESTS += group_lock_test llapi_fid_test sendfile_grouplock mmap_cat
+THETESTS += swap_lock_test
+
 if TESTS
 if MPITESTS
 SUBDIRS = mpi
 endif
-noinst_PROGRAMS = openunlink truncate directio writeme mlink utime
-noinst_PROGRAMS += tchmod fsx test_brw sendfile
-noinst_PROGRAMS += createmany chownmany statmany multifstat createtest
-noinst_PROGRAMS += opendirunlink opendevunlink unlinkmany checkstat
-noinst_PROGRAMS += statone runas openfile rmdirmany
-noinst_PROGRAMS += small_write multiop ll_sparseness_verify
-noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify mkdirmany
-noinst_PROGRAMS += openfilleddirunlink rename_many memhog
-noinst_PROGRAMS += mmap_sanity writemany reads flocks_test flock_deadlock
-noinst_PROGRAMS += write_time_limit rwv lgetxattr_size_check checkfiemap
-noinst_PROGRAMS += listxattr_size_check check_fhandle_syscalls badarea_io
-noinst_PROGRAMS += llapi_layout_test orphan_linkea_check llapi_hsm_test
-noinst_PROGRAMS += group_lock_test llapi_fid_test sendfile_grouplock mmap_cat
-noinst_PROGRAMS += swap_lock_test
 
 bin_PROGRAMS = mcreate munlink
 testdir = $(libdir)/lustre/tests
-test_SCRIPTS = $(noinst_SCRIPTS) $(noinst_PROGRAMS)
+test_SCRIPTS = $(noinst_SCRIPTS)
+test_PROGRAMS = $(THETESTS)
 nobase_test_SCRIPTS = $(nobase_noinst_SCRIPTS)
 test_DATA = $(noinst_DATA)
 nobase_test_DATA = $(nobase_noinst_DATA)
+else # !TESTS
+noinst_PROGRAMS = $(THETESTS)
 endif # TESTS
 
 mmap_sanity_SOURCES= mmap_sanity.c
index ac7acb1..a1a4246 100644 (file)
@@ -3,21 +3,29 @@ AM_CFLAGS := -fPIC \
             -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLUSTRE_UTILS=1
 
 LIBCFS :=  $(top_builddir)/libcfs/libcfs/libcfs.a
+LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la
 
 CC = @MPICC_WRAPPER@
 
-noinst_PROGRAMS = parallel_grouplock write_append_truncate createmany_mpi
-noinst_PROGRAMS += mdsrate write_disjoint cascading_rw
+THETESTS = parallel_grouplock write_append_truncate createmany_mpi \
+          mdsrate write_disjoint cascading_rw
+
+if TESTS
+if MPITESTS
 testdir = $(libdir)/lustre/tests
-test_SCRIPTS = $(noinst_PROGRAMS)
+test_PROGRAMS = $(THETESTS)
+else
+noinst_PROGRAMS = $(THETESTS)
+endif
+else
+noinst_PROGRAMS = $(THETESTS)
+endif
 
-write_append_truncate_SOURCES=write_append_truncate.c
-write_disjoint_SOURCES=write_disjoint.c
 createmany_mpi_SOURCES=createmany-mpi.c
 parallel_grouplock_SOURCES=parallel_grouplock.c lp_utils.c lp_utils.h
 
 cascading_rw_SOURCES=cascading_rw.c lp_utils.c lp_utils.h
-cascading_rw_LDADD=-L$(top_builddir)/lustre/utils -llustreapi $(LIBCFS)
+cascading_rw_LDADD=$(LIBLUSTREAPI) $(LIBCFS)
 
 mdsrate_SOURCES=mdsrate.c
-mdsrate_LDADD=-L$(top_builddir)/lustre/utils -llustreapi $(LIBCFS)
+mdsrate_LDADD=$(LIBLUSTREAPI) $(LIBCFS)
index 82e7381..a0031d2 100644 (file)
@@ -45,28 +45,32 @@ if LIBPTHREAD
 sbin_PROGRAMS += lhsmtool_posix
 endif
 
-pkglib_LTLIBRARIES =
-lib_LIBRARIES = liblustreapi.a
+lib_LIBRARIES =
+noinst_LIBRARIES =
+
 if LDISKFS_ENABLED
+libiam_a_SOURCES = libiam.c
 lib_LIBRARIES += libiam.a
 endif
-noinst_LIBRARIES = liblustreapitmp.a
+
+pkglib_LTLIBRARIES =
+lib_LTLIBRARIES = liblustreapi.la
 endif # UTILS
 
 lctl_SOURCES = lustre_lfsck.c obd.c lustre_cfg.c lctl.c obdctl.h lsnapshot.c
-lctl_LDADD :=  liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS)
-lctl_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a
+lctl_LDADD :=  liblustreapi.la $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS)
+lctl_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la
 
 lfs_SOURCES = lfs.c
-lfs_LDADD := liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE)
-lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a
+lfs_LDADD := liblustreapi.la $(LIBPTLCTL) $(LIBREADLINE)
+lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la
 
 lustre_rsync_SOURCES = lustre_rsync.c obd.c lustre_cfg.c lustre_rsync.h
-lustre_rsync_LDADD :=  liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS)
-lustre_rsync_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a
+lustre_rsync_LDADD :=  liblustreapi.la $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS)
+lustre_rsync_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la
 
 lshowmount_SOURCES = lshowmount.c nidlist.c nidlist.h
-lshowmount_LDADD :=  liblustreapi.a
+lshowmount_LDADD :=  liblustreapi.la
 
 if EXT2FS_DEVEL
 EXT2FSLIB = -lext2fs
@@ -86,16 +90,18 @@ llverfs_LDADD := $(EXT2FSLIB) $(E2PLIB)
 
 llverdev_LDADD := $(EXT2FSLIB) $(BLKIDLIB)
 
-liblustreapitmp_a_SOURCES = liblustreapi.c liblustreapi_hsm.c \
-                           liblustreapi_nodemap.c lustreapi_internal.h \
-                           liblustreapi_json.c liblustreapi_layout.c \
-                           liblustreapi_lease.c liblustreapi_util.c \
-                           liblustreapi_kernelconn.c liblustreapi_param.c \
-                           $(top_builddir)/libcfs/libcfs/util/string.c \
-                           $(top_builddir)/libcfs/libcfs/util/param.c \
-                           liblustreapi_ladvise.c liblustreapi_chlg.c
+liblustreapi_la_SOURCES = liblustreapi.c liblustreapi_hsm.c \
+                         liblustreapi_nodemap.c lustreapi_internal.h \
+                         liblustreapi_json.c liblustreapi_layout.c \
+                         liblustreapi_lease.c liblustreapi_util.c \
+                         liblustreapi_kernelconn.c liblustreapi_param.c \
+                         $(top_builddir)/libcfs/libcfs/util/string.c \
+                         $(top_builddir)/libcfs/libcfs/util/param.c \
+                         liblustreapi_ladvise.c liblustreapi_chlg.c
+liblustreapi_la_LDFLAGS = -version-info 1:0:0
+
 if UTILS
-LIB_TARGETS = liblustreapi.so
+LIB_TARGETS =
 if PLUGINS
 if LDISKFS_ENABLED
 LIB_TARGETS += mount_osd_ldiskfs.so
@@ -105,12 +111,6 @@ LIB_TARGETS += mount_osd_zfs.so
 endif
 endif
 
-# build static and shared lib lustreapi
-liblustreapi.a : liblustreapitmp.a
-       rm -f liblustreapi.a liblustreapi.so
-       $(CC) $(LDFLAGS) -shared -o liblustreapi.so `$(AR) -t liblustreapitmp.a`
-       mv liblustreapitmp.a liblustreapi.a
-
 install-exec-hook:
        @$(NORMAL_INSTALL)
        $(mkinstalldirs) $(DESTDIR)$(libdir)
@@ -118,29 +118,18 @@ install-exec-hook:
        for p in $(LIB_TARGETS); do \
          if test -f $$p; then \
            f="`echo $$p | sed -e 's|^.*/||'`"; \
-           if `echo -n $$p | grep -q mount`; then \
-               echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f"; \
-               $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f; \
-           else \
-               echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$f"; \
-               $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$f; \
-           fi; \
+           echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f"; \
+           $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f; \
          else :; fi; \
        done
 endif # UTILS
 
-if LDISKFS_ENABLED
-libiam_a_SOURCES = libiam.c
-endif
-
 llog_reader_SOURCES = llog_reader.c
-llog_reader_LDADD := $(LIBPTLCTL) liblustreapi.a
-llog_reader_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a
+llog_reader_LDADD := $(LIBPTLCTL) liblustreapi.la
+llog_reader_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la
 
 lr_reader_SOURCES = lr_reader.c
 
-lib_LTLIBRARIES =
-
 if UTILS
 
 PLUGIN_LIB =
@@ -204,8 +193,8 @@ l_getidentity_LDADD := $(LIBPTLCTL)
 l_getidentity_DEPENDENCIES := $(LIBPTLCTL)
 
 lhsmtool_posix_SOURCES = lhsmtool_posix.c
-lhsmtool_posix_LDADD := liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS)
-lhsmtool_posix_DEPENDENCIES := liblustreapi.a $(LIBPTLCTL)
+lhsmtool_posix_LDADD := liblustreapi.la $(LIBPTLCTL) $(PTHREAD_LIBS)
+lhsmtool_posix_DEPENDENCIES := liblustreapi.la $(LIBPTLCTL)
 
 wirecheck_SOURCES = wirecheck.c
 wirecheck_CPPFLAGS := -DCC="\"$(CC)\""