annotate Makefile @ 429:2fa394d22e1d

bugfix and simplification of "make download"
author Volker Grabsch <vog@notjusthosting.com>
date Wed, 02 Sep 2009 10:08:31 +0200
parents 951e2a6d1e69
children 5d2c64680021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
123
9fedbab70063 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 122
diff changeset
1 # MinGW cross compiling environment
371
e8f5952f877a mention doc/index.html in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 364
diff changeset
2 # see doc/index.html or doc/README for further information
414
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
3 #
417
c82e9294b774 replace the contact email address with hints to the project mailing list
Volker Grabsch <vog@notjusthosting.com>
parents: 416
diff changeset
4 # Copyright (C) 2009 Volker Grabsch
414
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
5 #
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
6 # Permission is hereby granted, free of charge, to any person obtaining
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
7 # a copy of this software and associated documentation files (the
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
8 # "Software"), to deal in the Software without restriction, including
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
9 # without limitation the rights to use, copy, modify, merge, publish,
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
10 # distribute, sublicense, and/or sell copies of the Software, and to
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
11 # permit persons to whom the Software is furnished to do so, subject
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
12 # to the following conditions:
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
13 #
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
14 # The above copyright notice and this permission notice shall be
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
15 # included in all copies or substantial portions of the Software.
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
16 #
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
18 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
19 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
20 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
21 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
22 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
d2a6561bcb6d add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents: 412
diff changeset
23 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
123
9fedbab70063 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 122
diff changeset
24
206
c82301af7b7f disable parallel builds by default and document in the README how to enable parallelization
Volker Grabsch <vog@notjusthosting.com>
parents: 197
diff changeset
25 JOBS := 1
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
26 TARGET := i386-mingw32msvc
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
27 SOURCEFORGE_MIRROR := kent.dl.sourceforge.net
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
28
412
87801b601eb0 increased version number to 2.8
Volker Grabsch <vog@notjusthosting.com>
parents: 408
diff changeset
29 VERSION := 2.8
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
30 PREFIX := $(PWD)/usr
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
31 PKG_DIR := $(PWD)/pkg
416
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
32 DIST_DIR := $(PWD)/dist
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
33 TMP_DIR = $(PWD)/tmp-$(1)
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
34 MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
35 TOP_DIR := $(patsubst %/,%,$(dir $(MAKEFILE)))
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
36 PATH := $(PREFIX)/bin:$(PATH)
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
37 SHELL := bash
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
38 SED := $(shell gsed --help >/dev/null 2>&1 && echo g)sed
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
39 INSTALL := $(shell ginstall --help >/dev/null 2>&1 && echo g)install
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
40
287
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
41 # unset any environment variables which might cause trouble
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
42 AR =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
43 CC =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
44 CFLAGS =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
45 CPP =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
46 CPPFLAGS =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
47 CROSS =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
48 CXX =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
49 CXXCPP =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
50 CXXFLAGS =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
51 EXEEXT =
378
a2b5d6e4d117 bugfix: unset the EXTRA_* environment variables which causes trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 371
diff changeset
52 EXTRA_CFLAGS =
a2b5d6e4d117 bugfix: unset the EXTRA_* environment variables which causes trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 371
diff changeset
53 EXTRA_LDFLAGS =
287
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
54 LD =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
55 LDFLAGS =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
56 LIBS =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
57 NM =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
58 PKG_CONFIG =
364
b8cd5199077e bugfix: unset the PKG_CONFIG_PATH environment variable which causes trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 359
diff changeset
59 PKG_CONFIG_PATH =
287
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
60 RANLIB =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
61 STRIP =
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
62
264
01aa6a0e1c9e new macro SHORT_PKG_VERSION which assists in creating download URLs
Volker Grabsch <vog@notjusthosting.com>
parents: 259
diff changeset
63 SHORT_PKG_VERSION = \
01aa6a0e1c9e new macro SHORT_PKG_VERSION which assists in creating download URLs
Volker Grabsch <vog@notjusthosting.com>
parents: 259
diff changeset
64 $(word 1,$(subst ., ,$($(1)_VERSION))).$(word 2,$(subst ., ,$($(1)_VERSION)))
01aa6a0e1c9e new macro SHORT_PKG_VERSION which assists in creating download URLs
Volker Grabsch <vog@notjusthosting.com>
parents: 259
diff changeset
65
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
66 PKGS := $(sort $(patsubst $(TOP_DIR)/src/%.mk,%,$(wildcard $(TOP_DIR)/src/*.mk)))
213
faeb91c793f3 find the src/*.mk and doc/ files even when called from another directory, e.g. via "make -f /path/to/mingw_cross_env/Makefile"
Volker Grabsch <vog@notjusthosting.com>
parents: 212
diff changeset
67 include $(TOP_DIR)/src/*.mk
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
68
120
4edf6a519683 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 119
diff changeset
69 UNPACK_ARCHIVE = \
144
aafad5b5de5f bugfix: support the .tgz archive extension in addition to .tar.gz
Volker Grabsch <vog@notjusthosting.com>
parents: 135
diff changeset
70 $(if $(filter %.tgz, $(1)),tar xvzf '$(1)', \
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
71 $(if $(filter %.tar.gz, $(1)),tar xvzf '$(1)', \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
72 $(if $(filter %.tar.bz2,$(1)),tar xvjf '$(1)', \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
73 $(if $(filter %.zip, $(1)),unzip '$(1)', \
144
aafad5b5de5f bugfix: support the .tgz archive extension in addition to .tar.gz
Volker Grabsch <vog@notjusthosting.com>
parents: 135
diff changeset
74 $(error Unknown archive format: $(1))))))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
75
215
898425550c29 new macro UNPACK_PKG_ARCHIVE for build rules (This is useful in connection with download-only packages)
Volker Grabsch <vog@notjusthosting.com>
parents: 214
diff changeset
76 UNPACK_PKG_ARCHIVE = \
898425550c29 new macro UNPACK_PKG_ARCHIVE for build rules (This is useful in connection with download-only packages)
Volker Grabsch <vog@notjusthosting.com>
parents: 214
diff changeset
77 $(call UNPACK_ARCHIVE,$(PKG_DIR)/$($(1)_FILE))
898425550c29 new macro UNPACK_PKG_ARCHIVE for build rules (This is useful in connection with download-only packages)
Volker Grabsch <vog@notjusthosting.com>
parents: 214
diff changeset
78
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
79 PKG_CHECKSUM = \
311
ce0d27e7993f use "openssl sha1 ..." instead of "sha1sum -b ..."
Volker Grabsch <vog@notjusthosting.com>
parents: 310
diff changeset
80 openssl sha1 '$(PKG_DIR)/$($(1)_FILE)' | $(SED) -n 's,^.*\([0-9a-f]\{40\}\)$$,\1,p'
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
81
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
82 CHECK_PKG_ARCHIVE = \
311
ce0d27e7993f use "openssl sha1 ..." instead of "sha1sum -b ..."
Volker Grabsch <vog@notjusthosting.com>
parents: 310
diff changeset
83 [ '$($(1)_CHECKSUM)' == "`$$(call PKG_CHECKSUM,$(1))`" ]
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
84
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
85 DOWNLOAD_PKG_ARCHIVE = \
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
86 $(if $($(1)_URL_2), \
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
87 wget -T 30 -t 3 -c -O '$(PKG_DIR)/$($(1)_FILE)' '$($(1)_URL)' \
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
88 || wget -c -O '$(PKG_DIR)/$($(1)_FILE)' '$($(1)_URL_2)', \
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
89 wget -c -O '$(PKG_DIR)/$($(1)_FILE)' '$($(1)_URL)')
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
90
408
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
91 SOURCEFORGE_FILES = \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
92 wget -q -O- '$(1)' | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
93 grep 'title="/' | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
94 $(SED) -n 's,.*title="\(/[^:]*\).*released on \([^ "]* [^ "]* [^ "]*\)",\2 \1,p' | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
95 while read d1 d2 d3 url; do echo "`date -d "$$d1 $$d2 $$d3" +%Y-%m-%d`" "$$url"; done | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
96 sort | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
97 $(SED) 's,^[^ ]* ,,'
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
98
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
99 .PHONY: all
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
100 all: $(PKGS)
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
101
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
102 .PHONY: download
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
103 download: $(addprefix download-,$(PKGS))
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
104
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
105 define PKG_RULE
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
106 .PHONY: download-$(1)
429
2fa394d22e1d bugfix and simplification of "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 428
diff changeset
107 download-$(1): $(addprefix download-,$($(1)_DEPS))
134
d24e76675835 bugfix: use -d instead of -z to check for a directory
Volker Grabsch <vog@notjusthosting.com>
parents: 131
diff changeset
108 [ -d '$(PKG_DIR)' ] || mkdir -p '$(PKG_DIR)'
310
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
109 if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
110 $(call DOWNLOAD_PKG_ARCHIVE,$(1)); \
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
111 $(call CHECK_PKG_ARCHIVE,$(1)) || { echo 'Wrong checksum!'; exit 1; }; \
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
112 fi
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
113
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
114 .PHONY: $(1)
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
115 $(1): $(PREFIX)/installed-$(1)
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
116 $(PREFIX)/installed-$(1): $(TOP_DIR)/src/$(1).mk \
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
117 $(wildcard $(TOP_DIR)/src/$(1)-*.patch) \
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
118 $(addprefix $(PREFIX)/installed-,$($(1)_DEPS))
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
119 [ -d '$(PREFIX)' ] || mkdir -p '$(PREFIX)'
396
3bfb1390ce96 bugfix: decouple the download-* targets from the build targets
Volker Grabsch <vog@notjusthosting.com>
parents: 394
diff changeset
120 [ -d '$(PKG_DIR)' ] || mkdir -p '$(PKG_DIR)'
3bfb1390ce96 bugfix: decouple the download-* targets from the build targets
Volker Grabsch <vog@notjusthosting.com>
parents: 394
diff changeset
121 if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
3bfb1390ce96 bugfix: decouple the download-* targets from the build targets
Volker Grabsch <vog@notjusthosting.com>
parents: 394
diff changeset
122 $(call DOWNLOAD_PKG_ARCHIVE,$(1)); \
3bfb1390ce96 bugfix: decouple the download-* targets from the build targets
Volker Grabsch <vog@notjusthosting.com>
parents: 394
diff changeset
123 $(call CHECK_PKG_ARCHIVE,$(1)) || { echo 'Wrong checksum!'; exit 1; }; \
3bfb1390ce96 bugfix: decouple the download-* targets from the build targets
Volker Grabsch <vog@notjusthosting.com>
parents: 394
diff changeset
124 fi
428
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
125 (time $(MAKE) -f '$(MAKEFILE)' 'build-only-$(1)') &> '$(PREFIX)/log-$(1)'
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
126
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
127 .PHONY: build-only-$(1)
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
128 build-only-$(1):
214
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
129 $(if $(value $(1)_BUILD),
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
130 rm -rf '$(2)'
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
131 mkdir -p '$(2)'
215
898425550c29 new macro UNPACK_PKG_ARCHIVE for build rules (This is useful in connection with download-only packages)
Volker Grabsch <vog@notjusthosting.com>
parents: 214
diff changeset
132 cd '$(2)' && $(call UNPACK_PKG_ARCHIVE,$(1))
214
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
133 cd '$(2)/$($(1)_SUBDIR)'
391
8349a6576cac automatically apply patches "src/PKG-*.patch" which are provided with a "src/PKG.mk" file
Volker Grabsch <vog@notjusthosting.com>
parents: 378
diff changeset
134 $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(1)-*.patch)),
8349a6576cac automatically apply patches "src/PKG-*.patch" which are provided with a "src/PKG.mk" file
Volker Grabsch <vog@notjusthosting.com>
parents: 378
diff changeset
135 (cd '$(2)/$($(1)_SUBDIR)' && patch -p1) < $(PKG_PATCH))
214
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
136 $$(call $(1)_BUILD,$(2)/$($(1)_SUBDIR))
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
137 rm -rfv '$(2)'
e1c566cd7a5e allow packages without a BUILD section (This will be used for download-only packages such as gcc-g++.)
Volker Grabsch <vog@notjusthosting.com>
parents: 213
diff changeset
138 ,)
428
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
139 touch '$(PREFIX)/installed-$(1)'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
140 endef
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
141 $(foreach PKG,$(PKGS),$(eval $(call PKG_RULE,$(PKG),$(call TMP_DIR,$(PKG)))))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
142
122
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
143 .PHONY: strip
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
144 strip:
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
145 rm -rf \
428
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
146 '$(PREFIX)'/log-* \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
147 '$(PREFIX)/include' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
148 '$(PREFIX)/info' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
149 '$(PREFIX)/lib/libiberty.a' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
150 '$(PREFIX)/man' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
151 '$(PREFIX)/share' \
259
3221273ea6cb remove also the etc/ directory on "make strip"
Volker Grabsch <vog@notjusthosting.com>
parents: 256
diff changeset
152 '$(PREFIX)/$(TARGET)/etc' \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
153 '$(PREFIX)/$(TARGET)/doc' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
154 '$(PREFIX)/$(TARGET)/info' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
155 '$(PREFIX)/$(TARGET)/lib'/*.def \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
156 '$(PREFIX)/$(TARGET)/man' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
157 '$(PREFIX)/$(TARGET)/sbin' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
158 '$(PREFIX)/$(TARGET)/share'
299
9f5fdae25d77 portability fix for MacOS X: use more common options for the "strip" command
Volker Grabsch <vog@notjusthosting.com>
parents: 297
diff changeset
159 -strip -Sx \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
160 '$(PREFIX)/bin'/* \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
161 '$(PREFIX)/libexec/gcc/$(TARGET)'/*/* \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
162 '$(PREFIX)/$(TARGET)/bin'/*
299
9f5fdae25d77 portability fix for MacOS X: use more common options for the "strip" command
Volker Grabsch <vog@notjusthosting.com>
parents: 297
diff changeset
163 -$(TARGET)-strip -S \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
164 '$(PREFIX)/lib/gcc/$(TARGET)'/*/*.a \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
165 '$(PREFIX)/lib/gcc/$(TARGET)'/*/*.o \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
166 '$(PREFIX)/$(TARGET)/lib'/*.a \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
167 '$(PREFIX)/$(TARGET)/lib'/*.o
122
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
168
119
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
169 .PHONY: clean
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
170 clean:
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
171 rm -rf $(call TMP_DIR,*) $(PREFIX)/*
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
172
226
c07a36f3ea80 new target "make clean-pkg" to remove all unused package files (handy after a successful "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 215
diff changeset
173 .PHONY: clean-pkg
c07a36f3ea80 new target "make clean-pkg" to remove all unused package files (handy after a successful "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 215
diff changeset
174 clean-pkg:
c07a36f3ea80 new target "make clean-pkg" to remove all unused package files (handy after a successful "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 215
diff changeset
175 rm -f $(patsubst %,'%', \
c07a36f3ea80 new target "make clean-pkg" to remove all unused package files (handy after a successful "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 215
diff changeset
176 $(filter-out \
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
177 $(foreach PKG,$(PKGS),$(PKG_DIR)/$($(PKG)_FILE)), \
226
c07a36f3ea80 new target "make clean-pkg" to remove all unused package files (handy after a successful "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 215
diff changeset
178 $(wildcard $(PKG_DIR)/*)))
c07a36f3ea80 new target "make clean-pkg" to remove all unused package files (handy after a successful "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 215
diff changeset
179
119
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
180 .PHONY: update
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
181 define UPDATE
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
182 $(if $(2),
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
183 $(info $(1): $(2))
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
184 $(if $(filter $(2),$($(1)_VERSION)),
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
185 ,
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
186 $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' -i '$(TOP_DIR)/src/$(1).mk'
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
187 $(MAKE) -f '$(MAKEFILE)' 'update-checksum-$(1)'),
130
d7e4464a369d show status information during 'make update'
Volker Grabsch <vog@notjusthosting.com>
parents: 123
diff changeset
188 $(error Unable to update version number: $(1)))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
189
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
190 endef
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
191 update:
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
192 $(foreach PKG,$(PKGS),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
193
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
194 update-checksum-%:
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
195 $(call DOWNLOAD_PKG_ARCHIVE,$*)
319
9a9cffd8a015 bugfix in the "update-checksum-%" target which is internally used by "make update"
Volker Grabsch <vog@notjusthosting.com>
parents: 316
diff changeset
196 $(SED) 's/^\([^ ]*_CHECKSUM *:=\).*/\1 '"`$(call PKG_CHECKSUM,$*)`"'/' -i '$(TOP_DIR)/src/$*.mk'
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
197
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
198 .PHONY: dist
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
199 dist:
427
9605f8f088e4 small bugfix in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 417
diff changeset
200 [ -d '$(DIST_DIR)' ] || mkdir -p '$(DIST_DIR)'
9605f8f088e4 small bugfix in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 417
diff changeset
201 [ -d '$(DIST_DIR)/web' ] || mkdir '$(DIST_DIR)/web'
9605f8f088e4 small bugfix in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 417
diff changeset
202 [ -d '$(DIST_DIR)/releases' ] || mkdir '$(DIST_DIR)/releases'
416
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
203 rm -rf '$(DIST_DIR)/mingw-cross-env-$(VERSION)'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
204 mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
205 mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
206 mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
207 ( \
353
94ba675f6705 renamed doc/README.html to doc/index.html
Volker Grabsch <vog@notjusthosting.com>
parents: 319
diff changeset
208 $(SED) -n '1,/<!-- begin of package list -->/ p' '$(TOP_DIR)/doc/index.html' && \
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
209 ($(foreach PKG,$(PKGS), \
278
6b9ea2440ba5 merge text documentation and website into an HTML documentation
Volker Grabsch <vog@notjusthosting.com>
parents: 275
diff changeset
210 echo ' <tr><td><a href="$($(PKG)_WEBSITE)">$(PKG)</a></td><td>$($(PKG)_VERSION)</td></tr>';)) && \
353
94ba675f6705 renamed doc/README.html to doc/index.html
Volker Grabsch <vog@notjusthosting.com>
parents: 319
diff changeset
211 $(SED) -n '/<!-- end of package list -->/,$$ p' '$(TOP_DIR)/doc/index.html' \
359
e9fbffc4f48a introduce placeholders for version number and target in the tutorial
Volker Grabsch <vog@notjusthosting.com>
parents: 353
diff changeset
212 ) \
e9fbffc4f48a introduce placeholders for version number and target in the tutorial
Volker Grabsch <vog@notjusthosting.com>
parents: 353
diff changeset
213 | $(SED) 's,\(<span class="version">\)[^<]*\(</span>\),\1$(VERSION)\2,g' \
e9fbffc4f48a introduce placeholders for version number and target in the tutorial
Volker Grabsch <vog@notjusthosting.com>
parents: 353
diff changeset
214 | $(SED) 's,\(<span class="target">\)[^<]*\(</span>\),\1$(TARGET)\2,g' \
416
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
215 >'$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc/index.html'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
216 cp -p '$(TOP_DIR)/doc'/screenshot-* '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc/'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
217 cp -p '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc'/* '$(DIST_DIR)/web/'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
218 (cd '$(TOP_DIR)' && hg log -v --style changelog) >'$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc/ChangeLog'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
219 cd '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc' && lynx -dump -width 75 -nolist -force_html index.html >README
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
220 cp -p '$(TOP_DIR)/Makefile' '$(DIST_DIR)/mingw-cross-env-$(VERSION)/'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
221 cp -p '$(TOP_DIR)/src'/*.mk '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src/'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
222 cp -p '$(TOP_DIR)/src'/*.patch '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src/'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
223 (cd '$(DIST_DIR)' && tar cvf - 'mingw-cross-env-$(VERSION)' | gzip -9) >'$(DIST_DIR)/releases/mingw-cross-env-$(VERSION).tar.gz'
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
224 rm -rf '$(DIST_DIR)/mingw-cross-env-$(VERSION)'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
225