sys-cluster/sionlibl: fix linking between libraries

Closes: https://bugs.gentoo.org/817848
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2021-10-15 23:31:08 +02:00
parent d99c7de558
commit b8c1775fae

View File

@@ -9,14 +9,17 @@
else else
USER_HDRS = USER_HDRS =
USER_LIBS = USER_LIBS =
@@ -58,12 +58,12 @@ @@ -57,13 +57,15 @@
all: $(USER_LIBS) all: $(USER_LIBS)
+../lib/lib$(SION_LIBNAME_SER).so :
+ make -C ../lib lib$(SION_LIBNAME_SER).so
-lib$(SION_LIBNAME_CXX_SER).a : $(SION_OBJS_SER) -lib$(SION_LIBNAME_CXX_SER).a : $(SION_OBJS_SER)
- $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_SER) - $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_SER)
+lib$(SION_LIBNAME_CXX_SER).so : $(SION_OBJS_SER) +lib$(SION_LIBNAME_CXX_SER).so : $(SION_OBJS_SER) ../lib/lib$(SION_LIBNAME_SER).so
+ $(CXX) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_CXX_SER).so -shared -o $@ $(SION_OBJS_SER) + $(CXX) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_CXX_SER).so -shared -o $@ $(SION_OBJS_SER) -L../lib -l$(SION_LIBNAME_SER)
@echo "*** $@ built" @echo "*** $@ built"
-lib$(SION_LIBNAME_CXX_MPI).a : $(SION_OBJS_MPI) -lib$(SION_LIBNAME_CXX_MPI).a : $(SION_OBJS_MPI)
@@ -26,7 +29,7 @@
@echo "*** $@ built" @echo "*** $@ built"
sion_cxx_base.o : sion_cxx_base.o :
@@ -118,7 +118,7 @@ @@ -118,7 +120,7 @@
done done
clean: clean:
@@ -46,12 +49,12 @@
else else
USER_HDRS = USER_HDRS =
USER_MODS = USER_MODS =
@@ -56,18 +56,24 @@ @@ -56,39 +56,47 @@
SION_OBJS_F77_SER += sion_f77_omp.o sion_fortran_omp.o SION_OBJS_F77_SER += sion_f77_omp.o sion_fortran_omp.o
SION_OBJS_F90_SER += sion_f90_omp.o sion_fortran_omp.o SION_OBJS_F90_SER += sion_f90_omp.o sion_fortran_omp.o
USER_MODS += sion_f90_omp.mod USER_MODS += sion_f90_omp.mod
+ F77_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP) + F77_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP) -L../lib -l$(SION_LIBNAME_GEN)
+ F90_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP) + F90_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP) -L../lib -l$(SION_LIBNAME_GEN)
endif endif
ifeq ($(MPIENABLE),1) ifeq ($(MPIENABLE),1)
@@ -71,13 +74,15 @@
endif endif
SION_DEPEND_OBJS=sion_fortran.o sion_fortran_omp.o sion_fortran_mpi.o sion_fortran_ompi.o sion_fortran_writeread_f77.o sion_fortran_writeread_f90.o sion_fortran_writeread_mpi_f77.o sion_fortran_writeread_mpi_f90.o SION_DEPEND_OBJS=sion_fortran.o sion_fortran_omp.o sion_fortran_mpi.o sion_fortran_ompi.o sion_fortran_writeread_f77.o sion_fortran_writeread_f90.o sion_fortran_writeread_mpi_f77.o sion_fortran_writeread_mpi_f90.o
@@ -75,20 +81,20 @@
all: $(USER_LIBS) $(USER_MODS) all: $(USER_LIBS) $(USER_MODS)
+../lib/lib$(SION_LIBNAME_SER).so :
+ make -C ../lib lib$(SION_LIBNAME_SER).so
-lib$(SION_LIBNAME_F77_SER).a : $(SION_OBJS_F77_SER) -lib$(SION_LIBNAME_F77_SER).a : $(SION_OBJS_F77_SER)
- $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F77_SER) - $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F77_SER)
+lib$(SION_LIBNAME_F77_SER).so : $(SION_OBJS_F77_SER) +lib$(SION_LIBNAME_F77_SER).so : $(SION_OBJS_F77_SER) ../lib/lib$(SION_LIBNAME_SER).so
+ $(F77) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F77_SER).so -shared -o $@ $(SION_OBJS_F77_SER) $(F77_SER_LIBS) + $(F77) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F77_SER).so -shared -o $@ $(SION_OBJS_F77_SER) $(F77_SER_LIBS)
@echo "*** $@ built" @echo "*** $@ built"
@@ -89,7 +94,7 @@
-lib$(SION_LIBNAME_F90_SER).a : $(SION_OBJS_F90_SER) -lib$(SION_LIBNAME_F90_SER).a : $(SION_OBJS_F90_SER)
- $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F90_SER) - $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F90_SER)
+lib$(SION_LIBNAME_F90_SER).so : $(SION_OBJS_F90_SER) +lib$(SION_LIBNAME_F90_SER).so : $(SION_OBJS_F90_SER) ../lib/lib$(SION_LIBNAME_SER).so
+ $(F90) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F90_SER).so -shared -o $@ $(SION_OBJS_F90_SER) $(F90_SER_LIBS) + $(F90) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F90_SER).so -shared -o $@ $(SION_OBJS_F90_SER) $(F90_SER_LIBS)
@echo "*** $@ built" @echo "*** $@ built"
@@ -100,7 +105,7 @@
@echo "*** $@ built" @echo "*** $@ built"
# F77 interface # F77 interface
@@ -206,7 +212,7 @@ @@ -206,7 +214,7 @@
done done
clean: clean:
@@ -111,23 +116,23 @@
# Dependencies # Dependencies
--- a/src/lib/Makefile --- a/src/lib/Makefile
+++ b/src/lib/Makefile +++ b/src/lib/Makefile
@@ -66,26 +66,32 @@ @@ -66,26 +66,31 @@
SION_CXX_HDR = sion_cxx.h SION_CXX_HDR = sion_cxx.h
endif endif
-USER_HDRS = sion.h sion_libversion_rep.h sion_common.h sion_serial.h sion_const.h sion_datatypes.h sion_platform.h sion_debug.h $(SION_CXX_HDR)
-USER_LIBS = lib$(SION_LIBNAME_SER).a lib$(SION_LIBNAME_COM).a lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a lib$(SION_LIBNAME_COM_LOCK_NONE).a
+ifneq ($(PTHREADSUPPORT),"no") +ifneq ($(PTHREADSUPPORT),"no")
+LOCKLIB = $(SION_LIBNAME_COM_LOCK_PTHREADS) +LOCKLIB = $(SION_LIBNAME_COM_LOCK_PTHREADS)
+else +else
+LOCKLIB = $(SION_LIBNAME_COM_LOCK_NONE) +LOCKLIB = $(SION_LIBNAME_COM_LOCK_NONE)
+endif +endif
+
USER_HDRS = sion.h sion_libversion_rep.h sion_common.h sion_serial.h sion_const.h sion_datatypes.h sion_platform.h sion_debug.h $(SION_CXX_HDR) +USER_HDRS = sion.h sion_libversion_rep.h sion_common.h sion_serial.h sion_const.h sion_datatypes.h sion_platform.h sion_debug.h $(SION_CXX_HDR)
-USER_LIBS = lib$(SION_LIBNAME_SER).a lib$(SION_LIBNAME_COM).a lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a lib$(SION_LIBNAME_COM_LOCK_NONE).a
+USER_LIBS = lib$(SION_LIBNAME_SER).so lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so lib$(SION_LIBNAME_COM_LOCK_NONE).so +USER_LIBS = lib$(SION_LIBNAME_SER).so lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so lib$(SION_LIBNAME_COM_LOCK_NONE).so
-all: lib$(SION_LIBNAME_COM).a lib$(SION_LIBNAME_SER).a lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a lib$(SION_LIBNAME_COM_LOCK_NONE).a -all: lib$(SION_LIBNAME_COM).a lib$(SION_LIBNAME_SER).a lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a lib$(SION_LIBNAME_COM_LOCK_NONE).a
+all: lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_SER).so lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so lib$(SION_LIBNAME_COM_LOCK_NONE).so +all: lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_SER).so lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so lib$(SION_LIBNAME_COM_LOCK_NONE).so
-lib$(SION_LIBNAME_COM).a : $(SION_COMMON_OBJS) -lib$(SION_LIBNAME_COM).a : $(SION_COMMON_OBJS)
- $(C_AR) $(AFLAG) -rcs $@ $(SION_COMMON_OBJS) - $(C_AR) $(AFLAG) -rcs $@ $(SION_COMMON_OBJS)
@@ -149,12 +154,12 @@
-lib$(SION_LIBNAME_SER).a : $(SION_SER_OBJS) -lib$(SION_LIBNAME_SER).a : $(SION_SER_OBJS)
- $(C_AR) $(AFLAG) -rcs $@ $(SION_SER_OBJS) - $(C_AR) $(AFLAG) -rcs $@ $(SION_SER_OBJS)
+lib$(SION_LIBNAME_SER).so : $(SION_SER_OBJS) +lib$(SION_LIBNAME_SER).so : $(SION_SER_OBJS) lib$(SION_LIBNAME_COM).so
+ $(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_SER).so -shared -o $@ $(SION_SER_OBJS) + $(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_SER).so -shared -o $@ $(SION_SER_OBJS) -L. -l$(SION_LIBNAME_COM)
@echo "*** $@ built" @echo "*** $@ built"
sion_lock_pthreads.o: sion_lock.c sion_lock_pthreads.o: sion_lock.c
@@ -178,7 +184,7 @@ @@ -178,7 +183,7 @@
done done
clean: clean:
@@ -212,12 +217,15 @@
else else
LOCKCC =$(CC) LOCKCC =$(CC)
LOCKCFLAGS=$(CFLAGS) LOCKCFLAGS=$(CFLAGS)
@@ -87,20 +89,20 @@ @@ -87,20 +89,23 @@
all: $(USER_LIBS) all: $(USER_LIBS)
-lib$(SION_LIBNAME_GEN).a : $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) -lib$(SION_LIBNAME_GEN).a : $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL)
- $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) - $(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL)
+../lib/lib$(SION_LIBNAME_COM).so :
+ make -C ../lib lib$(SION_LIBNAME_COM).so
+
+lib$(SION_LIBNAME_GEN).so : $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) ../lib/lib$(SION_LIBNAME_COM).so +lib$(SION_LIBNAME_GEN).so : $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) ../lib/lib$(SION_LIBNAME_COM).so
+ $(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_GEN).so -shared -o $@ $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) $(LOCKLINK) -L../lib -l$(SION_LIBNAME_COM) + $(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_GEN).so -shared -o $@ $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) $(LOCKLINK) -L../lib -l$(SION_LIBNAME_COM)
@echo "*** $@ built" @echo "*** $@ built"
@@ -241,7 +249,7 @@
@echo "*** $@ built" @echo "*** $@ built"
sion_generic.o : sion_generic.c sion_generic.o : sion_generic.c
@@ -224,7 +226,7 @@ @@ -224,7 +229,7 @@
done done
clean: clean:
@@ -294,7 +302,7 @@
all: $(USER_UTILS) all: $(USER_UTILS)
-partest: $(PARTEST_OBJS) ../parlib/lib$(SION_LIBNAME_MPI).a ../parlib/lib$(SION_LIBNAME_GEN).a ../lib/lib$(SION_LIBNAME_SER).a -partest: $(PARTEST_OBJS) ../parlib/lib$(SION_LIBNAME_MPI).a ../parlib/lib$(SION_LIBNAME_GEN).a ../lib/lib$(SION_LIBNAME_SER).a
+partest: $(PARTEST_OBJS) ../parlib/lib$(SION_LIBNAME_MPI).so ../parlib/lib$(SION_LIBNAME_GEN).so ../lib/lib$(SION_LIBNAME_SER).so +partest: $(PARTEST_OBJS) ../parlib/lib$(SION_LIBNAME_MPI).so ../parlib/lib$(SION_LIBNAME_GEN).so ../lib/lib$(SION_LIBNAME_SER).so
$(MPICC) -o $@ $(PARTEST_OBJS) -L../lib -l$(SION_LIBNAME_SER) $(CMPILDFLAGS) $(MPILIB) $(MPICC) -o $@ $(PARTEST_OBJS) -L../lib -l$(SION_LIBNAME_SER) $(CMPILDFLAGS) $(MPILIB)
-ompi_partest: $(PARTEST_OMPI_OBJS) ../parlib/lib$(SION_LIBNAME_OMPI).a ../parlib/lib$(SION_LIBNAME_OMP).a ../lib/lib$(SION_LIBNAME_SER).a -ompi_partest: $(PARTEST_OMPI_OBJS) ../parlib/lib$(SION_LIBNAME_OMPI).a ../parlib/lib$(SION_LIBNAME_OMP).a ../lib/lib$(SION_LIBNAME_SER).a
@@ -308,8 +316,8 @@
-fpartest: fpartest.o ../parlib/lib$(SION_LIBNAME_MPI).a ../parlib/lib$(SION_LIBNAME_GEN).a ../lib/lib$(SION_LIBNAME_SER).a ../fortraninterface/lib$(SION_LIBNAME_F77_MPI).a ../fortraninterface/lib$(SION_LIBNAME_F77_SER).a -fpartest: fpartest.o ../parlib/lib$(SION_LIBNAME_MPI).a ../parlib/lib$(SION_LIBNAME_GEN).a ../lib/lib$(SION_LIBNAME_SER).a ../fortraninterface/lib$(SION_LIBNAME_F77_MPI).a ../fortraninterface/lib$(SION_LIBNAME_F77_SER).a
- $(MPIF90) -o $@ fpartest.o -L../fortraninterface -l$(SION_LIBNAME_F77_MPI) -l$(SION_LIBNAME_F77_SER) $(FMPILDFLAGS) $(MPILIB) - $(MPIF90) -o $@ fpartest.o -L../fortraninterface -l$(SION_LIBNAME_F77_MPI) -l$(SION_LIBNAME_F77_SER) $(FMPILDFLAGS) $(MPILIB)
+fpartest: fpartest.o ../parlib/lib$(SION_LIBNAME_MPI).so ../parlib/lib$(SION_LIBNAME_GEN).so ../lib/lib$(SION_LIBNAME_SER).so ../fortraninterface/lib$(SION_LIBNAME_F77_MPI).so ../fortraninterface/lib$(SION_LIBNAME_F77_SER).so +fpartest: fpartest.o ../parlib/lib$(SION_LIBNAME_MPI).so ../parlib/lib$(SION_LIBNAME_GEN).so ../lib/lib$(SION_LIBNAME_SER).so ../fortraninterface/lib$(SION_LIBNAME_F77_MPI).so ../fortraninterface/lib$(SION_LIBNAME_F77_SER).so
+ $(MPIF90) -o $@ fpartest.o -L../fortraninterface -l$(SION_LIBNAME_F77_MPI) -l$(SION_LIBNAME_F77_SER) $(FMPILDFLAGS) $(MPILIB) $(F77_MPI_LIBS) $(F77_SER_LIBS) + $(MPIF90) -o $@ fpartest.o -L../fortraninterface -l$(SION_LIBNAME_F77_MPI) -l$(SION_LIBNAME_F77_SER) $(FMPILDFLAGS) $(MPILIB) $(F77_MPI_LIBS) $(F77_SER_LIBS)
install: all install: all
@@ -345,24 +353,24 @@
$(CC) $(CFLAGS) -c sionversion.c $(CC) $(CFLAGS) -c sionversion.c
-siondump: siondump.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a -siondump: siondump.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+siondump: siondump.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so +siondump: siondump.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
$(CC) -o $@ siondump.o $(LDFLAGS) $(CC) -o $@ siondump.o $(LDFLAGS)
cp siondump $(TOPDIR)/.. cp siondump $(TOPDIR)/..
-siondefrag: siondefrag.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a -siondefrag: siondefrag.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+siondefrag: siondefrag.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so +siondefrag: siondefrag.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
$(CC) -o $@ siondefrag.o $(LDFLAGS) $(CC) -o $@ siondefrag.o $(LDFLAGS)
-sionsplit: sionsplit.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a -sionsplit: sionsplit.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+sionsplit: sionsplit.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so +sionsplit: sionsplit.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
$(CC) -o $@ sionsplit.o $(LDFLAGS) $(CC) -o $@ sionsplit.o $(LDFLAGS)
-sioncat: sioncat.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a -sioncat: sioncat.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+sioncat: sioncat.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so +sioncat: sioncat.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
$(CC) -o $@ sioncat.o $(LDFLAGS) $(CC) -o $@ sioncat.o $(LDFLAGS)
-sionversion: sionversion.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a -sionversion: sionversion.o ../lib/lib$(SION_LIBNAME_SER).a ../lib/lib$(SION_LIBNAME_COM).a ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+sionversion: sionversion.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so +sionversion: sionversion.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
$(CC) -o $@ sionversion.o $(LDFLAGS) $(CC) -o $@ sionversion.o $(LDFLAGS)