(file) Return to make_standalone.mk CVS log (file) (dir) Up to [Development] / JSOC

  1 arta  1.1 # Define WORKINGDIR so that we don't get that '/auto/home1' crud
  2           WORKINGDIR      = $(PWD)
  3           VPATH     = $(SRCDIR)
  4           
  5           ###########################################
  6           #                                         #
  7           #           COMPILER SELECTION            #
  8           #                                         #
  9           ###########################################
 10           COMPILER = icc
 11           FCOMPILER = ifort
 12           
 13           # Can override compiler selection
 14           ifneq ($(DRMS_COMPILER),)
 15           COMPILER = $(DRMS_COMPILER)
 16           endif
 17           
 18           ifneq ($(DRMS_FCOMPILER),)
 19           FCOMPILER = $(DRMS_FCOMPILER)
 20           endif
 21           
 22 arta  1.1 ###########################################
 23           #                                         #
 24           #                DEBUGGING                #
 25           #                                         #
 26           ###########################################
 27           DEBUG = 0
 28           
 29           ifdef DRMS_DEBUG
 30           ifeq ($(DRMS_DEBUG), 1)
 31           DEBUG = 1
 32           else
 33           DEBUG = 0
 34           endif
 35           endif
 36           
 37           ###########################################
 38           #                                         #
 39           #             DRMS LIBRARIES              #
 40           #                                         #
 41           ###########################################
 42           DRMS_INCS = /home/jsoc/cvs/Development/JSOC/base/include
 43 arta  1.1 
 44           ifeq ($(MACHINE), linux_x86_64)
 45           DRMS_LIBS = -L/home/jsoc/cvs/Development/JSOC/lib/linux_x86_64 -ldrms
 46           endif
 47           
 48           ifeq ($(MACHINE), linux_avx)
 49           DRMS_LIBS = -L/home/jsoc/cvs/Development/JSOC/lib/linux_avx -ldrms
 50           endif
 51           
 52           ###########################################
 53           #                                         #
 54           #            OTHER LIBRARIES              #
 55           #                                         #
 56           ###########################################
 57           EXELIBS =
 58           
 59           ###########################################
 60           #                                         #
 61           #         THIRD-PARTY LIBRARIES           #
 62           #                                         #
 63           ###########################################
 64 arta  1.1 ifeq ($(MACHINE), linux_x86_64)
 65           CFITSIO_INCS = /home/jsoc/include
 66           CFITSIO_LIBS = /home/jsoc/lib/linux-x86_64
 67           MPI_INCS = /home/jsoc/mpich2/include
 68           MPI_LIBS = /home/jsoc/mpich2/lib
 69           MPI_PATH = /home/jsoc/mpich2/bin
 70           POSTGRES_INCS = /usr/include
 71           POSTGRES_LIBS = /usr/lib64
 72           FFTW_INCS = /home/jsoc/include
 73           FFTW_LIBS = /home/jsoc/lib/linux-x86_64
 74           GSL_INCS = /home/jsoc/include
 75           GSL_LIBS = /home/jsoc/lib/linux-x86_64
 76           endif
 77           
 78           ifeq ($(MACHINE), linux_avx)
 79           CFITSIO_INCS = /home/jsoc/avx/include
 80           CFITSIO_LIBS = /home/jsoc/avx/lib
 81           MPI_INCS = /home/jsoc/avx/include
 82           MPI_LIBS = /home/jsoc/avx/lib
 83           MPI_PATH = /home/jsoc/avx/bin
 84           POSTGRES_INCS = /usr/include
 85 arta  1.1 POSTGRES_LIBS = /usr/lib64
 86           FFTW_INCS = /home/jsoc/avx/include
 87           FFTW_LIBS = /home/jsoc/avx/lib
 88           GSL_LIBS = /home/jsoc/avx/lib
 89           GSL_INCS = /home/jsoc/avx/include
 90           endif
 91           
 92           # PostgreSQL
 93           PGH = -I$(POSTGRES_INCS)
 94           PGL = -L$(POSTGRES_LIBS)
 95           PGLIBS = $(PGL) -lpq
 96           
 97           # CFITSIO
 98           CFITSIOH = -I$(CFITSIO_INCS)
 99           CFITSIOL = -L$(CFITSIO_LIBS)
100           CFITSIOLIBS =  $(CFITSIOL) -lcfitsio
101           
102           # GSL
103           GSLH = -I$(GSL_INCS)
104           GSLL = -L$(GSL_LIBS)
105           GSLLIBS = $(GSLL) -lgsl
106 arta  1.1 
107           # FFTW
108           FFTWH = -I$(FFTW_INCS)
109           FFTWL = -L$(FFTW_LIBS)
110           FFTW3LIBS = $(FFTWL) -lfftw3
111           FFTW3FLIBS = $(FFTWL) -lfftw3f
112           
113           ###########################################
114           #                                         #
115           #                WARNINGS                 #
116           #                                         #
117           ###########################################
118           GCC_WARN = -Wno-comment
119           ICC_WARNTOERR = -we266
120           FCOMPILER_WARN = -vec-report0
121           
122           ###########################################
123           #                                         #
124           #            GLOBAL LINK FLAGS            #
125           #                                         #
126           ###########################################
127 arta  1.1 # Libraries from src/util linked with all programs.
128           ifneq ($(COMPILER), icc)
129             SYSLIBS = -lz -ldl -lpthread -lm -lutil
130           else
131             SYSLIBS = -lz -ldl -lpthread -lutil
132           endif
133           
134           LL_ALL          = $(SYSLIBS) 
135           GCC_LF_ALL      = 
136           ICC_LF_ALL      = -diag-disable 10237 -openmp -static-intel -Wl,-export-dynamic
137           
138           # Fortran global LINK flags
139           ifeq ($(FCOMPILER), ifort)
140           F_LF_ALL        = -diag-disable 10237 -nofor-main -openmp -static-intel -Wl,-export-dynamic
141           endif
142           
143           ###########################################
144           #                                         #
145           #          GLOBAL COMPILE FLAGS           #
146           #                                         #
147           ###########################################
148 arta  1.1 GCC_CF_GCCCOMP  = -DGCCCOMP
149           ICC_CF_ICCCOMP  = -DICCCOMP -openmp
150           GLOBALSW = 
151           
152           ifeq ($(DEBUG), 0)
153             GCC_CF_ALL    = -I$(DRMS_INCS) -std=gnu99 -O2 $(GCC_WARN) $(GCC_CF_GCCCOMP) $(GLOBALSW) -DNDEBUG
154           
155             ifeq ($(MACHINE), linux_x86_64)
156               ICC_CF_ALL = -I$(DRMS_INCS) -std=c99 -D_GNU_SOURCE $(ICC_WARN) $(ICC_CF_ICCCOMP) $(GLOBALSW) -DNDEBUG
157               GCC_CF_ALL  = -I$(DRMS_INCS) -std=gnu99 -O2 -march=opteron $(GCC_WARN) $(GCC_CF_GCCCOMP) $(GLOBALSW)
158             endif
159           
160             ifeq ($(MACHINE), linux_avx)
161               ICC_CF_ALL = -xavx -I$(DRMS_INCS) -std=c99 -D_GNU_SOURCE $(ICC_WARN) $(ICC_CF_ICCCOMP) $(GLOBALSW) -DNDEBUG
162             endif
163           else
164           # -g tells the icc and gcc compilers to generate full debugging information
165             GCC_CF_ALL = -I$(DRMS_INCS) -std=gnu99 -g $(GCC_WARN) $(GCC_CF_GCCCOMP) $(GLOBALSW)
166             ICC_CF_ALL = -I$(DRMS_INCS) -std=c99 -D_GNU_SOURCE -g $(ICC_WARN) $(ICC_CF_ICCCOMP) $(GLOBALSW)
167           endif
168           
169 arta  1.1 # Fortran global COMPILE flags
170           ifeq ($(MACHINE), linux_avx)
171             ifeq ($(FCOMPILER), ifort)
172               F_CF_ALL := -xavx -openmp
173             endif
174           endif
175           
176           ifeq ($(MACHINE), linux_x86_64)
177             ifeq ($(FCOMPILER), ifort)
178               F_CF_ALL := -openmp
179             endif
180           endif
181           
182           # Other compiler-specific Fortran COMPILE flags
183           ifeq ($(FCOMPILER), ifort)
184             FCFLAGS_INIT := -ftrapuv
185           else
186             # must be gfortran
187             FCFLAGS_INIT  :=
188           endif
189           
190 arta  1.1 ifeq ($(DEBUG), 0)
191           # -xW optimizes ifort compilation for Pentium 4
192           # -ftrapuv initializes stack local variables to an unusual value to aid error detection.
193             F_CF_ALL      := $(F_CF_ALL) $(FCOMPILER_WARN)
194           else
195             F_CF_ALL      := $(F_CF_ALL) -g $(FCFLAGS_INIT) $(FCOMPILER_WARN)
196           endif
197           
198           ICC_CMPLR	= icc
199           GCC_CMPLR	= gcc
200           
201           GCC_COMP        = $(GCC_CMPLR) $(GCC_CF_ALL) $(CF_TGT) -o $@ -c $<
202           ICC_COMP        = $(ICC_CMPLR) $(ICC_CF_ALL) $(CF_TGT) -o $@ -c $<
203           
204           GCC_LINK        = $(GCC_CMPLR) $(GCC_LF_ALL) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LL_ALL)
205           ICC_LINK        = $(ICC_CMPLR) $(ICC_LF_ALL) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LL_ALL)
206           
207           GCC_COMPLINK    = $(GCC_CMPLR) $(GCC_CF_ALL) $(CF_TGT) $(GCC_LF_ALL) $(LF_TGT) -o $@ $< $(LL_TGT) $(LL_ALL)
208           ICC_COMPLINK    = $(ICC_CMPLR) $(GCC_CF_ALL) $(CF_TGT) $(ICC_LF_ALL) $(LF_TGT) -o $@ $< $(LL_TGT) $(LL_ALL)
209           
210           ifneq ($(COMPILER), icc)
211 arta  1.1   COMP          = $(GCC_COMP)
212             LINK          = $(GCC_LINK)
213             COMPLINK      = $(GCC_COMPLINK)
214           else
215             COMP          = $(ICC_COMP)
216             LINK          = $(ICC_LINK)
217             COMPLINK      = $(ICC_COMPLINK)
218           endif
219           
220           FCOMP           = $(FCOMPILER) $(F_CF_ALL) $(FF_TGT) -o $@ -c $<
221           FLINK           = $(FCOMPILER) $(F_LF_ALL) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LL_ALL)
222           
223           ###########################################
224           #                                         #
225           #               RECIPES                   #
226           #                                         #
227           ###########################################
228           %.o:	        %.f
229           		$(FCOMP)
230           
231           %.o:	    	%.f90
232 arta  1.1 		$(FCOMP)
233           
234           %.o:	    	%.c
235           		$(COMP)
236           
237           $(CEXE):        %:      %.o $(EXELIBS)
238           		$(LINK)
239           
240           $(FEXE):        %:      %.o
241           		$(FLINK)
242           
243           $(MODEXE):      LL_TGT := $(LL_TGT) $(DRMS_LIBS) $(PGLIBS) $(CFITSIOLIBS)
244           $(MODEXE):      %:      %.o $(BLAH)
245           			$(LINK)
246           
247           # MODEXE_USEF contains all C direct-connect modules that use third-party Fortran libraries.
248           $(MODEXE_USEF): LL_TGT := $(LL_TGT) $(DRMS_LIBS) $(PGLIBS) $(CFITSIOLIBS)
249           $(MODEXE_USEF):     %:  %.o $(BLAH)
250           			$(FLINK)
251           
252           .PHONY:		clean
253 arta  1.1 clean:
254           		rm -f $(CLEAN)

Karen Tian
Powered by
ViewCVS 0.9.4