annotate Makefile @ 206:c82301af7b7f

disable parallel builds by default and document in the README how to enable parallelization
author Volker Grabsch <vog@notjusthosting.com>
date Sat, 31 Jan 2009 07:38:19 +0100
parents 129f99392d76
children 234af7f11ee0
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
9fedbab70063 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 122
diff changeset
2 # see doc/README for further information
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
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
5 TARGET := i386-mingw32msvc
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
197
129f99392d76 increased version number to 2.2
Volker Grabsch <vog@notjusthosting.com>
parents: 190
diff changeset
8 VERSION := 2.2
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
9 PREFIX := $(PWD)/usr
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
10 PKG_DIR := $(PWD)/pkg
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
11 TMP_DIR = $(PWD)/tmp-$(1)
121
15e0ab5c4df0 bugfix: add $(PREFIX)/bin to the PATH
Volker Grabsch <vog@notjusthosting.com>
parents: 120
diff changeset
12 PATH := $(PREFIX)/bin:$(PATH)
184
5823fd0f68e6 add 'SHELL=bash' hints where necessary, so it works on systems where /bin/sh isn't a Bash
Volker Grabsch <vog@notjusthosting.com>
parents: 183
diff changeset
13 SHELL := bash
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
14 SED := $(shell gsed --version >/dev/null 2>&1 && echo g)sed
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
15
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
16 PKG_RULES := $(patsubst src/%.mk,%,$(wildcard src/*.mk))
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
17 include src/*.mk
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
18
120
4edf6a519683 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 119
diff changeset
19 CHECK_ARCHIVE = \
144
aafad5b5de5f bugfix: support the .tgz archive extension in addition to .tar.gz
Volker Grabsch <vog@notjusthosting.com>
parents: 135
diff changeset
20 $(if $(filter %.tgz, $(1)),tar tfz '$(1)' >/dev/null 2>&1, \
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
21 $(if $(filter %.tar.gz, $(1)),tar tfz '$(1)' >/dev/null 2>&1, \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
22 $(if $(filter %.tar.bz2,$(1)),tar tfj '$(1)' >/dev/null 2>&1, \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
23 $(if $(filter %.zip, $(1)),unzip -t '$(1)' >/dev/null 2>&1, \
144
aafad5b5de5f bugfix: support the .tgz archive extension in addition to .tar.gz
Volker Grabsch <vog@notjusthosting.com>
parents: 135
diff changeset
24 $(error Unknown archive format: $(1))))))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
25
120
4edf6a519683 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 119
diff changeset
26 UNPACK_ARCHIVE = \
144
aafad5b5de5f bugfix: support the .tgz archive extension in addition to .tar.gz
Volker Grabsch <vog@notjusthosting.com>
parents: 135
diff changeset
27 $(if $(filter %.tgz, $(1)),tar xvzf '$(1)', \
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
28 $(if $(filter %.tar.gz, $(1)),tar xvzf '$(1)', \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
29 $(if $(filter %.tar.bz2,$(1)),tar xvjf '$(1)', \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
30 $(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
31 $(error Unknown archive format: $(1))))))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
32
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
33 DOWNLOAD = \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
34 $(if $(2),wget -t 3 -c '$(1)' || wget -c '$(2)',wget -c '$(1)')
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
35
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
36 .PHONY: all
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
37 all: $(PKG_RULES)
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
38
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
39 define PKG_RULE
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
40 .PHONY: $(1)
172
0d528839039a rename installation markers from 'installed.*' to 'installed-*' to avoid weird file extensions
Volker Grabsch <vog@notjusthosting.com>
parents: 144
diff changeset
41 $(1): $(PREFIX)/installed-$(1)
0d528839039a rename installation markers from 'installed.*' to 'installed-*' to avoid weird file extensions
Volker Grabsch <vog@notjusthosting.com>
parents: 144
diff changeset
42 $(PREFIX)/installed-$(1): $(addprefix $(PREFIX)/installed-,$($(1)_DEPS))
134
d24e76675835 bugfix: use -d instead of -z to check for a directory
Volker Grabsch <vog@notjusthosting.com>
parents: 131
diff changeset
43 [ -d '$(PREFIX)' ] || mkdir -p '$(PREFIX)'
d24e76675835 bugfix: use -d instead of -z to check for a directory
Volker Grabsch <vog@notjusthosting.com>
parents: 131
diff changeset
44 [ -d '$(PKG_DIR)' ] || mkdir -p '$(PKG_DIR)'
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
45 rm -rf '$(2)'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
46 mkdir -p '$(2)'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
47 cd '$(PKG_DIR)' && ( \
120
4edf6a519683 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 119
diff changeset
48 $(call CHECK_ARCHIVE,$($(1)_FILE)) || \
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
49 $(call DOWNLOAD,$($(1)_URL),$($(1)_URL_2)) )
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
50 cd '$(2)' && \
120
4edf6a519683 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 119
diff changeset
51 $(call UNPACK_ARCHIVE,$(PKG_DIR)/$($(1)_FILE))
135
c8fadb1b0dbe after unpacking, check whether the expected subdirectory exists
Volker Grabsch <vog@notjusthosting.com>
parents: 134
diff changeset
52 cd '$(2)/$($(1)_SUBDIR)'
131
ed98f6b98e35 use $(1) instead of $(2) to address to temporary build dir
Volker Grabsch <vog@notjusthosting.com>
parents: 130
diff changeset
53 $$(call $(1)_BUILD,$(2)/$($(1)_SUBDIR))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
54 rm -rfv '$(2)'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
55 touch '$$@'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
56 endef
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
57 $(foreach PKG,$(PKG_RULES),$(eval $(call PKG_RULE,$(PKG),$(call TMP_DIR,$(PKG)))))
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
58
122
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
59 .PHONY: strip
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
60 strip:
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
61 rm -rf \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
62 $(PREFIX)/include \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
63 $(PREFIX)/info \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
64 $(PREFIX)/lib/libiberty.a \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
65 $(PREFIX)/man \
183
a07e0f23f93d improved 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 179
diff changeset
66 $(PREFIX)/share \
122
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
67 $(PREFIX)/$(TARGET)/doc \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
68 $(PREFIX)/$(TARGET)/info \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
69 $(PREFIX)/$(TARGET)/man \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
70 $(PREFIX)/$(TARGET)/sbin \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
71 $(PREFIX)/$(TARGET)/share
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
72 -strip -s \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
73 $(PREFIX)/bin/* \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
74 $(PREFIX)/libexec/gcc/$(TARGET)/*/* \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
75 $(PREFIX)/$(TARGET)/bin/*
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
76 -$(TARGET)-strip -g \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
77 $(PREFIX)/lib/gcc/$(TARGET)/*/*.a \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
78 $(PREFIX)/lib/gcc/$(TARGET)/*/*.o \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
79 $(PREFIX)/$(TARGET)/lib/*.a \
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
80 $(PREFIX)/$(TARGET)/lib/*.o
daa21345aa2a implemented 'make strip'
Volker Grabsch <vog@notjusthosting.com>
parents: 121
diff changeset
81
119
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
82 .PHONY: clean
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
83 clean:
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
84 rm -rf $(call TMP_DIR,*) $(PREFIX)/*
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
85
ff34f15ec142 improved coding style
Volker Grabsch <vog@notjusthosting.com>
parents: 114
diff changeset
86 .PHONY: update
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
87 define UPDATE
130
d7e4464a369d show status information during 'make update'
Volker Grabsch <vog@notjusthosting.com>
parents: 123
diff changeset
88 $(if $(2), \
d7e4464a369d show status information during 'make update'
Volker Grabsch <vog@notjusthosting.com>
parents: 123
diff changeset
89 $(info $(1): $(2)) \
d7e4464a369d show status information during 'make update'
Volker Grabsch <vog@notjusthosting.com>
parents: 123
diff changeset
90 $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' -i src/$(1).mk, \
d7e4464a369d show status information during 'make update'
Volker Grabsch <vog@notjusthosting.com>
parents: 123
diff changeset
91 $(error Unable to update version number: $(1)))
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
92
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
93 endef
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
94 update:
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
95 $(foreach PKG,$(PKG_RULES),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))))
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
96
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
97 .PHONY: dist
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
98 dist:
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
99 rm -rf 'mingw_cross_env-$(VERSION)'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
100 mkdir 'mingw_cross_env-$(VERSION)'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
101 mkdir 'mingw_cross_env-$(VERSION)/doc'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
102 mkdir 'mingw_cross_env-$(VERSION)/src'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
103 hg log -v --style changelog >'mingw_cross_env-$(VERSION)/doc/ChangeLog'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
104 ( \
179
9d97a1972c5e improved README
Volker Grabsch <vog@notjusthosting.com>
parents: 172
diff changeset
105 $(SED) -n '1,/^List/ { s/^\( Version:\).*/\1 $(VERSION)/; p }' doc/README && \
114
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
106 echo '================' && \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
107 echo && \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
108 ($(foreach PKG,$(PKG_RULES),echo '$(PKG)' '$($(PKG)_VERSION)';)) | \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
109 awk '{ printf " %-12s %s\n", $$1, $$2 }' && \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
110 echo && \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
111 echo && \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
112 $(SED) -n '/^Copyright/,$$ p' doc/README \
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
113 ) >'mingw_cross_env-$(VERSION)/doc/README'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
114 cp -p Makefile 'mingw_cross_env-$(VERSION)/'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
115 cp -p src/*.mk 'mingw_cross_env-$(VERSION)/src/'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
116 tar cvf - 'mingw_cross_env-$(VERSION)' | gzip -9 >'mingw_cross_env-$(VERSION).tar.gz'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
117 rm -rf 'mingw_cross_env-$(VERSION)'
771b6c26008d completely rewritten from scratch as Makefile
Volker Grabsch <vog@notjusthosting.com>
parents:
diff changeset
118