forked from stefano-meschiari/Systemic2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.osx
154 lines (111 loc) · 5.58 KB
/
Makefile.osx
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# -*- mode: Makefile -*-
#
# Systemic 2 Makefile for Linux
# 2012, Stefano Meschiari (http://www.stefanom.org)
#
# Please modify these paths:
CC = /usr/local/bin/gcc
FORTRAN = /usr/local/bin/gfortran
# If you have installed GSL & company in non-standard places, add them here:
LIBS = -L./deps/lib -L/opt/local/lib -L/usr/local/lib
INCLUDES = -I./deps/include -I/opt/local/include -I/opt/local/include
LIBNAMES = -lm -lgsl -lgslcblas -lgfortran -lc -lswift -lf2c
PACKAGE_DIR = ~/Downloads
FFLAGS='-c -g -O3'
OPTIMIZED_FLAGS = -g -O3 $(INCLUDES) $(LIBS) -Wall -Wstrict-aliasing=2 -fopenmp -std=c99
DEBUG_FLAGS = $(INCLUDES) $(LIBS) -Wall -Werror -Wstrict-aliasing=2 -fopenmp -std=c99 -g3
SYSFLAGS=$(OPTIMIZED_FLAGS)
#SYSFLAGS=$(DEBUG_FLAGS)
#UPDATE = --update --java
UPDATE =
ALLOBJECTS = objects/swift.o objects/periodogram.o objects/extras.o objects/mercury.o objects/integration.o objects/mcmc.o objects/utils.o objects/simplex.o objects/kernel.o objects/bootstrap.o objects/kl.o objects/qsortimp.o objects/lm.o objects/lm.o objects/hermite.o objects/ode.o objects/odex.o objects/sa.o objects/de.o
# Only used when building Mac binary
LUA=/opt/local/bin/lua
macosx: src/*.c src/*.h $(ALLOBJECTS) utils/systemic_cli
$(CC) $(SYSFLAGS) $(CCFLAGS) -undefined dynamic_lookup -dynamiclib -o libsystemic.dylib objects/*.o $(LIBNAMES)
cp libsystemic.dylib R
javascript_tester: macosx
$(CC) -o test src/javascript.c objects/*.o $(CCFLAGS) $(SYSFLAGS) $(LIBNAMES)
utils/systemic_cli: src/systemic_cli.c src/*.c src/*.h $(ALLOBJECTS)
$(CC) -o utils/systemic_cli src/systemic_cli.c objects/*.o $(CCFLAGS) $(SYSFLAGS) $(LIBNAMES)
test: src/*.c src/*.h $(ALLOBJECTS)
$(CC) -o test src/test.c objects/*.o $(CCFLAGS) $(SYSFLAGS) $(LIBNAMES)
objects/kernel.o: src/kernel.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/kernel.o src/kernel.c
objects/qsortimp.o: src/qsortimp.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/qsortimp.o src/qsortimp.c
objects/extras.o: src/extras.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/extras.o src/extras.c
objects/periodogram.o: src/periodogram.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/periodogram.o src/periodogram.c
objects/simplex.o: src/simplex.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/simplex.o src/simplex.c
objects/integration.o: src/integration.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/integration.o src/integration.c
objects/mercury.o: src/mercury.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/mercury.o src/mercury.c
objects/utils.o: src/utils.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/utils.o src/utils.c
objects/swift.o: src/swift.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/swift.o src/swift.c
objects/bootstrap.o: src/bootstrap.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/bootstrap.o src/bootstrap.c
objects/kl.o: src/kl.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/kl.o src/kl.c
objects/mcmc.o: src/mcmc.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/mcmc.o src/mcmc.c
objects/lm.o: src/lm.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/lm.o src/lm.c
objects/hermite.o: src/hermite.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/hermite.o src/hermite.c
objects/ode.o: src/ode.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/ode.o src/ode.c
objects/odex.o: src/odex.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/odex.o src/odex.c
objects/sa.o: src/sa.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/sa.o src/sa.c
objects/de.o: src/de.c
$(CC) $(CCFLAGS) $(SYSFLAGS) -c -o objects/de.o src/de.c
.PHONY: clean cleanreqs
clean:
rm -rf test objects/*.o *.dylib *.a *.so prefs.txt
-rm -rf mac
# For all-in-one installations
reqs: ./deps ./deps/lib/libswift.a ./deps/lib/libf2c.a
./deps:
tar -xvzf deps.tar.gz
./deps/lib/libswift.a:
echo "Making swift"
cd deps/swift; export FORTRAN=$(FORTRAN); export FFLAGS=$(FFLAGS); export SWIFT_DIR="`pwd`"; sh Makefile.sh; ar ruv libswift.a objects/*.o; ar ts libswift.a; cp libswift.a ../lib
./deps/lib/libf2c.a:
echo "Making f2c"
cd deps/f2c; make -f makefile.u ; cp libf2c.a ../lib; cp f2c.h ../include
cleanreqs:
- rm -rf deps
LUAJIT=luajit
update_binding:
$(LUAJIT) lua/rparse.lua
update_ui:
cd ../SystemicGui; ant jar
package: clean cleanreqs reqs macosx utils/systemic_cli update_ui
$(LUA) lua/libs.lua libsystemic.dylib
- rm -R $(PACKAGE_DIR)/mac
mkdir $(PACKAGE_DIR)/mac
- rm prefs.txt
cp libsystemic.dylib R
cp -R deps R
- mkdir -p $(PACKAGE_DIR)/mac/Systemic $(PACKAGE_DIR)/mac/Systemic/deps/bin $(PACKAGE_DIR)/mac/Systemic/deps/lib $(PACKAGE_DIR)/mac/Systemic/gui
$(LUA) lua/libs.lua utils/systemic_cli
cp -RH R utils sample datafiles fits doc *.dylib *.txt $(PACKAGE_DIR)/mac/Systemic
cp -RH deps/lib/* $(PACKAGE_DIR)/mac/Systemic/deps/lib
cp -R ../SystemicGui/dist/SystemicGui.jar ../SystemicGui/dist/lib $(PACKAGE_DIR)/mac/Systemic/gui
tar -cvzf $(PACKAGE_DIR)/mac/Systemic/src.tar.gz --exclude '*.svn' --exclude '*.git' --exclude '*.o' src objects Makefile.osx
echo >$(PACKAGE_DIR)/mac/Systemic/gui/java_cmd.txt "/usr/libexec/java_home -v 1.6 --exec java -server -Xmx1g -jar "
- cp packaging/formac/* $(PACKAGE_DIR)/mac
- cp packaging/formac/*.txt $(PACKAGE_DIR)/mac/Systemic
- cp -R deps/lib/* $(PACKAGE_DIR)/mac/Systemic/R/deps/lib
- cp -R private/Systemic.app $(PACKAGE_DIR)/mac/Systemic
cd $(PACKAGE_DIR); tar -cvzf systemic_mac_`cat mac/Systemic/R/version`.tar.gz --exclude '*.svn' --exclude '*.git' --exclude '*.o' --exclude '*.a' mac
open -e R/version
srcpackage: clean cleanreqs
cd ..; tar -cvzf $(PACKAGE_DIR)/src.tar.gz --exclude '*.svn' --exclude '*.git' --exclude '*.o' --exclude '*.dylib' --exclude '.R*' --exclude ".temp*" --exclude '*.so' --exclude 'private' --exclude 'tests' Systemic2 SystemicGui