1 arta 1.1 VPATH = $(SRCDIR)
2 STATIC =
3 DBNAME = POSTGRESQL
4
|
5 arta 1.25 # This optional file has custom definitions created by the configure script
6 -include $(SRCDIR)/custom.mk
7
|
8 arta 1.7 # USED BY NEITHER linux_x86_64 nor linux_ia32
|
9 arta 1.1 PGIPATH = /usr/include/pgsql
10
|
11 rick 1.29 COMPILER = icc
12 ifeq ($(JSOC_MACHINE), mac_osx_ppc)
13 COMPILER = gcc
14 endif
15 ifeq ($(JSOC_MACHINE), mac_osx_ia32)
|
16 arta 1.23 COMPILER = gcc
17 endif
|
18 arta 1.1
19 # Check for debug vs. release build - release is default.
|
20 rick 1.29 # To do a debug build, either set the environment variable JSOC_DEBUG to 1, OR
21 # modify the following line so that DEBUG = 1. The environment variable takes
22 # precedence.
|
23 arta 1.27 DEBUG = 1
|
24 arta 1.1
25 ifdef JSOC_DEBUG
26 ifeq ($(JSOC_DEBUG), 1)
27 DEBUG = 1
28 else
29 DEBUG = 0
30 endif
31 endif
32
33 # No warnings are displayed, by default, for a release build.
34 WARN = 0
35
|
36 rick 1.29 # Builder can request warnings via environment variable (setenv JSOC_WARN 1).
37 # The environment variable takes precedence.
|
38 arta 1.1 ifdef JSOC_WARN
39 ifeq ($(JSOC_WARN), 1)
40 WARN = 1
41 else
42 WARN = 0
43 endif
44 endif
45
46 # Warnings are always displayed for a debug build.
47 ifeq ($(DEBUG), 1)
48 WARN = 1
49 endif
50
51 _JSOCROOT_ = ..
52
|
53 arta 1.23 ifeq ($(JSOC_MACHINE), mac_osx)
54 F77 = f77
55 else
|
56 arta 1.1 F77 = ifort
|
57 arta 1.23 endif
58
|
59 arta 1.1 # if fortran compiler
60 D_GCC_FORT =
61 ifeq ($(F77), ifort)
62 D_GCC_FORT = -DINTEL_FORTRAN
63 endif
64
65 ifeq ($(JSOC_MACHINE), linux_x86_64)
66 F77 = ifort -mcmodel=medium
67 endif
68
69 # Path to 3rd-party library headers
70 FMATHLIBSH = -I$(_JSOCROOT_)/lib_third_party/include
|
71 arta 1.6 CFITSIOH = -I$(_JSOCROOT_)/lib_third_party/include
|
72 arta 1.22 GSLH = -I$(_JSOCROOT_)/lib_third_party/include
|
73 arta 1.1
|
74 arta 1.14 ifeq ($(JSOC_MACHINE), linux_x86_64)
|
75 arta 1.5 # FMATHLIBS = -lmkl_lapack -lmkl -L$(_JSOCROOT_)/lib_third_party/lib/linux-x86_64/ -lfftw3f -lcfitsio
|
76 arta 1.13 # Path to 64-bit 3rd-party libraries
77 FMATHLIBSL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_x86_64/
78 CFITSIOL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_x86_64/
|
79 arta 1.16 GSLL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_x86_64/
|
80 arta 1.15 ECPGL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_x86_64/
|
81 arta 1.14 endif
82 ifeq ($(JSOC_MACHINE), linux_ia32)
|
83 arta 1.5 # FMATHLIBS = -lmkl_lapack -lmkl -L$(_JSOCROOT_)/lib_third_party/lib/linux-ia32/ -lfftw3f -lcfitsio
|
84 arta 1.13 # Path to 32-bit 3rd-party libraries
85 FMATHLIBSL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_ia32/
86 CFITSIOL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_ia32/
|
87 arta 1.16 GSLL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_ia32/
|
88 arta 1.15 ECPGL = -L$(_JSOCROOT_)/lib_third_party/lib/linux_ia32/
|
89 arta 1.1 endif
|
90 rick 1.29 ifeq ($(JSOC_MACHINE), mac_osx_ppc)
91 # FMATHLIBS = -lmkl_lapack -lmkl -L$(_JSOCROOT_)/lib_third_party/lib/linux-ia32/ -lfftw3f -lcfitsio
92 # Path to appropriate 3rd-party libraries
93 FMATHLIBSL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ppc/
94 CFITSIOL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ppc/
95 GSLL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ppc/
96 ECPGL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ppc/
97 endif
98 ifeq ($(JSOC_MACHINE), mac_osx_ia32)
|
99 arta 1.14 # FMATHLIBS = -lmkl_lapack -lmkl -L$(_JSOCROOT_)/lib_third_party/lib/linux-ia32/ -lfftw3f -lcfitsio
|
100 rick 1.29 # Path to appropriate 3rd-party libraries
101 FMATHLIBSL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ia32/
102 CFITSIOL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ia32/
103 GSLL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ia32/
104 ECPGL = -L$(_JSOCROOT_)/lib_third_party/lib/mac_osx_ia32/
|
105 arta 1.15 endif
|
106 arta 1.14
|
107 arta 1.15 # All 3rd-party math libraries - local rules can define a subset
108 FMATHLIBS = $(FMATHLIBSL) -lfftw3f -lcfitsio
109 CFITSIOLIBS = $(CFITSIOL) -lcfitsio
|
110 arta 1.25
|
111 arta 1.24 ifeq ($(COMPILER), gcc)
112 ifeq ($(JSOC_MACHINE), linux_x86_64)
|
113 arta 1.25 ifneq ($(CFITSIOFNAME_GCC_X86_64),)
114 FMATHLIBS = $(FMATHLIBSL) -lfftw3f -l$(CFITSIOFNAME_GCC_X86_64)
115 CFITSIOLIBS = $(CFITSIOL) -l$(CFITSIOFNAME_GCC_X86_64)
116 endif
|
117 arta 1.24 endif
118 endif
119
|
120 arta 1.16 GSLLIBS = $(GSLL) -lgsl -lgslcblas
|
121 arta 1.1
122 ### Build flags for all targets
123 #
124 LL_ALL = $(SYSLIBS)
125
126 GCC_LF_ALL = $(STATIC) -g
|
127 arta 1.10 ifeq ($(JSOC_MACHINE), linux_ia64)
128 ICC_LF_ALL = $(STATIC)
129 else
130 ICC_LF_ALL = $(STATIC) -xW
131 endif
|
132 arta 1.1
133 GCC_CF_GCCCOMP = -DGCCCOMP $(D_GCC_FORT)
134 ICC_CF_ICCCOMP = -DICCCOMP $(D_GCC_FORT)
135
136 # Disable several warnings/remarks when compiling with icc - icc's Wall is a bit picky, it
137 # complains about extern declarations in .c files.
138 # 1418 (remark) - external function definition with no prior declaration
139 # 1419 (warning) - external declaration in primary source file
140 # 310 (remark) - old style function declaration (pre-ANSI)
141 # 981 (remark) - operands are evaluted in unspecified order
142
143 ifeq ($(WARN), 1)
144 # Show warnings (always true for a debug build).
145 ICC_WARN = -Winline -Wall -wd1418 -wd1419 -wd310 -wd279 -wd981 -Wno-comment
146 GCC_WARN = -Winline -Wall -Wno-comment
147 F77_WARN =
148 else
149 # Don't show warnings.
150 ICC_WARN = -w0 -vec-report0 -Wno-comment
151 GCC_WARN = -Wno-comment
152 F77_WARN = -vec-report0
153 arta 1.1 endif
154
|
155 arta 1.7 # can't figure out how to get stupid make to do if/else if/else
|
156 arta 1.1 ifeq ($(DEBUG), 0)
|
157 arta 1.10 GCC_CF_ALL = -I$(SRCDIR)/base/include -std=gnu99 -O2 $(GCC_WARN) $(GCC_CF_GCCCOMP)
|
158 rick 1.9 ICC_CF_ALL = -I$(SRCDIR)/base/include -std=c99 -xW $(ICC_WARN) $(ICC_CF_ICCCOMP)
|
159 arta 1.7
|
160 arta 1.1 ifeq ($(JSOC_MACHINE), linux_x86_64)
|
161 arta 1.3 GCC_CF_ALL = -I$(SRCDIR)/base/include -std=gnu99 -O2 -march=opteron $(GCC_WARN) $(GCC_CF_GCCCOMP)
|
162 arta 1.7 endif
163
164 ifeq ($(JSOC_MACHINE), linux_ia64)
|
165 arta 1.8 GCC_CF_ALL = -I$(SRCDIR)/base/include -std=gnu99 -O2 $(GCC_WARN) $(GCC_CF_GCCCOMP)
|
166 arta 1.7 ICC_CF_ALL = -I$(SRCDIR)/base/include -std=c99 $(ICC_WARN) $(ICC_CF_ICCCOMP)
167 endif
168
169 ifeq ($(JSOC_MACHINE), linux_ia32)
|
170 arta 1.3 GCC_CF_ALL = -I$(SRCDIR)/base/include -std=gnu99 -O2 -march=i686 $(GCC_WARN) $(GCC_CF_GCCCOMP)
|
171 arta 1.1 endif
172
173 else
174
|
175 rick 1.9 GCC_CF_ALL = -I$(SRCDIR)/base/include -std=gnu99 -g $(GCC_WARN) $(GCC_CF_GCCCOMP)
176 ICC_CF_ALL = -I$(SRCDIR)/base/include -std=c99 -g $(ICC_WARN) $(ICC_CF_ICCCOMP)
|
177 arta 1.1
178 endif
179
180 # Fortran global LINK flags
181 F_LF_ALL = -nofor_main -no-ipo
182
183 # Fortran global COMPILE flags
184 ifeq ($(DEBUG), 0)
185 FF_ALL = -xW -ftrapuv $(F77_WARN)
186 else
187 FF_ALL = -ftrapuv $(F77_WARN)
188 endif
189
190 ### Build tools
191 #
192 # The C compiler named here must output full (header) dependencies in $(@).d.
193 # It may be necessary to create a script similar to ccd-gcc for your compiler.
194 #
195 GCC_CMPLR = $(SRCDIR)/build/ccd-gcc
196 ICC_CMPLR = $(SRCDIR)/build/ccd-icc
197 ARCHIVE = ar crus $@ $^
198 arta 1.1
199 ECPG = ecpg -o $@ -c $<
|
200 karen 1.17 SWIG = swig -perl5 -o $@ $<
|
201 arta 1.1
202 GCC_COMP = $(GCC_CMPLR) $(GCC_CF_ALL) $(CF_TGT) -o $@ -c $<
203 ICC_COMP = $(ICC_CMPLR) $(ICC_CF_ALL) $(CF_TGT) -o $@ -c $<
204
205 GCC_LINK = $(GCC_CMPLR) $(GCC_LF_ALL) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LL_ALL)
206 ICC_LINK = $(ICC_CMPLR) $(ICC_LF_ALL) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LL_ALL)
207
208 GCC_COMPLINK = $(GCC_CMPLR) $(GCC_CF_ALL) $(CF_TGT) $(GCC_LF_ALL) $(LF_TGT) -o $@ $< $(LL_TGT) $(LL_ALL)
209 ICC_COMPLINK = $(ICC_CMPLR) $(GCC_CF_ALL) $(CF_TGT) $(ICC_LF_ALL) $(LF_TGT) -o $@ $< $(LL_TGT) $(LL_ALL)
210
211 ifneq ($(COMPILER), icc)
212 COMP = $(GCC_COMP)
213 LINK = $(GCC_LINK)
214 COMPLINK = $(GCC_COMPLINK)
215 else
216 COMP = $(ICC_COMP)
217 LINK = $(ICC_LINK)
218 COMPLINK = $(ICC_COMPLINK)
219 endif
220
221 FCOMP = $(F77) $(FF_ALL) $(FF_TGT) -o $@ -c $<
222 arta 1.1 FLINK = $(F77) $(F_LF_ALL) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LL_ALL)
223
224 SLBIN = ln -sf ../../_$(JSOC_MACHINE)/$@ ../bin/$(JSOC_MACHINE)/
225 SLLIB = ln -sf ../../_$(JSOC_MACHINE)/$@ ../lib/$(JSOC_MACHINE)/
226
|
227 arta 1.21 ALL_LIBS_FPIC = $(LIBDRMSCLIENT_FPIC) $(LIBDBCLIENT_FPIC) $(LIBCMDPARAMS_FPIC) $(LIBTHREADUTIL_FPIC) $(LIBRICECOMP_FPIC) $(LIBDEFS_FPIC) $(LIBDSTRUCT_FPIC) $(LIBMISC_FPIC) $(LIBTIMEIO_FPIC) $(LIBFITSRW_FPIC)
|
228 arta 1.1
229 ### Standard parts
230 #
231 include $(SRCDIR)/Rules.mk
232
233 # Libraries from src/util linked with all programs.
|
234 arta 1.12 ifneq ($(COMPILER), icc)
235 SYSLIBS = -lz -ldl -lpthread -lm
236 else
237 SYSLIBS = -lz -ldl -lpthread
238 endif
|
239 arta 1.28 SRCLIBS = $(LIBTHREADUTIL) $(LIBRICECOMP) $(LIBCMDPARAMS) $(LIBDEFS) $(LIBDSTRUCT) $(LIBTIMEIO) $(LIBFITSRW) $(LIBERRLOG) $(LIBMISC)
240 FSRCLIBS = $(LIBTHREADUTIL) $(LIBRICECOMP) $(LIBCMDPARAMSF) $(LIBDEFS) $(LIBDSTRUCT) $(LIBTIMEIO) $(LIBFITSRW) $(LIBERRLOG) $(LIBMISC)
|
241 arta 1.1
242 ########## Libraries to link for server executables, ##############
243 ########## standalone executables and pipeline modules. ##############
244
245 # SERVERLIBS: Libraries linked with "server" programs that
246 # need direct access to the DRMS databases.
247 SERVERLIBS = $(LIBDRMS) $(LIBDB) $(LIBSUMSAPI) $(SRCLIBS)
248
249 # EXELIBS: Libraries linked with standalone executables.
250 EXELIBS = $(LIBDRMSCLIENT) $(LIBDBCLIENT) $(SRCLIBS)
251
252 # MODLIBS: Libraries linked with DRMS modules.
253 MODLIBS = $(LIBJSOC_MAIN) $(SERVERLIBS)
254
255 # MODLIBS_SOCK: Libraries linked with DRMS modules with socket connection to a drms_server
256 MODLIBS_SOCK = $(LIBJSOC_MAIN_SOCK) $(LIBDRMSCLIENT) $(LIBDBCLIENT) $(SRCLIBS)
257
258 # FMODLIBS: Libraries linked with DRMS Fortran modules
259 FMODLIBS_SOCK = $(LIBJSOC_MAIN_SOCK_F) $(LIBINTHANDLESF) $(LIBDRMSCLIENT) $(LIBDBCLIENT) $(FSRCLIBS)
260
261 MATHLIBS = $(LIBLSQR) $(LIBBLAS) $(LIBLAPACK)
262 arta 1.1
263 # Make rules that apply to all projects outside of the base DRMS/SUMS system
|
264 arta 1.3 -include $(SRCDIR)/proj/make_basic.mk
|
265 arta 1.1
266 # Make rules that apply to all projects, inside and outside of the base DRMS/SUMS system
267 $(CEXE): %: %.o $(EXELIBS)
268 $(LINK)
269 $(SLBIN)
270
271 $(FEXE): %: %.o $(MATHLIBS)
272 $(FLINK)
273 $(SLBIN)
274
|
275 arta 1.11 $(SERVEREXE): LL_TGT := $(LL_TGT) -lpq $(CFITSIOLIBS)
|
276 arta 1.1 $(SERVEREXE): %: %.o $(SERVERLIBS)
277 $(LINK)
278 $(SLBIN)
279
|
280 arta 1.11 $(MODEXE): LL_TGT := $(LL_TGT) -lpq $(CFITSIOLIBS)
|
281 arta 1.1 $(MODEXE): %: %.o $(MODLIBS)
282 $(LINK)
283 $(SLBIN)
284
|
285 arta 1.11 $(MODEXE_SOCK): LL_TGT := $(LL_TGT) $(CFITSIOLIBS)
|
286 arta 1.1 $(MODEXE_SOCK): %_sock: %.o $(MODLIBS_SOCK)
287 $(LINK)
288 $(SLBIN)
289
|
290 arta 1.11 $(FMODEXE): LL_TGT := $(LL_TGT) $(CFITSIOLIBS)
|
291 arta 1.1 $(FMODEXE): %_sock: %.o $(FMODLIBS_SOCK)
292 $(FLINK)
293 $(SLBIN)
|
294 tplarson 1.20
295 $(MODEXE_USEF): LL_TGT := $(LL_TGT) -lpq $(CFITSIOLIBS)
296 $(MODEXE_USEF): %: %.o $(MODLIBS)
297 $(FLINK)
298 $(SLBIN)
299
300 $(MODEXE_USEF_SOCK): LL_TGT := $(LL_TGT) $(CFITSIOLIBS)
301 $(MODEXE_USEF_SOCK): %_sock: %.o $(MODLIBS_SOCK)
302 $(FLINK)
303 $(SLBIN)
|