~ubuntu-branches/ubuntu/wily/julia/wily

« back to all changes in this revision

Viewing changes to deps/Makefile

  • Committer: Package Import Robot
  • Author(s): Sébastien Villemot
  • Date: 2013-02-06 17:54:29 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20130206175429-13br5kqpkfjqdmre
Tags: 0.0.0+20130206.git32ff5759-1
* New upstream snapshot.
* debian/copyright: reflect upstream changes
* debian/rules: update get-orig-source to reflect upstream changes
   + Don't ship nginx
   + Adapt for new configure-random target in deps/Makefile
* Enable build of Tk wrapper.
   + debian/control: add build dependency on tk-dev
   + debian/rules: add tk rule to build-arch
* debian/julia.install: install VERSION and COMMIT files
* no-webrepl.patch: new patch
* Refresh other patches
* Add source override for config.status file under deps/random/

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
CONFIGURE_COMMON += --host=$(XC_HOST) --build=$(CONFIG_GUESS)
19
19
endif
20
20
 
21
 
#autoconf configure-driven scripts: llvm readline pcre arpack fftw clp unwind lighttpd gmp glpk patchelf
 
21
#autoconf configure-driven scripts: llvm readline pcre arpack fftw unwind gmp glpk patchelf
22
22
#custom configure-driven script: zlib nginx
23
 
#custom Makefile rules: openlibm Faddeeva-wrapper rmath double-conversion random gmp-wrapper suitesparse-wrapper suitesparse lapack openblas uv tk-wrapper
 
23
#custom Makefile rules: openlibm Rmath double-conversion random gmp-wrapper suitesparse-wrapper suitesparse lapack openblas uv tk-wrapper
24
24
 
25
25
# prevent installing libs into usr/lib64 on opensuse
26
26
unexport CONFIG_SITE
27
27
 
28
 
STAGE1_DEPS = uv openlibm-extras random rmath double-conversion glpk
29
 
STAGE2_DEPS = gmp-wrapper Faddeeva-wrapper
30
 
STAGE3_DEPS = suitesparse-wrapper
 
28
STAGE1_DEPS = uv openlibm-extras random Rmath double-conversion
 
29
STAGE2_DEPS = gmp-wrapper
 
30
STAGE3_DEPS = glpk-wrapper suitesparse-wrapper
31
31
 
 
32
ifeq ($(USE_SYSTEM_LIBUNWIND), 0)
32
33
ifeq ($(OS), Linux)
33
34
STAGE1_DEPS += unwind
34
 
endif
35
 
 
36
 
ifeq ($(OS), FreeBSD)
 
35
else ifeq ($(OS), FreeBSD)
37
36
STAGE1_DEPS += unwind
38
37
endif
 
38
endif
39
39
 
40
40
WGET = $(abspath .)/jldownload
41
41
WGET_DASH_O = $(WGET)
50
50
STAGE1_DEPS += llvm
51
51
endif
52
52
 
53
 
# Disable web repl
54
 
#ifneq ($(OS),WINNT)
55
 
#STAGE1_DEPS += lighttpd
56
 
#endif
57
 
 
58
53
ifeq ($(OS),WINNT)
59
54
READLINE_VER = 5.0
60
55
endif
79
74
STAGE1_DEPS += gmp
80
75
endif
81
76
 
 
77
ifeq ($(USE_SYSTEM_GLPK), 0)
 
78
STAGE1_DEPS += glpk
 
79
endif
 
80
 
82
81
ifeq ($(USE_SYSTEM_ZLIB), 0)
83
82
STAGE1_DEPS += zlib
84
83
endif
87
86
STAGE2_DEPS += arpack
88
87
endif
89
88
 
90
 
#ifeq ($(USE_SYSTEM_SUITESPARSE), 0)
 
89
ifeq ($(USE_SYSTEM_SUITESPARSE), 0)
91
90
STAGE2_DEPS += suitesparse
92
 
#endif
 
91
endif
93
92
 
94
93
#ifeq ($(USE_SYSTEM_LAPACK), 0)
95
94
#STAGE2_DEPS += lapack
99
98
 
100
99
ifeq ($(OS), WINNT)
101
100
LIBTOOL_CCLD = CCLD="$(CC) -no-undefined -avoid-version"
102
 
AUTOTOOLS_PATH_CORRECT = -cp -f $(USRBIN)/$(@F) $(USR)/$(JL_LIBDIR)/$(@F)
 
101
AUTOTOOLS_PATH_CORRECT = -cp -f $(BUILD)/bin/$(@F) $(BUILD)/lib/$(@F)
103
102
endif
104
103
 
105
104
## Common build target prefixes
107
106
LIBS = $(STAGE1_DEPS) $(STAGE2_DEPS) $(STAGE3_DEPS)
108
107
 
109
108
default: $(BUILD) install
 
109
get: $(addprefix get-, $(LIBS))
 
110
configure: $(addprefix configure-, $(LIBS))
110
111
compile: $(addprefix compile-, $(LIBS))
 
112
check: $(addprefix check-, $(LIBS))
111
113
install: $(addprefix install-, $(LIBS))
112
114
cleanall: $(addprefix clean-, $(LIBS))
113
115
distclean: $(addprefix distclean-, $(LIBS))
114
116
        rm -rf $(BUILD)
 
117
getall: get-llvm get-readline get-uv get-pcre get-double-conversion get-openlibm get-random get-openblas get-fftw get-suitesparse get-clp get-unwind get-nginx get-gmp get-glpk get-zlib get-patchelf
115
118
 
116
119
## PATHS ##
117
120
DIRS = $(addprefix $(BUILD)/,lib include bin share etc)
125
128
BUILD_LLVM_CLANG = 1
126
129
# because it's a build requirement
127
130
endif
 
131
 
128
132
ifeq ($(LLVM_ASSERTIONS), 1)
129
133
LLVM_BUILDDIR = build/Release+Asserts
130
134
else
131
135
LLVM_BUILDDIR = build/Release
132
136
endif
133
137
 
 
138
ifeq ($(OS),WINNT)
 
139
LLVM_LIB_FILE = LLVM-$(LLVM_VER)$(LLVM_LIB_SUFFIX).$(SHLIB_EXT)
 
140
LLVM_OBJ_SOURCE = llvm-$(LLVM_VER)/$(LLVM_BUILDDIR)/bin/$(LLVM_LIB_FILE)
 
141
else
134
142
LLVM_LIB_FILE = libLLVM-$(LLVM_VER)$(LLVM_LIB_SUFFIX).$(SHLIB_EXT)
 
143
LLVM_OBJ_SOURCE = llvm-$(LLVM_VER)/$(LLVM_BUILDDIR)/lib/$(LLVM_LIB_FILE)
 
144
endif
135
145
LLVM_OBJ_TARGET = $(BUILD)/lib/$(LLVM_LIB_FILE)
136
 
ifeq ($(OS),WINNT)
137
 
        LLVM_OBJ_SOURCE = llvm-$(LLVM_VER)/$(LLVM_BUILDDIR)/bin/LLVM-$(LLVM_VER)$(LLVM_LIB_SUFFIX).$(SHLIB_EXT)
138
 
else
139
 
        LLVM_OBJ_SOURCE = llvm-$(LLVM_VER)/$(LLVM_BUILDDIR)/lib/$(LLVM_LIB_FILE)
140
 
endif
141
146
 
142
 
compile-llvm: $(LLVM_OBJ_SOURCE)
143
 
install-llvm: $(LLVM_OBJ_TARGET)
144
147
 
145
148
ifeq ($(LLVM_VER), 3.0)
146
149
LLVM_TAR=llvm-$(LLVM_VER).tar.gz
148
151
LLVM_TAR=llvm-$(LLVM_VER).src.tar.gz
149
152
endif
150
153
 
151
 
ifneq ($(BUILD_LLVM_CLANG), 1)
152
 
LLVM_CLANG_TAR=
153
 
LLVM_COMPILER_RT_TAR=
154
 
else
155
 
 
 
154
ifeq ($(BUILD_LLVM_CLANG),1)
156
155
ifeq ($(LLVM_VER), 3.0)
157
156
LLVM_CLANG_TAR=clang-$(LLVM_VER).tar.gz
158
157
LLVM_COMPILER_RT_TAR=
160
159
LLVM_CLANG_TAR=clang-$(LLVM_VER).src.tar.gz
161
160
LLVM_COMPILER_RT_TAR=compiler-rt-$(LLVM_VER).src.tar.gz
162
161
endif
163
 
 
 
162
else
 
163
LLVM_CLANG_TAR=
 
164
LLVM_COMPILER_RT_TAR=
 
165
endif
 
166
 
 
167
LLVM_FLAGS =  --disable-threads --disable-profiling --enable-shared --enable-targets=host --disable-bindings --disable-docs
 
168
LLVM_MFLAGS =
 
169
ifeq ($(LLVM_ASSERTIONS), 1)
 
170
LLVM_FLAGS += --enable-assertions --enable-optimized
 
171
ifeq ($(OS), WINNT)
 
172
LLVM_FLAGS += --disable-embed-stdcxx
 
173
endif
 
174
else
 
175
LLVM_FLAGS += --disable-assertions --enable-optimized
 
176
endif
 
177
 
 
178
ifeq ($(BUILD_LLDB),1)
 
179
ifeq ($(USECLANG),1)
 
180
LLVM_FLAGS += --enable-cxx11
 
181
else
 
182
LLVM_MFLAGS += CXXFLAGS=-std=c++0x
 
183
endif
 
184
endif
 
185
 
 
186
ifeq ($(ARCH), ppc64)
 
187
  LLVM_FLAGS += CXXFLAGS=-mminimal-toc
 
188
  LLVM_MFLAGS += CXXFLAGS=-mminimal-toc
164
189
endif
165
190
 
166
191
ifneq ($(LLVM_CLANG_TAR),)
167
192
$(LLVM_CLANG_TAR):
168
193
        $(WGET) http://llvm.org/releases/$(LLVM_VER)/$@
169
194
endif
170
 
 
171
195
ifneq ($(LLVM_COMPILER_RT_TAR),)
172
196
$(LLVM_COMPILER_RT_TAR):
173
197
        $(WGET) http://llvm.org/releases/$(LLVM_VER)/$@
174
198
endif
175
 
 
176
 
 
177
199
$(LLVM_TAR):
178
200
        $(WGET) http://llvm.org/releases/$(LLVM_VER)/$@
179
201
 
180
 
ifeq ($(BUILD_LLDB), 1)
 
202
ifeq ($(BUILD_LLDB),1)
181
203
llvm-$(LLVM_VER)/tools/lldb:
182
204
llvm-$(LLVM_VER)/configure: llvm-$(LLVM_VER)/tools/lldb
183
205
endif
184
206
 
 
207
## LLVM needs python 2.x, but doesn't check for it, so we have to use an ugly workaround to make it compile
 
208
llvm-$(LLVM_VER)/python2_path:
 
209
        mkdir -p llvm-$(LLVM_VER)/python2_path
 
210
        -python -c 'import sys; sys.exit(not sys.version_info > (3, 0))' && \
 
211
        /usr/bin/python2 -c 'import sys; sys.exit(not sys.version_info < (3, 0))' && \
 
212
        ln -sf /usr/bin/python2 "llvm-$(LLVM_VER)/python2_path/python"
 
213
llvm_python_workaround=llvm-$(LLVM_VER)/python2_path
 
214
 
185
215
llvm-$(LLVM_VER)/configure: $(LLVM_TAR) $(LLVM_CLANG_TAR) $(LLVM_COMPILER_RT_TAR)
186
216
        mkdir -p llvm-$(LLVM_VER) && \
187
217
        tar -C llvm-$(LLVM_VER) --strip-components 1 -xf $(LLVM_TAR)
199
229
                git clone http://llvm.org/git/lldb.git)) || \
200
230
        ([ -d llvm-$(LLVM_VER)/tools/lldb ] && \
201
231
                (cd llvm-$(LLVM_VER)/tools/lldb && \
202
 
                git pull))
203
 
endif
204
 
        touch $@
205
 
 
206
 
## LLVM needs python 2.x, but doesn't check for it, so we have to use an ugly workaround to make it compile
207
 
llvm_python_workaround:
208
 
        -python -c 'import sys; sys.exit(not sys.version_info > (3, 0))' && \
209
 
        /usr/bin/python2 -c 'import sys; sys.exit(not sys.version_info < (3, 0))' && \
210
 
        export PATH=$(abspath llvm-$(LLVM_VER)/python2_path):$$PATH && \
211
 
        test ! -e llvm-$(LLVM_VER)/python2_path/python && \
212
 
        mkdir -p llvm-$(LLVM_VER)/python2_path && \
213
 
        ln -s /usr/bin/python2 "llvm-$(LLVM_VER)/python2_path/python"
214
 
 
215
 
LLVM_FLAGS =  --disable-threads --enable-optimized --disable-profiling --enable-shared --enable-targets=host --disable-bindings --disable-docs
216
 
LLVM_MFLAGS =
217
 
ifeq ($(LLVM_ASSERTIONS), 1)
218
 
LLVM_FLAGS += --enable-assertions
219
 
else
220
 
LLVM_FLAGS += --disable-assertions
221
 
endif
222
 
ifeq ($(BUILD_LLDB),1)
223
 
ifeq ($(USE_CLANG),1)
224
 
LLVM_FLAGS += --enable-cxx11
225
 
else
226
 
LLVM_MFLAGS += CXXFLAGS=-std=c++0x
227
 
endif
228
 
endif
229
 
ifeq ($(ARCH), ppc64)
230
 
  LLVM_FLAGS += CXXFLAGS=-mminimal-toc
231
 
  LLVM_MFLAGS += CXXFLAGS=-mminimal-toc
232
 
endif
233
 
 
234
 
ifeq (exists, $(shell [ -e llvm-$(LLVM_VER)/config.log ] && echo exists ))
235
 
# temporary hack to force rebuild of llvm if it was previously configured
236
 
# in the source directory
237
 
llvm-$(LLVM_VER)/configure: FORCE_LLVM_RECONFIGURE
238
 
FORCE_LLVM_RECONFIGURE:
239
 
        rm -rf llvm-$(LLVM_VER)
240
 
endif
241
 
 
242
 
$(LLVM_OBJ_SOURCE): llvm-$(LLVM_VER)/configure | llvm_python_workaround
 
232
                git fetch))
 
233
        cd llvm-$(LLVM_VER)/tools/lldb && git checkout origin/release_32
 
234
endif
 
235
        touch -c $@
 
236
 
 
237
llvm-$(LLVM_VER)/build/config.status: llvm-$(LLVM_VER)/configure | $(llvm_python_workaround)
243
238
        cd llvm-$(LLVM_VER) && \
244
239
        mkdir -p build && cd build && \
245
240
        export PATH=$(abspath llvm-$(LLVM_VER)/python2_path):$$PATH && \
246
 
        ../configure $(CONFIGURE_COMMON) $(LLVM_FLAGS) && \
 
241
        ../configure $(CONFIGURE_COMMON) $(LLVM_FLAGS)
 
242
        touch -c $@
 
243
$(LLVM_OBJ_SOURCE): llvm-$(LLVM_VER)/build/config.status | $(llvm_python_workaround)
 
244
        cd llvm-$(LLVM_VER)/build && \
 
245
        export PATH=$(abspath llvm-$(LLVM_VER)/python2_path):$$PATH && \
247
246
        $(MAKE) $(LLVM_MFLAGS)
248
 
$(LLVM_OBJ_TARGET): $(LLVM_OBJ_SOURCE) | llvm_python_workaround
 
247
        touch -c $@
 
248
llvm-$(LLVM_VER)/build/checked: $(LLVM_OBJ_SOURCE) | $(llvm_python_workaround)
 
249
ifeq ($(OS),$(BUILD_OS))
 
250
        cd llvm-$(LLVM_VER)/build && \
 
251
        export PATH=$(abspath llvm-$(LLVM_VER)/python2_path):$$PATH && \
 
252
        $(MAKE) $(LLVM_MFLAGS) check 
 
253
endif
 
254
        echo 1 > $@
 
255
$(LLVM_OBJ_TARGET): $(LLVM_OBJ_SOURCE) | $(llvm_python_workaround)
249
256
        export PATH=$(abspath llvm-$(LLVM_VER)/python2_path):$$PATH && \
250
257
        $(MAKE) -C llvm-$(LLVM_VER)/build install
251
258
        $(INSTALL_NAME_CMD)$(LLVM_LIB_FILE) $(BUILD)/lib/$(LLVM_LIB_FILE)
252
 
        touch $@
 
259
        $(AUTOTOOLS_PATH_CORRECT) 
 
260
        touch -c $@
253
261
 
254
262
clean-llvm:
255
263
        -$(MAKE) -C llvm-$(LLVM_VER)/build clean
257
265
distclean-llvm:
258
266
        -rm -rf llvm-$(LLVM_VER).tar.gz llvm-$(LLVM_VER).src.tar.gz clang-$(LLVM_VER).src.tar.gz clang-$(LLVM_VER).tar.gz compiler-rt-$(LLVM_VER).src.tar.gz llvm-$(LLVM_VER)
259
267
 
 
268
get-llvm: $(LLVM_TAR) $(LLVM_CLANG_TAR) $(LLVM_COMPILER_RT_TAR)
 
269
configure-llvm: llvm-$(LLVM_VER)/build/config.status
 
270
compile-llvm: $(LLVM_OBJ_SOURCE)
 
271
check-llvm: llvm-$(LLVM_VER)/build/checked
 
272
install-llvm: $(LLVM_OBJ_TARGET)
 
273
#todo: LLVM make check target is broken on julia.mit.edu (and really slow elsewhere)
 
274
 
 
275
 
260
276
## GNU readline ##
261
277
 
262
 
READLINE_OBJ_TARGET = $(BUILD)/lib/libreadline.$(SHLIB_EXT)
263
 
READLINE_OBJ_SOURCE = readline-$(READLINE_VER)/shlib/libreadline.$(READLINE_VER).$(SHLIB_EXT)
264
 
 
265
 
READLINE_OPTS = --disable-shared --enable-static
266
 
ifeq ($(OS),WINNT)
267
 
        READLINE_URL = https://github.com/JuliaLang/readline/tarball/master
268
 
        READLINE_CFLAGS = LOCAL_DEFS="-include $(abspath .)/readline-win.h"
269
 
else
270
 
        READLINE_URL = ftp://ftp.gnu.org/gnu/readline/readline-$(READLINE_VER).tar.gz
271
 
        READLINE_OPTS += --with-curses
272
 
        READLINE_CFLAGS = 
273
 
endif
274
 
 
275
 
compile-readline: $(READLINE_OBJ_SOURCE)
276
 
install-readline: $(READLINE_OBJ_TARGET)
277
 
 
278
 
ifeq ($(OS),WINNT)
279
 
 
 
278
 
 
279
ifeq ($(OS),WINNT)
 
280
READLINE_OBJ_TARGET = $(BUILD)/lib/libreadline.a
 
281
READLINE_OBJ_SOURCE = readline-$(READLINE_VER)/libreadline.a
 
282
READLINE_URL = https://github.com/JuliaLang/readline/tarball/master
 
283
READLINE_OPTS = --disable-shared --enable-static --with-curses
 
284
READLINE_CFLAGS = LOCAL_DEFS="-include $(abspath .)/readline-win.h"
280
285
readline-$(READLINE_VER).tar.gz:
281
286
        $(WGET_DASH_O) $@ $(READLINE_URL)
 
287
        touch -c $@
282
288
readline-$(READLINE_VER)/configure: readline-$(READLINE_VER).tar.gz
283
289
        mkdir readline-$(READLINE_VER)
284
290
        tar -C readline-$(READLINE_VER) --strip-components 1 -xf $<
285
 
        touch $@
286
 
$(READLINE_OBJ_SOURCE): readline-$(READLINE_VER)/configure
287
 
        cd readline-$(READLINE_VER) && \
288
 
        chmod a+x ./configure && \
289
 
        ./configure $(CONFIGURE_COMMON) $(READLINE_OPTS) && \
290
 
        $(MAKE) $(READLINE_CFLAGS)
291
 
        touch $@
292
 
$(READLINE_OBJ_TARGET): $(READLINE_OBJ_SOURCE)
 
291
        touch -c $@
 
292
$(READLINE_OBJ_TARGET): $(READLINE_OBJ_SOURCE) readline-$(READLINE_VER)/checked
293
293
        $(MAKE) -C readline-$(READLINE_VER) $(READLINE_CFLAGS) install
294
 
        touch $@
295
 
 
296
 
clean-readline:
297
 
        -$(MAKE) -C readline-$(READLINE_VER) clean
298
 
        -rm -f $(READLINE_OBJ_TARGET)
299
 
distclean-readline:
300
 
        -rm -rf readline-$(READLINE_VER).tar.gz readline-$(READLINE_VER)
301
 
 
302
 
else
303
 
 
 
294
        touch -c $@
 
295
else
 
296
READLINE_OBJ_TARGET = $(BUILD)/lib/libreadline.$(SHLIB_EXT)
 
297
ifneq ($(OS),Darwin)
 
298
READLINE_OBJ_SOURCE = readline-$(READLINE_VER)/shlib/libreadline.$(SHLIB_EXT).$(READLINE_VER)
 
299
else
 
300
READLINE_OBJ_SOURCE = readline-$(READLINE_VER)/shlib/libreadline.$(READLINE_VER).$(SHLIB_EXT)
 
301
endif
 
302
READLINE_URL = ftp://ftp.gnu.org/gnu/readline/readline-$(READLINE_VER).tar.gz
 
303
READLINE_OPTS = --enable-shared --enable-static --with-curses
 
304
READLINE_CFLAGS = 
304
305
readline-$(READLINE_VER).tar.gz:
305
 
        $(WGET) http://ftp.gnu.org/gnu/readline/$@
306
306
        $(WGET) http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-001
307
307
        $(WGET) http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-002
308
308
        $(WGET) http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-003
309
309
        $(WGET) http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-004
 
310
        $(WGET) http://ftp.gnu.org/gnu/readline/$@
 
311
        touch -c $@
310
312
readline-$(READLINE_VER)/configure: readline-$(READLINE_VER).tar.gz
311
313
        tar zxf $<
312
314
        cd readline-$(READLINE_VER) && patch -p0 < ../readline62-001
313
315
        cd readline-$(READLINE_VER) && patch -p0 < ../readline62-002
314
316
        cd readline-$(READLINE_VER) && patch -p0 < ../readline62-003
315
317
        cd readline-$(READLINE_VER) && patch -p0 < ../readline62-004
316
 
        touch $@
317
 
$(READLINE_OBJ_SOURCE): readline-$(READLINE_VER)/configure
318
 
        cd readline-$(READLINE_VER) && \
319
 
        ./configure $(CONFIGURE_COMMON) --enable-shared --enable-static --with-curses && \
320
 
        $(MAKE)
321
 
        touch $@
322
 
$(READLINE_OBJ_TARGET): $(READLINE_OBJ_SOURCE)
 
318
        touch -c $@
 
319
$(READLINE_OBJ_TARGET): $(READLINE_OBJ_SOURCE) readline-$(READLINE_VER)/checked
323
320
        $(MAKE) -C readline-$(READLINE_VER) install
324
321
        chmod +w $(BUILD)/lib/libreadline.* $(BUILD)/lib/libhistory.*
325
322
ifeq ($(OS), Darwin)
330
327
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
331
328
        done
332
329
endif
333
 
        touch $@
 
330
        touch -c $@
 
331
endif
 
332
 
 
333
readline-$(READLINE_VER)/config.status: readline-$(READLINE_VER)/configure
 
334
        cd readline-$(READLINE_VER) && \
 
335
        chmod a+x ./configure && \
 
336
        ./configure $(CONFIGURE_COMMON) $(READLINE_OPTS)a
 
337
        touch -c $@
 
338
$(READLINE_OBJ_SOURCE): readline-$(READLINE_VER)/config.status
 
339
        cd readline-$(READLINE_VER) && \
 
340
        $(MAKE) $(READLINE_CFLAGS)
 
341
        touch -c $@
 
342
readline-$(READLINE_VER)/checked: $(READLINE_OBJ_SOURCE)
 
343
        cd readline-$(READLINE_VER) && \
 
344
        $(MAKE) check $(READLINE_CFLAGS)
 
345
        echo 1 > $@
334
346
 
335
347
clean-readline:
336
348
        -$(MAKE) -C readline-$(READLINE_VER) clean
338
350
distclean-readline:
339
351
        -rm -rf readline-$(READLINE_VER).tar.gz readline-$(READLINE_VER)
340
352
 
341
 
endif
342
 
 
343
 
## LIBUV
 
353
get-readline: readline-$(READLINE_VER).tar.gz
 
354
configure-readline: readline-$(READLINE_VER)/config.status
 
355
compile-readline: $(READLINE_OBJ_SOURCE)
 
356
check-readline: readline-$(READLINE_VER)/checked
 
357
install-readline: $(READLINE_OBJ_TARGET) 
 
358
 
 
359
 
 
360
## LIBUV ##
 
361
 
344
362
uname_S=$(OS)
345
363
ifeq ($(uname_S),WINNT)
346
364
uname_S=MINGW
355
373
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
356
374
$(UV_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/libuv/HEAD
357
375
endif
 
376
LIBUV_MAKE_FLAGS = -C libuv CC="$(CC)" AR="$(AR)" uname_S=$(uname_S)
358
377
$(UV_OBJ_SOURCE): libuv/Makefile
359
378
ifneq ($(OS), WINNT)
360
 
        $(MAKE) libuv.${SHLIB_EXT} -C libuv CC="$(CC)" AR="$(AR)" uname_S=$(uname_S)
361
 
endif
362
 
        $(MAKE) libuv.a -C libuv CC="$(CC)" AR="$(AR)" uname_S=$(uname_S)
 
379
        $(MAKE) libuv.${SHLIB_EXT} $(LIBUV_MAKE_FLAGS)
 
380
endif
 
381
        $(MAKE) libuv.a $(LIBUV_MAKE_FLAGS)
 
382
        touch -c $@
 
383
libuv/checked: $(LIBUV_OBJ_SOURCE)
 
384
ifeq ($(OS),$(BUILD_OS))
 
385
        $(MAKE) test $(LIBUV_MAKE_FLAGS)
 
386
endif
 
387
        echo 1 > $@
 
388
#todo: libuv tests are really slow
363
389
$(UV_OBJ_TARGET): $(UV_OBJ_SOURCE)
364
390
        mkdir -p $(BUILD)/include
365
391
        cp $(UV_OBJ_SOURCE) $(BUILD)/lib/
366
392
        cp -r libuv/include/* $(BUILD)/include
367
 
install-uv: $(UV_OBJ_TARGET)
368
393
 
369
394
clean-uv:
370
395
        -$(MAKE) -C libuv clean uname_S=$(uname_S)
371
396
        -rm -rf $(BUILD)/lib/libuv.a $(BUILD)/include/uv.h $(BUILD)/include/uv-private
372
397
distclean-uv: clean-uv
373
398
 
 
399
get-uv: libuv/Makefile
 
400
configure-uv: get-uv
 
401
compile-uv: $(UV_OBJ_SOURCE)
 
402
check-uv: libuv/checked
 
403
install-uv: $(UV_OBJ_TARGET)
 
404
 
 
405
 
374
406
## PCRE ##
375
407
 
 
408
PCRE_SRC_TARGET = pcre-$(PCRE_VER)/.libs/libpcre.$(SHLIB_EXT)
376
409
PCRE_OBJ_TARGET = $(BUILD)/lib/libpcre.$(SHLIB_EXT)
377
410
 
378
 
compile-pcre: install-pcre
379
 
install-pcre: $(PCRE_OBJ_TARGET)
380
 
 
381
411
pcre-$(PCRE_VER).tar.bz2:
382
412
        $(WGET) ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/$@
383
413
pcre-$(PCRE_VER)/configure: pcre-$(PCRE_VER).tar.bz2
384
414
        tar jxf $<
385
 
        touch $@
 
415
        touch -c $@
386
416
pcre-$(PCRE_VER)/config.status: pcre-$(PCRE_VER)/configure
387
417
        cd pcre-$(PCRE_VER) && \
388
418
        ./configure $(CONFIGURE_COMMON) --enable-utf --enable-unicode-properties --enable-jit
389
 
$(PCRE_OBJ_TARGET): pcre-$(PCRE_VER)/config.status
 
419
        touch -c $@
 
420
$(PCRE_SRC_TARGET): pcre-$(PCRE_VER)/config.status
 
421
        $(MAKE) -C pcre-$(PCRE_VER) $(LIBTOOL_CCLD)
 
422
        touch -c $@
 
423
pcre-$(PCRE_VER)/checked: $(PCRE_SRC_TARGET)
 
424
ifeq ($(OS),$(BUILD_OS))
 
425
        $(MAKE) -C pcre-$(PCRE_VER) check
 
426
endif
 
427
        echo 1 > $@
 
428
$(PCRE_OBJ_TARGET): $(PCRE_SRC_TARGET) pcre-$(PCRE_VER)/checked
390
429
        $(MAKE) -C pcre-$(PCRE_VER) $(LIBTOOL_CCLD) install
391
430
        $(INSTALL_NAME_CMD)libpcre.dylib $@
392
431
ifeq ($(OS),WINNT)
393
432
        -rm $(BUILD)/lib/libpcre.dll
394
433
        mv $(BUILD)/bin/libpcre.dll $(BUILD)/lib/libpcre.dll
395
434
endif
396
 
        touch $@
 
435
        touch -c $@
397
436
 
398
437
clean-pcre:
399
438
        -$(MAKE) -C pcre-$(PCRE_VER) clean
401
440
distclean-pcre:
402
441
        -rm -rf pcre-$(PCRE_VER).tar.bz2 pcre-$(PCRE_VER)
403
442
 
 
443
get-pcre: pcre-$(PCRE_VER).tar.bz2
 
444
configure-pcre: pcre-$(PCRE_VER)/config.status
 
445
compile-pcre: $(PCRE_SRC_TARGET)
 
446
check-pcre: pcre-$(PCRE_VER)/checked
 
447
install-pcre: $(PCRE_OBJ_TARGET)
 
448
 
 
449
 
404
450
## Grisu floating-point printing library ##
405
451
 
406
452
GRISU_OPTS = $(CXXFLAGS) -fvisibility=hidden $(fPIC)
407
453
 
408
 
compile-double-conversion: libgrisu.$(SHLIB_EXT)
409
 
install-double-conversion: $(BUILD)/lib/libgrisu.$(SHLIB_EXT)
410
 
 
411
454
libgrisu.$(SHLIB_EXT): double_conversion_wrapper.cpp
412
455
        $(CXX) $(GRISU_OPTS) -I/usr/include/double-conversion double_conversion_wrapper.cpp -shared $(LDFLAGS) -o libgrisu.$(SHLIB_EXT) -ldouble-conversion
413
456
 
419
462
        rm -f libgrisu.$(SHLIB_EXT)
420
463
distclean-double-conversion: clean-double-conversion
421
464
 
422
 
## openlibm ##
 
465
get-double-conversion:
 
466
configure-double-conversion: get-double-conversion
 
467
compile-double-conversion: libgrisu.$(SHLIB_EXT)
 
468
check-double-conversion: compile-double-conversion
 
469
install-double-conversion: $(BUILD)/lib/libgrisu.$(SHLIB_EXT)
 
470
 
 
471
 
 
472
## openlibm && openlibm-extras ##
423
473
 
424
474
ifeq ($(OS), WINNT) #needs more advanced detection once 64bit build is possible
425
475
OPENLIBM_FLAGS = ARCH=i386
427
477
OPENLIBM_FLAGS = ARCH="$(ARCH)"
428
478
endif
429
479
 
 
480
OPENLIBM_FLAGS += CC="$(CC)" FC="$(FC)" AR="$(AR)" OS="$(OS)" USECLANG=$(USECLANG) USEGCC=$(USEGCC)
 
481
 
430
482
OPENLIBM_OBJ_TARGET = $(BUILD)/lib/libopenlibm.$(SHLIB_EXT)
431
483
OPENLIBM_OBJ_SOURCE = openlibm/libopenlibm.$(SHLIB_EXT)
 
484
OPENLIBMEXT_OBJ_TARGET = $(BUILD)/lib/libopenlibm-extras.$(SHLIB_EXT)
 
485
OPENLIBMEXT_OBJ_SOURCE = openlibm/libopenlibm-extras.$(SHLIB_EXT)
432
486
 
433
487
ifeq (exists, $(shell [ -d openlibm/.git ] && echo exists ))
434
488
$(OPENLIBM_OBJ_SOURCE): openlibm/.git/HEAD
 
489
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/.git/HEAD
435
490
endif
436
491
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
437
492
$(OPENLIBM_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/openlibm/HEAD
 
493
$(OPENLIBMEXT_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/openlibm/HEAD
438
494
endif
439
495
$(OPENLIBM_OBJ_SOURCE): openlibm/Makefile
440
 
        $(MAKE) -C openlibm $(OPENLIBM_FLAGS) CC="$(CC)" FC="$(FC)" AR="$(AR)" OS="$(OS)" USECLANG=$(USECLANG) USEGCC=$(USEGCC)
 
496
        $(MAKE) -C openlibm $(OPENLIBM_FLAGS)
 
497
        touch -c $@
 
498
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/Makefile.extras
 
499
        $(MAKE) -C openlibm -f Makefile.extras $(OPENLIBM_FLAGS)
 
500
        touch -c $@
441
501
$(OPENLIBM_OBJ_TARGET): $(OPENLIBM_OBJ_SOURCE) | $(BUILD)/lib
442
502
        cp $< $@
443
503
        $(INSTALL_NAME_CMD)libopenlibm.$(SHLIB_EXT) $@
444
 
install-openlibm: $(OPENLIBM_OBJ_TARGET) 
 
504
$(OPENLIBMEXT_OBJ_TARGET): $(OPENLIBMEXT_OBJ_SOURCE) | $(BUILD)/lib
 
505
        cp $< $@
 
506
        $(INSTALL_NAME_CMD)libopenlibm-extras.$(SHLIB_EXT) $@
445
507
 
446
508
clean-openlibm:
447
509
        -$(MAKE) -C openlibm distclean
448
510
        -rm $(OPENLIBM_OBJ_TARGET)
449
 
distclean-openlibm: clean-openlibm      
450
 
 
451
 
# openlibm-extras
452
 
 
453
 
OPENLIBMEXT_OBJ_TARGET = $(BUILD)/lib/libopenlibm-extras.$(SHLIB_EXT)
454
 
OPENLIBMEXT_OBJ_SOURCE = openlibm/libopenlibm-extras.$(SHLIB_EXT)
455
 
 
456
 
openlibm-extras/Makefile:
457
 
        (cd .. && git submodule init && git submodule update)
458
 
ifeq (exists, $(shell [ -d openlibm/.git ] && echo exists ))
459
 
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/.git/HEAD
460
 
endif
461
 
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
462
 
$(OPENLIBMEXT_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/openlibm/HEAD
463
 
endif
464
 
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/Makefile.extras
465
 
        $(MAKE) -C openlibm -f Makefile.extras $(OPENLIBM_FLAGS) CC="$(CC)" FC="$(FC)" USECLANG=$(USECLANG) USEGCC=$(USEGCC)
466
 
$(OPENLIBMEXT_OBJ_TARGET): $(OPENLIBMEXT_OBJ_SOURCE) | $(BUILD)/lib
467
 
        cp $< $@
468
 
        $(INSTALL_NAME_CMD)libopenlibm-extras.$(SHLIB_EXT) $@
469
 
install-openlibm-extras: $(OPENLIBMEXT_OBJ_TARGET) $(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT)
 
511
distclean-openlibm: clean-openlibm
470
512
 
471
513
clean-openlibm-extras:
472
514
        -$(MAKE) -C openlibm -f Makefile.extras distclean
473
515
        -rm $(OPENLIBMEXT_OBJ_TARGET)
474
516
distclean-openlibm-extras: clean-openlibm-extras
475
517
 
476
 
 
477
 
# Wrapper for openlibm/Faddeeva since ccall doesn't support C99 complex:
478
 
$(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT): Faddeeva_wrapper.c $(OPENLIBMEXT_OBJ_TARGET)
479
 
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) -I openlibm/Faddeeva Faddeeva_wrapper.c -o $@ -L $(BUILD)/lib -lopenlibm-extras
480
 
        $(INSTALL_NAME_CMD)libFaddeeva_wrapper.$(SHLIB_EXT) $@
481
 
        touch $@
482
 
install-Faddeeva-wrapper: $(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT)
483
 
 
484
 
clean-Faddeeva-wrapper:
485
 
        -rm -f $(OPENLIBMEXT_OBJ_TARGET) $(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT)
486
 
distclean-Faddeeva-wrapper: clean-Faddeeva-wrapper
487
 
 
488
 
## Rmath ##
489
 
 
490
 
RMATH_OBJ_TARGET = $(BUILD)/lib/libRmath.$(SHLIB_EXT)
491
 
RMATH_OBJ_SOURCE = Rmath/src/libRmath.$(SHLIB_EXT)
492
 
 
493
 
compile-rmath: $(RMATH_OBJ_SOURCE)
494
 
install-rmath: $(RMATH_OBJ_TARGET)
495
 
 
496
 
$(RMATH_OBJ_SOURCE): Rmath/src/Makefile install-random
497
 
        cd Rmath/src && \
498
 
        $(MAKE) CC="$(CC)" && \
499
 
        $(INSTALL_NAME_CMD)libRmath.$(SHLIB_EXT) libRmath.$(SHLIB_EXT)
500
 
$(RMATH_OBJ_TARGET): $(RMATH_OBJ_SOURCE)
501
 
        cp $< $@
502
 
 
503
 
clean-rmath:
504
 
        -cd Rmath/src && $(MAKE) clean
505
 
        -rm -f $(RMATH_OBJ_SOURCE) $(RMATH_OBJ_TARGET)
506
 
distclean-rmath: clean-rmath
 
518
get-openlibm: openlibm/Makefile
 
519
configure-openlibm: get-openlibm
 
520
compile-openlibm: $(OPENLIBM_OBJ_SOURCE)
 
521
check-openlibm: compile-openlibm
 
522
install-openlibm: $(OPENLIBM_OBJ_TARGET) 
 
523
 
 
524
get-openlibm-extras: openlibm/Makefile.extras
 
525
configure-openlibm-extras: get-openlibm-extras
 
526
compile-openlibm-extras: $(OPENLIBMEXT_OBJ_SOURCE)
 
527
check-openlibm-extras: compile-openlibm-extras
 
528
install-openlibm-extras: $(OPENLIBMEXT_OBJ_TARGET)
507
529
 
508
530
## LIBRANDOM ##
509
531
 
517
539
LIBRANDOM_CFLAGS += -msse2 -DHAVE_SSE2
518
540
endif
519
541
 
520
 
compile-random: $(LIBRANDOM_OBJ_SOURCE)
521
 
install-random: $(LIBRANDOM_OBJ_TARGET)
522
 
 
523
 
$(LIBRANDOM_OBJ_SOURCE): random/jl_random.c random/randmtzig.c
 
542
$(LIBRANDOM_OBJ_SOURCE): random/jl_random.c random/randmtzig.c random/dsfmt-$(DSFMT_VER)/config.status
524
543
        cd random && \
525
544
        $(CC) $(CPPFLAGS) $(LIBRANDOM_CFLAGS) $(LDFLAGS) jl_random.c -o librandom.$(SHLIB_EXT) && \
526
545
        $(INSTALL_NAME_CMD)librandom.$(SHLIB_EXT) librandom.$(SHLIB_EXT)
527
 
 
528
546
$(LIBRANDOM_OBJ_TARGET): $(LIBRANDOM_OBJ_SOURCE)
529
547
        cp $< $@
530
548
 
532
550
        -rm -f random/librandom.$(SHLIB_EXT)
533
551
distclean-random: clean-random
534
552
 
 
553
get-random:
 
554
configure-random:
 
555
compile-random: $(LIBRANDOM_OBJ_SOURCE)
 
556
check-random: compile-random
 
557
install-random: $(LIBRANDOM_OBJ_TARGET)
 
558
 
 
559
 
 
560
## Rmath ##
 
561
 
 
562
RMATH_OBJ_TARGET = $(BUILD)/lib/libRmath.$(SHLIB_EXT)
 
563
RMATH_OBJ_SOURCE = Rmath/src/libRmath.$(SHLIB_EXT)
 
564
 
 
565
RMATH_FLAGS += CC="$(CC)" USECLANG=$(USECLANG) USEGCC=$(USEGCC) \
 
566
                           OS="$(OS)" ARCH="$(ARCH)" \
 
567
                           USE_LIBRANDOM=1 LIBRANDOM_PATH="$(BUILD)/lib"
 
568
 
 
569
ifeq (exists, $(shell [ -d Rmath/.git ] && echo exists ))
 
570
$(RMATH_OBJ_SOURCE): Rmath/.git/HEAD
 
571
endif
 
572
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
 
573
$(RMATH_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/Rmath/HEAD
 
574
endif
 
575
$(RMATH_OBJ_SOURCE): Rmath/Make.inc $(LIBRANDOM_OBJ_TARGET)
 
576
        $(MAKE) -C Rmath/src $(RMATH_FLAGS)
 
577
        touch -c $@
 
578
$(RMATH_OBJ_TARGET): $(RMATH_OBJ_SOURCE) | $(BUILD)/lib
 
579
        cp $< $@
 
580
        $(INSTALL_NAME_CMD)libRmath.$(SHLIB_EXT) $@
 
581
 
 
582
clean-Rmath:
 
583
        -$(MAKE) -C Rmath/src clean
 
584
        -rm $(RMATH_OBJ_TARGET)
 
585
distclean-Rmath: clean-Rmath
 
586
 
 
587
get-Rmath: Rmath/Make.inc
 
588
configure-Rmath: get-Rmath
 
589
compile-Rmath: $(RMATH_OBJ_SOURCE)
 
590
check-Rmath: compile-Rmath
 
591
install-Rmath: $(RMATH_OBJ_TARGET) 
 
592
 
 
593
 
535
594
## OpenBLAS ##
536
595
 
537
 
ifeq ($(USE_SYSTEM_BLAS), 0)
538
596
OPENBLAS_OBJ_SOURCE = openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT)
539
 
else
540
 
OPENBLAS_OBJ_SOURCE = 
541
 
endif
 
597
OPENBLAS_OBJ_TARGET = $(BUILD)/lib/libopenblas.$(SHLIB_EXT)
542
598
 
543
599
OPENBLAS_BUILD_OPTS = CC="$(CC)" FC="$(FC)" RANLIB="$(RANLIB)" FFLAGS="$(FFLAGS) $(JFFLAGS)" USE_THREAD=$(OPENBLAS_USE_THREAD) TARGET=$(OPENBLAS_TARGET_ARCH)
544
600
ifeq ($(OPENBLAS_DYNAMIC_ARCH), 1)
558
614
endif
559
615
endif
560
616
 
561
 
compile-openblas: $(OPENBLAS_OBJ_SOURCE)
562
 
install-openblas: $(BUILD)/lib/libopenblas.$(SHLIB_EXT)
563
 
 
564
617
openblas-$(OPENBLAS_VER).tar.gz:
565
618
        $(WGET_DASH_O) $@ https://github.com/xianyi/OpenBLAS/tarball/$(OPENBLAS_VER) 
566
 
openblas-$(OPENBLAS_VER)/Makefile: openblas-$(OPENBLAS_VER).tar.gz
 
619
openblas-$(OPENBLAS_VER)/config.status: openblas-$(OPENBLAS_VER).tar.gz
567
620
        mkdir -p openblas-$(OPENBLAS_VER) && \
568
621
        tar -C openblas-$(OPENBLAS_VER) --strip-components 1 -xf $<
569
622
        perl -i -ple 's/^\s*(EXTRALIB\s*\+=\s*-lSystemStubs)\s*$$/# $$1/g' $@.system
570
 
        touch $@
571
 
$(OPENBLAS_OBJ_SOURCE): openblas-$(OPENBLAS_VER)/Makefile
 
623
        echo 1 > $@
 
624
$(OPENBLAS_OBJ_SOURCE): openblas-$(OPENBLAS_VER)/config.status
572
625
        $(MAKE) -C openblas-$(OPENBLAS_VER) $(OPENBLAS_BUILD_OPTS)
573
 
$(BUILD)/lib/libopenblas.$(SHLIB_EXT): $(OPENBLAS_OBJ_SOURCE) | $(BUILD)/lib
 
626
        touch -c $@
 
627
$(OPENBLAS_OBJ_TARGET): $(OPENBLAS_OBJ_SOURCE) | $(BUILD)/lib
574
628
        cp -f openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT) $(BUILD)/lib
575
629
        $(INSTALL_NAME_CMD)libopenblas.$(SHLIB_EXT) $(BUILD)/lib/libopenblas.$(SHLIB_EXT)
576
630
 
579
633
distclean-openblas:
580
634
        -rm -rf openblas-$(OPENBLAS_VER).tar.gz openblas-$(OPENBLAS_VER)
581
635
 
 
636
get-openblas: openblas-$(OPENBLAS_VER).tar.gz
 
637
configure-openblas: get-openblas
 
638
compile-openblas: $(OPENBLAS_OBJ_SOURCE)
 
639
check-openblas: compile-openblas
 
640
install-openblas: $(OPENBLAS_OBJ_TARGET)
 
641
 
 
642
 
 
643
## ATLAS (currently 3.10.0) ##
 
644
 
 
645
# no threading, with full lapack, shared library
 
646
# should always be compiled with (a real) gcc, it's
 
647
# configure script will search for the best match
 
648
# (gcc 4.7, gcc, clang,ICC/microsoft/others)
 
649
ATLAS_OBJ_SOURCE = atlas/build/lib/libsatlas.$(SHLIB_EXT)
 
650
ATLAS_FLAGS = --shared --prefix=$(BUILD) --cc=gcc -t 0 \
 
651
        --with-netlib-lapack-tarfile=$(JULIAHOME)/deps/lapack-$(LAPACK_VER).tgz
 
652
ifeq ($(OS), WINNT)
 
653
ATLAS_FLAGS += -b 32 
 
654
endif
 
655
 
 
656
#force backwards compatibility (pick any 1)
 
657
#ATLAS_FLAGS += -V 192 -A 13  # requires SSE2 (P4 & later)
 
658
#ATLAS_FLAGS += -V 128 -A 12 # requires SSE1 (P3 & later)
 
659
#ATLAS_FLAGS += -V -1 -A 11 # any x87 (PentiumPro or Athlon & later)
 
660
#ATLAS_FLAGS += -A 25  # requires Corei132 (Corei232 doesn't have definition yet)
 
661
 
 
662
atlas/configure:
 
663
        git clone git://github.com/vtjnash/atlas-3.10.0.git atlas
 
664
ifeq "$(MAKECMDGOALS)" "build-atlas"
 
665
# only allow building atlas as the sole target (without -jN)
 
666
# since it internally handles parallelism, for tuning timing accuracy
 
667
atlas/build/Make.top: atlas/configure lapack-$(LAPACK_VER).tgz
 
668
        cd atlas && \
 
669
        (test -d build || mkdir build) && cd build && \
 
670
        ../configure $(ATLAS_FLAGS)
 
671
        touch -c $@
 
672
$(ATLAS_OBJ_SOURCE): atlas/build/Make.top
 
673
        $(MAKE) -C atlas/build -j1
 
674
        touch -c $@
 
675
else
 
676
$(ATLAS_OBJ_SOURCE):
 
677
        $(error cannot build atlas in parallel with anything else)
 
678
endif
 
679
$(BUILD)/lib/libsatlas.$(SHLIB_EXT): $(ATLAS_OBJ_SOURCE)
 
680
        cp -f atlas/build/lib/libsatlas.$(SHLIB_EXT) $(BUILD)/lib
 
681
        $(INSTALL_NAME_CMD)libsatlas.$(SHLIB_EXT) $(BUILD)/lib/libsatlas.$(SHLIB_EXT)
 
682
 
 
683
clean-atlas:
 
684
        rm -rf atlas/build
 
685
distclean-atlas: clean-atlas
 
686
        rm -rf atlas
 
687
 
 
688
get-atlas: atlas/configure
 
689
configure-atlas: atlas/build/Make.top
 
690
compile-atlas: $(ATLAS_OBJ_SOURCE)
 
691
check-atlas: compile-atlas
 
692
install-atlas: $(BUILD)/lib/libsatlas.$(SHLIB_EXT)
 
693
 
 
694
 
582
695
## LAPACK ##
583
696
 
584
697
ifeq ($(USE_SYSTEM_LAPACK), 0)
589
702
LAPACK_OBJ_SOURCE =
590
703
endif
591
704
 
592
 
compile-lapack: $(LAPACK_OBJ_SOURCE)
593
 
install-lapack: $(LAPACK_OBJ_TARGET)
594
 
 
595
705
lapack-$(LAPACK_VER).tgz:
596
706
        $(WGET) http://www.netlib.org/lapack/$@
597
707
lapack-$(LAPACK_VER)/Makefile: lapack-$(LAPACK_VER).tgz
598
708
        tar zxf $<
599
 
        touch $@
600
 
lapack-$(LAPACK_VER)/INSTALL/dlamch.o: lapack-$(LAPACK_VER)/Makefile $(OPENBLAS_OBJ_SOURCE)
 
709
        touch -c $@
 
710
ifeq ($(USE_SYSTEM_BLAS), 0)
 
711
lapack-$(LAPACK_VER)/INSTALL/dlamch.o: $(OPENBLAS_OBJ_TARGET)
 
712
endif
 
713
lapack-$(LAPACK_VER)/INSTALL/dlamch.o: lapack-$(LAPACK_VER)/Makefile
601
714
        cd lapack-$(LAPACK_VER) && \
602
715
        cp INSTALL/make.inc.gfortran ./make.inc && \
603
716
        $(MAKE) lapacklib NOOPT="-O0 $(fPIC)" OPTS="$(FFLAGS) $(JFFLAGS)" FORTRAN="$(FC)" LOADER="$(FC)"
604
 
        touch $@
605
 
$(LAPACK_OBJ_SOURCE): lapack-$(LAPACK_VER)/INSTALL/dlamch.o $(OPENBLAS_OBJ_SOURCE)
 
717
        touch -c $@
 
718
ifeq ($(USE_SYSTEM_BLAS), 0)
 
719
$(LAPACK_OBJ_SOURCE): $(OPENBLAS_OBJ_TARGET)
 
720
endif
 
721
$(LAPACK_OBJ_SOURCE): lapack-$(LAPACK_VER)/INSTALL/dlamch.o
606
722
        cd lapack-$(LAPACK_VER) && \
607
723
        $(FC) -shared $(FFLAGS) $(JFFLAGS) SRC/*.o INSTALL/dlamch.o INSTALL/dsecnd_INT_ETIME.o INSTALL/ilaver.o INSTALL/slamch.o $(LIBBLAS) -o liblapack.$(SHLIB_EXT)
608
724
$(LAPACK_OBJ_TARGET): $(LAPACK_OBJ_SOURCE)
614
730
distclean-lapack:
615
731
        -rm -rf lapack-$(LAPACK_VER).tgz lapack-$(LAPACK_VER)
616
732
 
 
733
get-lapack: lapack-$(LAPACK_VER).tgz
 
734
configure-lapack: get-lapack
 
735
compile-lapack: $(LAPACK_OBJ_SOURCE)
 
736
check-lapack: compile-lapack
 
737
install-lapack: $(LAPACK_OBJ_TARGET)
 
738
 
 
739
 
617
740
## ARPACK ##
618
741
 
619
742
ifeq ($(USE_LIB64), 1)
621
744
endif
622
745
 
623
746
ARPACK_OBJ_TARGET = $(BUILD)/lib/libarpack.$(SHLIB_EXT)
 
747
ifeq ($(OS),WINNT)
624
748
ARPACK_OBJ_SOURCE = arpack-ng_$(ARPACK_VER)/libarpack.$(SHLIB_EXT)
625
 
 
626
 
compile-arpack: $(ARPACK_OBJ_SOURCE)
627
 
install-arpack: $(ARPACK_OBJ_TARGET)
 
749
else
 
750
ARPACK_OBJ_SOURCE = arpack-ng_$(ARPACK_VER)/.libs/libarpack.$(SHLIB_EXT)
 
751
endif
 
752
ARPACK_ARGS = F77="$(FC)" MPIF77="$(FC)"
 
753
ARPACK_OPTS = $(FFLAGS) $(JFFLAGS)
628
754
 
629
755
arpack-ng_$(ARPACK_VER).tar.gz:
630
756
        $(WGET_DASH_O) $@ http://forge.scilab.org/index.php/p/arpack-ng/downloads/get/arpack-ng_$(ARPACK_VER).tar.gz
631
 
        touch $@
 
757
        touch -c $@
632
758
arpack-ng_$(ARPACK_VER)/configure: arpack-ng_$(ARPACK_VER).tar.gz
633
759
        tar zxf $< 
634
 
        touch $@
635
 
$(ARPACK_OBJ_SOURCE): arpack-ng_$(ARPACK_VER)/configure $(OPENBLAS_OBJ_SOURCE)
 
760
        touch -c $@
 
761
ifeq ($(USE_SYSTEM_BLAS), 0)
 
762
arpack-ng_$(ARPACK_VER)/config.status: $(OPENBLAS_OBJ_TARGET)
 
763
endif
 
764
arpack-ng_$(ARPACK_VER)/config.status: arpack-ng_$(ARPACK_VER)/configure
 
765
ifeq ($(OS),WINNT)
 
766
        cd arpack-ng_$(ARPACK_VER) && \
 
767
        rm -f UTIL/second_NONE.f
 
768
        echo 1 > $@
 
769
else
636
770
        cd arpack-ng_$(ARPACK_VER) && \
637
771
        ./configure $(CONFIGURE_COMMON) --with-blas="$(LIBBLAS)" --with-lapack="$(LIBLAPACK)" --disable-mpi --enable-shared FFLAGS="$(ARPACK_FFLAGS)"
638
 
        touch $@
639
 
$(ARPACK_OBJ_TARGET): $(ARPACK_OBJ_SOURCE) | $(BUILD)/lib
640
 
        cd arpack-ng_$(ARPACK_VER) && \
641
 
        $(MAKE) install F77="$(FC)" MPIF77="$(FC)"
 
772
endif
 
773
        touch -c $@
 
774
$(ARPACK_OBJ_SOURCE): arpack-ng_$(ARPACK_VER)/config.status
 
775
ifeq ($(OS),WINNT)
 
776
        cd arpack-ng_$(ARPACK_VER) && \
 
777
        $(FC) -shared $(ARPACK_OPTS) SRC/*.f UTIL/*.f $(LIBLAPACK) $(LIBBLAS) -o libarpack.$(SHLIB_EXT)
 
778
else
 
779
        cd arpack-ng_$(ARPACK_VER) && \
 
780
        $(MAKE) $(ARPACK_ARGS)
 
781
endif
 
782
        touch -c $@
 
783
arpack-ng_$(ARPACK_VER)/checked: $(ARPACK_OBJ_SOURCE)
 
784
ifneq ($(OS),WINNT)
 
785
        cd arpack-ng_$(ARPACK_VER) && \
 
786
        $(MAKE) check $(ARPACK_ARGS)
 
787
endif
 
788
        echo 1 > $@
 
789
$(ARPACK_OBJ_TARGET): $(ARPACK_OBJ_SOURCE) arpack-ng_$(ARPACK_VER)/checked | $(BUILD)/lib
 
790
ifeq ($(OS),WINNT)
 
791
        cd arpack-ng_$(ARPACK_VER) && \
 
792
        cp libarpack.$(SHLIB_EXT) $(BUILD)/lib/libarpack.$(SHLIB_EXT)
 
793
else
 
794
        cd arpack-ng_$(ARPACK_VER) && \
 
795
        $(MAKE) install $(ARPACK_ARGS)
642
796
        $(INSTALL_NAME_CMD)libarpack.$(SHLIB_EXT) $(BUILD)/lib/libarpack.$(SHLIB_EXT)
643
797
ifeq ($(OS), Linux)
644
798
        for filename in $(BUILD)/lib/libarpack.so* ; do \
645
799
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
646
800
        done
647
801
endif
648
 
        touch $@
 
802
endif
 
803
        touch -c $@
649
804
 
650
805
clean-arpack:
651
806
        -$(MAKE) -C arpack-ng_$(ARPACK_VER) clean
653
808
distclean-arpack:
654
809
        -rm -rf arpack-ng_$(ARPACK_VER).tar.gz arpack-ng_$(ARPACK_VER)
655
810
 
 
811
get-arpack: arpack-ng_$(ARPACK_VER).tar.gz
 
812
configure-arpack: arpack-ng_$(ARPACK_VER)/config.status
 
813
compile-arpack: $(ARPACK_OBJ_SOURCE)
 
814
check-arpack: arpack-ng_$(ARPACK_VER)/checked
 
815
install-arpack: $(ARPACK_OBJ_TARGET)
 
816
 
 
817
 
656
818
## FFTW ##
657
 
 
658
 
FFTW_SINGLE_OBJ_TARGET = $(BUILD)/lib/libfftw3f.3.$(SHLIB_EXT)
659
 
FFTW_DOUBLE_OBJ_TARGET = $(BUILD)/lib/libfftw3.3.$(SHLIB_EXT)
660
 
 
661
 
compile-fftw: compile-fftw-single compile-fftw-double
662
 
compile-fftw-single: install-fftw-single
663
 
compile-fftw-double: install-fftw-double
664
 
 
665
 
install-fftw: install-fftw-single install-fftw-double
666
 
install-fftw-single: $(FFTW_SINGLE_OBJ_TARGET)
667
 
install-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET)
 
819
ifeq ($(OS),WINNT)
 
820
FFTW_SINGLE_SRC_TARGET = fftw-$(FFTW_VER)-single/.libs/libfftw3f-3.$(SHLIB_EXT)
 
821
FFTW_DOUBLE_SRC_TARGET = fftw-$(FFTW_VER)-double/.libs/libfftw3-3.$(SHLIB_EXT)
 
822
else
 
823
FFTW_SINGLE_SRC_TARGET = fftw-$(FFTW_VER)-single/.libs/libfftw3f.$(SHLIB_EXT)
 
824
FFTW_DOUBLE_SRC_TARGET = fftw-$(FFTW_VER)-double/.libs/libfftw3.$(SHLIB_EXT)
 
825
endif
 
826
FFTW_SINGLE_OBJ_TARGET = $(BUILD)/lib/libfftw3f.$(SHLIB_EXT)
 
827
FFTW_DOUBLE_OBJ_TARGET = $(BUILD)/lib/libfftw3.$(SHLIB_EXT)
668
828
 
669
829
FFTW_CONFIG = --enable-shared --disable-fortran --disable-mpi --enable-fma --enable-threads
670
830
ifneq ($(ARCH), ppc64)
680
840
fftw-$(FFTW_VER)-single/configure: fftw-$(FFTW_VER).tar.gz
681
841
        mkdir -p fftw-$(FFTW_VER)-single && \
682
842
        tar -C fftw-$(FFTW_VER)-single --strip-components 1 -xf $<
683
 
        touch $@
 
843
ifeq ($(OS),WINNT)
 
844
        patch fftw-$(FFTW_VER)-single/configure < fftw-config-nopthreads.patch
 
845
        patch fftw-$(FFTW_VER)-single/kernel/ifftw.h < ifftw.h.patch
 
846
endif
 
847
        touch -c $@
684
848
fftw-$(FFTW_VER)-single/config.status: fftw-$(FFTW_VER)-single/configure
685
849
        cd fftw-$(FFTW_VER)-single && \
686
850
        (./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG) --enable-avx --enable-single || \
687
851
          ./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG) --enable-single) && \
688
852
        $(MAKE) clean
689
 
        touch $@
690
 
$(FFTW_SINGLE_OBJ_TARGET): fftw-$(FFTW_VER)-single/config.status
 
853
        touch -c $@
 
854
$(FFTW_SINGLE_SRC_TARGET): fftw-$(FFTW_VER)-single/config.status
 
855
        $(MAKE) -C fftw-$(FFTW_VER)-single
 
856
fftw-$(FFTW_VER)-single/checked: $(FFTW_SINGLE_SRC_TARGET)
 
857
ifeq ($(OS),$(BUILD_OS))
 
858
        $(MAKE) -C fftw-$(FFTW_VER)-single check
 
859
endif
 
860
        echo 1 > $@
 
861
$(FFTW_SINGLE_OBJ_TARGET): $(FFTW_SINGLE_SRC_TARGET) fftw-$(FFTW_VER)-single/checked
691
862
        $(MAKE) -C fftw-$(FFTW_VER)-single install
 
863
        touch -c $@
692
864
ifeq ($(OS), Darwin)
693
865
        $(INSTALL_NAME_CMD)libfftw3f.dylib $(BUILD)/lib/libfftw3f.dylib
694
866
        $(INSTALL_NAME_CMD)libfftw3f_threads.$(SHLIB_EXT) $(BUILD)/lib/libfftw3f_threads.$(SHLIB_EXT)
701
873
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
702
874
        done
703
875
endif
704
 
        touch $@
 
876
        touch -c $@
705
877
 
706
878
fftw-$(FFTW_VER)-double/configure: fftw-$(FFTW_VER).tar.gz
707
879
        mkdir -p fftw-$(FFTW_VER)-double && \
708
880
        tar -C fftw-$(FFTW_VER)-double --strip-components 1 -xf $<
709
 
        touch $@
 
881
ifeq ($(OS),WINNT)
 
882
        patch fftw-$(FFTW_VER)-double/configure < fftw-config-nopthreads.patch
 
883
        patch fftw-$(FFTW_VER)-double/kernel/ifftw.h < ifftw.h.patch
 
884
endif
 
885
        touch -c $@
710
886
fftw-$(FFTW_VER)-double/config.status: fftw-$(FFTW_VER)-double/configure
711
887
        cd fftw-$(FFTW_VER)-double && \
712
888
        (./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG) --enable-avx || \
713
889
          ./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG)) && \
714
890
        $(MAKE) clean
715
 
        touch $@
716
 
$(FFTW_DOUBLE_OBJ_TARGET): fftw-$(FFTW_VER)-double/config.status
 
891
        touch -c $@
 
892
$(FFTW_DOUBLE_SRC_TARGET): fftw-$(FFTW_VER)-double/config.status
 
893
        $(MAKE) -C fftw-$(FFTW_VER)-double
 
894
        touch -c $@
 
895
fftw-$(FFTW_VER)-double/checked: $(FFTW_DOUBLE_SRC_TARGET)
 
896
ifeq ($(OS),$(BUILD_OS))
 
897
        $(MAKE) -C fftw-$(FFTW_VER)-double check
 
898
endif
 
899
        echo 1 > $@
 
900
$(FFTW_DOUBLE_OBJ_TARGET): $(FFTW_DOUBLE_SRC_TARGET) fftw-$(FFTW_VER)-double/checked
717
901
        $(MAKE) -C fftw-$(FFTW_VER)-double install
718
902
ifeq ($(OS), Darwin)
719
903
        $(INSTALL_NAME_CMD)libfftw3.$(SHLIB_EXT) $(BUILD)/lib/libfftw3.$(SHLIB_EXT)
727
911
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
728
912
        done
729
913
endif
730
 
        touch $@
 
914
        touch -c $@
731
915
 
732
916
clean-fftw: clean-fftw-single clean-fftw-double
733
917
clean-fftw-single:
739
923
distclean-fftw:
740
924
        -rm -rf fftw-$(FFTW_VER).tar.gz fftw-$(FFTW_VER)-{single,double}
741
925
 
 
926
get-fftw: get-fftw-single get-fftw-double
 
927
configure-fftw: configure-fftw-single configure-fftw-double
 
928
compile-fftw: compile-fftw-single compile-fftw-double
 
929
check-fftw: check-fftw-single check-fftw-double
 
930
install-fftw: install-fftw-single install-fftw-double
 
931
 
 
932
get-fftw-single: fftw-$(FFTW_VER).tar.gz
 
933
configure-fftw-single: fftw-$(FFTW_VER)-single/config.status
 
934
compile-fftw-single: $(FFTW_SINGLE_OBJ_TARGET)
 
935
check-fftw-single: fftw-$(FFTW_VER)-single/checked
 
936
install-fftw-single: $(FFTW_SINGLE_OBJ_TARGET)
 
937
 
 
938
get-fftw-double: fftw-$(FFTW_VER).tar.gz
 
939
configure-fftw-double: fftw-$(FFTW_VER)-double/config.status
 
940
compile-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET)
 
941
check-fftw-double: fftw-$(FFTW_VER)-double/checked
 
942
install-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET)
 
943
 
742
944
 
743
945
## SUITESPARSE ##
744
946
 
745
 
ifeq ($(USE_SYSTEM_SUITESPARSE), 0)
746
947
SUITESPARSE_OBJ_SOURCE = SuiteSparse-$(SUITESPARSE_VER)/UMFPACK/Lib/libumfpack.a
747
948
SUITESPARSE_OBJ_TARGET = $(BUILD)/lib/libumfpack.$(SHLIB_EXT)
748
 
endif
749
949
 
750
950
ifeq ($(USE_LIB64), 1)
751
951
UMFPACK_CONFIG = -DLONGBLAS='long long' 
755
955
SUITE_SPARSE_LIB = -lm
756
956
ifneq ($(OS), Darwin)
757
957
ifneq ($(OS), WINNT)
758
 
  SUITE_SPARSE_LIB += -lrt
759
 
endif
760
 
endif
761
 
 
762
 
compile-suitesparse: $(SUITESPARSE_OBJ_SOURCE)
763
 
install-suitesparse: $(SUITESPARSE_OBJ_TARGET) $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
 
958
SUITE_SPARSE_LIB += -lrt
 
959
endif
 
960
endif
 
961
ifneq ($(OS), WINNT)
 
962
SUITE_SPARSE_LIB += -Wl,-rpath,'$(BUILD)/lib'
 
963
endif
764
964
 
765
965
SuiteSparse-$(SUITESPARSE_VER).tar.gz:
766
966
        $(WGET) http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-$(SUITESPARSE_VER).tar.gz
767
967
SuiteSparse-$(SUITESPARSE_VER)/Makefile: SuiteSparse-$(SUITESPARSE_VER).tar.gz
768
968
        mkdir -p SuiteSparse-$(SUITESPARSE_VER)
769
969
        tar -C SuiteSparse-$(SUITESPARSE_VER) --strip-components 1 -zxf $<
770
 
        touch $@
771
 
$(SUITESPARSE_OBJ_SOURCE): $(OPENBLAS_OBJ_SOURCE) SuiteSparse-$(SUITESPARSE_VER)/Makefile
 
970
        touch -c $@
 
971
ifeq ($(USE_SYSTEM_BLAS), 0)
 
972
$(SUITESPARSE_OBJ_SOURCE): $(OPENBLAS_OBJ_TARGET)
 
973
endif
 
974
#todo: rpath is missing on mac for tests
 
975
$(SUITESPARSE_OBJ_SOURCE): SuiteSparse-$(SUITESPARSE_VER)/Makefile
772
976
        cd SuiteSparse-$(SUITESPARSE_VER) && \
773
977
        $(MAKE) CC="$(CC)" CXX="$(CXX)" F77="$(FC)" AR="$(AR)" RANLIB="$(RANLIB)" BLAS="$(LIBBLAS)" LAPACK="$(LIBLAPACK)" \
774
978
          INSTALL_LIB="$(BUILD)/lib" INSTALL_INCLUDE="$(BUILD)/include" LIB="$(SUITE_SPARSE_LIB)" \
775
979
          UMFPACK_CONFIG="$(UMFPACK_CONFIG)" CHOLMOD_CONFIG="$(CHOLMOD_CONFIG)"
776
 
        touch $@
777
 
 
778
 
ifeq ($(USE_SYSTEM_SUITESPARSE), 0)
 
980
        touch -c $@
779
981
$(SUITESPARSE_OBJ_TARGET): $(SUITESPARSE_OBJ_SOURCE)
780
982
        mkdir -p SuiteSparse-$(SUITESPARSE_VER)/lib && \
781
983
        cd SuiteSparse-$(SUITESPARSE_VER)/lib && \
791
993
        $(INSTALL_NAME_CMD)libumfpack.$(SHLIB_EXT) $(BUILD)/lib/libumfpack.$(SHLIB_EXT) && \
792
994
        $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libspqr.a  $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libspqr.$(SHLIB_EXT) -L$(BUILD)/lib -lcholmod -lcolamd -lamd $(LIBBLAS) $(RPATH_ORIGIN) && \
793
995
        $(INSTALL_NAME_CMD)libspqr.$(SHLIB_EXT) $(BUILD)/lib/libspqr.$(SHLIB_EXT)
794
 
endif
795
996
 
796
997
clean-suitesparse:
797
998
        -$(MAKE) -C SuiteSparse-$(SUITESPARSE_VER) clean
799
1000
distclean-suitesparse: clean-suitesparse
800
1001
        -rm -rf SuiteSparse-$(SUITESPARSE_VER).tar.gz SuiteSparse-$(SUITESPARSE_VER)
801
1002
 
 
1003
get-suitesparse: SuiteSparse-$(SUITESPARSE_VER).tar.gz
 
1004
configure-suitesparse: get-suitesparse
 
1005
compile-suitesparse: $(SUITESPARSE_OBJ_SOURCE)
 
1006
check-suitesparse: compile-suitesparse
 
1007
install-suitesparse: $(SUITESPARSE_OBJ_TARGET) install-suitesparse-wrapper
 
1008
 
802
1009
# SUITESPARSE WRAPPER
803
1010
 
804
1011
ifeq ($(USE_SYSTEM_SUITESPARSE), 1)
807
1014
else
808
1015
SUITESPARSE_INC = -I SuiteSparse-$(SUITESPARSE_VER)/CHOLMOD/Include -I SuiteSparse-$(SUITESPARSE_VER)/SuiteSparse_config -I SuiteSparse-$(SUITESPARSE_VER)/SPQR/Include
809
1016
SUITESPARSE_LIB = -L$(BUILD)/lib -lcholmod -lumfpack -lspqr $(RPATH_ORIGIN)
 
1017
$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT):  $(SUITESPARSE_OBJ_TARGET)
810
1018
endif
811
1019
 
812
 
$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT): SuiteSparse_wrapper.c $(SUITESPARSE_OBJ_TARGET)
 
1020
$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT): SuiteSparse_wrapper.c
813
1021
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared $(fPIC) $(SUITESPARSE_INC) SuiteSparse_wrapper.c -o $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT) $(SUITESPARSE_LIB)
814
1022
        $(INSTALL_NAME_CMD)libsuitesparse_wrapper.$(SHLIB_EXT) $@
815
 
        touch $@
816
 
install-suitesparse-wrapper: $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
 
1023
        touch -c $@
817
1024
 
818
1025
clean-suitesparse-wrapper:
819
1026
        -rm -f $(SUITESPARSE_OBJ_TARGET) $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
820
1027
distclean-suitesparse-wrapper: clean-suitesparse-wrapper
821
1028
 
822
 
## CLP ##
823
 
 
824
 
CLP_OBJ_TARGET = $(BUILD)/lib/libClp.$(SHLIB_EXT)
825
 
 
826
 
compile-clp: install-clp
827
 
install-clp: $(CLP_OBJ_TARGET)
828
 
 
829
 
clp-$(CLP_VER).tar.gz:
830
 
        $(WGET_DASH_O) $@ http://www.coin-or.org/download/source/Clp/Clp-1.14.5.tgz
831
 
clp-$(CLP_VER)/configure: clp-$(CLP_VER).tar.gz
832
 
        mkdir -p clp-$(CLP_VER)
833
 
        tar -C clp-$(CLP_VER) --strip-components 1 -zxf $<
834
 
        touch $@
835
 
clp-$(CLP_VER)/config.status: clp-$(CLP_VER)/configure
836
 
        cd clp-$(CLP_VER) && \
837
 
        ./configure $(CONFIGURE_COMMON) MPIF77="$(FC)" MPICXX="$(CXX)" MPICC="$(CC)"
838
 
$(CLP_OBJ_TARGET): clp-$(CLP_VER)/config.status
839
 
        $(MAKE) -C clp-$(CLP_VER) install
840
 
        touch $@
841
 
 
842
 
clean-clp:
843
 
        -$(MAKE) -C clp-$(CLP_VER) clean
844
 
        -rm -f $(CLP_OBJ_TARGET)
845
 
distclean-clp:
846
 
        -rm -rf clp-$(CLP_VER).tar.gz clp-$(CLP_VER)
 
1029
get-suitesparse-wrapper:
 
1030
configure-suitesparse-wrapper:
 
1031
compile-suitesparse-wrapper:
 
1032
check-suitesparse-wrapper:
 
1033
install-suitesparse-wrapper: $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
 
1034
 
847
1035
 
848
1036
## UNWIND ##
849
1037
 
850
 
ifeq ($(USE_SYSTEM_LIBUNWIND), 0)
851
1038
LIBUNWIND_TARGET_OBJ = $(BUILD)/lib/libunwind.a
852
1039
LIBUNWIND_TARGET_SOURCE = libunwind-$(UNWIND_VER)/src/.libs/libunwind.a
853
 
else
854
 
LIBUNWIND_TARGET_OBJ = 
855
 
LIBUNWIND_TARGET_SOURCE = 
856
 
endif
857
 
 
858
1040
LIBUNWIND_CFLAGS = $(CFLAGS) -U_FORTIFY_SOURCE $(fPIC)
859
 
ifeq ($(ARCH), ppc64)
860
 
LIBUNWIND_CFLAGS += -m64
861
 
endif
862
 
 
863
 
compile-unwind: $(LIBUNWIND_TARGET_SOURCE)
864
 
install-unwind: $(LIBUNWIND_TARGET_OBJ)
865
1041
 
866
1042
libunwind-$(UNWIND_VER).tar.gz:
867
1043
        $(WGET) http://savannah.spinellicreations.com/libunwind/libunwind-$(UNWIND_VER).tar.gz
868
 
libunwind-$(UNWIND_VER)/Makefile: libunwind-$(UNWIND_VER).tar.gz
 
1044
libunwind-$(UNWIND_VER)/configure: libunwind-$(UNWIND_VER).tar.gz
869
1045
        tar xfz $<
870
 
        cd libunwind-$(UNWIND_VER) && ./configure $(CONFIGURE_COMMON) CFLAGS="$(LIBUNWIND_CFLAGS)"
871
 
 
872
 
$(LIBUNWIND_TARGET_SOURCE): libunwind-$(UNWIND_VER)/Makefile
873
 
        cd libunwind-$(UNWIND_VER) && $(MAKE)
874
 
 
 
1046
        touch -c $@
 
1047
libunwind-$(UNWIND_VER)/config.status: libunwind-$(UNWIND_VER)/configure
 
1048
        cd libunwind-$(UNWIND_VER) && \
 
1049
        ./configure $(CONFIGURE_COMMON) CFLAGS="$(LIBUNWIND_CFLAGS)" --disable-shared --disable-minidebuginfo
 
1050
        touch -c $@
 
1051
$(LIBUNWIND_TARGET_SOURCE): libunwind-$(UNWIND_VER)/config.status
 
1052
        $(MAKE) -C libunwind-$(UNWIND_VER)
 
1053
        touch -c $@
 
1054
libunwind-$(UNWIND_VER)/checked: $(LIBUNWIND_TARGET_SOURCE)
 
1055
ifeq ($(OS),$(BUILD_OS))
 
1056
        $(MAKE) -C libunwind-$(UNWIND_VER) check
 
1057
endif
 
1058
        echo 1 > $@
 
1059
#todo: libunwind tests known to fail
875
1060
$(LIBUNWIND_TARGET_OBJ): $(LIBUNWIND_TARGET_SOURCE)
876
 
        cd libunwind-$(UNWIND_VER) && $(MAKE) install
 
1061
        $(MAKE) install -C libunwind-$(UNWIND_VER)
 
1062
ifeq ($(ARCH), ppc64)
 
1063
        # workaround for configure script bug
 
1064
        mv $(BUILD)/lib64/libunwind*.a $(BUILD)/lib/
 
1065
endif
877
1066
 
878
1067
clean-unwind:
879
1068
        -$(MAKE) -C libunwind-$(UNWIND_VER) clean
880
1069
        -rm -f $(LIBUNWIND_TARGET_OBJ) $(LIBUNWIND_TARGET_SOURCE)
881
 
 
882
1070
distclean-unwind:
883
1071
        -rm -rf libunwind-$(UNWIND_VER).tar.gz libunwind-$(UNWIND_VER)
884
1072
 
885
 
## GNU LIGHTTPD ##
886
 
 
887
 
ifeq ($(USE_SYSTEM_LIGHTTPD), 0)
888
 
LIGHTTPD_OBJ_TARGET = $(BUILD)/sbin/lighttpd
 
1073
get-unwind: libunwind-$(UNWIND_VER).tar.gz
 
1074
configure-unwind: libunwind-$(UNWIND_VER)/config.status
 
1075
compile-unwind: $(LIBUNWIND_TARGET_SOURCE)
 
1076
check-unwind: libunwind-$(UNWIND_VER)/checked
 
1077
install-unwind: $(LIBUNWIND_TARGET_OBJ)
 
1078
 
 
1079
 
 
1080
## NGINX ##
 
1081
 
 
1082
ifneq ($(OS), WINNT)
 
1083
NGINX_OBJ_TARGET = $(BUILD)/sbin/nginx
 
1084
NGINX_SRC_TARGET = nginx/objs/nginx
 
1085
NGINX_FLAGS = --with-ld-opt="-L'$(BUILD)/lib' -lpcre -Wl,-rpath,'$(BUILD)/lib' $(RPATH)"
 
1086
 
 
1087
nginx/.gitignore:
 
1088
        rm -f $@
 
1089
        for x in .gitignore Makefile config.status objs; do echo /$$x >> $@; done
 
1090
nginx/auto/configure: | compile-pcre
 
1091
        (cd .. && git submodule update --init)
 
1092
        touch -c $@
 
1093
nginx/config.status: nginx/auto/configure nginx/.gitignore
 
1094
        cd nginx && \
 
1095
        ./auto/configure --without-http_gzip_module --without-http_rewrite_module $(NGINX_FLAGS) --with-debug --prefix=".."
 
1096
        echo 1 > $@
 
1097
$(NGINX_SRC_TARGET): nginx/config.status nginx/.gitignore
 
1098
        $(MAKE) -C nginx
 
1099
        touch -c $@
 
1100
$(NGINX_OBJ_TARGET): $(NGINX_SRC_TARGET) nginx/.gitignore
 
1101
        $(MAKE) -C nginx install DESTDIR="$(abspath $(BUILD)/bin)/"
 
1102
        touch -c $@
 
1103
 
 
1104
clean-nginx:
 
1105
        -$(MAKE) -C nginx clean
 
1106
distclean-nginx:
 
1107
        -rm -rf nginx
 
1108
 
 
1109
get-nginx: nginx/auto/configure
 
1110
configure-nginx: nginx/config.status
 
1111
compile-nginx: $(NGINX_SRC_TARGET)
 
1112
check-nginx: $(NGINX_SRC_TARGET)
 
1113
install-nginx: $(NGINX_OBJ_TARGET)
889
1114
else
890
 
LIGHTTPD_OBJ_TARGET = 
 
1115
NGINX_VER=1.2.6
 
1116
NGINX_SRC_TARGET = nginx-$(NGINX_VER).zip
 
1117
NGINX_OBJ_TARGET = nginx-$(NGINX_VER)/nginx.exe
 
1118
$(NGINX_SRC_TARGET):
 
1119
        $(WGET) http://nginx.org/download/$@
 
1120
$(NGINX_OBJ_TARGET): $(NGINX_SRC_TARGET)
 
1121
        unzip $<
 
1122
        touch -c $@
 
1123
$(BUILD)/sbin/nginx.exe: $(NGINX_OBJ_TARGET)
 
1124
        mkdir -p $(BUILD)/sbin
 
1125
        cp -a nginx-$(NGINX_VER)/* $(BUILD)/sbin
 
1126
        touch -c $@
 
1127
get-nginx: $(NGINX_SRC_TARGET)
 
1128
configure-nginx: get-nginx
 
1129
compile-nginx: $(NGINX_OBJ_TARGET)
 
1130
check-nginx: compile-nginx
 
1131
install-nginx: $(BUILD)/sbin/nginx.exe
891
1132
endif
892
1133
 
893
 
compile-lighttpd: install-lighttpd
894
 
install-lighttpd: $(LIGHTTPD_OBJ_TARGET) lighttpd.conf
895
 
        mkdir -p $(BUILD)/etc
896
 
        cp -f lighttpd.conf $(BUILD)/etc/lighttpd.conf
897
 
 
898
 
lighttpd-$(LIGHTTPD_VER).tar.gz:
899
 
        $(WGET) http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-$(LIGHTTPD_VER).tar.gz
900
 
lighttpd-$(LIGHTTPD_VER)/configure: lighttpd-$(LIGHTTPD_VER).tar.gz
901
 
        tar zxf $<
902
 
        touch $@
903
 
lighttpd-$(LIGHTTPD_VER)/config.status: lighttpd-$(LIGHTTPD_VER)/configure
904
 
        mkdir -p $(BUILD)/lib/lighttpd && \
905
 
        cd lighttpd-$(LIGHTTPD_VER) && \
906
 
        ./configure $(CONFIGURE_COMMON) --libdir=$(BUILD)/lib/lighttpd --without-pcre --without-zlib --without-bzip2
907
 
$(LIGHTTPD_OBJ_TARGET): lighttpd-$(LIGHTTPD_VER)/config.status
908
 
        $(MAKE) -C lighttpd-$(LIGHTTPD_VER) install
909
 
        $(INSTALL_NAME_CMD)lighttpd/liblightcomp.$(SHLIB_EXT) $(BUILD)/lib/lighttpd/liblightcomp.$(SHLIB_EXT)
910
 
        $(INSTALL_NAME_CHANGE_CMD) $(BUILD)/lib/lighttpd/liblightcomp.dylib @executable_path/../lib/lighttpd/liblightcomp.dylib  $(BUILD)/sbin/lighttpd
911
 
        touch $@
912
 
 
913
 
clean-lighttpd:
914
 
        -$(MAKE) -C lighttpd-$(LIGHTTPD_VER) clean
915
 
        -rm -f $(LIGHTTPD_OBJ_TARGET)
916
 
distclean-lighttpd:
917
 
        -rm -rf lighttpd-$(LIGHTTPD_VER).tar.gz lighttpd-$(LIGHTTPD_VER)
918
1134
 
919
1135
## GMP ##
920
1136
 
921
 
ifeq ($(USE_SYSTEM_GMP), 0)
 
1137
GMP_SRC_TARGET = gmp-$(GMP_VER)/.libs/libgmp.$(SHLIB_EXT)
922
1138
GMP_OBJ_TARGET = $(BUILD)/lib/libgmp.$(SHLIB_EXT)
923
 
else
924
 
GMP_OBJ_TARGET = 
925
 
endif
926
 
 
927
 
compile-gmp: install-gmp
928
 
install-gmp: $(GMP_OBJ_TARGET)
929
1139
 
930
1140
gmp-$(GMP_VER).tar.bz2:
931
1141
        $(WGET) ftp://ftp.gmplib.org/pub/gmp-$(GMP_VER)/$@
932
1142
gmp-$(GMP_VER)/configure: gmp-$(GMP_VER).tar.bz2
933
1143
        tar jxf $<
934
 
        touch $@
 
1144
        touch -c $@
935
1145
gmp-$(GMP_VER)/config.status: gmp-$(GMP_VER)/configure
936
1146
        cd gmp-$(GMP_VER) && \
937
 
        ./configure --prefix=$(abspath $(BUILD)) CC="$(CC)" CXX="$(CXX)" --enable-shared --disable-static
938
 
$(GMP_OBJ_TARGET): gmp-$(GMP_VER)/config.status
 
1147
        ./configure $(CONFIGURE_COMMON) F77= --enable-shared --disable-static
 
1148
        touch -c $@
 
1149
$(GMP_SRC_TARGET): gmp-$(GMP_VER)/config.status
939
1150
        $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD)
 
1151
gmp-$(GMP_VER)/checked: $(GMP_SRC_TARGET)
940
1152
ifeq ($(OS),$(BUILD_OS))
941
1153
        $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD) check
942
1154
endif
 
1155
        echo 1 > $@
 
1156
$(GMP_OBJ_TARGET): $(GMP_SRC_TARGET) gmp-$(GMP_VER)/checked
943
1157
        $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD) install
944
1158
        $(INSTALL_NAME_CMD)libgmp.dylib $@
945
 
        touch $@
 
1159
        touch -c $@
946
1160
 
947
1161
clean-gmp:
948
1162
        -$(MAKE) -C gmp-$(GMP_VER) clean
950
1164
distclean-gmp:
951
1165
        -rm -rf gmp-$(GMP_VER).tar.bz2 gmp-$(GMP_VER)
952
1166
 
953
 
## GMP Wrapper
 
1167
get-gmp: gmp-$(GMP_VER).tar.bz2
 
1168
configure-gmp: gmp-$(GMP_VER)/config.status
 
1169
compile-gmp: $(GMP_SRC_TARGET)
 
1170
check-gmp: gmp-$(GMP_VER)/checked
 
1171
install-gmp: $(GMP_OBJ_TARGET) install-gmp-wrapper
 
1172
 
 
1173
## GMP Wrapper ##
954
1174
 
955
1175
ifeq ($(USE_SYSTEM_GMP), 1)
956
1176
GMPW_INC =
958
1178
else
959
1179
GMPW_INC = -I $(BUILD)/include
960
1180
GMPW_LIB = -L$(BUILD)/lib/ -lgmp
 
1181
$(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT): $(GMP_OBJ_TARGET)
961
1182
endif
962
1183
 
963
 
$(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT): gmp_wrapper.c $(GMP_OBJ_TARGET) | $(BUILD)/lib
 
1184
$(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT): gmp_wrapper.c | $(BUILD)/lib
964
1185
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared $(fPIC) $(GMPW_INC) gmp_wrapper.c -o $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT) $(RPATH_ORIGIN) $(GMPW_LIB)
965
1186
        $(INSTALL_NAME_CMD)libgmp_wrapper.$(SHLIB_EXT) $@
966
 
        touch $@
967
 
install-gmp-wrapper: $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT)
 
1187
        touch -c $@
968
1188
 
969
1189
clean-gmp-wrapper:
970
1190
        -rm -f $(GMP_OBJ_TARGET) $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT)
971
1191
distclean-gmp-wrapper: clean-gmp-wrapper
972
1192
 
 
1193
get-gmp-wrapper:
 
1194
configure-gmp-wrapper:
 
1195
compile-gmp-wrapper:
 
1196
check-gmp-wrapper:
 
1197
install-gmp-wrapper: $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT)
 
1198
 
 
1199
 
973
1200
## GLPK ##
974
1201
 
975
 
ifeq ($(USE_SYSTEM_GLPK), 1)
976
 
GLPK_OBJ_TARGET =
977
 
else
 
1202
GLPK_SRC_TARGET = glpk-$(GLPK_VER)/src/.libs/libglpk.$(SHLIB_EXT)
978
1203
GLPK_OBJ_TARGET = $(BUILD)/lib/libglpk.$(SHLIB_EXT)
979
 
endif
980
 
 
981
 
compile-glpk: install-glpk
982
 
install-glpk: $(GLPK_OBJ_TARGET) $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
983
1204
 
984
1205
glpk-$(GLPK_VER).tar.gz:
985
1206
        $(WGET) http://ftp.gnu.org/gnu/glpk/$@
986
 
 
987
1207
glpk-$(GLPK_VER)/configure: glpk-$(GLPK_VER).tar.gz
988
1208
        tar zxf $<
989
 
        touch $@
 
1209
        touch -c $@
990
1210
glpk-$(GLPK_VER)/config.status: glpk-$(GLPK_VER)/configure
991
1211
        cd glpk-$(GLPK_VER) && \
992
1212
        ./configure $(CONFIGURE_COMMON)
993
 
$(GLPK_OBJ_TARGET): glpk-$(GLPK_VER)/config.status
 
1213
        touch -c $@
 
1214
$(GLPK_SRC_TARGET): glpk-$(GLPK_VER)/config.status
 
1215
        $(MAKE) -C glpk-$(GLPK_VER) $(LIBTOOL_CCLD)
 
1216
        touch -c $@
 
1217
glpk-$(GLPK_VER)/checked: $(GLPK_SRC_TARGET)
 
1218
ifeq ($(OS),$(BUILD_OS))
 
1219
        $(MAKE) -C glpk-$(GLPK_VER) $(LIBTOOL_CCLD) check
 
1220
endif
 
1221
        echo 1 > $@
 
1222
$(GLPK_OBJ_TARGET): $(GLPK_SRC_TARGET) glpk-$(GLPK_VER)/checked
994
1223
        $(MAKE) -C glpk-$(GLPK_VER) $(LIBTOOL_CCLD) install
995
1224
        $(INSTALL_NAME_CMD)libglpk.dylib $@
996
 
        touch $@
 
1225
        $(AUTOTOOLS_PATH_CORRECT)
 
1226
        touch -c $@
997
1227
 
998
1228
clean-glpk:
999
1229
        -$(MAKE) -C glpk-$(GLPK_VER) uninstall || true
1000
1230
        -$(MAKE) -C glpk-$(GLPK_VER) clean
1001
1231
distclean-glpk: clean-glpk
1002
 
        -rm -rf glpk-$(GLPK_VER).tar.bz2 glpk-$(GLPK_VER)
 
1232
        -rm -rf glpk-$(GLPK_VER).tar.gz glpk-$(GLPK_VER)
1003
1233
 
 
1234
get-glpk: glpk-$(GLPK_VER).tar.gz
 
1235
configure-glpk: glpk-$(GLPK_VER)/config.status
 
1236
compile-glpk: $(GLPK_SRC_TARGET)
 
1237
check-glpk: glpk-$(GLPK_VER)/checked
 
1238
install-glpk: $(GLPK_OBJ_TARGET) $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
1004
1239
 
1005
1240
## GLPK Wrapper
1006
1241
 
1010
1245
else
1011
1246
GLPKW_INC = -I $(BUILD)/include
1012
1247
GLPKW_LIB = -L$(BUILD)/lib -lglpk
 
1248
$(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT): $(GLPK_OBJ_TARGET)
1013
1249
endif
1014
1250
 
1015
 
 
1016
 
$(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT): glpk_wrapper.c $(GLPK_OBJ_TARGET)
 
1251
$(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT): glpk_wrapper.c
1017
1252
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared $(fPIC) $(GLPKW_INC) glpk_wrapper.c $(GLPKW_LIB) -o $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT) $(RPATH_ORIGIN)
1018
1253
        $(INSTALL_NAME_CMD)libglpk_wrapper.$(SHLIB_EXT) $@
1019
 
        touch $@
1020
 
install-glpk-wrapper: $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT) glpk_wrapper.c
 
1254
        touch -c $@
1021
1255
 
1022
1256
clean-glpk-wrapper:
1023
1257
        -rm -f $(GLPK_OBJ_TARGET) $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
1024
1258
distclean-glpk-wrapper: clean-glpk-wrapper
1025
1259
 
 
1260
get-glpk-wrapper:
 
1261
configure-glpk-wrapper:
 
1262
compile-glpk-wrapper:
 
1263
check-glpk-wrapper:
 
1264
install-glpk-wrapper: $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
 
1265
 
 
1266
 
1026
1267
## ZLIB ##
1027
1268
 
1028
 
ifeq ($(USE_SYSTEM_ZLIB), 1)
1029
 
ZLIB_OBJ_TARGET =
 
1269
ifeq ($(OS),WINNT)
 
1270
ZLIB_SRC_TARGET = zlib-$(ZLIB_VER)/zlib1.$(SHLIB_EXT)
1030
1271
else
 
1272
ZLIB_SRC_TARGET = zlib-$(ZLIB_VER)/libz.$(SHLIB_EXT)
 
1273
endif
1031
1274
ZLIB_OBJ_TARGET = $(BUILD)/lib/libz.$(SHLIB_EXT)
1032
1275
ZLIB_CONFIGFLAGS = CFLAGS="-O3 $(CFLAGS) -D_FILE_OFFSET_BITS=64"
1033
1276
ifneq ($(OS),$(BUILD_OS))
1035
1278
else
1036
1279
ZLIB_CONFIGFLAGS += CC="$(CC)"
1037
1280
endif
1038
 
endif
1039
 
 
1040
 
compile-zlib: install-zlib
1041
 
install-zlib: $(ZLIB_OBJ_TARGET)
1042
1281
 
1043
1282
zlib-$(ZLIB_VER).tar.gz:
1044
1283
        $(WGET) http://zlib.net/$@
1045
1284
zlib-$(ZLIB_VER)/configure: zlib-$(ZLIB_VER).tar.gz
1046
1285
        tar zxf $<
1047
 
        touch $@
 
1286
        touch -c $@
1048
1287
zlib-$(ZLIB_VER)/config.status: zlib-$(ZLIB_VER)/configure
1049
1288
ifeq ($(OS), WINNT)
1050
1289
        cd zlib-$(ZLIB_VER) && \
1053
1292
        cd zlib-$(ZLIB_VER) && \
1054
1293
        $(ZLIB_CONFIGFLAGS) ./configure --prefix=$(abspath $(BUILD)) #not an autoconf script
1055
1294
endif
1056
 
        touch $@
1057
 
$(ZLIB_OBJ_TARGET): zlib-$(ZLIB_VER)/config.status
 
1295
        echo 1 > $@
 
1296
$(ZLIB_SRC_TARGET): zlib-$(ZLIB_VER)/config.status
1058
1297
        $(MAKE) -C zlib-$(ZLIB_VER) PREFIX=$(CROSS_COMPILE)
 
1298
        touch -c $@
 
1299
zlib-$(ZLIB_VER)/checked: $(ZLIB_SRC_TARGET)
 
1300
ifneq ($(OS), WINNT)
 
1301
        $(MAKE) -C zlib-$(ZLIB_VER) check PREFIX=$(CROSS_COMPILE)
 
1302
endif
 
1303
        echo 1 > $@
 
1304
$(ZLIB_OBJ_TARGET): $(ZLIB_SRC_TARGET) zlib-$(ZLIB_VER)/checked
1059
1305
ifeq ($(OS), WINNT)
1060
1306
        cp zlib-$(ZLIB_VER)/zlib1.dll $@
1061
1307
else
1062
 
        $(MAKE) -C zlib-$(ZLIB_VER) check PREFIX=$(CROSS_COMPILE)
1063
1308
        $(MAKE) -C zlib-$(ZLIB_VER) install PREFIX=$(CROSS_COMPILE)
1064
1309
endif
1065
1310
        $(INSTALL_NAME_CMD)libz.dylib $@
1066
 
        touch $@
 
1311
        touch -c $@
1067
1312
 
1068
1313
clean-zlib:
1069
1314
        -$(MAKE) -j$(PARALLEL_BUILD_JOBS) -C zlib-$(ZLIB_VER) clean
1071
1316
distclean-zlib:
1072
1317
        -rm -rf zlib-$(ZLIB_VER).tar.gz zlib-$(ZLIB_VER)
1073
1318
 
 
1319
get-zlib: zlib-$(ZLIB_VER).tar.gz
 
1320
configure-zlib: zlib-$(ZLIB_VER)/config.status
 
1321
compile-zlib: $(ZLIB_SRC_TARGET)
 
1322
check-zlib: zlib-$(ZLIB_VER)/checked
 
1323
install-zlib: $(ZLIB_OBJ_TARGET)
 
1324
 
 
1325
 
1074
1326
## Tk wrapper ##
1075
1327
 
1076
1328
TKW_INC = -I $(BUILD)/include -I $(JULIAHOME)/src -I $(JULIAHOME)/src/support
1087
1339
else
1088
1340
  TKW_INC += -I/usr/include/tcl
1089
1341
endif
1090
 
TKW_LIB += -ltcl8.5 -ltk8.5 -L$(BUILD)/lib/ -ljulia-release
 
1342
TKW_LIB += -ltcl -ltk -L$(BUILD)/lib/
1091
1343
 
1092
1344
$(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT): tk_wrapper.c
1093
 
        $(CC) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(TKW_INC) tk_wrapper.c $(TKW_LIB) -o $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
 
1345
        $(CC) $(CFLAGS) $(LDFLAGS) -shared $(fPIC) $(TKW_INC) tk_wrapper.c $(TKW_LIB) -o $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
1094
1346
        $(INSTALL_NAME_CMD)libtk_wrapper.$(SHLIB_EXT) $@
1095
 
        touch $@
1096
 
install-tk-wrapper: $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT) tk_wrapper.c
 
1347
        touch -c $@
1097
1348
 
1098
1349
clean-tk-wrapper:
1099
1350
        -rm -f $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
1100
1351
distclean-tk-wrapper: clean-tk-wrapper
1101
1352
 
1102
 
## patchelf
1103
 
 
 
1353
get-tk-wrapper: 
 
1354
configure-tk-wrapper: 
 
1355
compile-tk-wrapper: 
 
1356
check-tk-wrapper:
 
1357
install-tk-wrapper: $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
 
1358
 
 
1359
 
 
1360
## patchelf ##
 
1361
 
 
1362
PATCHELF_SOURCE = patchelf-$(PATCHELF_VER)/src/patchelf
1104
1363
PATCHELF_TARGET = $(BUILD)/bin/patchelf
1105
1364
 
1106
1365
compile-patchelf: install-patchelf
1110
1369
        $(WGET) http://hydra.nixos.org/build/1524660/download/2/$@
1111
1370
patchelf-$(PATCHELF_VER)/configure: patchelf-$(PATCHELF_VER).tar.bz2
1112
1371
        tar jxf $<
1113
 
        touch $@
 
1372
        touch -c $@
1114
1373
patchelf-$(PATCHELF_VER)/config.status: patchelf-$(PATCHELF_VER)/configure
1115
1374
        cd patchelf-$(PATCHELF_VER) && \
1116
1375
        ./configure $(CONFIGURE_COMMON)
1117
 
$(PATCHELF_TARGET): patchelf-$(PATCHELF_VER)/config.status
 
1376
        touch -c $@
 
1377
$(PATCHELF_SOURCE): patchelf-$(PATCHELF_VER)/config.status
 
1378
        $(MAKE) -C patchelf-$(PATCHELF_VER)
 
1379
        touch -c $@
 
1380
patchelf-$(PATCHELF_VER)/checked: $(PATCHELF_SOURCE)
 
1381
ifeq ($(OS),$(BUILD_OS))
 
1382
        # disabled due to bug in v0.6
 
1383
        #$(MAKE) -C patchelf-$(PATCHELF_VER) check
 
1384
endif
 
1385
        echo 1 > $@
 
1386
$(PATCHELF_TARGET): $(PATCHELF_SOURCE) patchelf-$(PATCHELF_VER)/checked
1118
1387
        $(MAKE) -C patchelf-$(PATCHELF_VER) install
1119
 
        touch $@
 
1388
        touch -c $@
1120
1389
 
1121
1390
clean-patchelf:
1122
1391
        -$(MAKE) -C patchelf-$(PATCHELF_VER) clean
1124
1393
distclean-patchelf:
1125
1394
        -rm -rf patchelf-$(PATCHELF_VER).tar.bz2 patchelf-$(PATCHELF_VER)
1126
1395
 
 
1396
get-patchelf: patchelf-$(PATCHELF_VER).tar.bz2
 
1397
configure-patchelf: patchelf-$(PATCHELF_VER)/config.status
 
1398
compile-patchelf: $(PATCHELF_SOURCE)
 
1399
check-patchelf: patchelf-$(PATCHELF_VER)/checked
 
1400
install-patchelf: $(PATCHELF_TARGET)
 
1401
 
 
1402
 
1127
1403
## phony targets ##
1128
1404
 
1129
1405
.PHONY: \
1130
1406
        default compile install cleanall distclean \
1131
 
        compile-* install-* clean-* distclean-*
 
1407
        get-* configure-* compile-* check-* install-* \
 
1408
        clean-* distclean-*
 
1409