--- UMFPACK/Demo/Makefile.orig 2014-10-03 16:14:05.839641618 +0200 +++ UMFPACK/Demo/Makefile 2014-10-03 16:15:11.772972188 +0200 @@ -48,10 +48,10 @@ LIBS = $(LAPACK) $(BLAS) $(XERBLA) $(LIB) $(LIB_WITH_CHOLMOD) $(LIB_WITH_PARTITION) $(CUBLAS_LIB) $(CUDART_LIB) -../Lib/libumfpack.a: +../Lib/libumfpack.la: ( cd ../Lib ; $(MAKE) ) -UMFPACK = ../Lib/libumfpack.a -lamd -lsuitesparseconfig \ +UMFPACK = ../Lib/libumfpack.la -lamd -lsuitesparseconfig \ $(LIB_WITH_CHOLMOD) $(LIB_WITH_PARTITION) libs: $(UMFPACK) @@ -63,7 +63,7 @@ dist: umfpack_di_demo.c umfpack_dl_demo.c umfpack_zi_demo.c umfpack_zl_demo.c umfpack_simple: umfpack_simple.c $(INC) $(UMFPACK) - $(C) -o umfpack_simple umfpack_simple.c $(UMFPACK) $(LIBS) + libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CFLAGS) $(UMFPACK_CONFIG) -I../Include -I/usr/include/amd -o umfpack_simple umfpack_simple.c $(UMFPACK) $(LIBS) # the GNU rules are simpler: # umfpack_%_demo.c: umfpack_xx_demo.c umfpack_%_demo.sed @@ -80,28 +80,28 @@ - sed -f umfpack_di_demo.sed < umfpack_xx_demo.c > umfpack_di_demo.c umfpack_di_demo: umfpack_di_demo.c $(INC) $(UMFPACK) - $(C) -o umfpack_di_demo umfpack_di_demo.c $(UMFPACK) $(LIBS) + libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o umfpack_di_demo umfpack_di_demo.c $(UMFPACK) $(LIBS) # double-precision, SuiteSparse_long verion: umfpack_dl_demo.c: umfpack_xx_demo.c umfpack_dl_demo.sed - sed -f umfpack_dl_demo.sed < umfpack_xx_demo.c > umfpack_dl_demo.c umfpack_dl_demo: umfpack_dl_demo.c $(INC) $(UMFPACK) - $(C) -o umfpack_dl_demo umfpack_dl_demo.c $(UMFPACK) $(LIBS) + libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o umfpack_dl_demo umfpack_dl_demo.c $(UMFPACK) $(LIBS) # complex, int verion: umfpack_zi_demo.c: umfpack_xx_demo.c umfpack_zi_demo.sed - sed -f umfpack_zi_demo.sed < umfpack_xx_demo.c > umfpack_zi_demo.c umfpack_zi_demo: umfpack_zi_demo.c $(INC) $(UMFPACK) - $(C) -o umfpack_zi_demo umfpack_zi_demo.c $(UMFPACK) $(LIBS) + libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o umfpack_zi_demo umfpack_zi_demo.c $(UMFPACK) $(LIBS) # complex, SuiteSparse_long verion: umfpack_zl_demo.c: umfpack_xx_demo.c umfpack_zl_demo.sed - sed -f umfpack_zl_demo.sed < umfpack_xx_demo.c > umfpack_zl_demo.c umfpack_zl_demo: umfpack_zl_demo.c $(INC) $(UMFPACK) - $(C) -o umfpack_zl_demo umfpack_zl_demo.c $(UMFPACK) $(LIBS) + libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o umfpack_zl_demo umfpack_zl_demo.c $(UMFPACK) $(LIBS) run: umfpack_di_demo umfpack_zi_demo umfpack_dl_demo umfpack_zl_demo umfpack_simple ./umfpack_simple @@ -143,16 +143,16 @@ - ./umf4 a 1e-6 umf4: umf4.c $(UMFPACK) - $(C) -o umf4 umf4.c $(UMFPACK) $(LIBS) + libtool --tag=CC --mode=link $(C) -o umf4 umf4.c $(UMFPACK) $(LIBS) readhb: readhb.f - $(F77) $(F77FLAGS) -o readhb readhb.f $(F77LIB) + libtool --tag=F77 --mode=link $(F77) $(F77FLAGS) -o readhb readhb.f $(F77LIB) readhb_size: readhb_size.f - $(F77) $(F77FLAGS) -o readhb_size readhb_size.f $(F77LIB) + libtool --tag=F77 --mode=link $(F77) $(F77FLAGS) -o readhb_size readhb_size.f $(F77LIB) readhb_nozeros: readhb_nozeros.f - $(F77) $(F77FLAGS) -o readhb_nozeros readhb_nozeros.f $(F77LIB) + libtool --tag=F77 --mode=link $(F77) $(F77FLAGS) -o readhb_nozeros readhb_nozeros.f $(F77LIB) #------------------------------------------------------------------------------- # compile the FORTRAN interface and demo @@ -160,17 +160,17 @@ # This doesn't seem to work on the Mac (Snow Leopard, OS X 10.6.1) fortran: $(UMFPACK) umf4hb.f umf4_f77wrapper.o umf4zhb.f umf4_f77zwrapper.o $(UMFPACK) - $(F77) $(F77FLAGS) -o umf4hb umf4hb.f umf4_f77wrapper.o \ + libtool --tag=F77 --mode=link $(F77) $(F77FLAGS) -o umf4hb umf4hb.f umf4_f77wrapper.o \ $(UMFPACK) $(LIBS) - ./umf4hb < HB/west0067.rua > my_umf4hb.out - diff my_umf4hb.out umf4hb.out - $(F77) $(F77FLAGS) -o umf4zhb umf4zhb.f umf4_f77zwrapper.o \ + libtool --tag=F77 --mode=link $(F77) $(F77FLAGS) -o umf4zhb umf4zhb.f umf4_f77zwrapper.o \ $(UMFPACK) $(LIBS) - ./umf4zhb < HB/qc324.cua > my_umf4zhb.out - diff my_umf4zhb.out umf4zhb.out fortran64: $(UMFPACK) umf4hb64.f umf4_f77wrapper64.o umf4_f77zwrapper64.o $(UMFPACK) - $(F77) $(F77FLAGS) -o umf4hb64 umf4hb64.f umf4_f77wrapper64.o \ + libtool --tag=F77 --mode=link $(F77) $(F77FLAGS) -o umf4hb64 umf4hb64.f umf4_f77wrapper64.o \ $(UMFPACK) $(LIBS) - ./umf4hb64 < HB/west0067.rua > my_umf4hb64.out - diff my_umf4hb64.out umf4hb64.out --- UMFPACK/Lib/GNUmakefile.orig 2012-01-06 09:13:28.336801011 +0100 +++ UMFPACK/Lib/GNUmakefile 2012-01-06 09:43:51.583528725 +0100 @@ -2,16 +2,18 @@ # UMFPACK Makefile for compiling on Unix systems (for GNU Make) #------------------------------------------------------------------------------- -default: libumfpack.a +default: libumfpack.la include /usr/share/misc/SuiteSparse_config.mk # UMFPACK can use CHOLMOD by default as an ordering option ifneq (,$(findstring -DNCHOLMOD, $(UMFPACK_CONFIG))) I = -I../Include -I../Source -I/usr/include/amd + LIBS = -lamd -lblas else I = -I../Include -I../Source -I/usr/include/amd \ -I/usr/include/cholmod + LIBS = -lcholmod -lamd -lblas endif C = $(CC) $(CF) $(UMFPACK_CONFIG) $(I) @@ -78,8 +80,7 @@ $(addprefix ../Source/, $(addsuffix .h,$(UMFCH))) \ $(addprefix ../Source/, $(addsuffix .h,$(UMFINT))) \ $(addprefix ../Include/, $(addsuffix .h,$(USER))) \ - $(addprefix ../Include/, $(addsuffix .h,$(GENERIC))) \ - ../../AMD/Include/amd_internal.h ../../AMD/Include/amd.h + $(addprefix ../Include/, $(addsuffix .h,$(GENERIC))) #------------------------------------------------------------------------------- # object files for each version @@ -98,171 +99,171 @@ #------------------------------------------------------------------------------- umf_i_%.o: ../Source/umf_%.c $(INC) - $(C) -DDINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -c $< -o $@ umf_l_%.o: ../Source/umf_%.c $(INC) - $(C) -DDLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -c $< -o $@ #------------------------------------------------------------------------------- # compile each routine in the DI version #------------------------------------------------------------------------------- umf_di_%.o: ../Source/umf_%.c $(INC) - $(C) -DDINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -c $< -o $@ umf_di_%hsolve.o: ../Source/umf_%tsolve.c $(INC) - $(C) -DDINT -DCONJUGATE_SOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DCONJUGATE_SOLVE -c $< -o $@ umf_di_triplet_map_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@ umf_di_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DDINT -DDO_MAP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DDO_MAP -c $< -o $@ umf_di_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DDINT -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DDO_VALUES -c $< -o $@ umf_di_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DDINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -c $< -o $@ umf_di_assemble_fixq.o: ../Source/umf_assemble.c $(INC) - $(C) -DDINT -DFIXQ -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DFIXQ -c $< -o $@ umf_di_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) - $(C) -DDINT -DDROP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DDROP -c $< -o $@ umfpack_di_wsolve.o: ../Source/umfpack_solve.c $(INC) - $(C) -DDINT -DWSOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -DWSOLVE -c $< -o $@ umfpack_di_%.o: ../Source/umfpack_%.c $(INC) - $(C) -DDINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDINT -c $< -o $@ #------------------------------------------------------------------------------- # compile each routine in the DL version #------------------------------------------------------------------------------- umf_dl_%.o: ../Source/umf_%.c $(INC) - $(C) -DDLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -c $< -o $@ umf_dl_%hsolve.o: ../Source/umf_%tsolve.c $(INC) - $(C) -DDLONG -DCONJUGATE_SOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DCONJUGATE_SOLVE -c $< -o $@ umf_dl_triplet_map_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DDLONG -DDO_MAP -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DDO_MAP -DDO_VALUES -c $< -o $@ umf_dl_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DDLONG -DDO_MAP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DDO_MAP -c $< -o $@ umf_dl_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DDLONG -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DDO_VALUES -c $< -o $@ umf_dl_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DDLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -c $< -o $@ umf_dl_assemble_fixq.o: ../Source/umf_assemble.c $(INC) - $(C) -DDLONG -DFIXQ -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DFIXQ -c $< -o $@ umf_dl_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) - $(C) -DDLONG -DDROP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DDROP -c $< -o $@ umfpack_dl_wsolve.o: ../Source/umfpack_solve.c $(INC) - $(C) -DDLONG -DWSOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -DWSOLVE -c $< -o $@ umfpack_dl_%.o: ../Source/umfpack_%.c $(INC) - $(C) -DDLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DDLONG -c $< -o $@ #------------------------------------------------------------------------------- # compile each routine in the ZI version #------------------------------------------------------------------------------- umf_zi_%.o: ../Source/umf_%.c $(INC) - $(C) -DZINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -c $< -o $@ umf_zi_%hsolve.o: ../Source/umf_%tsolve.c $(INC) - $(C) -DZINT -DCONJUGATE_SOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DCONJUGATE_SOLVE -c $< -o $@ umf_zi_triplet_map_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DZINT -DDO_MAP -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DDO_MAP -DDO_VALUES -c $< -o $@ umf_zi_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DZINT -DDO_MAP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DDO_MAP -c $< -o $@ umf_zi_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DZINT -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DDO_VALUES -c $< -o $@ umf_zi_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DZINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -c $< -o $@ umf_zi_assemble_fixq.o: ../Source/umf_assemble.c $(INC) - $(C) -DZINT -DFIXQ -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DFIXQ -c $< -o $@ umf_zi_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) - $(C) -DZINT -DDROP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DDROP -c $< -o $@ umfpack_zi_wsolve.o: ../Source/umfpack_solve.c $(INC) - $(C) -DZINT -DWSOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -DWSOLVE -c $< -o $@ umfpack_zi_%.o: ../Source/umfpack_%.c $(INC) - $(C) -DZINT -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZINT -c $< -o $@ #------------------------------------------------------------------------------- # compile each routine in the ZL version #------------------------------------------------------------------------------- umf_zl_%.o: ../Source/umf_%.c $(INC) - $(C) -DZLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -c $< -o $@ umf_zl_%hsolve.o: ../Source/umf_%tsolve.c $(INC) - $(C) -DZLONG -DCONJUGATE_SOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DCONJUGATE_SOLVE -c $< -o $@ umf_zl_triplet_map_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DZLONG -DDO_MAP -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DDO_MAP -DDO_VALUES -c $< -o $@ umf_zl_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DZLONG -DDO_MAP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DDO_MAP -c $< -o $@ umf_zl_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) - $(C) -DZLONG -DDO_VALUES -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DDO_VALUES -c $< -o $@ umf_zl_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) - $(C) -DZLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -c $< -o $@ umf_zl_assemble_fixq.o: ../Source/umf_assemble.c $(INC) - $(C) -DZLONG -DFIXQ -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DFIXQ -c $< -o $@ umf_zl_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) - $(C) -DZLONG -DDROP -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DDROP -c $< -o $@ umfpack_zl_wsolve.o: ../Source/umfpack_solve.c $(INC) - $(C) -DZLONG -DWSOLVE -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -DWSOLVE -c $< -o $@ umfpack_zl_%.o: ../Source/umfpack_%.c $(INC) - $(C) -DZLONG -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -DZLONG -c $< -o $@ #------------------------------------------------------------------------------- # Create the generic routines (GN) using a generic rule #------------------------------------------------------------------------------- umfpack_gn_%.o: ../Source/umfpack_%.c $(INC) - $(C) -c $< -o $@ + libtool --tag=CC --mode=compile $(C) -c $< -o $@ #------------------------------------------------------------------------------- # Create the libumfpack.a library #------------------------------------------------------------------------------- -libumfpack.a: $(II) $(LL) $(GN) $(DI) $(DL) $(ZI) $(ZL) - $(ARCHIVE) libumfpack.a $^ - - $(RANLIB) libumfpack.a +libumfpack.la: $(II) $(LL) $(GN) $(DI) $(DL) $(ZI) $(ZL) + libtool --tag=CC --mode=link $(CC) $(LDFLAGS) -o libumfpack.la -rpath $(libdir) $(^:.o=.lo) $(LIBS) -lm -so: $(II) $(LL) $(GN) $(DI) $(DL) $(ZI) $(ZL) - gcc -shared -Wl,-soname,libumfpack.so -o libumfpack.so $^ +install: libumfpack.la + install -d $(DESTDIR)$(libdir) + libtool --mode=install install libumfpack.la $(DESTDIR)$(libdir) #------------------------------------------------------------------------------- # Remove all but the files in the original distribution #------------------------------------------------------------------------------- purge: clean - - $(RM) libumfpack.a + - $(RM) libumfpack.la clean: - $(RM) $(CLEAN)