1
#-------------------------------------------------------------------------------
2
# UMFPACK Makefile for compiling on Unix systems (for GNU Make)
3
#-------------------------------------------------------------------------------
5
default: ../Lib/libumfpack.a
7
include ../../UFconfig/UFconfig.mk
9
C = $(CC) $(CFLAGS) $(UMFPACK_CONFIG) \
10
-I../Include -I../../AMD/Include -I../../UFconfig
12
#-------------------------------------------------------------------------------
14
#-------------------------------------------------------------------------------
16
# non-user-callable umf_*.[ch] files:
17
UMFCH = umf_assemble umf_blas3_update umf_build_tuples umf_create_element \
18
umf_dump umf_extend_front umf_garbage_collection umf_get_memory \
19
umf_init_front umf_kernel umf_kernel_init umf_kernel_wrapup \
20
umf_local_search umf_lsolve umf_ltsolve umf_mem_alloc_element \
21
umf_mem_alloc_head_block umf_mem_alloc_tail_block \
22
umf_mem_free_tail_block umf_mem_init_memoryspace \
23
umf_report_vector umf_row_search umf_scale_column \
24
umf_set_stats umf_solve umf_symbolic_usage umf_transpose \
25
umf_tuple_lengths umf_usolve umf_utsolve umf_valid_numeric \
26
umf_valid_symbolic umf_grow_front umf_start_front umf_2by2 \
27
umf_store_lu umf_scale
29
# non-user-callable umf_*.[ch] files, int/UF_long versions only (no real/complex):
30
UMFINT = umf_analyze umf_apply_order umf_colamd umf_free umf_fsize \
31
umf_is_permutation umf_malloc umf_realloc umf_report_perm \
34
# non-user-callable, created from umf_ltsolve.c, umf_utsolve.c,
35
# umf_triplet.c, and umf_assemble.c , with int/UF_long and real/complex versions:
36
UMF_CREATED = umf_lhsolve umf_uhsolve umf_triplet_map_nox \
37
umf_triplet_nomap_x umf_triplet_nomap_nox umf_triplet_map_x \
38
umf_assemble_fixq umf_store_lu_drop
40
# non-user-callable, int/UF_long and real/complex versions:
41
UMF = $(UMF_CREATED) $(UMFCH)
43
# user-callable umfpack_*.[ch] files (int/UF_long and real/complex):
44
UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \
45
umfpack_free_symbolic umfpack_get_numeric umfpack_get_lunz \
46
umfpack_get_symbolic umfpack_get_determinant umfpack_numeric \
47
umfpack_qsymbolic umfpack_report_control umfpack_report_info \
48
umfpack_report_matrix umfpack_report_numeric umfpack_report_perm \
49
umfpack_report_status umfpack_report_symbolic umfpack_report_triplet \
50
umfpack_report_vector umfpack_solve umfpack_symbolic \
51
umfpack_transpose umfpack_triplet_to_col umfpack_scale \
52
umfpack_load_numeric umfpack_save_numeric \
53
umfpack_load_symbolic umfpack_save_symbolic
55
# user-callable, created from umfpack_solve.c (umfpack_wsolve.h exists, though):
56
# with int/UF_long and real/complex versions:
57
UMFPACKW = umfpack_wsolve
59
USER = $(UMFPACKW) $(UMFPACK)
61
# user-callable, only one version for int/UF_long, real/complex, *.[ch] files:
62
GENERIC = umfpack_timer umfpack_tictoc umfpack_global
64
#-------------------------------------------------------------------------------
66
#-------------------------------------------------------------------------------
68
INC = ../Include/umfpack.h ../../UFconfig/UFconfig.h \
69
umf_config.h umf_version.h umf_internal.h umf_triplet.h \
70
$(addsuffix .h,$(UMFCH)) \
71
$(addsuffix .h,$(UMFINT)) \
72
$(addprefix ../Include/, $(addsuffix .h,$(USER))) \
73
$(addprefix ../Include/, $(addsuffix .h,$(GENERIC))) \
74
../../AMD/Include/amd_internal.h ../../AMD/Include/amd.h
76
#-------------------------------------------------------------------------------
77
# object files for each version
78
#-------------------------------------------------------------------------------
80
DI = $(addsuffix .o, $(subst umf_,umf_di_,$(UMF)) $(subst umfpack_,umfpack_di_,$(USER)))
81
DL = $(addsuffix .o, $(subst umf_,umf_dl_,$(UMF)) $(subst umfpack_,umfpack_dl_,$(USER)))
82
ZI = $(addsuffix .o, $(subst umf_,umf_zi_,$(UMF)) $(subst umfpack_,umfpack_zi_,$(USER)))
83
ZL = $(addsuffix .o, $(subst umf_,umf_zl_,$(UMF)) $(subst umfpack_,umfpack_zl_,$(USER)))
84
II = $(addsuffix .o, $(subst umf_,umf_i_,$(UMFINT)))
85
LL = $(addsuffix .o, $(subst umf_,umf_l_,$(UMFINT)))
86
GN = $(addsuffix .o, $(subst umfpack_,umfpack_gn_,$(GENERIC)))
88
#-------------------------------------------------------------------------------
89
# compile each int and UF_long routine (with no real/complex version)
90
#-------------------------------------------------------------------------------
92
umf_i_%.o: umf_%.c $(INC)
93
$(C) -DDINT -c $< -o $@
95
umf_l_%.o: umf_%.c $(INC)
96
$(C) -DDLONG -c $< -o $@
98
#-------------------------------------------------------------------------------
99
# compile each routine in the DI version
100
#-------------------------------------------------------------------------------
102
umf_di_%.o: umf_%.c $(INC)
103
$(C) -DDINT -c $< -o $@
105
umf_di_%hsolve.o: umf_%tsolve.c $(INC)
106
$(C) -DDINT -DCONJUGATE_SOLVE -c $< -o $@
108
umf_di_triplet_map_x.o: umf_triplet.c $(INC)
109
$(C) -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@
111
umf_di_triplet_map_nox.o: umf_triplet.c $(INC)
112
$(C) -DDINT -DDO_MAP -c $< -o $@
114
umf_di_triplet_nomap_x.o: umf_triplet.c $(INC)
115
$(C) -DDINT -DDO_VALUES -c $< -o $@
117
umf_di_triplet_nomap_nox.o: umf_triplet.c $(INC)
118
$(C) -DDINT -c $< -o $@
120
umf_di_assemble_fixq.o: umf_assemble.c $(INC)
121
$(C) -DDINT -DFIXQ -c $< -o $@
123
umf_di_store_lu_drop.o: umf_store_lu.c $(INC)
124
$(C) -DDINT -DDROP -c $< -o $@
126
umfpack_di_wsolve.o: umfpack_solve.c $(INC)
127
$(C) -DDINT -DWSOLVE -c $< -o $@
129
umfpack_di_%.o: umfpack_%.c $(INC)
130
$(C) -DDINT -c $< -o $@
132
#-------------------------------------------------------------------------------
133
# compile each routine in the DL version
134
#-------------------------------------------------------------------------------
136
umf_dl_%.o: umf_%.c $(INC)
137
$(C) -DDLONG -c $< -o $@
139
umf_dl_%hsolve.o: umf_%tsolve.c $(INC)
140
$(C) -DDLONG -DCONJUGATE_SOLVE -c $< -o $@
142
umf_dl_triplet_map_x.o: umf_triplet.c $(INC)
143
$(C) -DDLONG -DDO_MAP -DDO_VALUES -c $< -o $@
145
umf_dl_triplet_map_nox.o: umf_triplet.c $(INC)
146
$(C) -DDLONG -DDO_MAP -c $< -o $@
148
umf_dl_triplet_nomap_x.o: umf_triplet.c $(INC)
149
$(C) -DDLONG -DDO_VALUES -c $< -o $@
151
umf_dl_triplet_nomap_nox.o: umf_triplet.c $(INC)
152
$(C) -DDLONG -c $< -o $@
154
umf_dl_assemble_fixq.o: umf_assemble.c $(INC)
155
$(C) -DDLONG -DFIXQ -c $< -o $@
157
umf_dl_store_lu_drop.o: umf_store_lu.c $(INC)
158
$(C) -DDLONG -DDROP -c $< -o $@
160
umfpack_dl_wsolve.o: umfpack_solve.c $(INC)
161
$(C) -DDLONG -DWSOLVE -c $< -o $@
163
umfpack_dl_%.o: umfpack_%.c $(INC)
164
$(C) -DDLONG -c $< -o $@
166
#-------------------------------------------------------------------------------
167
# compile each routine in the ZI version
168
#-------------------------------------------------------------------------------
170
umf_zi_%.o: umf_%.c $(INC)
171
$(C) -DZINT -c $< -o $@
173
umf_zi_%hsolve.o: umf_%tsolve.c $(INC)
174
$(C) -DZINT -DCONJUGATE_SOLVE -c $< -o $@
176
umf_zi_triplet_map_x.o: umf_triplet.c $(INC)
177
$(C) -DZINT -DDO_MAP -DDO_VALUES -c $< -o $@
179
umf_zi_triplet_map_nox.o: umf_triplet.c $(INC)
180
$(C) -DZINT -DDO_MAP -c $< -o $@
182
umf_zi_triplet_nomap_x.o: umf_triplet.c $(INC)
183
$(C) -DZINT -DDO_VALUES -c $< -o $@
185
umf_zi_triplet_nomap_nox.o: umf_triplet.c $(INC)
186
$(C) -DZINT -c $< -o $@
188
umf_zi_assemble_fixq.o: umf_assemble.c $(INC)
189
$(C) -DZINT -DFIXQ -c $< -o $@
191
umf_zi_store_lu_drop.o: umf_store_lu.c $(INC)
192
$(C) -DZINT -DDROP -c $< -o $@
194
umfpack_zi_wsolve.o: umfpack_solve.c $(INC)
195
$(C) -DZINT -DWSOLVE -c $< -o $@
197
umfpack_zi_%.o: umfpack_%.c $(INC)
198
$(C) -DZINT -c $< -o $@
200
#-------------------------------------------------------------------------------
201
# compile each routine in the ZL version
202
#-------------------------------------------------------------------------------
204
umf_zl_%.o: umf_%.c $(INC)
205
$(C) -DZLONG -c $< -o $@
207
umf_zl_%hsolve.o: umf_%tsolve.c $(INC)
208
$(C) -DZLONG -DCONJUGATE_SOLVE -c $< -o $@
210
umf_zl_triplet_map_x.o: umf_triplet.c $(INC)
211
$(C) -DZLONG -DDO_MAP -DDO_VALUES -c $< -o $@
213
umf_zl_triplet_map_nox.o: umf_triplet.c $(INC)
214
$(C) -DZLONG -DDO_MAP -c $< -o $@
216
umf_zl_triplet_nomap_x.o: umf_triplet.c $(INC)
217
$(C) -DZLONG -DDO_VALUES -c $< -o $@
219
umf_zl_triplet_nomap_nox.o: umf_triplet.c $(INC)
220
$(C) -DZLONG -c $< -o $@
222
umf_zl_assemble_fixq.o: umf_assemble.c $(INC)
223
$(C) -DZLONG -DFIXQ -c $< -o $@
225
umf_zl_store_lu_drop.o: umf_store_lu.c $(INC)
226
$(C) -DZLONG -DDROP -c $< -o $@
228
umfpack_zl_wsolve.o: umfpack_solve.c $(INC)
229
$(C) -DZLONG -DWSOLVE -c $< -o $@
231
umfpack_zl_%.o: umfpack_%.c $(INC)
232
$(C) -DZLONG -c $< -o $@
234
#-------------------------------------------------------------------------------
235
# Create the generic routines (GN) using a generic rule
236
#-------------------------------------------------------------------------------
238
umfpack_gn_%.o: umfpack_%.c $(INC)
241
#-------------------------------------------------------------------------------
242
# Create the libumfpack.a library
243
#-------------------------------------------------------------------------------
245
../Lib/libumfpack.a: $(II) $(LL) $(GN) $(DI) $(DL) $(ZI) $(ZL)
246
$(AR) ../Lib/libumfpack.a $^
247
- $(RANLIB) ../Lib/libumfpack.a
249
#-------------------------------------------------------------------------------
250
# Remove all but the files in the original distribution
251
#-------------------------------------------------------------------------------
254
- $(RM) ../Lib/libumfpack.a