annotate Makefile @ 1136:cf87e39ecc2c

improved portability invoking tar with stdin
author Mark Brand <mabrand@mabrand.nl>
date Mon, 13 Sep 2010 22:35:00 +0200
parents d4ccfc3cfdd4
children 782fbc148784
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
641
dab071eac9c0 simplified file markers
Volker Grabsch <vog@notjusthosting.com>
parents: 604
diff changeset
1 # This file is part of mingw-cross-env.
714
29f1ba4559ae point consequently to "doc/index.html" instead of "doc/index.html or doc/README"
Volker Grabsch <vog@notjusthosting.com>
parents: 704
diff changeset
2 # See doc/index.html for further information.
123
9fedbab70063 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 122
diff changeset
3
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
4 JOBS := 1
450
f3563b6817c1 update the target triplet to i686-pc-mingw32
Volker Grabsch <vog@notjusthosting.com>
parents: 448
diff changeset
5 TARGET := i686-pc-mingw32
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
6 SOURCEFORGE_MIRROR := kent.dl.sourceforge.net
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
7
704
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
8 PREFIX := $(PWD)/usr
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
9 LOG_DIR := $(PWD)/log
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
10 TIMESTAMP := $(shell date +%Y%m%d_%H%M%S)
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
11 PKG_DIR := $(PWD)/pkg
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
12 DIST_DIR := $(PWD)/dist
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
13 TMP_DIR = $(PWD)/tmp-$(1)
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
14 MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
15 TOP_DIR := $(patsubst %/,%,$(dir $(MAKEFILE)))
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
16 PATH := $(PREFIX)/bin:$(PATH)
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
17 SHELL := bash
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
18 SED := $(shell gsed --help >/dev/null 2>&1 && echo g)sed
1132
d4ccfc3cfdd4 bugfix: use GNU Patch under FreeBSD (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 1101
diff changeset
19 PATCH := $(shell gpatch --help >/dev/null 2>&1 && echo g)patch
704
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
20 INSTALL := $(shell ginstall --help >/dev/null 2>&1 && echo g)install
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
21 LIBTOOLIZE := $(shell glibtoolize --help >/dev/null 2>&1 && echo g)libtoolize
93f1be1d2089 use glibtoolize instead of libtoolize where appropriate (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 699
diff changeset
22 VERSION := $(shell $(SED) -n 's,^.*<span id="latest-version">\([^<]*\)</span>.*$$,\1,p' '$(TOP_DIR)/doc/index.html')
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
23
1074
4f4354ddd6ae really unexport the troublesome environment variables, rather than just setting them to empty strings
Volker Grabsch <vog@notjusthosting.com>
parents: 826
diff changeset
24 # unexport any environment variables that might cause trouble
1075
813c0cbce7ac improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1074
diff changeset
25 unexport AR CC CFLAGS CPP CPPFLAGS CROSS CXX CXXCPP CXXFLAGS EXEEXT
813c0cbce7ac improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1074
diff changeset
26 unexport EXTRA_CFLAGS EXTRA_LDFLAGS LD LDFLAGS LIBS NM PKG_CONFIG
813c0cbce7ac improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1074
diff changeset
27 unexport PKG_CONFIG_PATH QMAKESPEC RANLIB STRIP
287
92ac81dea92d bugfix: unset any environment variables which might cause trouble
Volker Grabsch <vog@notjusthosting.com>
parents: 285
diff changeset
28
264
01aa6a0e1c9e new macro SHORT_PKG_VERSION which assists in creating download URLs
Volker Grabsch <vog@notjusthosting.com>
parents: 259
diff changeset
29 SHORT_PKG_VERSION = \
01aa6a0e1c9e new macro SHORT_PKG_VERSION which assists in creating download URLs
Volker Grabsch <vog@notjusthosting.com>
parents: 259
diff changeset
30 $(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
31
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
32 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
33 include $(TOP_DIR)/src/*.mk
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
34
120
4edf6a519683 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 119
diff changeset
35 UNPACK_ARCHIVE = \
1101
28abe875c217 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1095
diff changeset
36 $(if $(filter %.tgz, $(1)),tar xzf '$(1)', \
28abe875c217 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1095
diff changeset
37 $(if $(filter %.tar.gz, $(1)),tar xzf '$(1)', \
28abe875c217 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1095
diff changeset
38 $(if $(filter %.tar.bz2, $(1)),tar xjf '$(1)', \
1136
cf87e39ecc2c improved portability invoking tar with stdin
Mark Brand <mabrand@mabrand.nl>
parents: 1132
diff changeset
39 $(if $(filter %.tar.lzma,$(1)),xz -dc -F lzma '$(1)' | tar xf -, \
1101
28abe875c217 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 1095
diff changeset
40 $(if $(filter %.zip, $(1)),unzip -q '$(1)', \
1095
e878941387e3 upgrade packages curl freetype gcc glew gnutls gst* libarchive libevent libgcrypt pcre sqlite w32api
Mark Brand <mabrand@mabrand.nl>
parents: 1075
diff changeset
41 $(error Unknown archive format: $(1)))))))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
42
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
43 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
44 $(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
45
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
46 PKG_CHECKSUM = \
473
b0cc6cc3c1fc improved status output
Volker Grabsch <vog@notjusthosting.com>
parents: 461
diff changeset
47 openssl sha1 '$(PKG_DIR)/$($(1)_FILE)' 2>/dev/null | $(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
48
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
49 CHECK_PKG_ARCHIVE = \
311
ce0d27e7993f use "openssl sha1 ..." instead of "sha1sum -b ..."
Volker Grabsch <vog@notjusthosting.com>
parents: 310
diff changeset
50 [ '$($(1)_CHECKSUM)' == "`$$(call PKG_CHECKSUM,$(1))`" ]
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
51
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
52 DOWNLOAD_PKG_ARCHIVE = \
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
53 $(if $($(1)_URL_2), \
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
54 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
55 || 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
56 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
57
408
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
58 SOURCEFORGE_FILES = \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
59 wget -q -O- '$(1)' | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
60 grep 'title="/' | \
561
57265b8d92af adjust the $(SOURCEFORGE_FILES) macro to the new layout of the SourceForge download sites (needed by "make update")
Volker Grabsch <vog@notjusthosting.com>
parents: 560
diff changeset
61 $(SED) -n 's,.*title="\(/[^:]*\).*released on \([0-9-]*\)",\2 \1,p' | \
408
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
62 sort | \
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
63 $(SED) 's,^[^ ]* ,,'
413750a629be improved version recognition for sourceforge packages
Volker Grabsch <vog@notjusthosting.com>
parents: 406
diff changeset
64
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
65 .PHONY: all
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
66 all: $(PKGS)
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
67
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
68 .PHONY: download
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
69 download: $(addprefix download-,$(PKGS))
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
70
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
71 define PKG_RULE
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
72 .PHONY: download-$(1)
429
2fa394d22e1d bugfix and simplification of "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 428
diff changeset
73 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
74 [ -d '$(PKG_DIR)' ] || mkdir -p '$(PKG_DIR)'
310
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
75 if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
76 $(call DOWNLOAD_PKG_ARCHIVE,$(1)); \
5c5e254fa32b bugfix in handling checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 306
diff changeset
77 $(call CHECK_PKG_ARCHIVE,$(1)) || { echo 'Wrong checksum!'; exit 1; }; \
430
5d2c64680021 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 429
diff changeset
78 fi
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
79
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
80 .PHONY: $(1)
593
e3fa9c5468a5 put installation markers into a separate sub directory usr/installed/
Volker Grabsch <vog@notjusthosting.com>
parents: 592
diff changeset
81 $(1): $(PREFIX)/installed/$(1)
e3fa9c5468a5 put installation markers into a separate sub directory usr/installed/
Volker Grabsch <vog@notjusthosting.com>
parents: 592
diff changeset
82 $(PREFIX)/installed/$(1): $(TOP_DIR)/src/$(1).mk \
394
bb2b329f85d3 new command "make download"
Volker Grabsch <vog@notjusthosting.com>
parents: 392
diff changeset
83 $(wildcard $(TOP_DIR)/src/$(1)-*.patch) \
778
f8c2ff4cf740 bugfix: add test scripts as dependency files, and put them into the distribution tarball
Volker Grabsch <vog@notjusthosting.com>
parents: 738
diff changeset
84 $(wildcard $(TOP_DIR)/src/$(1)-test*) \
593
e3fa9c5468a5 put installation markers into a separate sub directory usr/installed/
Volker Grabsch <vog@notjusthosting.com>
parents: 592
diff changeset
85 $(addprefix $(PREFIX)/installed/,$($(1)_DEPS))
604
95aeaeacaf9c improved layout of the log/ directory
Volker Grabsch <vog@notjusthosting.com>
parents: 596
diff changeset
86 @[ -d '$(LOG_DIR)/$(TIMESTAMP)' ] || mkdir -p '$(LOG_DIR)/$(TIMESTAMP)'
95aeaeacaf9c improved layout of the log/ directory
Volker Grabsch <vog@notjusthosting.com>
parents: 596
diff changeset
87 @[ -d '$(PKG_DIR)' ] || mkdir -p '$(PKG_DIR)'
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
88 @if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
89 echo '[download] $(1)'; \
596
9de8f34905c0 keep old log files with timestamp using symlinks to refer to the latest ones
Volker Grabsch <vog@notjusthosting.com>
parents: 595
diff changeset
90 rm -f '$(LOG_DIR)/$(1)-download'; \
604
95aeaeacaf9c improved layout of the log/ directory
Volker Grabsch <vog@notjusthosting.com>
parents: 596
diff changeset
91 ln -s '$(TIMESTAMP)/$(1)-download' '$(LOG_DIR)/$(1)-download'; \
595
f4b50cf506c6 keep separate download logs in log/PKG-download
Volker Grabsch <vog@notjusthosting.com>
parents: 594
diff changeset
92 ($(call DOWNLOAD_PKG_ARCHIVE,$(1))) &> '$(LOG_DIR)/$(1)-download'; \
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
93 if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
94 echo; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
95 echo 'Wrong checksum of package $(1)!'; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
96 echo '------------------------------------------------------------'; \
595
f4b50cf506c6 keep separate download logs in log/PKG-download
Volker Grabsch <vog@notjusthosting.com>
parents: 594
diff changeset
97 tail -n 10 '$(LOG_DIR)/$(1)-download' | $(SED) -n '/./p'; \
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
98 echo '------------------------------------------------------------'; \
595
f4b50cf506c6 keep separate download logs in log/PKG-download
Volker Grabsch <vog@notjusthosting.com>
parents: 594
diff changeset
99 echo '[log] $(LOG_DIR)/$(1)-download'; \
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
100 echo; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
101 exit 1; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
102 fi; \
430
5d2c64680021 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 429
diff changeset
103 fi
434
7fdb6628d83a improved output: don't show "[build]" for download-only packages
Volker Grabsch <vog@notjusthosting.com>
parents: 431
diff changeset
104 $(if $(value $(1)_BUILD),
7fdb6628d83a improved output: don't show "[build]" for download-only packages
Volker Grabsch <vog@notjusthosting.com>
parents: 431
diff changeset
105 @echo '[build] $(1)'
7fdb6628d83a improved output: don't show "[build]" for download-only packages
Volker Grabsch <vog@notjusthosting.com>
parents: 431
diff changeset
106 ,)
596
9de8f34905c0 keep old log files with timestamp using symlinks to refer to the latest ones
Volker Grabsch <vog@notjusthosting.com>
parents: 595
diff changeset
107 @rm -f '$(LOG_DIR)/$(1)'
604
95aeaeacaf9c improved layout of the log/ directory
Volker Grabsch <vog@notjusthosting.com>
parents: 596
diff changeset
108 @ln -s '$(TIMESTAMP)/$(1)' '$(LOG_DIR)/$(1)'
594
2a325441b1ab put log files into a separate sub directory log/, separate from usr/, surviving a "make clean"
Volker Grabsch <vog@notjusthosting.com>
parents: 593
diff changeset
109 @if ! (time $(MAKE) -f '$(MAKEFILE)' 'build-only-$(1)') &> '$(LOG_DIR)/$(1)'; then \
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
110 echo; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
111 echo 'Failed to build package $(1)!'; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
112 echo '------------------------------------------------------------'; \
594
2a325441b1ab put log files into a separate sub directory log/, separate from usr/, surviving a "make clean"
Volker Grabsch <vog@notjusthosting.com>
parents: 593
diff changeset
113 tail -n 10 '$(LOG_DIR)/$(1)' | $(SED) -n '/./p'; \
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
114 echo '------------------------------------------------------------'; \
594
2a325441b1ab put log files into a separate sub directory log/, separate from usr/, surviving a "make clean"
Volker Grabsch <vog@notjusthosting.com>
parents: 593
diff changeset
115 echo '[log] $(LOG_DIR)/$(1)'; \
431
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
116 echo; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
117 exit 1; \
e77981de8c92 highlevel output of the download/build process, put also download actions into the log file
Volker Grabsch <vog@notjusthosting.com>
parents: 430
diff changeset
118 fi
435
80c86e6f7ca6 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 434
diff changeset
119 @echo '[done] $(1)'
428
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
120
951e2a6d1e69 create a separate build log file "usr/log-PKG" for each package build
Volker Grabsch <vog@notjusthosting.com>
parents: 427
diff changeset
121 .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
122 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
123 $(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
124 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
125 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
126 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
127 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
128 $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(1)-*.patch)),
1132
d4ccfc3cfdd4 bugfix: use GNU Patch under FreeBSD (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents: 1101
diff changeset
129 (cd '$(2)/$($(1)_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH))
657
b1d03b91eb1e test program for package sdl
Volker Grabsch <vog@notjusthosting.com>
parents: 641
diff changeset
130 $$(call $(1)_BUILD,$(2)/$($(1)_SUBDIR),$(TOP_DIR)/src/$(1)-test)
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
131 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
132 ,)
593
e3fa9c5468a5 put installation markers into a separate sub directory usr/installed/
Volker Grabsch <vog@notjusthosting.com>
parents: 592
diff changeset
133 [ -d '$(PREFIX)/installed' ] || mkdir -p '$(PREFIX)/installed'
e3fa9c5468a5 put installation markers into a separate sub directory usr/installed/
Volker Grabsch <vog@notjusthosting.com>
parents: 592
diff changeset
134 touch '$(PREFIX)/installed/$(1)'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
135 endef
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
136 $(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
137
122
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
138 .PHONY: strip
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
139 strip:
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
140 rm -rf \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
141 '$(PREFIX)/include' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
142 '$(PREFIX)/info' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
143 '$(PREFIX)/lib/libiberty.a' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
144 '$(PREFIX)/man' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
145 '$(PREFIX)/share' \
259
3221273ea6cb remove also the etc/ directory on "make strip"
Volker Grabsch <vog@notjusthosting.com>
parents: 256
diff changeset
146 '$(PREFIX)/$(TARGET)/etc' \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
147 '$(PREFIX)/$(TARGET)/doc' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
148 '$(PREFIX)/$(TARGET)/info' \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
149 '$(PREFIX)/$(TARGET)/lib'/*.def \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
150 '$(PREFIX)/$(TARGET)/man' \
545
5ad2e782d8dd don't remove usr/i686-pc-mingw32/share/ on "make strip", because this might break NSIS and other packages
Volker Grabsch <vog@notjusthosting.com>
parents: 523
diff changeset
151 '$(PREFIX)/$(TARGET)/sbin'
299
9f5fdae25d77 portability fix for MacOS X: use more common options for the "strip" command
Volker Grabsch <vog@notjusthosting.com>
parents: 297
diff changeset
152 -strip -Sx \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
153 '$(PREFIX)/bin'/* \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
154 '$(PREFIX)/libexec/gcc/$(TARGET)'/*/* \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
155 '$(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
156 -$(TARGET)-strip -S \
256
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
157 '$(PREFIX)/lib/gcc/$(TARGET)'/*/*.a \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
158 '$(PREFIX)/lib/gcc/$(TARGET)'/*/*.o \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
159 '$(PREFIX)/$(TARGET)/lib'/*.a \
f14c13297108 improved quoting
Volker Grabsch <vog@notjusthosting.com>
parents: 255
diff changeset
160 '$(PREFIX)/$(TARGET)/lib'/*.o
122
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
161
119
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
162 .PHONY: clean
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
163 clean:
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
164 rm -rf $(call TMP_DIR,*) $(PREFIX)/*
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
165
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
166 .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
167 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
168 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
169 $(filter-out \
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
170 $(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
171 $(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
172
119
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
173 .PHONY: update
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
174 define UPDATE
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
175 $(if $(2),
448
e9afec55fd6b improved version recognition, enable the notation of ignored (bad) package versions
Volker Grabsch <vog@notjusthosting.com>
parents: 443
diff changeset
176 $(if $(filter $(2),$($(1)_IGNORE)),
461
c489fb1015e2 improved output style of "make update" again
Volker Grabsch <vog@notjusthosting.com>
parents: 454
diff changeset
177 $(info IGNORED $(1) $(2)),
448
e9afec55fd6b improved version recognition, enable the notation of ignored (bad) package versions
Volker Grabsch <vog@notjusthosting.com>
parents: 443
diff changeset
178 $(if $(filter $(2),$($(1)_VERSION)),
461
c489fb1015e2 improved output style of "make update" again
Volker Grabsch <vog@notjusthosting.com>
parents: 454
diff changeset
179 $(info . $(1) $(2)),
477
ffca44340844 improved output of "make update"
Volker Grabsch <vog@notjusthosting.com>
parents: 473
diff changeset
180 $(info NEW $(1) $($(1)_VERSION) --> $(2))
448
e9afec55fd6b improved version recognition, enable the notation of ignored (bad) package versions
Volker Grabsch <vog@notjusthosting.com>
parents: 443
diff changeset
181 $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' -i '$(TOP_DIR)/src/$(1).mk'
517
80db96994441 improved "make update": revert a package's version number when there were download problem with the new version
Volker Grabsch <vog@notjusthosting.com>
parents: 511
diff changeset
182 $(MAKE) -f '$(MAKEFILE)' 'update-checksum-$(1)' \
519
99a330c048df bugfix for "make update": avoid silent package update failures
Volker Grabsch <vog@notjusthosting.com>
parents: 517
diff changeset
183 || { $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $($(1)_VERSION)/' -i '$(TOP_DIR)/src/$(1).mk'; \
99a330c048df bugfix for "make update": avoid silent package update failures
Volker Grabsch <vog@notjusthosting.com>
parents: 517
diff changeset
184 exit 1; })),
560
185e73877b08 improved error message for "make update"
Volker Grabsch <vog@notjusthosting.com>
parents: 545
diff changeset
185 $(error Unable to update version number of package $(1)))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
186
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
187 endef
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
188 update:
403
825505ea3855 improved variable naming in the Makefile
Volker Grabsch <vog@notjusthosting.com>
parents: 401
diff changeset
189 $(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
190
306
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
191 update-checksum-%:
85ffa9259036 validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents: 305
diff changeset
192 $(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
193 $(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
194
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
195 .PHONY: dist
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
196 dist:
427
9605f8f088e4 small bugfix in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 417
diff changeset
197 [ -d '$(DIST_DIR)' ] || mkdir -p '$(DIST_DIR)'
9605f8f088e4 small bugfix in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 417
diff changeset
198 [ -d '$(DIST_DIR)/web' ] || mkdir '$(DIST_DIR)/web'
9605f8f088e4 small bugfix in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 417
diff changeset
199 [ -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
200 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
201 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
202 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
203 mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
204 ( \
698
a7b95e107568 more liberal parsing of doc/index.html in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 689
diff changeset
205 $(SED) -n '1,/<table id="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
206 ($(foreach PKG,$(PKGS), \
278
6b9ea2440ba5 merge text documentation and website into an HTML documentation
Volker Grabsch <vog@notjusthosting.com>
parents: 275
diff changeset
207 echo ' <tr><td><a href="$($(PKG)_WEBSITE)">$(PKG)</a></td><td>$($(PKG)_VERSION)</td></tr>';)) && \
698
a7b95e107568 more liberal parsing of doc/index.html in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 689
diff changeset
208 $(SED) -n '/<table id="package-list"/,/<ul id="authors-list"/ p' '$(TOP_DIR)/doc/index.html' | \
523
1711ff2b9416 generate the list of authors automatically from the version history
Volker Grabsch <vog@notjusthosting.com>
parents: 521
diff changeset
209 $(SED) '1d' && \
699
4c4e4591f94f handle special characters correctly in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 698
diff changeset
210 (LC_ALL=en_US.UTF-8 hg log | $(SED) -n 's,^\(user: *\([^<]*\) <.*\|.*(by \([^)]*\)).*\)$$,\2\3,p' | \
523
1711ff2b9416 generate the list of authors automatically from the version history
Volker Grabsch <vog@notjusthosting.com>
parents: 521
diff changeset
211 sort | uniq -c | sort -nr | \
1711ff2b9416 generate the list of authors automatically from the version history
Volker Grabsch <vog@notjusthosting.com>
parents: 521
diff changeset
212 $(SED) 's,^ *[0-9]* *\(.*\)$$, <li>\1</li>,') && \
698
a7b95e107568 more liberal parsing of doc/index.html in "make dist"
Volker Grabsch <vog@notjusthosting.com>
parents: 689
diff changeset
213 $(SED) '1,/<ul id="authors-list"/ d' '$(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
214 ) \
e9fbffc4f48a introduce placeholders for version number and target in the tutorial
Volker Grabsch <vog@notjusthosting.com>
parents: 353
diff changeset
215 | $(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
216 | $(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
217 >'$(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
218 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
219 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
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/'
778
f8c2ff4cf740 bugfix: add test scripts as dependency files, and put them into the distribution tarball
Volker Grabsch <vog@notjusthosting.com>
parents: 738
diff changeset
223 cp -p '$(TOP_DIR)/src'/*-test* '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src/'
416
2c560952dba8 let "make dist" put everything into a separate dist/ subdirectory
Volker Grabsch <vog@notjusthosting.com>
parents: 415
diff changeset
224 (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
225 rm -rf '$(DIST_DIR)/mingw-cross-env-$(VERSION)'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
226