1#------------------------------------------------------------------------------- 2# compile the UMFPACK demos 3#------------------------------------------------------------------------------- 4 5# UMFPACK Copyright (c) Timothy A. Davis. 6# All Rights Reserved. See ../Doc/License.txt for License. 7 8default: libs run 9 10all: libs run hb 11 12all32: libs run hb fortran 13 14all64: libs run hb fortran64 15 16include ../../SuiteSparse_config/SuiteSparse_config.mk 17 18#------------------------------------------------------------------------------- 19# UMFPACK optionally uses the CHOLMOD Partition module 20LIB_WITH_CHOLMOD = 21ifeq (,$(findstring -DNCHOLMOD, $(UMFPACK_CONFIG))) 22 LIB_WITH_CHOLMOD = $(LIB_WITH_PARTITION) $(CUBLAS_LIB) $(CUDART_LIB) 23endif 24 25#------------------------------------------------------------------------------- 26 27C = $(CC) $(CF) $(UMFPACK_CONFIG) $(CONFIG_PARTITION) \ 28 -I../../include 29 30LIBS = $(LDLIBS) -L../../lib -lumfpack -lamd -lsuitesparseconfig \ 31 $(LIB_WITH_CHOLMOD) $(LAPACK) $(BLAS) 32 33libs: metis 34 ( cd ../Lib ; $(MAKE) ) 35 36metis: ../../include/metis.h 37 38../../include/metis.h: 39 - ( cd ../.. && $(MAKE) metis ) 40 41#------------------------------------------------------------------------------- 42# Create the demo programs, run them, and compare the output 43#------------------------------------------------------------------------------- 44 45dist: umfpack_di_demo.c umfpack_dl_demo.c umfpack_zi_demo.c umfpack_zl_demo.c 46 47umfpack_simple: umfpack_simple.c 48 $(C) -o umfpack_simple umfpack_simple.c $(LIBS) 49 50# these rules are simpler: 51# umfpack_%_demo.c: umfpack_xx_demo.c umfpack_%_demo.sed 52# - sed -f umfpack_$*_demo.sed < umfpack_xx_demo.c > umfpack_$*_demo.c 53# 54# umfpack_%_demo: umfpack_%_demo.c $(UMFPACK) 55# $(C) -o umfpack_$*_demo umfpack_$*_demo.c $(LIBS) 56# ./umfpack_$*_demo > my_umfpack_$*_demo.out 57 58# but do this via brute-force, so we can use just a single Makefile: 59 60# double-precision, int verion: 61umfpack_di_demo.c: umfpack_xx_demo.c umfpack_di_demo.sed 62 - sed -f umfpack_di_demo.sed < umfpack_xx_demo.c > umfpack_di_demo.c 63 64umfpack_di_demo: umfpack_di_demo.c 65 $(C) -o umfpack_di_demo umfpack_di_demo.c $(LIBS) 66 67# double-precision, SuiteSparse_long verion: 68umfpack_dl_demo.c: umfpack_xx_demo.c umfpack_dl_demo.sed 69 - sed -f umfpack_dl_demo.sed < umfpack_xx_demo.c > umfpack_dl_demo.c 70 71umfpack_dl_demo: umfpack_dl_demo.c 72 $(C) -o umfpack_dl_demo umfpack_dl_demo.c $(LIBS) 73 74# complex, int verion: 75umfpack_zi_demo.c: umfpack_xx_demo.c umfpack_zi_demo.sed 76 - sed -f umfpack_zi_demo.sed < umfpack_xx_demo.c > umfpack_zi_demo.c 77 78umfpack_zi_demo: umfpack_zi_demo.c 79 $(C) -o umfpack_zi_demo umfpack_zi_demo.c $(LIBS) 80 81# complex, SuiteSparse_long verion: 82umfpack_zl_demo.c: umfpack_xx_demo.c umfpack_zl_demo.sed 83 - sed -f umfpack_zl_demo.sed < umfpack_xx_demo.c > umfpack_zl_demo.c 84 85umfpack_zl_demo: umfpack_zl_demo.c 86 $(C) -o umfpack_zl_demo umfpack_zl_demo.c $(LIBS) 87 88run: umfpack_di_demo umfpack_zi_demo umfpack_dl_demo umfpack_zl_demo umfpack_simple 89 ./umfpack_simple 90 ./umfpack_di_demo > my_umfpack_di_demo.out 91 - diff umfpack_di_demo.out my_umfpack_di_demo.out 92 ./umfpack_dl_demo > my_umfpack_dl_demo.out 93 - diff umfpack_dl_demo.out my_umfpack_dl_demo.out 94 ./umfpack_zi_demo > my_umfpack_zi_demo.out 95 - diff umfpack_zi_demo.out my_umfpack_zi_demo.out 96 ./umfpack_zl_demo > my_umfpack_zl_demo.out 97 - diff umfpack_zl_demo.out my_umfpack_zl_demo.out 98 99#------------------------------------------------------------------------------- 100# create a demo program that reads in Harwell/Boeing matrices, and run it 101#------------------------------------------------------------------------------- 102 103# the output of "make hb" is in the file umf4.out 104hb: $(UMFPACK) umf4 readhb readhb_nozeros readhb_size 105 - ./readhb_nozeros < HB/can_24.psa > tmp/A 106 - ./readhb_size < HB/can_24.psa > tmp/Asize 107 - ./umf4 108 - ./readhb_nozeros < HB/west0067.rua > tmp/A 109 - ./readhb_size < HB/west0067.rua > tmp/Asize 110 - ./umf4 111 - ./readhb_nozeros < HB/fs_183_6.rua > tmp/A 112 - ./readhb_size < HB/fs_183_6.rua > tmp/Asize 113 - ./umf4 114 - ./readhb < HB/fs_183_6.rua > tmp/A 115 - ./readhb_size < HB/fs_183_6.rua > tmp/Asize 116 - ./umf4 117 - ./readhb < HB/arc130.rua > tmp/A 118 - ./readhb_size < HB/arc130.rua > tmp/Asize 119 - ./umf4 120 - ./readhb_nozeros < HB/arc130.rua > tmp/A 121 - ./readhb_size < HB/arc130.rua > tmp/Asize 122 - ./umf4 123 - ./readhb_nozeros < HB/arc130.rua > tmp/A 124 - ./readhb_size < HB/arc130.rua > tmp/Asize 125 - ./umf4 a 1e-6 126 127umf4: umf4.c 128 $(C) -o umf4 umf4.c $(LIBS) 129 130readhb: readhb.f 131 $(F77) $(F77FLAGS) -o readhb readhb.f $(F77LIB) 132 133readhb_size: readhb_size.f 134 $(F77) $(F77FLAGS) -o readhb_size readhb_size.f $(F77LIB) 135 136readhb_nozeros: readhb_nozeros.f 137 $(F77) $(F77FLAGS) -o readhb_nozeros readhb_nozeros.f $(F77LIB) 138 139#------------------------------------------------------------------------------- 140# compile the FORTRAN interface and demo 141#------------------------------------------------------------------------------- 142 143# This doesn't seem to work on the Mac (Snow Leopard, OS X 10.6.1) 144fortran: $(UMFPACK) umf4hb.f umf4_f77wrapper.o umf4zhb.f umf4_f77zwrapper.o $(UMFPACK) 145 $(F77) $(F77FLAGS) -o umf4hb umf4hb.f umf4_f77wrapper.o $(LIBS) 146 - ./umf4hb < HB/west0067.rua > my_umf4hb.out 147 - diff my_umf4hb.out umf4hb.out 148 $(F77) $(F77FLAGS) -o umf4zhb umf4zhb.f umf4_f77zwrapper.o $(LIBS) 149 - ./umf4zhb < HB/qc324.cua > my_umf4zhb.out 150 - diff my_umf4zhb.out umf4zhb.out 151 152fortran64: $(UMFPACK) umf4hb64.f umf4_f77wrapper64.o umf4_f77zwrapper64.o $(UMFPACK) 153 $(F77) $(F77FLAGS) -o umf4hb64 umf4hb64.f umf4_f77wrapper64.o $(LIBS) 154 - ./umf4hb64 < HB/west0067.rua > my_umf4hb64.out 155 - diff my_umf4hb64.out umf4hb64.out 156 157umf4_f77wrapper.o: umf4_f77wrapper.c 158 $(C) -c umf4_f77wrapper.c -o umf4_f77wrapper.o 159 160umf4_f77zwrapper.o: umf4_f77zwrapper.c 161 $(C) -c umf4_f77zwrapper.c -o umf4_f77zwrapper.o 162 163umf4_f77wrapper64.o: umf4_f77wrapper.c 164 $(C) -DDLONG -c umf4_f77wrapper.c -o umf4_f77wrapper64.o 165 166umf4_f77zwrapper64.o: umf4_f77zwrapper.c 167 $(C) -DZLONG -c umf4_f77zwrapper.c -o umf4_f77zwrapper64.o 168 169#------------------------------------------------------------------------------- 170# Remove all but the files in the original distribution 171#------------------------------------------------------------------------------- 172 173purge: clean 174 - $(RM) umfpack_simple a.out 175 - $(RM) umfpack_di_demo my_umfpack_di_demo.out 176 - $(RM) umfpack_dl_demo my_umfpack_dl_demo.out 177 - $(RM) umfpack_zi_demo my_umfpack_zi_demo.out 178 - $(RM) umfpack_zl_demo my_umfpack_zl_demo.out 179 - $(RM) umf4hb umf4zhb *.umf my_umf4hb.out 180 - $(RM) umf4hb64 my_umf4hb64.out my_umf4zhb.out 181 - $(RM) umf4 readhb readhb_nozeros readhb_size tmp/* 182 - $(RM) -r $(PURGE) 183 184clean: 185 - $(RM) -r $(CLEAN) 186