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

« back to all changes in this revision

Viewing changes to .pc/no-git.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
357
379
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
358
380
$(UV_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/libuv/HEAD
359
381
endif
 
382
LIBUV_MAKE_FLAGS = -C libuv CC="$(CC)" AR="$(AR)" uname_S=$(uname_S)
360
383
$(UV_OBJ_SOURCE): libuv/Makefile
361
384
ifneq ($(OS), WINNT)
362
 
        $(MAKE) libuv.${SHLIB_EXT} -C libuv CC="$(CC)" AR="$(AR)" uname_S=$(uname_S)
363
 
endif
364
 
        $(MAKE) libuv.a -C libuv CC="$(CC)" AR="$(AR)" uname_S=$(uname_S)
 
385
        $(MAKE) libuv.${SHLIB_EXT} $(LIBUV_MAKE_FLAGS)
 
386
endif
 
387
        $(MAKE) libuv.a $(LIBUV_MAKE_FLAGS)
 
388
        touch -c $@
 
389
libuv/checked: $(LIBUV_OBJ_SOURCE)
 
390
ifeq ($(OS),$(BUILD_OS))
 
391
        $(MAKE) test $(LIBUV_MAKE_FLAGS)
 
392
endif
 
393
        echo 1 > $@
 
394
#todo: libuv tests are really slow
365
395
$(UV_OBJ_TARGET): $(UV_OBJ_SOURCE)
366
396
        mkdir -p $(BUILD)/include
367
397
        cp $(UV_OBJ_SOURCE) $(BUILD)/lib/
368
398
        cp -r libuv/include/* $(BUILD)/include
369
 
install-uv: $(UV_OBJ_TARGET)
370
399
 
371
400
clean-uv:
372
401
        -$(MAKE) -C libuv clean uname_S=$(uname_S)
373
402
        -rm -rf $(BUILD)/lib/libuv.a $(BUILD)/include/uv.h $(BUILD)/include/uv-private
374
403
distclean-uv: clean-uv
375
404
 
 
405
get-uv: libuv/Makefile
 
406
configure-uv: get-uv
 
407
compile-uv: $(UV_OBJ_SOURCE)
 
408
check-uv: libuv/checked
 
409
install-uv: $(UV_OBJ_TARGET)
 
410
 
 
411
 
376
412
## PCRE ##
377
413
 
 
414
PCRE_SRC_TARGET = pcre-$(PCRE_VER)/.libs/libpcre.$(SHLIB_EXT)
378
415
PCRE_OBJ_TARGET = $(BUILD)/lib/libpcre.$(SHLIB_EXT)
379
416
 
380
 
compile-pcre: install-pcre
381
 
install-pcre: $(PCRE_OBJ_TARGET)
382
 
 
383
417
pcre-$(PCRE_VER).tar.bz2:
384
418
        $(WGET) ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/$@
385
419
pcre-$(PCRE_VER)/configure: pcre-$(PCRE_VER).tar.bz2
386
420
        tar jxf $<
387
 
        touch $@
 
421
        touch -c $@
388
422
pcre-$(PCRE_VER)/config.status: pcre-$(PCRE_VER)/configure
389
423
        cd pcre-$(PCRE_VER) && \
390
424
        ./configure $(CONFIGURE_COMMON) --enable-utf --enable-unicode-properties --enable-jit
391
 
$(PCRE_OBJ_TARGET): pcre-$(PCRE_VER)/config.status
 
425
        touch -c $@
 
426
$(PCRE_SRC_TARGET): pcre-$(PCRE_VER)/config.status
 
427
        $(MAKE) -C pcre-$(PCRE_VER) $(LIBTOOL_CCLD)
 
428
        touch -c $@
 
429
pcre-$(PCRE_VER)/checked: $(PCRE_SRC_TARGET)
 
430
ifeq ($(OS),$(BUILD_OS))
 
431
        $(MAKE) -C pcre-$(PCRE_VER) check
 
432
endif
 
433
        echo 1 > $@
 
434
$(PCRE_OBJ_TARGET): $(PCRE_SRC_TARGET) pcre-$(PCRE_VER)/checked
392
435
        $(MAKE) -C pcre-$(PCRE_VER) $(LIBTOOL_CCLD) install
393
436
        $(INSTALL_NAME_CMD)libpcre.dylib $@
394
437
ifeq ($(OS),WINNT)
395
438
        -rm $(BUILD)/lib/libpcre.dll
396
439
        mv $(BUILD)/bin/libpcre.dll $(BUILD)/lib/libpcre.dll
397
440
endif
398
 
        touch $@
 
441
        touch -c $@
399
442
 
400
443
clean-pcre:
401
444
        -$(MAKE) -C pcre-$(PCRE_VER) clean
403
446
distclean-pcre:
404
447
        -rm -rf pcre-$(PCRE_VER).tar.bz2 pcre-$(PCRE_VER)
405
448
 
 
449
get-pcre: pcre-$(PCRE_VER).tar.bz2
 
450
configure-pcre: pcre-$(PCRE_VER)/config.status
 
451
compile-pcre: $(PCRE_SRC_TARGET)
 
452
check-pcre: pcre-$(PCRE_VER)/checked
 
453
install-pcre: $(PCRE_OBJ_TARGET)
 
454
 
 
455
 
406
456
## Grisu floating-point printing library ##
407
457
 
408
458
GRISU_OPTS = $(CXXFLAGS) -O3 -fvisibility=hidden $(fPIC)
409
459
 
410
 
compile-double-conversion: double-conversion-$(GRISU_VER)/src/libgrisu_.$(SHLIB_EXT)
411
 
install-double-conversion: $(BUILD)/lib/libgrisu.$(SHLIB_EXT)
412
 
 
413
460
double-conversion-$(GRISU_VER).tar.gz:
414
461
        $(WGET) http://double-conversion.googlecode.com/files/double-conversion-$(GRISU_VER).tar.gz
 
462
        touch -c $@
415
463
double-conversion-$(GRISU_VER)/Makefile: double-conversion-$(GRISU_VER).tar.gz
416
464
        mkdir -p double-conversion-$(GRISU_VER) && \
417
465
        tar -C double-conversion-$(GRISU_VER) --strip-components 1 -xf double-conversion-$(GRISU_VER).tar.gz
418
 
        touch $@
 
466
        touch -c $@
419
467
double-conversion-$(GRISU_VER)/src/libgrisu.$(SHLIB_EXT): double-conversion-$(GRISU_VER)/Makefile
420
468
        cd double-conversion-$(GRISU_VER) && \
421
469
        $(CXX) -c $(GRISU_OPTS) -o src/bignum.o -Isrc src/bignum.cc && \
438
486
distclean-double-conversion:
439
487
        -rm -rf double-conversion-$(GRISU_VER).tar.gz double-conversion-$(GRISU_VER)
440
488
 
441
 
## openlibm ##
 
489
get-double-conversion: double-conversion-$(GRISU_VER).tar.gz
 
490
configure-double-conversion: get-double-conversion
 
491
compile-double-conversion: double-conversion-$(GRISU_VER)/src/libgrisu.$(SHLIB_EXT)
 
492
check-double-conversion: compile-double-conversion
 
493
install-double-conversion: $(BUILD)/lib/libgrisu.$(SHLIB_EXT)
 
494
 
 
495
 
 
496
## openlibm && openlibm-extras ##
442
497
 
443
498
ifeq ($(OS), WINNT) #needs more advanced detection once 64bit build is possible
444
499
OPENLIBM_FLAGS = ARCH=i386
446
501
OPENLIBM_FLAGS = ARCH="$(ARCH)"
447
502
endif
448
503
 
 
504
OPENLIBM_FLAGS += CC="$(CC)" FC="$(FC)" AR="$(AR)" OS="$(OS)" USECLANG=$(USECLANG) USEGCC=$(USEGCC)
 
505
 
449
506
OPENLIBM_OBJ_TARGET = $(BUILD)/lib/libopenlibm.$(SHLIB_EXT)
450
507
OPENLIBM_OBJ_SOURCE = openlibm/libopenlibm.$(SHLIB_EXT)
 
508
OPENLIBMEXT_OBJ_TARGET = $(BUILD)/lib/libopenlibm-extras.$(SHLIB_EXT)
 
509
OPENLIBMEXT_OBJ_SOURCE = openlibm/libopenlibm-extras.$(SHLIB_EXT)
451
510
 
452
 
openlibm/Makefile:
 
511
openlibm/Makefile openlibm/Makefile.extras:
453
512
        (cd .. && git submodule init && git submodule update)
454
513
ifeq (exists, $(shell [ -d openlibm/.git ] && echo exists ))
455
514
$(OPENLIBM_OBJ_SOURCE): openlibm/.git/HEAD
 
515
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/.git/HEAD
456
516
endif
457
517
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
458
518
$(OPENLIBM_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/openlibm/HEAD
 
519
$(OPENLIBMEXT_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/openlibm/HEAD
459
520
endif
460
521
$(OPENLIBM_OBJ_SOURCE): openlibm/Makefile
461
 
        $(MAKE) -C openlibm $(OPENLIBM_FLAGS) CC="$(CC)" FC="$(FC)" AR="$(AR)" OS="$(OS)" USECLANG=$(USECLANG) USEGCC=$(USEGCC)
 
522
        $(MAKE) -C openlibm $(OPENLIBM_FLAGS)
 
523
        touch -c $@
 
524
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/Makefile.extras
 
525
        $(MAKE) -C openlibm -f Makefile.extras $(OPENLIBM_FLAGS)
 
526
        touch -c $@
462
527
$(OPENLIBM_OBJ_TARGET): $(OPENLIBM_OBJ_SOURCE) | $(BUILD)/lib
463
528
        cp $< $@
464
529
        $(INSTALL_NAME_CMD)libopenlibm.$(SHLIB_EXT) $@
465
 
install-openlibm: $(OPENLIBM_OBJ_TARGET) 
 
530
$(OPENLIBMEXT_OBJ_TARGET): $(OPENLIBMEXT_OBJ_SOURCE) | $(BUILD)/lib
 
531
        cp $< $@
 
532
        $(INSTALL_NAME_CMD)libopenlibm-extras.$(SHLIB_EXT) $@
466
533
 
467
534
clean-openlibm:
468
535
        -$(MAKE) -C openlibm distclean
469
536
        -rm $(OPENLIBM_OBJ_TARGET)
470
 
distclean-openlibm: clean-openlibm      
471
 
 
472
 
# openlibm-extras
473
 
 
474
 
OPENLIBMEXT_OBJ_TARGET = $(BUILD)/lib/libopenlibm-extras.$(SHLIB_EXT)
475
 
OPENLIBMEXT_OBJ_SOURCE = openlibm/libopenlibm-extras.$(SHLIB_EXT)
476
 
 
477
 
openlibm-extras/Makefile:
478
 
        (cd .. && git submodule init && git submodule update)
479
 
ifeq (exists, $(shell [ -d openlibm/.git ] && echo exists ))
480
 
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/.git/HEAD
481
 
endif
482
 
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
483
 
$(OPENLIBMEXT_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/openlibm/HEAD
484
 
endif
485
 
$(OPENLIBMEXT_OBJ_SOURCE): openlibm/Makefile.extras
486
 
        $(MAKE) -C openlibm -f Makefile.extras $(OPENLIBM_FLAGS) CC="$(CC)" FC="$(FC)" USECLANG=$(USECLANG) USEGCC=$(USEGCC)
487
 
$(OPENLIBMEXT_OBJ_TARGET): $(OPENLIBMEXT_OBJ_SOURCE) | $(BUILD)/lib
488
 
        cp $< $@
489
 
        $(INSTALL_NAME_CMD)libopenlibm-extras.$(SHLIB_EXT) $@
490
 
install-openlibm-extras: $(OPENLIBMEXT_OBJ_TARGET) $(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT)
 
537
distclean-openlibm: clean-openlibm
491
538
 
492
539
clean-openlibm-extras:
493
540
        -$(MAKE) -C openlibm -f Makefile.extras distclean
494
541
        -rm $(OPENLIBMEXT_OBJ_TARGET)
495
542
distclean-openlibm-extras: clean-openlibm-extras
496
543
 
497
 
 
498
 
# Wrapper for openlibm/Faddeeva since ccall doesn't support C99 complex:
499
 
$(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT): Faddeeva_wrapper.c $(OPENLIBMEXT_OBJ_TARGET)
500
 
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) -I openlibm/Faddeeva Faddeeva_wrapper.c -o $@ -L $(BUILD)/lib -lopenlibm-extras
501
 
        $(INSTALL_NAME_CMD)libFaddeeva_wrapper.$(SHLIB_EXT) $@
502
 
        touch $@
503
 
install-Faddeeva-wrapper: $(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT)
504
 
 
505
 
clean-Faddeeva-wrapper:
506
 
        -rm -f $(OPENLIBMEXT_OBJ_TARGET) $(BUILD)/lib/libFaddeeva_wrapper.$(SHLIB_EXT)
507
 
distclean-Faddeeva-wrapper: clean-Faddeeva-wrapper
508
 
 
509
 
## Rmath ##
510
 
 
511
 
RMATH_OBJ_TARGET = $(BUILD)/lib/libRmath.$(SHLIB_EXT)
512
 
RMATH_OBJ_SOURCE = Rmath/src/libRmath.$(SHLIB_EXT)
513
 
 
514
 
compile-rmath: $(RMATH_OBJ_SOURCE)
515
 
install-rmath: $(RMATH_OBJ_TARGET)
516
 
 
517
 
$(RMATH_OBJ_SOURCE): Rmath/src/Makefile install-random
518
 
        cd Rmath/src && \
519
 
        $(MAKE) CC="$(CC)" && \
520
 
        $(INSTALL_NAME_CMD)libRmath.$(SHLIB_EXT) libRmath.$(SHLIB_EXT)
521
 
$(RMATH_OBJ_TARGET): $(RMATH_OBJ_SOURCE)
522
 
        cp $< $@
523
 
 
524
 
clean-rmath:
525
 
        -cd Rmath/src && $(MAKE) clean
526
 
        -rm -f $(RMATH_OBJ_SOURCE) $(RMATH_OBJ_TARGET)
527
 
distclean-rmath: clean-rmath
 
544
get-openlibm: openlibm/Makefile
 
545
configure-openlibm: get-openlibm
 
546
compile-openlibm: $(OPENLIBM_OBJ_SOURCE)
 
547
check-openlibm: compile-openlibm
 
548
install-openlibm: $(OPENLIBM_OBJ_TARGET) 
 
549
 
 
550
get-openlibm-extras: openlibm/Makefile.extras
 
551
configure-openlibm-extras: get-openlibm-extras
 
552
compile-openlibm-extras: $(OPENLIBMEXT_OBJ_SOURCE)
 
553
check-openlibm-extras: compile-openlibm-extras
 
554
install-openlibm-extras: $(OPENLIBMEXT_OBJ_TARGET)
528
555
 
529
556
## LIBRANDOM ##
530
557
 
538
565
LIBRANDOM_CFLAGS += -msse2 -DHAVE_SSE2
539
566
endif
540
567
 
541
 
compile-random: $(LIBRANDOM_OBJ_SOURCE)
542
 
install-random: $(LIBRANDOM_OBJ_TARGET)
543
 
 
544
568
random/dsfmt-$(DSFMT_VER).tar.gz:
545
569
        $(WGET_DASH_O) $@ http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-$(DSFMT_VER).tar.gz 
546
 
        touch $@
547
 
random/jl_random.c: random/dsfmt-$(DSFMT_VER).tar.gz
 
570
        touch -c $@
 
571
random/dsfmt-$(DSFMT_VER)/config.status: random/dsfmt-$(DSFMT_VER).tar.gz
548
572
        cd random && \
549
573
        mkdir -p dsfmt-$(DSFMT_VER) && \
550
574
        tar -C dsfmt-$(DSFMT_VER) --strip-components 1 -xf dsfmt-$(DSFMT_VER).tar.gz && \
551
575
        cd dsfmt-$(DSFMT_VER) && patch < ../dSFMT.h.patch && patch < ../dSFMT.c.patch
552
 
        touch $@
553
 
$(LIBRANDOM_OBJ_SOURCE): random/jl_random.c random/randmtzig.c
 
576
        echo 1 > $@
 
577
$(LIBRANDOM_OBJ_SOURCE): random/jl_random.c random/randmtzig.c random/dsfmt-$(DSFMT_VER)/config.status
554
578
        cd random && \
555
579
        $(CC) $(CPPFLAGS) $(LIBRANDOM_CFLAGS) $(LDFLAGS) jl_random.c -o librandom.$(SHLIB_EXT) && \
556
580
        $(INSTALL_NAME_CMD)librandom.$(SHLIB_EXT) librandom.$(SHLIB_EXT)
557
 
 
558
581
$(LIBRANDOM_OBJ_TARGET): $(LIBRANDOM_OBJ_SOURCE)
559
582
        cp $< $@
560
583
 
563
586
distclean-random: clean-random
564
587
        -cd random && rm -rf *.tar.gz dsfmt-$(DSFMT_VER)
565
588
 
 
589
get-random: random/dsfmt-$(DSFMT_VER).tar.gz
 
590
configure-random: random/dsfmt-$(DSFMT_VER)/config.status
 
591
compile-random: $(LIBRANDOM_OBJ_SOURCE)
 
592
check-random: compile-random
 
593
install-random: $(LIBRANDOM_OBJ_TARGET)
 
594
 
 
595
 
 
596
## Rmath ##
 
597
 
 
598
RMATH_OBJ_TARGET = $(BUILD)/lib/libRmath.$(SHLIB_EXT)
 
599
RMATH_OBJ_SOURCE = Rmath/src/libRmath.$(SHLIB_EXT)
 
600
 
 
601
RMATH_FLAGS += CC="$(CC)" USECLANG=$(USECLANG) USEGCC=$(USEGCC) \
 
602
                           OS="$(OS)" ARCH="$(ARCH)" \
 
603
                           USE_LIBRANDOM=1 LIBRANDOM_PATH="$(BUILD)/lib"
 
604
 
 
605
Rmath/Make.inc:
 
606
        (cd .. && git submodule init && git submodule update)
 
607
ifeq (exists, $(shell [ -d Rmath/.git ] && echo exists ))
 
608
$(RMATH_OBJ_SOURCE): Rmath/.git/HEAD
 
609
endif
 
610
ifeq (exists, $(shell [ -d $(JULIAHOME)/modules ] && echo exists ))
 
611
$(RMATH_OBJ_SOURCE): $(JULIAHOME)/.git/modules/deps/Rmath/HEAD
 
612
endif
 
613
$(RMATH_OBJ_SOURCE): Rmath/Make.inc $(LIBRANDOM_OBJ_TARGET)
 
614
        $(MAKE) -C Rmath/src $(RMATH_FLAGS)
 
615
        touch -c $@
 
616
$(RMATH_OBJ_TARGET): $(RMATH_OBJ_SOURCE) | $(BUILD)/lib
 
617
        cp $< $@
 
618
        $(INSTALL_NAME_CMD)libRmath.$(SHLIB_EXT) $@
 
619
 
 
620
clean-Rmath:
 
621
        -$(MAKE) -C Rmath/src clean
 
622
        -rm $(RMATH_OBJ_TARGET)
 
623
distclean-Rmath: clean-Rmath
 
624
 
 
625
get-Rmath: Rmath/Make.inc
 
626
configure-Rmath: get-Rmath
 
627
compile-Rmath: $(RMATH_OBJ_SOURCE)
 
628
check-Rmath: compile-Rmath
 
629
install-Rmath: $(RMATH_OBJ_TARGET) 
 
630
 
 
631
 
566
632
## OpenBLAS ##
567
633
 
568
 
ifeq ($(USE_SYSTEM_BLAS), 0)
569
634
OPENBLAS_OBJ_SOURCE = openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT)
570
 
else
571
 
OPENBLAS_OBJ_SOURCE = 
572
 
endif
 
635
OPENBLAS_OBJ_TARGET = $(BUILD)/lib/libopenblas.$(SHLIB_EXT)
573
636
 
574
637
OPENBLAS_BUILD_OPTS = CC="$(CC)" FC="$(FC)" RANLIB="$(RANLIB)" FFLAGS="$(FFLAGS) $(JFFLAGS)" USE_THREAD=$(OPENBLAS_USE_THREAD) TARGET=$(OPENBLAS_TARGET_ARCH)
575
638
ifeq ($(OPENBLAS_DYNAMIC_ARCH), 1)
589
652
endif
590
653
endif
591
654
 
592
 
compile-openblas: $(OPENBLAS_OBJ_SOURCE)
593
 
install-openblas: $(BUILD)/lib/libopenblas.$(SHLIB_EXT)
594
 
 
595
655
openblas-$(OPENBLAS_VER).tar.gz:
596
656
        $(WGET_DASH_O) $@ https://github.com/xianyi/OpenBLAS/tarball/$(OPENBLAS_VER) 
597
 
openblas-$(OPENBLAS_VER)/Makefile: openblas-$(OPENBLAS_VER).tar.gz
 
657
openblas-$(OPENBLAS_VER)/config.status: openblas-$(OPENBLAS_VER).tar.gz
598
658
        mkdir -p openblas-$(OPENBLAS_VER) && \
599
659
        tar -C openblas-$(OPENBLAS_VER) --strip-components 1 -xf $<
600
660
        perl -i -ple 's/^\s*(EXTRALIB\s*\+=\s*-lSystemStubs)\s*$$/# $$1/g' $@.system
601
 
        touch $@
602
 
$(OPENBLAS_OBJ_SOURCE): openblas-$(OPENBLAS_VER)/Makefile
 
661
        echo 1 > $@
 
662
$(OPENBLAS_OBJ_SOURCE): openblas-$(OPENBLAS_VER)/config.status
603
663
        $(MAKE) -C openblas-$(OPENBLAS_VER) $(OPENBLAS_BUILD_OPTS)
604
 
$(BUILD)/lib/libopenblas.$(SHLIB_EXT): $(OPENBLAS_OBJ_SOURCE) | $(BUILD)/lib
 
664
        touch -c $@
 
665
$(OPENBLAS_OBJ_TARGET): $(OPENBLAS_OBJ_SOURCE) | $(BUILD)/lib
605
666
        cp -f openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT) $(BUILD)/lib
606
667
        $(INSTALL_NAME_CMD)libopenblas.$(SHLIB_EXT) $(BUILD)/lib/libopenblas.$(SHLIB_EXT)
607
668
 
610
671
distclean-openblas:
611
672
        -rm -rf openblas-$(OPENBLAS_VER).tar.gz openblas-$(OPENBLAS_VER)
612
673
 
 
674
get-openblas: openblas-$(OPENBLAS_VER).tar.gz
 
675
configure-openblas: get-openblas
 
676
compile-openblas: $(OPENBLAS_OBJ_SOURCE)
 
677
check-openblas: compile-openblas
 
678
install-openblas: $(OPENBLAS_OBJ_TARGET)
 
679
 
 
680
 
 
681
## ATLAS (currently 3.10.0) ##
 
682
 
 
683
# no threading, with full lapack, shared library
 
684
# should always be compiled with (a real) gcc, it's
 
685
# configure script will search for the best match
 
686
# (gcc 4.7, gcc, clang,ICC/microsoft/others)
 
687
ATLAS_OBJ_SOURCE = atlas/build/lib/libsatlas.$(SHLIB_EXT)
 
688
ATLAS_FLAGS = --shared --prefix=$(BUILD) --cc=gcc -t 0 \
 
689
        --with-netlib-lapack-tarfile=$(JULIAHOME)/deps/lapack-$(LAPACK_VER).tgz
 
690
ifeq ($(OS), WINNT)
 
691
ATLAS_FLAGS += -b 32 
 
692
endif
 
693
 
 
694
#force backwards compatibility (pick any 1)
 
695
#ATLAS_FLAGS += -V 192 -A 13  # requires SSE2 (P4 & later)
 
696
#ATLAS_FLAGS += -V 128 -A 12 # requires SSE1 (P3 & later)
 
697
#ATLAS_FLAGS += -V -1 -A 11 # any x87 (PentiumPro or Athlon & later)
 
698
#ATLAS_FLAGS += -A 25  # requires Corei132 (Corei232 doesn't have definition yet)
 
699
 
 
700
atlas/configure:
 
701
        git clone git://github.com/vtjnash/atlas-3.10.0.git atlas
 
702
ifeq "$(MAKECMDGOALS)" "build-atlas"
 
703
# only allow building atlas as the sole target (without -jN)
 
704
# since it internally handles parallelism, for tuning timing accuracy
 
705
atlas/build/Make.top: atlas/configure lapack-$(LAPACK_VER).tgz
 
706
        cd atlas && \
 
707
        (test -d build || mkdir build) && cd build && \
 
708
        ../configure $(ATLAS_FLAGS)
 
709
        touch -c $@
 
710
$(ATLAS_OBJ_SOURCE): atlas/build/Make.top
 
711
        $(MAKE) -C atlas/build -j1
 
712
        touch -c $@
 
713
else
 
714
$(ATLAS_OBJ_SOURCE):
 
715
        $(error cannot build atlas in parallel with anything else)
 
716
endif
 
717
$(BUILD)/lib/libsatlas.$(SHLIB_EXT): $(ATLAS_OBJ_SOURCE)
 
718
        cp -f atlas/build/lib/libsatlas.$(SHLIB_EXT) $(BUILD)/lib
 
719
        $(INSTALL_NAME_CMD)libsatlas.$(SHLIB_EXT) $(BUILD)/lib/libsatlas.$(SHLIB_EXT)
 
720
 
 
721
clean-atlas:
 
722
        rm -rf atlas/build
 
723
distclean-atlas: clean-atlas
 
724
        rm -rf atlas
 
725
 
 
726
get-atlas: atlas/configure
 
727
configure-atlas: atlas/build/Make.top
 
728
compile-atlas: $(ATLAS_OBJ_SOURCE)
 
729
check-atlas: compile-atlas
 
730
install-atlas: $(BUILD)/lib/libsatlas.$(SHLIB_EXT)
 
731
 
 
732
 
613
733
## LAPACK ##
614
734
 
615
735
ifeq ($(USE_SYSTEM_LAPACK), 0)
620
740
LAPACK_OBJ_SOURCE =
621
741
endif
622
742
 
623
 
compile-lapack: $(LAPACK_OBJ_SOURCE)
624
 
install-lapack: $(LAPACK_OBJ_TARGET)
625
 
 
626
743
lapack-$(LAPACK_VER).tgz:
627
744
        $(WGET) http://www.netlib.org/lapack/$@
628
745
lapack-$(LAPACK_VER)/Makefile: lapack-$(LAPACK_VER).tgz
629
746
        tar zxf $<
630
 
        touch $@
631
 
lapack-$(LAPACK_VER)/INSTALL/dlamch.o: lapack-$(LAPACK_VER)/Makefile $(OPENBLAS_OBJ_SOURCE)
 
747
        touch -c $@
 
748
ifeq ($(USE_SYSTEM_BLAS), 0)
 
749
lapack-$(LAPACK_VER)/INSTALL/dlamch.o: $(OPENBLAS_OBJ_TARGET)
 
750
endif
 
751
lapack-$(LAPACK_VER)/INSTALL/dlamch.o: lapack-$(LAPACK_VER)/Makefile
632
752
        cd lapack-$(LAPACK_VER) && \
633
753
        cp INSTALL/make.inc.gfortran ./make.inc && \
634
754
        $(MAKE) lapacklib NOOPT="-O0 $(fPIC)" OPTS="$(FFLAGS) $(JFFLAGS)" FORTRAN="$(FC)" LOADER="$(FC)"
635
 
        touch $@
636
 
$(LAPACK_OBJ_SOURCE): lapack-$(LAPACK_VER)/INSTALL/dlamch.o $(OPENBLAS_OBJ_SOURCE)
 
755
        touch -c $@
 
756
ifeq ($(USE_SYSTEM_BLAS), 0)
 
757
$(LAPACK_OBJ_SOURCE): $(OPENBLAS_OBJ_TARGET)
 
758
endif
 
759
$(LAPACK_OBJ_SOURCE): lapack-$(LAPACK_VER)/INSTALL/dlamch.o
637
760
        cd lapack-$(LAPACK_VER) && \
638
761
        $(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)
639
762
$(LAPACK_OBJ_TARGET): $(LAPACK_OBJ_SOURCE)
645
768
distclean-lapack:
646
769
        -rm -rf lapack-$(LAPACK_VER).tgz lapack-$(LAPACK_VER)
647
770
 
 
771
get-lapack: lapack-$(LAPACK_VER).tgz
 
772
configure-lapack: get-lapack
 
773
compile-lapack: $(LAPACK_OBJ_SOURCE)
 
774
check-lapack: compile-lapack
 
775
install-lapack: $(LAPACK_OBJ_TARGET)
 
776
 
 
777
 
648
778
## ARPACK ##
649
779
 
650
780
ifeq ($(USE_LIB64), 1)
652
782
endif
653
783
 
654
784
ARPACK_OBJ_TARGET = $(BUILD)/lib/libarpack.$(SHLIB_EXT)
 
785
ifeq ($(OS),WINNT)
655
786
ARPACK_OBJ_SOURCE = arpack-ng_$(ARPACK_VER)/libarpack.$(SHLIB_EXT)
656
 
 
657
 
compile-arpack: $(ARPACK_OBJ_SOURCE)
658
 
install-arpack: $(ARPACK_OBJ_TARGET)
 
787
else
 
788
ARPACK_OBJ_SOURCE = arpack-ng_$(ARPACK_VER)/.libs/libarpack.$(SHLIB_EXT)
 
789
endif
 
790
ARPACK_ARGS = F77="$(FC)" MPIF77="$(FC)"
 
791
ARPACK_OPTS = $(FFLAGS) $(JFFLAGS)
659
792
 
660
793
arpack-ng_$(ARPACK_VER).tar.gz:
661
794
        $(WGET_DASH_O) $@ http://forge.scilab.org/index.php/p/arpack-ng/downloads/get/arpack-ng_$(ARPACK_VER).tar.gz
662
 
        touch $@
 
795
        touch -c $@
663
796
arpack-ng_$(ARPACK_VER)/configure: arpack-ng_$(ARPACK_VER).tar.gz
664
797
        tar zxf $< 
665
 
        touch $@
666
 
$(ARPACK_OBJ_SOURCE): arpack-ng_$(ARPACK_VER)/configure $(OPENBLAS_OBJ_SOURCE)
 
798
        touch -c $@
 
799
ifeq ($(USE_SYSTEM_BLAS), 0)
 
800
arpack-ng_$(ARPACK_VER)/config.status: $(OPENBLAS_OBJ_TARGET)
 
801
endif
 
802
arpack-ng_$(ARPACK_VER)/config.status: arpack-ng_$(ARPACK_VER)/configure
 
803
ifeq ($(OS),WINNT)
 
804
        cd arpack-ng_$(ARPACK_VER) && \
 
805
        rm -f UTIL/second_NONE.f
 
806
        echo 1 > $@
 
807
else
667
808
        cd arpack-ng_$(ARPACK_VER) && \
668
809
        ./configure $(CONFIGURE_COMMON) --with-blas="$(LIBBLAS)" --with-lapack="$(LIBLAPACK)" --disable-mpi --enable-shared FFLAGS="$(ARPACK_FFLAGS)"
669
 
        touch $@
670
 
$(ARPACK_OBJ_TARGET): $(ARPACK_OBJ_SOURCE) | $(BUILD)/lib
671
 
        cd arpack-ng_$(ARPACK_VER) && \
672
 
        $(MAKE) install F77="$(FC)" MPIF77="$(FC)"
 
810
endif
 
811
        touch -c $@
 
812
$(ARPACK_OBJ_SOURCE): arpack-ng_$(ARPACK_VER)/config.status
 
813
ifeq ($(OS),WINNT)
 
814
        cd arpack-ng_$(ARPACK_VER) && \
 
815
        $(FC) -shared $(ARPACK_OPTS) SRC/*.f UTIL/*.f $(LIBLAPACK) $(LIBBLAS) -o libarpack.$(SHLIB_EXT)
 
816
else
 
817
        cd arpack-ng_$(ARPACK_VER) && \
 
818
        $(MAKE) $(ARPACK_ARGS)
 
819
endif
 
820
        touch -c $@
 
821
arpack-ng_$(ARPACK_VER)/checked: $(ARPACK_OBJ_SOURCE)
 
822
ifneq ($(OS),WINNT)
 
823
        cd arpack-ng_$(ARPACK_VER) && \
 
824
        $(MAKE) check $(ARPACK_ARGS)
 
825
endif
 
826
        echo 1 > $@
 
827
$(ARPACK_OBJ_TARGET): $(ARPACK_OBJ_SOURCE) arpack-ng_$(ARPACK_VER)/checked | $(BUILD)/lib
 
828
ifeq ($(OS),WINNT)
 
829
        cd arpack-ng_$(ARPACK_VER) && \
 
830
        cp libarpack.$(SHLIB_EXT) $(BUILD)/lib/libarpack.$(SHLIB_EXT)
 
831
else
 
832
        cd arpack-ng_$(ARPACK_VER) && \
 
833
        $(MAKE) install $(ARPACK_ARGS)
673
834
        $(INSTALL_NAME_CMD)libarpack.$(SHLIB_EXT) $(BUILD)/lib/libarpack.$(SHLIB_EXT)
674
835
ifeq ($(OS), Linux)
675
836
        for filename in $(BUILD)/lib/libarpack.so* ; do \
676
837
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
677
838
        done
678
839
endif
679
 
        touch $@
 
840
endif
 
841
        touch -c $@
680
842
 
681
843
clean-arpack:
682
844
        -$(MAKE) -C arpack-ng_$(ARPACK_VER) clean
684
846
distclean-arpack:
685
847
        -rm -rf arpack-ng_$(ARPACK_VER).tar.gz arpack-ng_$(ARPACK_VER)
686
848
 
 
849
get-arpack: arpack-ng_$(ARPACK_VER).tar.gz
 
850
configure-arpack: arpack-ng_$(ARPACK_VER)/config.status
 
851
compile-arpack: $(ARPACK_OBJ_SOURCE)
 
852
check-arpack: arpack-ng_$(ARPACK_VER)/checked
 
853
install-arpack: $(ARPACK_OBJ_TARGET)
 
854
 
 
855
 
687
856
## FFTW ##
688
 
 
689
 
FFTW_SINGLE_OBJ_TARGET = $(BUILD)/lib/libfftw3f.3.$(SHLIB_EXT)
690
 
FFTW_DOUBLE_OBJ_TARGET = $(BUILD)/lib/libfftw3.3.$(SHLIB_EXT)
691
 
 
692
 
compile-fftw: compile-fftw-single compile-fftw-double
693
 
compile-fftw-single: install-fftw-single
694
 
compile-fftw-double: install-fftw-double
695
 
 
696
 
install-fftw: install-fftw-single install-fftw-double
697
 
install-fftw-single: $(FFTW_SINGLE_OBJ_TARGET)
698
 
install-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET)
 
857
ifeq ($(OS),WINNT)
 
858
FFTW_SINGLE_SRC_TARGET = fftw-$(FFTW_VER)-single/.libs/libfftw3f-3.$(SHLIB_EXT)
 
859
FFTW_DOUBLE_SRC_TARGET = fftw-$(FFTW_VER)-double/.libs/libfftw3-3.$(SHLIB_EXT)
 
860
else
 
861
FFTW_SINGLE_SRC_TARGET = fftw-$(FFTW_VER)-single/.libs/libfftw3f.$(SHLIB_EXT)
 
862
FFTW_DOUBLE_SRC_TARGET = fftw-$(FFTW_VER)-double/.libs/libfftw3.$(SHLIB_EXT)
 
863
endif
 
864
FFTW_SINGLE_OBJ_TARGET = $(BUILD)/lib/libfftw3f.$(SHLIB_EXT)
 
865
FFTW_DOUBLE_OBJ_TARGET = $(BUILD)/lib/libfftw3.$(SHLIB_EXT)
699
866
 
700
867
FFTW_CONFIG = --enable-shared --disable-fortran --disable-mpi --enable-fma --enable-threads
701
868
ifneq ($(ARCH), ppc64)
711
878
fftw-$(FFTW_VER)-single/configure: fftw-$(FFTW_VER).tar.gz
712
879
        mkdir -p fftw-$(FFTW_VER)-single && \
713
880
        tar -C fftw-$(FFTW_VER)-single --strip-components 1 -xf $<
714
 
        touch $@
 
881
ifeq ($(OS),WINNT)
 
882
        patch fftw-$(FFTW_VER)-single/configure < fftw-config-nopthreads.patch
 
883
        patch fftw-$(FFTW_VER)-single/kernel/ifftw.h < ifftw.h.patch
 
884
endif
 
885
        touch -c $@
715
886
fftw-$(FFTW_VER)-single/config.status: fftw-$(FFTW_VER)-single/configure
716
887
        cd fftw-$(FFTW_VER)-single && \
717
888
        (./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG) --enable-avx --enable-single || \
718
889
          ./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG) --enable-single) && \
719
890
        $(MAKE) clean
720
 
        touch $@
721
 
$(FFTW_SINGLE_OBJ_TARGET): fftw-$(FFTW_VER)-single/config.status
 
891
        touch -c $@
 
892
$(FFTW_SINGLE_SRC_TARGET): fftw-$(FFTW_VER)-single/config.status
 
893
        $(MAKE) -C fftw-$(FFTW_VER)-single
 
894
fftw-$(FFTW_VER)-single/checked: $(FFTW_SINGLE_SRC_TARGET)
 
895
ifeq ($(OS),$(BUILD_OS))
 
896
        $(MAKE) -C fftw-$(FFTW_VER)-single check
 
897
endif
 
898
        echo 1 > $@
 
899
$(FFTW_SINGLE_OBJ_TARGET): $(FFTW_SINGLE_SRC_TARGET) fftw-$(FFTW_VER)-single/checked
722
900
        $(MAKE) -C fftw-$(FFTW_VER)-single install
 
901
        touch -c $@
723
902
ifeq ($(OS), Darwin)
724
903
        $(INSTALL_NAME_CMD)libfftw3f.dylib $(BUILD)/lib/libfftw3f.dylib
725
904
        $(INSTALL_NAME_CMD)libfftw3f_threads.$(SHLIB_EXT) $(BUILD)/lib/libfftw3f_threads.$(SHLIB_EXT)
732
911
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
733
912
        done
734
913
endif
735
 
        touch $@
 
914
        touch -c $@
736
915
 
737
916
fftw-$(FFTW_VER)-double/configure: fftw-$(FFTW_VER).tar.gz
738
917
        mkdir -p fftw-$(FFTW_VER)-double && \
739
918
        tar -C fftw-$(FFTW_VER)-double --strip-components 1 -xf $<
740
 
        touch $@
 
919
ifeq ($(OS),WINNT)
 
920
        patch fftw-$(FFTW_VER)-double/configure < fftw-config-nopthreads.patch
 
921
        patch fftw-$(FFTW_VER)-double/kernel/ifftw.h < ifftw.h.patch
 
922
endif
 
923
        touch -c $@
741
924
fftw-$(FFTW_VER)-double/config.status: fftw-$(FFTW_VER)-double/configure
742
925
        cd fftw-$(FFTW_VER)-double && \
743
926
        (./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG) --enable-avx || \
744
927
          ./configure $(CONFIGURE_COMMON) $(FFTW_CONFIG)) && \
745
928
        $(MAKE) clean
746
 
        touch $@
747
 
$(FFTW_DOUBLE_OBJ_TARGET): fftw-$(FFTW_VER)-double/config.status
 
929
        touch -c $@
 
930
$(FFTW_DOUBLE_SRC_TARGET): fftw-$(FFTW_VER)-double/config.status
 
931
        $(MAKE) -C fftw-$(FFTW_VER)-double
 
932
        touch -c $@
 
933
fftw-$(FFTW_VER)-double/checked: $(FFTW_DOUBLE_SRC_TARGET)
 
934
ifeq ($(OS),$(BUILD_OS))
 
935
        $(MAKE) -C fftw-$(FFTW_VER)-double check
 
936
endif
 
937
        echo 1 > $@
 
938
$(FFTW_DOUBLE_OBJ_TARGET): $(FFTW_DOUBLE_SRC_TARGET) fftw-$(FFTW_VER)-double/checked
748
939
        $(MAKE) -C fftw-$(FFTW_VER)-double install
749
940
ifeq ($(OS), Darwin)
750
941
        $(INSTALL_NAME_CMD)libfftw3.$(SHLIB_EXT) $(BUILD)/lib/libfftw3.$(SHLIB_EXT)
758
949
                $(BUILD)/bin/patchelf --set-rpath '$$ORIGIN' $$filename ;\
759
950
        done
760
951
endif
761
 
        touch $@
 
952
        touch -c $@
762
953
 
763
954
clean-fftw: clean-fftw-single clean-fftw-double
764
955
clean-fftw-single:
770
961
distclean-fftw:
771
962
        -rm -rf fftw-$(FFTW_VER).tar.gz fftw-$(FFTW_VER)-{single,double}
772
963
 
 
964
get-fftw: get-fftw-single get-fftw-double
 
965
configure-fftw: configure-fftw-single configure-fftw-double
 
966
compile-fftw: compile-fftw-single compile-fftw-double
 
967
check-fftw: check-fftw-single check-fftw-double
 
968
install-fftw: install-fftw-single install-fftw-double
 
969
 
 
970
get-fftw-single: fftw-$(FFTW_VER).tar.gz
 
971
configure-fftw-single: fftw-$(FFTW_VER)-single/config.status
 
972
compile-fftw-single: $(FFTW_SINGLE_OBJ_TARGET)
 
973
check-fftw-single: fftw-$(FFTW_VER)-single/checked
 
974
install-fftw-single: $(FFTW_SINGLE_OBJ_TARGET)
 
975
 
 
976
get-fftw-double: fftw-$(FFTW_VER).tar.gz
 
977
configure-fftw-double: fftw-$(FFTW_VER)-double/config.status
 
978
compile-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET)
 
979
check-fftw-double: fftw-$(FFTW_VER)-double/checked
 
980
install-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET)
 
981
 
773
982
 
774
983
## SUITESPARSE ##
775
984
 
776
 
ifeq ($(USE_SYSTEM_SUITESPARSE), 0)
777
985
SUITESPARSE_OBJ_SOURCE = SuiteSparse-$(SUITESPARSE_VER)/UMFPACK/Lib/libumfpack.a
778
986
SUITESPARSE_OBJ_TARGET = $(BUILD)/lib/libumfpack.$(SHLIB_EXT)
779
 
endif
780
987
 
781
988
ifeq ($(USE_LIB64), 1)
782
989
UMFPACK_CONFIG = -DLONGBLAS='long long' 
786
993
SUITE_SPARSE_LIB = -lm
787
994
ifneq ($(OS), Darwin)
788
995
ifneq ($(OS), WINNT)
789
 
  SUITE_SPARSE_LIB += -lrt
790
 
endif
791
 
endif
792
 
 
793
 
compile-suitesparse: $(SUITESPARSE_OBJ_SOURCE)
794
 
install-suitesparse: $(SUITESPARSE_OBJ_TARGET) $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
 
996
SUITE_SPARSE_LIB += -lrt
 
997
endif
 
998
endif
 
999
ifneq ($(OS), WINNT)
 
1000
SUITE_SPARSE_LIB += -Wl,-rpath,'$(BUILD)/lib'
 
1001
endif
795
1002
 
796
1003
SuiteSparse-$(SUITESPARSE_VER).tar.gz:
797
1004
        $(WGET) http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-$(SUITESPARSE_VER).tar.gz
798
1005
SuiteSparse-$(SUITESPARSE_VER)/Makefile: SuiteSparse-$(SUITESPARSE_VER).tar.gz
799
1006
        mkdir -p SuiteSparse-$(SUITESPARSE_VER)
800
1007
        tar -C SuiteSparse-$(SUITESPARSE_VER) --strip-components 1 -zxf $<
801
 
        touch $@
802
 
$(SUITESPARSE_OBJ_SOURCE): $(OPENBLAS_OBJ_SOURCE) SuiteSparse-$(SUITESPARSE_VER)/Makefile
 
1008
        touch -c $@
 
1009
ifeq ($(USE_SYSTEM_BLAS), 0)
 
1010
$(SUITESPARSE_OBJ_SOURCE): $(OPENBLAS_OBJ_TARGET)
 
1011
endif
 
1012
#todo: rpath is missing on mac for tests
 
1013
$(SUITESPARSE_OBJ_SOURCE): SuiteSparse-$(SUITESPARSE_VER)/Makefile
803
1014
        cd SuiteSparse-$(SUITESPARSE_VER) && \
804
1015
        $(MAKE) CC="$(CC)" CXX="$(CXX)" F77="$(FC)" AR="$(AR)" RANLIB="$(RANLIB)" BLAS="$(LIBBLAS)" LAPACK="$(LIBLAPACK)" \
805
1016
          INSTALL_LIB="$(BUILD)/lib" INSTALL_INCLUDE="$(BUILD)/include" LIB="$(SUITE_SPARSE_LIB)" \
806
1017
          UMFPACK_CONFIG="$(UMFPACK_CONFIG)" CHOLMOD_CONFIG="$(CHOLMOD_CONFIG)"
807
 
        touch $@
808
 
 
809
 
ifeq ($(USE_SYSTEM_SUITESPARSE), 0)
 
1018
        touch -c $@
810
1019
$(SUITESPARSE_OBJ_TARGET): $(SUITESPARSE_OBJ_SOURCE)
811
1020
        mkdir -p SuiteSparse-$(SUITESPARSE_VER)/lib && \
812
1021
        cd SuiteSparse-$(SUITESPARSE_VER)/lib && \
822
1031
        $(INSTALL_NAME_CMD)libumfpack.$(SHLIB_EXT) $(BUILD)/lib/libumfpack.$(SHLIB_EXT) && \
823
1032
        $(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) && \
824
1033
        $(INSTALL_NAME_CMD)libspqr.$(SHLIB_EXT) $(BUILD)/lib/libspqr.$(SHLIB_EXT)
825
 
endif
826
1034
 
827
1035
clean-suitesparse:
828
1036
        -$(MAKE) -C SuiteSparse-$(SUITESPARSE_VER) clean
830
1038
distclean-suitesparse: clean-suitesparse
831
1039
        -rm -rf SuiteSparse-$(SUITESPARSE_VER).tar.gz SuiteSparse-$(SUITESPARSE_VER)
832
1040
 
 
1041
get-suitesparse: SuiteSparse-$(SUITESPARSE_VER).tar.gz
 
1042
configure-suitesparse: get-suitesparse
 
1043
compile-suitesparse: $(SUITESPARSE_OBJ_SOURCE)
 
1044
check-suitesparse: compile-suitesparse
 
1045
install-suitesparse: $(SUITESPARSE_OBJ_TARGET) install-suitesparse-wrapper
 
1046
 
833
1047
# SUITESPARSE WRAPPER
834
1048
 
835
1049
ifeq ($(USE_SYSTEM_SUITESPARSE), 1)
838
1052
else
839
1053
SUITESPARSE_INC = -I SuiteSparse-$(SUITESPARSE_VER)/CHOLMOD/Include -I SuiteSparse-$(SUITESPARSE_VER)/SuiteSparse_config -I SuiteSparse-$(SUITESPARSE_VER)/SPQR/Include
840
1054
SUITESPARSE_LIB = -L$(BUILD)/lib -lcholmod -lumfpack -lspqr $(RPATH_ORIGIN)
 
1055
$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT):  $(SUITESPARSE_OBJ_TARGET)
841
1056
endif
842
1057
 
843
 
$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT): SuiteSparse_wrapper.c $(SUITESPARSE_OBJ_TARGET)
 
1058
$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT): SuiteSparse_wrapper.c
844
1059
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(SUITESPARSE_INC) SuiteSparse_wrapper.c -o $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT) $(SUITESPARSE_LIB)
845
1060
        $(INSTALL_NAME_CMD)libsuitesparse_wrapper.$(SHLIB_EXT) $@
846
 
        touch $@
847
 
install-suitesparse-wrapper: $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
 
1061
        touch -c $@
848
1062
 
849
1063
clean-suitesparse-wrapper:
850
1064
        -rm -f $(SUITESPARSE_OBJ_TARGET) $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
851
1065
distclean-suitesparse-wrapper: clean-suitesparse-wrapper
852
1066
 
853
 
## CLP ##
854
 
 
855
 
CLP_OBJ_TARGET = $(BUILD)/lib/libClp.$(SHLIB_EXT)
856
 
 
857
 
compile-clp: install-clp
858
 
install-clp: $(CLP_OBJ_TARGET)
859
 
 
860
 
clp-$(CLP_VER).tar.gz:
861
 
        $(WGET_DASH_O) $@ http://www.coin-or.org/download/source/Clp/Clp-1.14.5.tgz
862
 
clp-$(CLP_VER)/configure: clp-$(CLP_VER).tar.gz
863
 
        mkdir -p clp-$(CLP_VER)
864
 
        tar -C clp-$(CLP_VER) --strip-components 1 -zxf $<
865
 
        touch $@
866
 
clp-$(CLP_VER)/config.status: clp-$(CLP_VER)/configure
867
 
        cd clp-$(CLP_VER) && \
868
 
        ./configure $(CONFIGURE_COMMON) MPIF77="$(FC)" MPICXX="$(CXX)" MPICC="$(CC)"
869
 
$(CLP_OBJ_TARGET): clp-$(CLP_VER)/config.status
870
 
        $(MAKE) -C clp-$(CLP_VER) install
871
 
        touch $@
872
 
 
873
 
clean-clp:
874
 
        -$(MAKE) -C clp-$(CLP_VER) clean
875
 
        -rm -f $(CLP_OBJ_TARGET)
876
 
distclean-clp:
877
 
        -rm -rf clp-$(CLP_VER).tar.gz clp-$(CLP_VER)
 
1067
get-suitesparse-wrapper:
 
1068
configure-suitesparse-wrapper:
 
1069
compile-suitesparse-wrapper:
 
1070
check-suitesparse-wrapper:
 
1071
install-suitesparse-wrapper: $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT)
 
1072
 
878
1073
 
879
1074
## UNWIND ##
880
1075
 
881
 
ifeq ($(USE_SYSTEM_LIBUNWIND), 0)
882
1076
LIBUNWIND_TARGET_OBJ = $(BUILD)/lib/libunwind.a
883
1077
LIBUNWIND_TARGET_SOURCE = libunwind-$(UNWIND_VER)/src/.libs/libunwind.a
884
 
else
885
 
LIBUNWIND_TARGET_OBJ = 
886
 
LIBUNWIND_TARGET_SOURCE = 
887
 
endif
888
 
 
889
1078
LIBUNWIND_CFLAGS = $(CFLAGS) -U_FORTIFY_SOURCE $(fPIC)
890
 
ifeq ($(ARCH), ppc64)
891
 
LIBUNWIND_CFLAGS += -m64
892
 
endif
893
 
 
894
 
compile-unwind: $(LIBUNWIND_TARGET_SOURCE)
895
 
install-unwind: $(LIBUNWIND_TARGET_OBJ)
896
1079
 
897
1080
libunwind-$(UNWIND_VER).tar.gz:
898
1081
        $(WGET) http://savannah.spinellicreations.com/libunwind/libunwind-$(UNWIND_VER).tar.gz
899
 
libunwind-$(UNWIND_VER)/Makefile: libunwind-$(UNWIND_VER).tar.gz
 
1082
libunwind-$(UNWIND_VER)/configure: libunwind-$(UNWIND_VER).tar.gz
900
1083
        tar xfz $<
901
 
        cd libunwind-$(UNWIND_VER) && ./configure $(CONFIGURE_COMMON) CFLAGS="$(LIBUNWIND_CFLAGS)"
902
 
 
903
 
$(LIBUNWIND_TARGET_SOURCE): libunwind-$(UNWIND_VER)/Makefile
904
 
        cd libunwind-$(UNWIND_VER) && $(MAKE)
905
 
 
 
1084
        touch -c $@
 
1085
libunwind-$(UNWIND_VER)/config.status: libunwind-$(UNWIND_VER)/configure
 
1086
        cd libunwind-$(UNWIND_VER) && \
 
1087
        ./configure $(CONFIGURE_COMMON) CFLAGS="$(LIBUNWIND_CFLAGS)" --disable-shared --disable-minidebuginfo
 
1088
        touch -c $@
 
1089
$(LIBUNWIND_TARGET_SOURCE): libunwind-$(UNWIND_VER)/config.status
 
1090
        $(MAKE) -C libunwind-$(UNWIND_VER)
 
1091
        touch -c $@
 
1092
libunwind-$(UNWIND_VER)/checked: $(LIBUNWIND_TARGET_SOURCE)
 
1093
ifeq ($(OS),$(BUILD_OS))
 
1094
        $(MAKE) -C libunwind-$(UNWIND_VER) check
 
1095
endif
 
1096
        echo 1 > $@
 
1097
#todo: libunwind tests known to fail
906
1098
$(LIBUNWIND_TARGET_OBJ): $(LIBUNWIND_TARGET_SOURCE)
907
 
        cd libunwind-$(UNWIND_VER) && $(MAKE) install
 
1099
        $(MAKE) install -C libunwind-$(UNWIND_VER)
 
1100
ifeq ($(ARCH), ppc64)
 
1101
        # workaround for configure script bug
 
1102
        mv $(BUILD)/lib64/libunwind*.a $(BUILD)/lib/
 
1103
endif
908
1104
 
909
1105
clean-unwind:
910
1106
        -$(MAKE) -C libunwind-$(UNWIND_VER) clean
911
1107
        -rm -f $(LIBUNWIND_TARGET_OBJ) $(LIBUNWIND_TARGET_SOURCE)
912
 
 
913
1108
distclean-unwind:
914
1109
        -rm -rf libunwind-$(UNWIND_VER).tar.gz libunwind-$(UNWIND_VER)
915
1110
 
916
 
## GNU LIGHTTPD ##
917
 
 
918
 
ifeq ($(USE_SYSTEM_LIGHTTPD), 0)
919
 
LIGHTTPD_OBJ_TARGET = $(BUILD)/sbin/lighttpd
 
1111
get-unwind: libunwind-$(UNWIND_VER).tar.gz
 
1112
configure-unwind: libunwind-$(UNWIND_VER)/config.status
 
1113
compile-unwind: $(LIBUNWIND_TARGET_SOURCE)
 
1114
check-unwind: libunwind-$(UNWIND_VER)/checked
 
1115
install-unwind: $(LIBUNWIND_TARGET_OBJ)
 
1116
 
 
1117
 
 
1118
## NGINX ##
 
1119
 
 
1120
ifneq ($(OS), WINNT)
 
1121
NGINX_OBJ_TARGET = $(BUILD)/sbin/nginx
 
1122
NGINX_SRC_TARGET = nginx/objs/nginx
 
1123
NGINX_FLAGS = --with-ld-opt="-L'$(BUILD)/lib' -lpcre -Wl,-rpath,'$(BUILD)/lib' $(RPATH)"
 
1124
 
 
1125
nginx/.gitignore:
 
1126
        rm -f $@
 
1127
        for x in .gitignore Makefile config.status objs; do echo /$$x >> $@; done
 
1128
nginx/auto/configure: | compile-pcre
 
1129
        (cd .. && git submodule update --init)
 
1130
        touch -c $@
 
1131
nginx/config.status: nginx/auto/configure nginx/.gitignore
 
1132
        cd nginx && \
 
1133
        ./auto/configure --without-http_gzip_module --without-http_rewrite_module $(NGINX_FLAGS) --with-debug --prefix=".."
 
1134
        echo 1 > $@
 
1135
$(NGINX_SRC_TARGET): nginx/config.status nginx/.gitignore
 
1136
        $(MAKE) -C nginx
 
1137
        touch -c $@
 
1138
$(NGINX_OBJ_TARGET): $(NGINX_SRC_TARGET) nginx/.gitignore
 
1139
        $(MAKE) -C nginx install DESTDIR="$(abspath $(BUILD)/bin)/"
 
1140
        touch -c $@
 
1141
 
 
1142
clean-nginx:
 
1143
        -$(MAKE) -C nginx clean
 
1144
distclean-nginx:
 
1145
        -rm -rf nginx
 
1146
 
 
1147
get-nginx: nginx/auto/configure
 
1148
configure-nginx: nginx/config.status
 
1149
compile-nginx: $(NGINX_SRC_TARGET)
 
1150
check-nginx: $(NGINX_SRC_TARGET)
 
1151
install-nginx: $(NGINX_OBJ_TARGET)
920
1152
else
921
 
LIGHTTPD_OBJ_TARGET = 
 
1153
NGINX_VER=1.2.6
 
1154
NGINX_SRC_TARGET = nginx-$(NGINX_VER).zip
 
1155
NGINX_OBJ_TARGET = nginx-$(NGINX_VER)/nginx.exe
 
1156
$(NGINX_SRC_TARGET):
 
1157
        $(WGET) http://nginx.org/download/$@
 
1158
$(NGINX_OBJ_TARGET): $(NGINX_SRC_TARGET)
 
1159
        unzip $<
 
1160
        touch -c $@
 
1161
$(BUILD)/sbin/nginx.exe: $(NGINX_OBJ_TARGET)
 
1162
        mkdir -p $(BUILD)/sbin
 
1163
        cp -a nginx-$(NGINX_VER)/* $(BUILD)/sbin
 
1164
        touch -c $@
 
1165
get-nginx: $(NGINX_SRC_TARGET)
 
1166
configure-nginx: get-nginx
 
1167
compile-nginx: $(NGINX_OBJ_TARGET)
 
1168
check-nginx: compile-nginx
 
1169
install-nginx: $(BUILD)/sbin/nginx.exe
922
1170
endif
923
1171
 
924
 
compile-lighttpd: install-lighttpd
925
 
install-lighttpd: $(LIGHTTPD_OBJ_TARGET) lighttpd.conf
926
 
        mkdir -p $(BUILD)/etc
927
 
        cp -f lighttpd.conf $(BUILD)/etc/lighttpd.conf
928
 
 
929
 
lighttpd-$(LIGHTTPD_VER).tar.gz:
930
 
        $(WGET) http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-$(LIGHTTPD_VER).tar.gz
931
 
lighttpd-$(LIGHTTPD_VER)/configure: lighttpd-$(LIGHTTPD_VER).tar.gz
932
 
        tar zxf $<
933
 
        touch $@
934
 
lighttpd-$(LIGHTTPD_VER)/config.status: lighttpd-$(LIGHTTPD_VER)/configure
935
 
        mkdir -p $(BUILD)/lib/lighttpd && \
936
 
        cd lighttpd-$(LIGHTTPD_VER) && \
937
 
        ./configure $(CONFIGURE_COMMON) --libdir=$(BUILD)/lib/lighttpd --without-pcre --without-zlib --without-bzip2
938
 
$(LIGHTTPD_OBJ_TARGET): lighttpd-$(LIGHTTPD_VER)/config.status
939
 
        $(MAKE) -C lighttpd-$(LIGHTTPD_VER) install
940
 
        $(INSTALL_NAME_CMD)lighttpd/liblightcomp.$(SHLIB_EXT) $(BUILD)/lib/lighttpd/liblightcomp.$(SHLIB_EXT)
941
 
        $(INSTALL_NAME_CHANGE_CMD) $(BUILD)/lib/lighttpd/liblightcomp.dylib @executable_path/../lib/lighttpd/liblightcomp.dylib  $(BUILD)/sbin/lighttpd
942
 
        touch $@
943
 
 
944
 
clean-lighttpd:
945
 
        -$(MAKE) -C lighttpd-$(LIGHTTPD_VER) clean
946
 
        -rm -f $(LIGHTTPD_OBJ_TARGET)
947
 
distclean-lighttpd:
948
 
        -rm -rf lighttpd-$(LIGHTTPD_VER).tar.gz lighttpd-$(LIGHTTPD_VER)
949
1172
 
950
1173
## GMP ##
951
1174
 
952
 
ifeq ($(USE_SYSTEM_GMP), 0)
 
1175
GMP_SRC_TARGET = gmp-$(GMP_VER)/.libs/libgmp.$(SHLIB_EXT)
953
1176
GMP_OBJ_TARGET = $(BUILD)/lib/libgmp.$(SHLIB_EXT)
954
 
else
955
 
GMP_OBJ_TARGET = 
956
 
endif
957
 
 
958
 
compile-gmp: install-gmp
959
 
install-gmp: $(GMP_OBJ_TARGET)
960
1177
 
961
1178
gmp-$(GMP_VER).tar.bz2:
962
1179
        $(WGET) ftp://ftp.gmplib.org/pub/gmp-$(GMP_VER)/$@
963
1180
gmp-$(GMP_VER)/configure: gmp-$(GMP_VER).tar.bz2
964
1181
        tar jxf $<
965
 
        touch $@
 
1182
        touch -c $@
966
1183
gmp-$(GMP_VER)/config.status: gmp-$(GMP_VER)/configure
967
1184
        cd gmp-$(GMP_VER) && \
968
 
        ./configure --prefix=$(abspath $(BUILD)) CC="$(CC)" CXX="$(CXX)" --enable-shared --disable-static
969
 
$(GMP_OBJ_TARGET): gmp-$(GMP_VER)/config.status
 
1185
        ./configure $(CONFIGURE_COMMON) F77= --enable-shared --disable-static
 
1186
        touch -c $@
 
1187
$(GMP_SRC_TARGET): gmp-$(GMP_VER)/config.status
970
1188
        $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD)
 
1189
gmp-$(GMP_VER)/checked: $(GMP_SRC_TARGET)
971
1190
ifeq ($(OS),$(BUILD_OS))
972
1191
        $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD) check
973
1192
endif
 
1193
        echo 1 > $@
 
1194
$(GMP_OBJ_TARGET): $(GMP_SRC_TARGET) gmp-$(GMP_VER)/checked
974
1195
        $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD) install
975
1196
        $(INSTALL_NAME_CMD)libgmp.dylib $@
976
 
        touch $@
 
1197
        touch -c $@
977
1198
 
978
1199
clean-gmp:
979
1200
        -$(MAKE) -C gmp-$(GMP_VER) clean
981
1202
distclean-gmp:
982
1203
        -rm -rf gmp-$(GMP_VER).tar.bz2 gmp-$(GMP_VER)
983
1204
 
984
 
## GMP Wrapper
 
1205
get-gmp: gmp-$(GMP_VER).tar.bz2
 
1206
configure-gmp: gmp-$(GMP_VER)/config.status
 
1207
compile-gmp: $(GMP_SRC_TARGET)
 
1208
check-gmp: gmp-$(GMP_VER)/checked
 
1209
install-gmp: $(GMP_OBJ_TARGET) install-gmp-wrapper
 
1210
 
 
1211
## GMP Wrapper ##
985
1212
 
986
1213
ifeq ($(USE_SYSTEM_GMP), 1)
987
1214
GMPW_INC =
989
1216
else
990
1217
GMPW_INC = -I $(BUILD)/include
991
1218
GMPW_LIB = -L$(BUILD)/lib/ -lgmp
 
1219
$(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT): $(GMP_OBJ_TARGET)
992
1220
endif
993
1221
 
994
 
$(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT): gmp_wrapper.c $(GMP_OBJ_TARGET) | $(BUILD)/lib
 
1222
$(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT): gmp_wrapper.c | $(BUILD)/lib
995
1223
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(GMPW_INC) gmp_wrapper.c -o $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT) $(RPATH_ORIGIN) $(GMPW_LIB)
996
1224
        $(INSTALL_NAME_CMD)libgmp_wrapper.$(SHLIB_EXT) $@
997
 
        touch $@
998
 
install-gmp-wrapper: $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT)
 
1225
        touch -c $@
999
1226
 
1000
1227
clean-gmp-wrapper:
1001
1228
        -rm -f $(GMP_OBJ_TARGET) $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT)
1002
1229
distclean-gmp-wrapper: clean-gmp-wrapper
1003
1230
 
 
1231
get-gmp-wrapper:
 
1232
configure-gmp-wrapper:
 
1233
compile-gmp-wrapper:
 
1234
check-gmp-wrapper:
 
1235
install-gmp-wrapper: $(BUILD)/lib/libgmp_wrapper.$(SHLIB_EXT)
 
1236
 
 
1237
 
1004
1238
## GLPK ##
1005
1239
 
1006
 
ifeq ($(USE_SYSTEM_GLPK), 1)
1007
 
GLPK_OBJ_TARGET =
1008
 
else
 
1240
GLPK_SRC_TARGET = glpk-$(GLPK_VER)/src/.libs/libglpk.$(SHLIB_EXT)
1009
1241
GLPK_OBJ_TARGET = $(BUILD)/lib/libglpk.$(SHLIB_EXT)
1010
 
endif
1011
 
 
1012
 
compile-glpk: install-glpk
1013
 
install-glpk: $(GLPK_OBJ_TARGET) $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
1014
1242
 
1015
1243
glpk-$(GLPK_VER).tar.gz:
1016
1244
        $(WGET) http://ftp.gnu.org/gnu/glpk/$@
1017
 
 
1018
1245
glpk-$(GLPK_VER)/configure: glpk-$(GLPK_VER).tar.gz
1019
1246
        tar zxf $<
1020
 
        touch $@
 
1247
        touch -c $@
1021
1248
glpk-$(GLPK_VER)/config.status: glpk-$(GLPK_VER)/configure
1022
1249
        cd glpk-$(GLPK_VER) && \
1023
1250
        ./configure $(CONFIGURE_COMMON)
1024
 
$(GLPK_OBJ_TARGET): glpk-$(GLPK_VER)/config.status
 
1251
        touch -c $@
 
1252
$(GLPK_SRC_TARGET): glpk-$(GLPK_VER)/config.status
 
1253
        $(MAKE) -C glpk-$(GLPK_VER) $(LIBTOOL_CCLD)
 
1254
        touch -c $@
 
1255
glpk-$(GLPK_VER)/checked: $(GLPK_SRC_TARGET)
 
1256
ifeq ($(OS),$(BUILD_OS))
 
1257
        $(MAKE) -C glpk-$(GLPK_VER) $(LIBTOOL_CCLD) check
 
1258
endif
 
1259
        echo 1 > $@
 
1260
$(GLPK_OBJ_TARGET): $(GLPK_SRC_TARGET) glpk-$(GLPK_VER)/checked
1025
1261
        $(MAKE) -C glpk-$(GLPK_VER) $(LIBTOOL_CCLD) install
1026
1262
        $(INSTALL_NAME_CMD)libglpk.dylib $@
1027
 
        touch $@
 
1263
        $(AUTOTOOLS_PATH_CORRECT)
 
1264
        touch -c $@
1028
1265
 
1029
1266
clean-glpk:
1030
1267
        -$(MAKE) -C glpk-$(GLPK_VER) uninstall || true
1031
1268
        -$(MAKE) -C glpk-$(GLPK_VER) clean
1032
1269
distclean-glpk: clean-glpk
1033
 
        -rm -rf glpk-$(GLPK_VER).tar.bz2 glpk-$(GLPK_VER)
 
1270
        -rm -rf glpk-$(GLPK_VER).tar.gz glpk-$(GLPK_VER)
1034
1271
 
 
1272
get-glpk: glpk-$(GLPK_VER).tar.gz
 
1273
configure-glpk: glpk-$(GLPK_VER)/config.status
 
1274
compile-glpk: $(GLPK_SRC_TARGET)
 
1275
check-glpk: glpk-$(GLPK_VER)/checked
 
1276
install-glpk: $(GLPK_OBJ_TARGET) $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
1035
1277
 
1036
1278
## GLPK Wrapper
1037
1279
 
1041
1283
else
1042
1284
GLPKW_INC = -I $(BUILD)/include
1043
1285
GLPKW_LIB = -L$(BUILD)/lib -lglpk
 
1286
$(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT): $(GLPK_OBJ_TARGET)
1044
1287
endif
1045
1288
 
1046
 
 
1047
 
$(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT): glpk_wrapper.c $(GLPK_OBJ_TARGET)
 
1289
$(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT): glpk_wrapper.c
1048
1290
        $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(GLPKW_INC) glpk_wrapper.c $(GLPKW_LIB) -o $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT) $(RPATH_ORIGIN)
1049
1291
        $(INSTALL_NAME_CMD)libglpk_wrapper.$(SHLIB_EXT) $@
1050
 
        touch $@
1051
 
install-glpk-wrapper: $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT) glpk_wrapper.c
 
1292
        touch -c $@
1052
1293
 
1053
1294
clean-glpk-wrapper:
1054
1295
        -rm -f $(GLPK_OBJ_TARGET) $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
1055
1296
distclean-glpk-wrapper: clean-glpk-wrapper
1056
1297
 
 
1298
get-glpk-wrapper:
 
1299
configure-glpk-wrapper:
 
1300
compile-glpk-wrapper:
 
1301
check-glpk-wrapper:
 
1302
install-glpk-wrapper: $(BUILD)/lib/libglpk_wrapper.$(SHLIB_EXT)
 
1303
 
 
1304
 
1057
1305
## ZLIB ##
1058
1306
 
1059
 
ifeq ($(USE_SYSTEM_ZLIB), 1)
1060
 
ZLIB_OBJ_TARGET =
 
1307
ifeq ($(OS),WINNT)
 
1308
ZLIB_SRC_TARGET = zlib-$(ZLIB_VER)/zlib1.$(SHLIB_EXT)
1061
1309
else
 
1310
ZLIB_SRC_TARGET = zlib-$(ZLIB_VER)/libz.$(SHLIB_EXT)
 
1311
endif
1062
1312
ZLIB_OBJ_TARGET = $(BUILD)/lib/libz.$(SHLIB_EXT)
1063
1313
ZLIB_CONFIGFLAGS = CFLAGS="-O3 $(CFLAGS) -D_FILE_OFFSET_BITS=64"
1064
1314
ifneq ($(OS),$(BUILD_OS))
1066
1316
else
1067
1317
ZLIB_CONFIGFLAGS += CC="$(CC)"
1068
1318
endif
1069
 
endif
1070
 
 
1071
 
compile-zlib: install-zlib
1072
 
install-zlib: $(ZLIB_OBJ_TARGET)
1073
1319
 
1074
1320
zlib-$(ZLIB_VER).tar.gz:
1075
1321
        $(WGET) http://zlib.net/$@
1076
1322
zlib-$(ZLIB_VER)/configure: zlib-$(ZLIB_VER).tar.gz
1077
1323
        tar zxf $<
1078
 
        touch $@
 
1324
        touch -c $@
1079
1325
zlib-$(ZLIB_VER)/config.status: zlib-$(ZLIB_VER)/configure
1080
1326
ifeq ($(OS), WINNT)
1081
1327
        cd zlib-$(ZLIB_VER) && \
1084
1330
        cd zlib-$(ZLIB_VER) && \
1085
1331
        $(ZLIB_CONFIGFLAGS) ./configure --prefix=$(abspath $(BUILD)) #not an autoconf script
1086
1332
endif
1087
 
        touch $@
1088
 
$(ZLIB_OBJ_TARGET): zlib-$(ZLIB_VER)/config.status
 
1333
        echo 1 > $@
 
1334
$(ZLIB_SRC_TARGET): zlib-$(ZLIB_VER)/config.status
1089
1335
        $(MAKE) -C zlib-$(ZLIB_VER) PREFIX=$(CROSS_COMPILE)
 
1336
        touch -c $@
 
1337
zlib-$(ZLIB_VER)/checked: $(ZLIB_SRC_TARGET)
 
1338
ifneq ($(OS), WINNT)
 
1339
        $(MAKE) -C zlib-$(ZLIB_VER) check PREFIX=$(CROSS_COMPILE)
 
1340
endif
 
1341
        echo 1 > $@
 
1342
$(ZLIB_OBJ_TARGET): $(ZLIB_SRC_TARGET) zlib-$(ZLIB_VER)/checked
1090
1343
ifeq ($(OS), WINNT)
1091
1344
        cp zlib-$(ZLIB_VER)/zlib1.dll $@
1092
1345
else
1093
 
        $(MAKE) -C zlib-$(ZLIB_VER) check PREFIX=$(CROSS_COMPILE)
1094
1346
        $(MAKE) -C zlib-$(ZLIB_VER) install PREFIX=$(CROSS_COMPILE)
1095
1347
endif
1096
1348
        $(INSTALL_NAME_CMD)libz.dylib $@
1097
 
        touch $@
 
1349
        touch -c $@
1098
1350
 
1099
1351
clean-zlib:
1100
1352
        -$(MAKE) -j$(PARALLEL_BUILD_JOBS) -C zlib-$(ZLIB_VER) clean
1102
1354
distclean-zlib:
1103
1355
        -rm -rf zlib-$(ZLIB_VER).tar.gz zlib-$(ZLIB_VER)
1104
1356
 
 
1357
get-zlib: zlib-$(ZLIB_VER).tar.gz
 
1358
configure-zlib: zlib-$(ZLIB_VER)/config.status
 
1359
compile-zlib: $(ZLIB_SRC_TARGET)
 
1360
check-zlib: zlib-$(ZLIB_VER)/checked
 
1361
install-zlib: $(ZLIB_OBJ_TARGET)
 
1362
 
 
1363
 
1105
1364
## Tk wrapper ##
1106
1365
 
1107
1366
TKW_INC = -I $(BUILD)/include -I $(JULIAHOME)/src -I $(JULIAHOME)/src/support
1118
1377
else
1119
1378
  TKW_INC += -I/usr/include/tcl
1120
1379
endif
1121
 
TKW_LIB += -ltcl8.5 -ltk8.5 -L$(BUILD)/lib/ -ljulia-release
 
1380
TKW_LIB += -ltcl -ltk -L$(BUILD)/lib/
1122
1381
 
1123
1382
$(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT): tk_wrapper.c
1124
1383
        $(CC) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(TKW_INC) tk_wrapper.c $(TKW_LIB) -o $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
1125
1384
        $(INSTALL_NAME_CMD)libtk_wrapper.$(SHLIB_EXT) $@
1126
 
        touch $@
1127
 
install-tk-wrapper: $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT) tk_wrapper.c
 
1385
        touch -c $@
1128
1386
 
1129
1387
clean-tk-wrapper:
1130
1388
        -rm -f $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
1131
1389
distclean-tk-wrapper: clean-tk-wrapper
1132
1390
 
1133
 
## patchelf
1134
 
 
 
1391
get-tk-wrapper: 
 
1392
configure-tk-wrapper: 
 
1393
compile-tk-wrapper: 
 
1394
check-tk-wrapper:
 
1395
install-tk-wrapper: $(BUILD)/lib/libtk_wrapper.$(SHLIB_EXT)
 
1396
 
 
1397
 
 
1398
## patchelf ##
 
1399
 
 
1400
PATCHELF_SOURCE = patchelf-$(PATCHELF_VER)/src/patchelf
1135
1401
PATCHELF_TARGET = $(BUILD)/bin/patchelf
1136
1402
 
1137
1403
compile-patchelf: install-patchelf
1141
1407
        $(WGET) http://hydra.nixos.org/build/1524660/download/2/$@
1142
1408
patchelf-$(PATCHELF_VER)/configure: patchelf-$(PATCHELF_VER).tar.bz2
1143
1409
        tar jxf $<
1144
 
        touch $@
 
1410
        touch -c $@
1145
1411
patchelf-$(PATCHELF_VER)/config.status: patchelf-$(PATCHELF_VER)/configure
1146
1412
        cd patchelf-$(PATCHELF_VER) && \
1147
1413
        ./configure $(CONFIGURE_COMMON)
1148
 
$(PATCHELF_TARGET): patchelf-$(PATCHELF_VER)/config.status
 
1414
        touch -c $@
 
1415
$(PATCHELF_SOURCE): patchelf-$(PATCHELF_VER)/config.status
 
1416
        $(MAKE) -C patchelf-$(PATCHELF_VER)
 
1417
        touch -c $@
 
1418
patchelf-$(PATCHELF_VER)/checked: $(PATCHELF_SOURCE)
 
1419
ifeq ($(OS),$(BUILD_OS))
 
1420
        # disabled due to bug in v0.6
 
1421
        #$(MAKE) -C patchelf-$(PATCHELF_VER) check
 
1422
endif
 
1423
        echo 1 > $@
 
1424
$(PATCHELF_TARGET): $(PATCHELF_SOURCE) patchelf-$(PATCHELF_VER)/checked
1149
1425
        $(MAKE) -C patchelf-$(PATCHELF_VER) install
1150
 
        touch $@
 
1426
        touch -c $@
1151
1427
 
1152
1428
clean-patchelf:
1153
1429
        -$(MAKE) -C patchelf-$(PATCHELF_VER) clean
1155
1431
distclean-patchelf:
1156
1432
        -rm -rf patchelf-$(PATCHELF_VER).tar.bz2 patchelf-$(PATCHELF_VER)
1157
1433
 
 
1434
get-patchelf: patchelf-$(PATCHELF_VER).tar.bz2
 
1435
configure-patchelf: patchelf-$(PATCHELF_VER)/config.status
 
1436
compile-patchelf: $(PATCHELF_SOURCE)
 
1437
check-patchelf: patchelf-$(PATCHELF_VER)/checked
 
1438
install-patchelf: $(PATCHELF_TARGET)
 
1439
 
 
1440
 
1158
1441
## phony targets ##
1159
1442
 
1160
1443
.PHONY: \
1161
1444
        default compile install cleanall distclean \
1162
 
        compile-* install-* clean-* distclean-*
 
1445
        get-* configure-* compile-* check-* install-* \
 
1446
        clean-* distclean-*
 
1447