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

« back to all changes in this revision

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