hammurabi_Makefile 8 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#--------------------------------------------------------
#--------------------------------------------------------
#
#  This is the hammurabi Makefile.  The first part needs to be configured for your system.
#
#  You can choose to build:
#  
#  hammurabi:  		by default, the basic hammurabi, pure C++, for constant or grid TEs and simple analytic models for CREs
#  hammurabi.ne2001:  	including linking to the (smooth) NE2001 Fortran code using cfortran.h
#  hammurabi.galprop:	including both NE2001 and Galprop to simulate the CRE propagation with the hammurabi magnetic field first.
#  hammurabi.debug:  	including all code, debug flags.
#  all:			builds all of these.  
#
#--------------------------------------------------------
#--------------------------------------------------------

#
#  Give the locations of the various libraries.  Should containt include and lib subdirectories.  
#
#BASE_DIR = $(HOME)/space/sw/
#HAMMURABI_HOME = $(BASE_DIR)/hammurabi/branches/mine
#GSL = $(BASE_DIR)/gsl/gsl-1.13/build/
#FFTW = $(BASE_DIR)/fftw/fftw-3.2.2/build/
#CFITSIO = $(BASE_DIR)/cfitsio/cfitsio/build/

BASE_DIR = /home/Downloads/hammurabicode-code
HAMMURABI_HOME = $(BASE_DIR)
GSL = /usr/local
FFTW = /usr/local
CFITSIO = /usr/local

#
#  These are needed if you build with Galprop
#
GALPROP = $(BASE_DIR)/galprop/galprop/build
CCFITS = $(BASE_DIR)/ccfits/CCfits//build/
Theo Steininger's avatar
Theo Steininger committed
37
CLHEP = $(BASE_DIR)/clhep/clhep/build/
38
39
40
41
42
43
44

#
#  What c++ compiler you are using?
#
CXX = g++ 
#
# On OSX, maybe
Theo Steininger's avatar
Theo Steininger committed
45
#CXX = g++-mp-5 
46
47
48
49
50
51
52

#
#  Compile options?  64bit system (-m64), optimization (-O2), openMP (-fopenmp), warnings (-Wall), etc.
#
CXXFLAGS =  -m64 -O2 -fopenmp -Wall
#
#  With OSX g++-mp-4.3
Theo Steininger's avatar
Theo Steininger committed
53
#CXXFLAGS = -fopenmp -O2 -g -fno-inline-functions -Wall -Wextra -Wno-unknown-pragmas -ansi
54
55
56
57
58
59
60

#
#  Which Fortran compiler you are using?  Only if compiling with NE2001 and/or Galprop
#
FC = gfortran
#
# On OSX, maybe
Theo Steininger's avatar
Theo Steininger committed
61
#FC = gfortran-mp-5
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

#  For gfortran
FCFLAGS = -O2 -ffixed-form -ffixed-line-length-132 -c
#
# For ifort 
#FCFLAGS =-O -extend-source -c
#
# For f77 ?
#FCFLAGS = 

#
# For linking to C++ with gcc
#
LFORTFLAGS= -Df2cFortran 

#
#  Additional options depending on how you want to run:
#  
Theo Steininger's avatar
Theo Steininger committed
80
81
82
83
#  Use openMP.  Right now, this is mandatory.  (Contact
#   trjaffe@gmail.com for help compiling without if for some reason you
#   need it.)
LFLAGS_CUSTOM = -fopenmp
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#
#  OSX with gfortran-mp-4.3
#LFLAGS_CUSTOM = -fopenmp -lgcc_s.1 
#

# 
#
#  For J. West using f77 and gcc 4.1.2? 
#
#LFORTFLAGS += -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/ -lgcc -lg2c 
#LFLAGS_CUSTOM += -lgcc_s


#------------------------------------------------------------
#------------------------------------------------------------
#
#  From here onwards, nothing should need to be changed. 
#
#------------------------------------------------------------
#------------------------------------------------------------

hammurabi.debug: CXXFLAGS=-m64 -g -Wall


hammurabi: ALL_INC = -I$(CFITSIO)/include -I$(GSL)/include -I. -I$(FFTW)/include -I$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/include/
hammurabi.ne2001: ALL_INC = -I$(CFITSIO)/include -I$(GSL)/include -I. -I$(FFTW)/include -I$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/include/
hammurabi.galprop: ALL_INC = -I$(CFITSIO)/include -I$(GALPROP)/.. -I$(GALPROP)/include/ -I$(CCFITS)/include/ -I$(CLHEP)/include  -I$(GSL)/include -I.  -I$(FFTW)/include -I$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/include/
hammurabi.debug: ALL_INC = -I$(CFITSIO)/include -I$(GALPROP)/.. -I$(GALPROP)/include/ -I$(CCFITS)/include/ -I$(CLHEP)/include  -I$(GSL)/include -I.  -I$(FFTW)/include -I$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/include/
libhamprop.a: ALL_INC = -I$(CFITSIO)/include -I$(GALPROP)/.. -I$(GALPROP)/include/ -I$(GSL)/include -I.  -I$(FFTW)/include -I$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/include/


hammurabi: ALL_L = -L$(CFITSIO)/lib -L$(GSL)/lib  -L$(FFTW)/lib -L$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/lib/ -L.
hammurabi.ne2001: ALL_L = -L$(CFITSIO)/lib -L$(GSL)/lib  -L$(FFTW)/lib -L$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/lib/ -L.
hammurabi.galprop: ALL_L = -L$(CFITSIO)/lib -L$(GALPROP)/lib/ -L$(CCFITS)/lib/ -L$(CLHEP)/lib  -L$(GSL)/lib  -L$(FFTW)/lib -L$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/lib/ -L.
hammurabi.debug: ALL_L = -L$(CFITSIO)/lib -L$(GALPROP)/lib/ -L$(CCFITS)/lib/ -L$(CLHEP)/lib  -L$(GSL)/lib  -L$(FFTW)/lib -L$(HEALPIX)/src/cxx/$(HEALPIX_TARGET)/lib/ -L.


hammurabi : CXXFLAGS+= $(ALL_INC) -c 
hammurabi.ne2001:  CXXFLAGS+= $(ALL_INC) -c -DNE2001
hammurabi.galprop:  CXXFLAGS+= $(ALL_INC) -c -DGALDEF_PATH=\"./GALDEF\" -DFITSDATA_PATH=\"./FITS/\" -DDATA_PATH=\"./DATA\"  -DGALPROP  -DNE2001
hammurabi.debug : CXXFLAGS+= $(ALL_INC) -c -DGALDEF_PATH=\"./GALDEF\" -DFITSDATA_PATH=\"./FITS/\" -DDATA_PATH=\"./DATA\" -DGALPROP  -DNE2001 -g -Wall
# Turns off sanity check to avoid some circularity.  See Galprop README.tess
libhamprop.a: CXXFLAGS+= $(ALL_INC) -c -DGALDEF_PATH=\"./GALDEF\" -DFITSDATA_PATH=\"./FITS/\" -DDATA_PATH=\"./DATA\"  -DLIBHAMPROP -DGALPROP -DNE2001


Theo Steininger's avatar
Theo Steininger committed
129
130
131
132
hammurabi:  LFLAGS = $(ALL_L) -lhammurabi -lhealpix_cxx -lcxxsupport -lc_utils -lfftpack -lcfitsio -lgsl -lgslcblas -lm -lfftw3 -lfftw3_omp $(LFLAGS_CUSTOM) 
hammurabi.ne2001:  LFLAGS = $(ALL_L) -lhammurabi -lNE2001 -lhealpix_cxx -lcxxsupport -lc_utils -lfftpack -lcfitsio -lgsl -lgslcblas -lm -lfftw3 -lfftw3_omp -lgfortran $(LFLAGS_CUSTOM) 
hammurabi.debug:  LFLAGS = $(ALL_L) -lhammurabi -lNE2001 -lhealpix_cxx -lcxxsupport -lc_utils -lfftpack -lcfitsio -lgsl -lgslcblas -lm -lfftw3 -lfftw3_omp -lgfortran -lgalprop -lskymap -lCCfits -lCLHEP $(LFLAGS_CUSTOM)  
hammurabi.galprop:  LFLAGS = $(ALL_L) -lhammurabi -lNE2001 -lhealpix_cxx -lcxxsupport -lc_utils -lfftpack -lcfitsio -lgsl -lgslcblas -lm -lfftw3 -lfftw3_omp -lgfortran -lgalprop -lskymap -lCCfits -lCLHEP $(LFLAGS_CUSTOM) 
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176



default:
	make hammurabi
all: 
	make clean ; make hammurabi ; make clean ; make hammurabi.ne2001; make clean; make hammurabi.galprop ; make clean ; make hammurabi.debug

%.o : %.cpp
	$(CXX) $(CXXFLAGS)  -o $@ $<
%.o : %.cc
	$(CXX) $(CXXFLAGS) -o $@ $<
%.o : %.c
	$(CXX) $(CXXFLAGS) -o $@ $<	
%.o : %.f
	$(FC) $(FCFLAGS) -o $@ $<

class_TE_density.o: class_TE_density.cpp
	$(CXX) $(CXXFLAGS) $(LFORTFLAGS) -o $@ $<

NE2001_OBJ = dmdsm.NE2001.o density.NE2001.o neclumpN.o nevoidN.o neLISM.NE2001.o

HAMMURABI_OBJ = class_Integrator.o class_List.o class_B_field2.o tess_tools.o class_TE_density.o class_CRE.o namespace_Vec_Handling.o class_Dust.o

run:
	mkdir run

$(HAMMURABI_OBJ):	hammurabi.h CGS_units_file.h proto*.h tess_tools.h

libNE2001.a: $(NE2001_OBJ)
	ar rc $@ $(NE2001_OBJ)
	ranlib $@

hammurabi: 	$(HAMMURABI_OBJ) libhammurabi.a run hammurabi.o
	$(CXX) -o run/hammurabi hammurabi.o $(LFLAGS) $(LFORTFLAGS)

hammurabi.ne2001:	$(HAMMURABI_OBJ) $(NE2001_OBJ) $(NE2001_DATA) libNE2001.a libhammurabi.a run hammurabi.o
	$(CXX) -o run/hammurabi.ne2001 hammurabi.o $(LFLAGS) $(LFORTFLAGS)

hammurabi.galprop: 	$(HAMMURABI_OBJ) $(NE2001_OBJ) $(NE2001_DATA) libNE2001.a libhammurabi.a run hammurabi.o
	$(CXX) -o run/hammurabi.galprop hammurabi.o $(LFLAGS) $(LFORTFLAGS)

hammurabi.debug: 	$(HAMMURABI_OBJ) $(NE2001_DATA) libNE2001.a libhammurabi.a run hammurabi.o
	$(CXX) -o run/hammurabi.debug hammurabi.o $(LFLAGS) $(LFORTFLAGS)
Theo Steininger's avatar
Theo Steininger committed
177
178
179
180
ifeq ($(OSTYPE),darwin)
	 install_name_tool -change "@rpath/libCLHEP-2.3.3.1.dylib" "$(CLHEP)/lib/libCLHEP-2.3.3.1.dylib" run/hammurabi.debug
endif	
	
181
182
183
184
185
186
187
188
189
190
191
192
print_constants: print_constants.o
		 $(CXX) -o run/print_constants print_constants.o 

# To link in B_field to galprop, use this:
libhamprop.a:  class_B_field2.o tess_tools.o namespace_Vec_Handling.o 
	ar cru libhamprop.a class_B_field2.o tess_tools.o namespace_Vec_Handling.o 

libhammurabi.a: $(HAMMURABI_OBJ)
	ar cru libhammurabi.a $(HAMMURABI_OBJ)


clean:
Theo Steininger's avatar
Theo Steininger committed
193
	rm *.a *.o 
194
195
196
197
198
199
200
201
202

test:
	(cd unit_test; ./test.csh)

test_big:
	(cd unit_test; ./test.csh big)


tarfile:
Theo Steininger's avatar
Theo Steininger committed
203
204
205
	tar cvzf hammurabi.tgz *cpp *h Makefile *.f README hampy

unittar:
206
207
208
209
	tar cvzf hammurabi_unit_test_inputs.tgz unit_test/inputs unit_test/GALDEF unit_test/FITS unit_test/negrid_n400.bin 
	tar cvzf hammurabi_unit_test_ref.tgz unit_test/ref unit_test/ref.big  
	tar cvzf hammurabi_unit_test_ref.mini.tgz unit_test/ref.mini
	tar cvzf hammurabi_unit_test_ref.big.tgz unit_test/ref.big  
Theo Steininger's avatar
Theo Steininger committed
210