source: trunk/fsource/Makefile @ 127

Last change on this file since 127 was 127, checked in by toby, 13 years ago

make more portable Mac images

File size: 4.8 KB
Line 
1# build the compiled fortran codes needed by GSAS-II
2
3BIN = ../bin
4LIBS = $(BIN)/pack_f.$(SUFFIX) $(BIN)/pyspg.$(SUFFIX) $(BIN)/polymask.$(SUFFIX) $(BIN)/histogram2d.$(SUFFIX)
5LIBSwGSAS = $(BIN)/pypowder.$(SUFFIX)
6SYMLIB := $(wildcard spsubs/*.for)
7MACFIX = \#
8MACCOPY = \#
9#----------------------------------------------------------------------
10# linux (gfortran)
11#GSASlib = ./libgsas.a
12#COMPILER=--fcompiler=gnu95
13#PACKCOPTS=--f77flags="-fno-range-check"
14#SUFFIX=so
15#F2PY=f2py
16#MOVE=mv
17#DEL=echo
18#----------------------------------------------------------------------
19# mac (gfortran)
20GSASlib = /Users/toby/software/work/gsas/2009Aug31/libgsas.a
21COMPILER=--fcompiler=gnu95 --f90exec=/usr/local/bin/gfortran
22PACKCOPTS=--f77flags="-fno-range-check"
23SUFFIX=so
24F2PY=f2py
25MOVE=mv
26DEL=\#
27MACFIX = install_name_tool -change
28MACCOPY = cp
29#----------------------------------------------------------------------
30# windows g77
31#COMPILER=--fcompiler=gnu
32#PACKCOPTS=--f77flags="-fno-range-check"
33#SUFFIX=pyd
34#F2PY=f2py.py
35#MOVE=copy
36#DEL=del
37#----------------------------------------------------------------------
38
39ask: 
40        @echo ""
41        @echo "Use make all or choose a target: "
42        @echo " $(LIBS) $(LIBSwGSAS)"
43        @echo "   Note: target $(LIBSwGSAS) requires the GSAS object library."
44        @echo "     File $(LIBSwGSAS) is built from files that are not distributed."
45        @echo "     This is built last with make all. You may need to edit the"
46        @echo "     Makefile to set GSASlib to point to the correct location."
47
48all:: $(BIN) $(LIBS) $(LIBSwGSAS)
49
50# OSX: note that this is building .so's that require libgfortran and
51# libgcc_s.1 at runtime. Based on advice from Ilan at EPD, the .so files are
52# modified so that the libraries are placed in the same location as the .so files
53# Use otool -L <file.so> to see what is required
54#
55.PHONY: $(BIN)
56        mkdir $(BIN)
57
58$(BIN)/pack_f.$(SUFFIX): pack_f.for
59        $(F2PY) -c pack_f.for -m pack_f $(COMPILER) $(PACKCOPTS)
60        $(MACFIX) /usr/local/lib/libgcc_s.1.dylib @loader_path/libgcc_s.1.dylib pack_f.$(SUFFIX)
61        $(MACCOPY) /usr/local/lib/libgcc_s.1.dylib $(BIN)
62        $(MACFIX) /usr/local/lib/libgfortran.2.dylib @loader_path/libgfortran.2.dylib pack_f.$(SUFFIX)
63        $(MACCOPY) /usr/local/lib/libgfortran.2.dylib $(BIN)
64        $(MOVE) pack_f.$(SUFFIX) $(BIN)
65        $(DEL) pack_f.$(SUFFIX)
66
67$(BIN)/pypowder.$(SUFFIX): pypowder.for $(GSASlib)
68        $(F2PY) -c pypowder.for -m pypowder $(COMPILER) $(GSASlib)
69        $(MACFIX) /usr/local/lib/libgcc_s.1.dylib @loader_path/libgcc_s.1.dylib pypowder.$(SUFFIX)
70        $(MACCOPY) /usr/local/lib/libgcc_s.1.dylib $(BIN)
71        $(MACFIX) /usr/local/lib/libgfortran.2.dylib @loader_path/libgfortran.2.dylib pypowder.$(SUFFIX)
72        $(MACCOPY) /usr/local/lib/libgfortran.2.dylib $(BIN)
73        $(MOVE) pypowder.$(SUFFIX) $(BIN)
74        $(DEL) pypowder.$(SUFFIX)
75
76$(BIN)/pyspg.$(SUFFIX): pyspg.for $(SYMLIB)
77        $(F2PY) -c pyspg.for $(SYMLIB) -m pyspg $(COMPILER)
78        $(MACFIX) /usr/local/lib/libgcc_s.1.dylib @loader_path/libgcc_s.1.dylib pyspg.$(SUFFIX)
79        $(MACCOPY) /usr/local/lib/libgcc_s.1.dylib $(BIN)
80        $(MACFIX) /usr/local/lib/libgfortran.2.dylib @loader_path/libgfortran.2.dylib pyspg.$(SUFFIX)
81        $(MACCOPY) /usr/local/lib/libgfortran.2.dylib $(BIN)
82        $(MOVE) pyspg.$(SUFFIX) $(BIN)
83        $(DEL) pyspg.$(SUFFIX)
84
85$(BIN)/polymask.$(SUFFIX): polymask.for $(SYMLIB)
86        $(F2PY) -c polymask.for -m polymask $(COMPILER)
87        $(MACFIX) /usr/local/lib/libgcc_s.1.dylib @loader_path/libgcc_s.1.dylib polymask.$(SUFFIX)
88        $(MACCOPY) /usr/local/lib/libgcc_s.1.dylib $(BIN)
89        $(MACFIX) /usr/local/lib/libgfortran.2.dylib @loader_path/libgfortran.2.dylib polymask.$(SUFFIX)
90        $(MACCOPY) /usr/local/lib/libgfortran.2.dylib $(BIN)
91        $(MOVE) polymask.$(SUFFIX) $(BIN)
92        $(DEL) polymask.$(SUFFIX)
93
94$(BIN)/histogram2d.$(SUFFIX): histogram2d.for $(SYMLIB)
95        $(F2PY) -c histogram2d.for -m histogram2d $(COMPILER)
96        $(MACFIX) /usr/local/lib/libgcc_s.1.dylib @loader_path/libgcc_s.1.dylib histogram2d.$(SUFFIX)
97        $(MACCOPY) /usr/local/lib/libgcc_s.1.dylib $(BIN)
98        $(MACFIX) /usr/local/lib/libgfortran.2.dylib @loader_path/libgfortran.2.dylib histogram2d.$(SUFFIX)
99        $(MACCOPY) /usr/local/lib/libgfortran.2.dylib $(BIN)
100        $(MOVE) histogram2d.$(SUFFIX) $(BIN)
101        $(DEL) histogram2d.$(SUFFIX)
102
103
104# basic outline for build; change ????? and add any specific options to F2PY step
105# $(BIN)/?????.$(SUFFIX): ?????.for $(SYMLIB)
106#       $(F2PY) -c ?????.for -m ????? $(COMPILER)
107#       $(MACFIX) /usr/local/lib/libgcc_s.1.dylib @loader_path/libgcc_s.1.dylib ?????.$(SUFFIX)
108#       $(MACCOPY) /usr/local/lib/libgcc_s.1.dylib $(BIN)
109#       $(MACFIX) /usr/local/lib/libgfortran.2.dylib @loader_path/libgfortran.2.dylib ?????.$(SUFFIX)
110#       $(MACCOPY) /usr/local/lib/libgfortran.2.dylib $(BIN)
111#       $(MOVE) ?????.$(SUFFIX) $(BIN)
112#       $(DEL) ?????.$(SUFFIX)
113
114
115# no longer in use
116#$(BIN)/fitellipse.$(SUFFIX): fitellipse.for
117#       cd $(BIN); $(F2PY) -c ../fitellipse.for -m fitellipse --fcompiler=gfortran --f90exec=/usr/local/bin/gfortran --f77flags="-fno-range-check"
118
119
Note: See TracBrowser for help on using the repository browser.