Subversion Repositories avr32-toolchain

Rev

Rev 7 | Rev 10 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7 Rev 9
1
# AVR32 Toolchain Makefile
1
# AVR32 Toolchain Makefile
2
#
2
#
3
# Copyright (C) 2011 by James Snyder <jbsnyder@fanplastic.org>
3
# Copyright (C) 2011 by James Snyder <jbsnyder@fanplastic.org>
4
#
4
#
5
# Permission is hereby granted, free of charge, to any person obtaining a copy
5
# Permission is hereby granted, free of charge, to any person obtaining a copy
6
# of this software and associated documentation files (the "Software"), to deal
6
# of this software and associated documentation files (the "Software"), to deal
7
# in the Software without restriction, including without limitation the rights
7
# in the Software without restriction, including without limitation the rights
8
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
# copies of the Software, and to permit persons to whom the Software is
9
# copies of the Software, and to permit persons to whom the Software is
10
# furnished to do so, subject to the following conditions:
10
# furnished to do so, subject to the following conditions:
11
#
11
#
12
# The above copyright notice and this permission notice shall be included in
12
# The above copyright notice and this permission notice shall be included in
13
# all copies or substantial portions of the Software.
13
# all copies or substantial portions of the Software.
14
#
14
#
15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
# THE SOFTWARE.
21
# THE SOFTWARE.
22
22
23
#### PRIMARY TOOLCHAIN VERSIONS #####
23
#### PRIMARY TOOLCHAIN VERSIONS #####
24
24
25
GCC_VERSION       = 4.4.3
25
GCC_VERSION       = 4.4.3
26
GDB_VERSION_DLOAD = 6.7.1a
26
GDB_VERSION_DLOAD = 6.7.1a
27
GDB_VERSION       = 6.7.1
27
GDB_VERSION       = 6.7.1
28
BINUTILS_VERSION  = 2.20.1
28
BINUTILS_VERSION  = 2.20.1
29
NEWLIB_VERSION    = 1.16.0
29
NEWLIB_VERSION    = 1.16.0
30
DFU_VERSION       = 0.5.4
30
DFU_VERSION       = 0.5.4
31
AVR_PATCH_REV	  = 3.2.3.261
31
AVR_PATCH_REV	  = 3.2.3.261
32
AVR_HEADER_REV    = 3.2.3.258
32
AVR_HEADER_REV    = 3.2.3.258
33
33
34
34
35
#### PATHS AND ENVIRONMENT VARIABLES #####
35
#### PATHS AND ENVIRONMENT VARIABLES #####
36
36
37
SHELL       = /bin/bash
37
SHELL       = /bin/bash
38
TARGET      = avr32
38
TARGET      = avr32
39
39
40
TODAY = $(shell date "+%Y%m%d")
40
TODAY = $(shell date "+%Y%m%d")
41
GIT_REV	    = $(shell git rev-parse --verify HEAD --short)
41
GIT_REV	    = $(shell git rev-parse --verify HEAD --short 2> /dev/null)
-
 
42
SVN_REV	    = $(shell head -1 ReleaseNotes 2> /dev/null | cut -f 1 -d " ")
42
43
43
ifeq ($(strip $(GIT_REV)),)
44
ifeq ($(strip $(GIT_REV)),)
-
 
45
ifeq ($(strip $(SVN_REV)),)
44
PREFIX     ?= $(HOME)/avr32-tools-$(TODAY)
46
PREFIX     ?= $(HOME)/avr32-tools-$(TODAY)
-
 
47
TOOL_REV   = $(TODAY)
-
 
48
else
-
 
49
PREFIX     ?= $(HOME)/avr32-tools-$(SVN_REV)
-
 
50
TOOL_REV   = $(SVN_REV)
-
 
51
BUG_URL = jasmin@anw.at
-
 
52
endif
45
else
53
else
46
PREFIX     ?= $(HOME)/avr32-tools-$(GIT_REV)
54
PREFIX     ?= $(HOME)/avr32-tools-$(GIT_REV)
-
 
55
TOOL_REV   = $(GIT_REV)
47
endif
56
endif
48
57
49
ifeq ($(UNAME), Linux)
58
ifeq ($(UNAME), Linux)
50
PROCS  ?= $(shell grep -c ^processor /proc/cpuinfo)
59
PROCS  ?= $(shell grep -c ^processor /proc/cpuinfo)
51
else ifeq ($(UNAME), Darwin)
60
else ifeq ($(UNAME), Darwin)
52
PROCS  ?= $(shell sysctl hw.ncpu | awk '{print $$2}')
61
PROCS  ?= $(shell sysctl hw.ncpu | awk '{print $$2}')
53
else
62
else
54
PROCS  ?= 2
63
PROCS  ?= 2
55
endif
64
endif
56
65
57
SUPP_PREFIX = $(CURDIR)/supp
66
SUPP_PREFIX = $(CURDIR)/supp
58
PATH       := ${PREFIX}/bin:${SUPP_PREFIX}/bin:${PATH}
67
PATH       := ${PREFIX}/bin:${SUPP_PREFIX}/bin:${PATH}
59
AUTOCONF    = $(SUPP_PREFIX)/bin/autoconf
68
AUTOCONF    = $(SUPP_PREFIX)/bin/autoconf
60
AUTOMAKE    = $(SUPP_PREFIX)/bin/automake
69
AUTOMAKE    = $(SUPP_PREFIX)/bin/automake
61
70
-
 
71
ifeq ($(strip $(BUG_URL)),)
62
BUG_URL = https://github.com/jsnyder/avr32-toolchain
72
BUG_URL = https://github.com/jsnyder/avr32-toolchain
-
 
73
endif
63
PKG_VERSION = "AVR 32 bit GNU Toolchain-$(AVR_PATCH_REV)-$(GIT_REV)"
74
PKG_VERSION = "AVR 32 bit GNU Toolchain-$(AVR_PATCH_REV)-$(TOOL_REV)"
64
75
65
76
66
#### PRIMARY TOOLCHAIN URLS #####
77
#### PRIMARY TOOLCHAIN URLS #####
67
78
68
GCC_ARCHIVE = gcc-$(GCC_VERSION).tar.bz2
79
GCC_ARCHIVE = gcc-$(GCC_VERSION).tar.bz2
69
GCC_URL = http://mirror.anl.gov/pub/gnu/gcc/gcc-$(GCC_VERSION)/$(GCC_ARCHIVE)
80
GCC_URL = http://mirror.anl.gov/pub/gnu/gcc/gcc-$(GCC_VERSION)/$(GCC_ARCHIVE)
70
GCC_MD5 = fe1ca818fc6d2caeffc9051fe67ff103
81
GCC_MD5 = fe1ca818fc6d2caeffc9051fe67ff103
71
82
72
GDB_ARCHIVE = gdb-$(GDB_VERSION_DLOAD).tar.bz2
83
GDB_ARCHIVE = gdb-$(GDB_VERSION_DLOAD).tar.bz2
73
GDB_URL = http://mirror.anl.gov/pub/gnu/gdb/$(GDB_ARCHIVE)
84
GDB_URL = http://mirror.anl.gov/pub/gnu/gdb/$(GDB_ARCHIVE)
74
GDB_MD5 = 3564f308f3e4d4f2750891bc2ce9b214
85
GDB_MD5 = 3564f308f3e4d4f2750891bc2ce9b214
75
86
76
BINUTILS_ARCHIVE = binutils-$(BINUTILS_VERSION).tar.bz2
87
BINUTILS_ARCHIVE = binutils-$(BINUTILS_VERSION).tar.bz2
77
BINUTILS_URL = http://mirror.anl.gov/pub/gnu/binutils/$(BINUTILS_ARCHIVE)
88
BINUTILS_URL = http://mirror.anl.gov/pub/gnu/binutils/$(BINUTILS_ARCHIVE)
78
BINUTILS_MD5 = 2b9dc8f2b7dbd5ec5992c6e29de0b764
89
BINUTILS_MD5 = 2b9dc8f2b7dbd5ec5992c6e29de0b764
79
90
80
NEWLIB_ARCHIVE = newlib-$(NEWLIB_VERSION).tar.gz
91
NEWLIB_ARCHIVE = newlib-$(NEWLIB_VERSION).tar.gz
81
NEWLIB_URL = ftp://sources.redhat.com/pub/newlib/$(NEWLIB_ARCHIVE)
92
NEWLIB_URL = ftp://sources.redhat.com/pub/newlib/$(NEWLIB_ARCHIVE)
82
NEWLIB_MD5 = bf8f1f9e3ca83d732c00a79a6ef29bc4
93
NEWLIB_MD5 = bf8f1f9e3ca83d732c00a79a6ef29bc4
83
94
84
AVR32PATCHES_ARCHIVE = avr32-gnu-toolchain-$(AVR_PATCH_REV)-source.zip
95
AVR32PATCHES_ARCHIVE = avr32-gnu-toolchain-$(AVR_PATCH_REV)-source.zip
85
AVR32PATCHES_URL=http://www.atmel.com/dyn/resources/prod_documents/$(AVR32PATCHES_ARCHIVE)
96
AVR32PATCHES_URL=http://www.atmel.com/dyn/resources/prod_documents/$(AVR32PATCHES_ARCHIVE)
86
AVR32PATCHES_MD5 = 69a03828a328068f25d457cfd8341857
97
AVR32PATCHES_MD5 = 69a03828a328068f25d457cfd8341857
87
98
88
AVR32HEADERS_ARCHIVE = avr32-headers-$(AVR_HEADER_REV).zip
99
AVR32HEADERS_ARCHIVE = avr32-headers-$(AVR_HEADER_REV).zip
89
AVR32HEADERS_URL=http://www.atmel.com/dyn/resources/prod_documents/$(AVR32HEADERS_ARCHIVE)
100
AVR32HEADERS_URL=http://www.atmel.com/dyn/resources/prod_documents/$(AVR32HEADERS_ARCHIVE)
90
AVR32HEADERS_MD5 = 3293d70a46e460d342e1f939b8e0d228
101
AVR32HEADERS_MD5 = 3293d70a46e460d342e1f939b8e0d228
91
102
92
DFU_ARCHIVE = dfu-programmer-$(DFU_VERSION).tar.gz
103
DFU_ARCHIVE = dfu-programmer-$(DFU_VERSION).tar.gz
93
DFU_URL = http://surfnet.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/$(DFU_VERSION)/$(DFU_ARCHIVE)
104
DFU_URL = http://surfnet.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/$(DFU_VERSION)/$(DFU_ARCHIVE)
94
DFU_MD5 = 707dcd0f957a74e92456ea6919faa772
105
DFU_MD5 = 707dcd0f957a74e92456ea6919faa772
95
106
96
107
97
##### SUPPORT TOOLS VERSIONS / URLS ######
108
##### SUPPORT TOOLS VERSIONS / URLS ######
98
AUTOCONF_VERSION = 2.64
109
AUTOCONF_VERSION = 2.64
99
AUTOMAKE_VERSION = 1.11
110
AUTOMAKE_VERSION = 1.11
100
MPC_VERSION = 0.8.1
111
MPC_VERSION = 0.8.1
101
112
102
AUTOCONF_ARCHIVE = autoconf-$(AUTOCONF_VERSION).tar.bz2
113
AUTOCONF_ARCHIVE = autoconf-$(AUTOCONF_VERSION).tar.bz2
103
AUTOCONF_URL = http://mirror.anl.gov/pub/gnu/autoconf/$(AUTOCONF_ARCHIVE)
114
AUTOCONF_URL = http://mirror.anl.gov/pub/gnu/autoconf/$(AUTOCONF_ARCHIVE)
104
AUTOCONF_MD5 = ef400d672005e0be21e0d20648169074
115
AUTOCONF_MD5 = ef400d672005e0be21e0d20648169074
105
116
106
AUTOMAKE_ARCHIVE = automake-$(AUTOMAKE_VERSION).tar.bz2
117
AUTOMAKE_ARCHIVE = automake-$(AUTOMAKE_VERSION).tar.bz2
107
AUTOMAKE_URL = http://mirror.anl.gov/pub/gnu/automake/$(AUTOMAKE_ARCHIVE)
118
AUTOMAKE_URL = http://mirror.anl.gov/pub/gnu/automake/$(AUTOMAKE_ARCHIVE)
108
AUTOMAKE_MD5 = 4db4efe027e26b33930a7e151de19d0f
119
AUTOMAKE_MD5 = 4db4efe027e26b33930a7e151de19d0f
109
120
110
121
111
122
112
.PHONY: install-tools
123
.PHONY: install-tools
113
install-tools: install-binutils install-final-gcc install-newlib install-headers
124
install-tools: install-binutils install-final-gcc install-newlib install-headers
114
125
115
.PHONY: install-cross
126
.PHONY: install-cross
116
install-cross: install-tools install-note
127
install-cross: install-tools install-note
117
128
118
129
119
.PHONY: sudomode
130
.PHONY: sudomode
120
sudomode:
131
sudomode:
121
ifneq ($(USER),root)
132
ifneq ($(USER),root)
122
	@echo Please run this target with sudo!
133
	@echo Please run this target with sudo!
123
	@echo e.g.: sudo make targetname
134
	@echo e.g.: sudo make targetname
124
	@exit 1
135
	@exit 1
125
endif
136
endif
126
137
127
138
128
.PHONY: tst
139
.PHONY: tst
129
tst:
140
tst:
130
	@echo $(PREFIX)
141
	@echo "PREFIX=$(PREFIX)"
-
 
142
	@echo "PKG_VERSION=$(PKG_VERSION)"
-
 
143
	@echo "BUG_URL=$(BUG_URL)"
131
144
132
.PHONY: install-note
145
.PHONY: install-note
133
install-note: install-tools
146
install-note: install-tools
134
	@echo
147
	@echo
135
	@echo ====== INSTALLATION NOTE ======
148
	@echo ====== INSTALLATION NOTE ======
136
	@echo Your tools have now been installed at the following prefix:
149
	@echo Your tools have now been installed at the following prefix:
137
	@echo $(PREFIX)
150
	@echo $(PREFIX)
138
	@echo
151
	@echo
139
	@echo Please be sure to add something similar to the following to your .bash_profile, .zshrc, etc:
152
	@echo Please be sure to add something similar to the following to your .bash_profile, .zshrc, etc:
140
	@echo export PATH=$(PREFIX)/bin:'$$PATH'
153
	@echo export PATH=$(PREFIX)/bin:'$$PATH'
141
154
142
155
143
.PHONY: install-supp-tools install-supp-tools-force
156
.PHONY: install-supp-tools install-supp-tools-force
144
install-supp-tools: stamps/install-supp-tools
157
install-supp-tools: stamps/install-supp-tools
145
install-supp-tools-force stamps/install-supp-tools: stamps/install-autoconf stamps/install-automake
158
install-supp-tools-force stamps/install-supp-tools: stamps/install-autoconf stamps/install-automake
146
	[ -d stamps ] || mkdir stamps ;
159
	[ -d stamps ] || mkdir stamps ;
147
	touch stamps/install-supp-tools;
160
	touch stamps/install-supp-tools;
148
161
149
.PHONY: clean-supp-tools
162
.PHONY: clean-supp-tools
150
clean-supp-tools: clean-autoconf clean-automake
163
clean-supp-tools: clean-autoconf clean-automake
151
	rm stamps/install-supp-tools;
164
	rm stamps/install-supp-tools;
152
165
153
.PHONY: realclean-supp-tools
166
.PHONY: realclean-supp-tools
154
realclean-supp-tools: realclean-autoconf realclean-automake
167
realclean-supp-tools: realclean-autoconf realclean-automake
155
	rm stamps/install-supp-tools;
168
	rm stamps/install-supp-tools;
156
169
157
170
158
############# SUPP: AUTOCONF ############
171
############# SUPP: AUTOCONF ############
159
172
160
.PHONY: download-autoconf download-autoconf-force
173
.PHONY: download-autoconf download-autoconf-force
161
download-autoconf: downloads/$(AUTOCONF_ARCHIVE)
174
download-autoconf: downloads/$(AUTOCONF_ARCHIVE)
162
download-autoconf-force downloads/$(AUTOCONF_ARCHIVE):
175
download-autoconf-force downloads/$(AUTOCONF_ARCHIVE):
163
	[ -d downloads ] || mkdir downloads ;
176
	[ -d downloads ] || mkdir downloads ;
164
	cd downloads && curl -LO $(AUTOCONF_URL)
177
	cd downloads && curl -LO $(AUTOCONF_URL)
165
178
166
.PHONY: extract-autoconf extract-autoconf-force
179
.PHONY: extract-autoconf extract-autoconf-force
167
extract-autoconf: stamps/extract-autoconf
180
extract-autoconf: stamps/extract-autoconf
168
extract-autoconf-force stamps/extract-autoconf: downloads/$(AUTOCONF_ARCHIVE)
181
extract-autoconf-force stamps/extract-autoconf: downloads/$(AUTOCONF_ARCHIVE)
169
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
182
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
170
	[ "$$t1" = "$(AUTOCONF_MD5)" ] || \
183
	[ "$$t1" = "$(AUTOCONF_MD5)" ] || \
171
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
184
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
172
	tar -jxf $< ;
185
	tar -jxf $< ;
173
	[ -d stamps ] || mkdir stamps ;
186
	[ -d stamps ] || mkdir stamps ;
174
	touch stamps/extract-autoconf;
187
	touch stamps/extract-autoconf;
175
188
176
.PHONY: build-autoconf build-autoconf-force
189
.PHONY: build-autoconf build-autoconf-force
177
build-autoconf: stamps/build-autoconf
190
build-autoconf: stamps/build-autoconf
178
build-autoconf-force stamps/build-autoconf: stamps/extract-autoconf
191
build-autoconf-force stamps/build-autoconf: stamps/extract-autoconf
179
	mkdir -p build/autoconf && cd build/autoconf && \
192
	mkdir -p build/autoconf && cd build/autoconf && \
180
	../../autoconf-$(AUTOCONF_VERSION)/configure --prefix="$(SUPP_PREFIX)" && \
193
	../../autoconf-$(AUTOCONF_VERSION)/configure --prefix="$(SUPP_PREFIX)" && \
181
	$(MAKE) -j$(PROCS)
194
	$(MAKE) -j$(PROCS)
182
	[ -d stamps ] || mkdir stamps
195
	[ -d stamps ] || mkdir stamps
183
	touch stamps/build-autoconf;
196
	touch stamps/build-autoconf;
184
197
185
.PHONY: install-autoconf install-autoconf-force
198
.PHONY: install-autoconf install-autoconf-force
186
install-autoconf: stamps/install-autoconf
199
install-autoconf: stamps/install-autoconf
187
install-autoconf-force stamps/install-autoconf:  stamps/build-autoconf
200
install-autoconf-force stamps/install-autoconf:  stamps/build-autoconf
188
	cd build/autoconf && \
201
	cd build/autoconf && \
189
	$(MAKE) install
202
	$(MAKE) install
190
	[ -d stamps ] || mkdir stamps
203
	[ -d stamps ] || mkdir stamps
191
	touch stamps/install-autoconf;
204
	touch stamps/install-autoconf;
192
205
193
.PHONY: clean-autoconf
206
.PHONY: clean-autoconf
194
clean-autoconf:
207
clean-autoconf:
195
	rm -rf build/autoconf stamps/*-autoconf autoconf-*
208
	rm -rf build/autoconf stamps/*-autoconf autoconf-*
196
209
197
.PHONY: realclean-autoconf
210
.PHONY: realclean-autoconf
198
realclean-gdb: clean-autoconf
211
realclean-autoconf: clean-autoconf
199
	rm downloads/$(AUTOCONF_ARCHIVE)
212
	rm downloads/$(AUTOCONF_ARCHIVE)
200
213
201
214
202
############ SUPP: AUTOMAKE ############
215
############ SUPP: AUTOMAKE ############
203
216
204
.PHONY: download-automake download-automake-force
217
.PHONY: download-automake download-automake-force
205
download-automake: downloads/$(AUTOMAKE_ARCHIVE)
218
download-automake: downloads/$(AUTOMAKE_ARCHIVE)
206
download-automake-force downloads/$(AUTOMAKE_ARCHIVE):
219
download-automake-force downloads/$(AUTOMAKE_ARCHIVE):
207
	[ -d downloads ] || mkdir downloads ;
220
	[ -d downloads ] || mkdir downloads ;
208
	cd downloads && curl -LO $(AUTOMAKE_URL)
221
	cd downloads && curl -LO $(AUTOMAKE_URL)
209
222
210
.PHONY: extract-automake extract-automake-force
223
.PHONY: extract-automake extract-automake-force
211
extract-automake: stamps/extract-automake
224
extract-automake: stamps/extract-automake
212
extract-automake-force stamps/extract-automake: downloads/$(AUTOMAKE_ARCHIVE)
225
extract-automake-force stamps/extract-automake: downloads/$(AUTOMAKE_ARCHIVE)
213
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
226
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
214
	[ "$$t1" = "$(AUTOMAKE_MD5)" ] || \
227
	[ "$$t1" = "$(AUTOMAKE_MD5)" ] || \
215
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
228
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
216
	tar -jxf $< ;
229
	tar -jxf $< ;
217
	[ -d stamps ] || mkdir stamps ;
230
	[ -d stamps ] || mkdir stamps ;
218
	touch stamps/extract-automake;
231
	touch stamps/extract-automake;
219
232
220
.PHONY: build-automake build-automake-force
233
.PHONY: build-automake build-automake-force
221
build-automake: stamps/build-automake
234
build-automake: stamps/build-automake
222
build-automake-force stamps/build-automake: stamps/extract-automake stamps/install-autoconf
235
build-automake-force stamps/build-automake: stamps/extract-automake stamps/install-autoconf
223
	mkdir -p build/automake && cd build/automake && \
236
	mkdir -p build/automake && cd build/automake && \
224
	../../automake-$(AUTOMAKE_VERSION)/configure --prefix="$(SUPP_PREFIX)" && \
237
	../../automake-$(AUTOMAKE_VERSION)/configure --prefix="$(SUPP_PREFIX)" && \
225
	$(MAKE) -j$(PROCS)
238
	$(MAKE) -j$(PROCS)
226
	[ -d stamps ] || mkdir stamps
239
	[ -d stamps ] || mkdir stamps
227
	touch stamps/build-automake;
240
	touch stamps/build-automake;
228
241
229
.PHONY: install-automake install-automake-force
242
.PHONY: install-automake install-automake-force
230
install-automake: stamps/install-automake
243
install-automake: stamps/install-automake
231
install-automake-force stamps/install-automake: stamps/build-automake
244
install-automake-force stamps/install-automake: stamps/build-automake
232
	cd build/automake && \
245
	cd build/automake && \
233
	$(MAKE) install
246
	$(MAKE) install
234
	[ -d stamps ] || mkdir stamps
247
	[ -d stamps ] || mkdir stamps
235
	touch stamps/install-automake;
248
	touch stamps/install-automake;
236
249
237
.PHONY: clean-automake
250
.PHONY: clean-automake
238
clean-automake:
251
clean-automake:
239
	rm -rf build/automake stamps/*-automake automake-*
252
	rm -rf build/automake stamps/*-automake automake-*
240
253
241
.PHONY: realclean-automake
254
.PHONY: realclean-automake
242
realclean-automake: clean-automake
255
realclean-automake: clean-automake
243
	rm downloads/$(AUTOMAKE_ARCHIVE)
256
	rm downloads/$(AUTOMAKE_ARCHIVE)
244
257
245
258
246
############# AVR32 PATCHES ############
259
############# AVR32 PATCHES ############
247
260
248
.PHONY: download-avr32patches download-avr32patches-force
261
.PHONY: download-avr32patches download-avr32patches-force
249
download-avr32patches: downloads/$(AVR32PATCHES_ARCHIVE)
262
download-avr32patches: downloads/$(AVR32PATCHES_ARCHIVE)
250
download-avr32patches-force downloads/$(AVR32PATCHES_ARCHIVE):
263
download-avr32patches-force downloads/$(AVR32PATCHES_ARCHIVE):
251
	cd downloads && curl -LO $(AVR32PATCHES_URL)
264
	cd downloads && curl -LO $(AVR32PATCHES_URL)
252
265
253
.PHONY: extract-avr32patches extract-avr32patches-force
266
.PHONY: extract-avr32patches extract-avr32patches-force
254
extract-avr32patches: stamps/extract-avr32patches
267
extract-avr32patches: stamps/extract-avr32patches
255
extract-avr32patches-force stamps/extract-avr32patches: downloads/$(AVR32PATCHES_ARCHIVE)
268
extract-avr32patches-force stamps/extract-avr32patches: downloads/$(AVR32PATCHES_ARCHIVE)
256
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
269
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
257
	[ "$$t1" = "$(AVR32PATCHES_MD5)" ] || \
270
	[ "$$t1" = "$(AVR32PATCHES_MD5)" ] || \
258
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
271
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
259
	unzip -o $<
272
	unzip -o $<
260
	[ -d stamps ] || mkdir stamps
273
	[ -d stamps ] || mkdir stamps
261
	touch stamps/extract-avr32patches;
274
	touch stamps/extract-avr32patches;
262
275
263
.PHONY: clean-avr32patches
276
.PHONY: clean-avr32patches
264
clean-avr32patches:
277
clean-avr32patches:
265
	rm -rf stamps/*-avr32patches source
278
	rm -rf stamps/*-avr32patches source
266
279
267
.PHONY: realclean-avr32patches
280
.PHONY: realclean-avr32patches
268
realclean-avr32patches: clean-avr32patches
281
realclean-avr32patches: clean-avr32patches
269
	rm downloads/$(AVR32PATCHES_ARCHIVE)
282
	rm downloads/$(AVR32PATCHES_ARCHIVE)
270
283
271
284
272
############# AVR32 HEADERS ############
285
############# AVR32 HEADERS ############
273
286
274
.PHONY: download-avr32headers download-avr32headers-force
287
.PHONY: download-avr32headers download-avr32headers-force
275
download-avr32headers: downloads/$(AVR32HEADERS_ARCHIVE)
288
download-avr32headers: downloads/$(AVR32HEADERS_ARCHIVE)
276
download-avr32headers-force downloads/$(AVR32HEADERS_ARCHIVE):
289
download-avr32headers-force downloads/$(AVR32HEADERS_ARCHIVE):
277
	cd downloads && curl -LO $(AVR32HEADERS_URL)
290
	cd downloads && curl -LO $(AVR32HEADERS_URL)
278
291
279
.PHONY: install-headers install-headers-force
292
.PHONY: install-headers install-headers-force
280
install-headers: stamps/install-headers
293
install-headers: stamps/install-headers
281
install-headers-force stamps/install-headers: downloads/$(AVR32HEADERS_ARCHIVE) stamps/install-final-gcc
294
install-headers-force stamps/install-headers: downloads/$(AVR32HEADERS_ARCHIVE) stamps/install-final-gcc
282
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
295
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
283
	[ "$$t1" = "$(AVR32HEADERS_MD5)" ] || \
296
	[ "$$t1" = "$(AVR32HEADERS_MD5)" ] || \
284
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
297
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
285
	unzip -o $< -d "$(PREFIX)/$(TARGET)/include/" && \
298
	unzip -o $< -d "$(PREFIX)/$(TARGET)/include/" && \
286
	[ -d stamps ] || mkdir stamps
299
	[ -d stamps ] || mkdir stamps
287
	touch stamps/install-headers;
300
	touch stamps/install-headers;
288
301
289
.PHONY: clean-headers
302
.PHONY: clean-headers
290
clean-headers:
303
clean-headers:
291
	rm -rf stamps/*-headers $(PREFIX)/$(TARGET)/include/avr32
304
	rm -rf stamps/*-headers $(PREFIX)/$(TARGET)/include/avr32
292
305
293
.PHONY: realclean-headers
306
.PHONY: realclean-headers
294
realclean-headers: clean-headers
307
realclean-headers: clean-headers
295
	rm downloads/$(AVR32HEADERS_ARCHIVE)
308
	rm downloads/$(AVR32HEADERS_ARCHIVE)
296
309
297
310
298
################ NEWLIB ################
311
################ NEWLIB ################
299
312
300
.PHONY: download-newlib download-newlib-force
313
.PHONY: download-newlib download-newlib-force
301
download-newlib: downloads/$(NEWLIB_ARCHIVE)
314
download-newlib: downloads/$(NEWLIB_ARCHIVE)
302
download-newlib-force downloads/$(NEWLIB_ARCHIVE):
315
download-newlib-force downloads/$(NEWLIB_ARCHIVE):
303
	[ -d downloads ] || mkdir downloads ;
316
	[ -d downloads ] || mkdir downloads ;
304
	cd downloads && curl -LO $(NEWLIB_URL)
317
	cd downloads && curl -LO $(NEWLIB_URL)
305
318
306
.PHONY: extract-newlib extract-newlib-force
319
.PHONY: extract-newlib extract-newlib-force
307
extract-newlib: stamps/extract-newlib
320
extract-newlib: stamps/extract-newlib
308
extract-newlib-force stamps/extract-newlib : downloads/$(NEWLIB_ARCHIVE)
321
extract-newlib-force stamps/extract-newlib : downloads/$(NEWLIB_ARCHIVE)
309
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
322
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
310
	[ "$$t1" = "$(NEWLIB_MD5)" ] || \
323
	[ "$$t1" = "$(NEWLIB_MD5)" ] || \
311
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
324
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
312
	tar -xf $<
325
	tar -xf $<
313
	[ -d stamps ] || mkdir stamps
326
	[ -d stamps ] || mkdir stamps
314
	touch stamps/extract-newlib;
327
	touch stamps/extract-newlib;
315
328
316
329
317
.PHONY: patch-newlib patch-newlib-force
330
.PHONY: patch-newlib patch-newlib-force
318
patch-newlib: stamps/patch-newlib
331
patch-newlib: stamps/patch-newlib
319
patch-newlib-force stamps/patch-newlib: stamps/extract-newlib stamps/extract-avr32patches
332
patch-newlib-force stamps/patch-newlib: stamps/extract-newlib stamps/extract-avr32patches
320
	pushd newlib-$(NEWLIB_VERSION) ; \
333
	pushd newlib-$(NEWLIB_VERSION) ; \
321
	for f in ../source/avr32/newlib/*.patch; do \
334
	for f in ../source/avr32/newlib/*.patch; do \
322
	patch -N -p0 <$${f} ; \
335
	patch -N -p0 <$${f} ; \
323
	done ; \
336
	done ; \
324
	popd ;
337
	popd ;
325
	[ -d stamps ] || mkdir stamps
338
	[ -d stamps ] || mkdir stamps
326
	touch stamps/patch-newlib;
339
	touch stamps/patch-newlib;
327
340
328
.PHONY: regen-newlib regen-newlib-force
341
.PHONY: regen-newlib regen-newlib-force
329
regen-newlib: stamps/regen-newlib
342
regen-newlib: stamps/regen-newlib
330
regen-newlib-force stamps/regen-newlib: stamps/patch-newlib stamps/install-supp-tools
343
regen-newlib-force stamps/regen-newlib: stamps/patch-newlib stamps/install-supp-tools
331
	pushd newlib-$(NEWLIB_VERSION) ; \
344
	pushd newlib-$(NEWLIB_VERSION) ; \
332
	"$(SUPP_PREFIX)/bin/autoconf"; "$(SUPP_PREFIX)/bin/automake" ; \
345
	"$(SUPP_PREFIX)/bin/autoconf"; "$(SUPP_PREFIX)/bin/automake" ; \
333
	for dir in newlib/libc/machine/avr32 newlib/libc/machine newlib/libc/sys/avr32 newlib/libc/sys; do \
346
	for dir in newlib/libc/machine/avr32 newlib/libc/machine newlib/libc/sys/avr32 newlib/libc/sys; do \
334
	  pushd $$dir ; \
347
	  pushd $$dir ; \
335
	  "$(SUPP_PREFIX)/bin/aclocal" -I ../.. -I ../../.. -I ../../../.. ; \
348
	  "$(SUPP_PREFIX)/bin/aclocal" -I ../.. -I ../../.. -I ../../../.. ; \
336
	  "$(SUPP_PREFIX)/bin/autoconf"; "$(SUPP_PREFIX)/bin/automake"; \
349
	  "$(SUPP_PREFIX)/bin/autoconf"; "$(SUPP_PREFIX)/bin/automake"; \
337
	  popd ; \
350
	  popd ; \
338
	done; \
351
	done; \
339
	popd;
352
	popd;
340
	[ -d stamps ] || mkdir stamps
353
	[ -d stamps ] || mkdir stamps
341
	touch stamps/regen-newlib;
354
	touch stamps/regen-newlib;
342
355
343
NEWLIB_FLAGS="-ffunction-sections -fdata-sections	\
356
NEWLIB_FLAGS="-ffunction-sections -fdata-sections	\
344
-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -g -Os	\
357
-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -g -Os	\
345
-fomit-frame-pointer -fno-unroll-loops -D__BUFSIZ__=128	\
358
-fomit-frame-pointer -fno-unroll-loops -D__BUFSIZ__=128	\
346
-DSMALL_MEMORY"
359
-DSMALL_MEMORY"
347
360
348
.PHONY: build-newlib build-newlib-force
361
.PHONY: build-newlib build-newlib-force
349
build-newlib: stamps/build-newlib
362
build-newlib: stamps/build-newlib
350
build-newlib-force stamps/build-newlib: stamps/regen-newlib stamps/install-binutils stamps/install-gcc
363
build-newlib-force stamps/build-newlib: stamps/regen-newlib stamps/install-binutils stamps/install-gcc
351
	mkdir -p build/newlib && cd build/newlib && \
364
	mkdir -p build/newlib && cd build/newlib && \
352
	pushd ../../newlib-$(NEWLIB_VERSION) ; \
365
	pushd ../../newlib-$(NEWLIB_VERSION) ; \
353
	make clean ; \
366
	make clean ; \
354
	popd ; \
367
	popd ; \
355
	../../newlib-$(NEWLIB_VERSION)/configure --prefix=$(PREFIX)	\
368
	../../newlib-$(NEWLIB_VERSION)/configure --prefix=$(PREFIX)	\
356
	--with-build-time-tools=$(PREFIX)				\
369
	--with-build-time-tools=$(PREFIX)				\
357
	--target=$(TARGET) --disable-newlib-supplied-syscalls		\
370
	--target=$(TARGET) --disable-newlib-supplied-syscalls		\
358
	--disable-libgloss --disable-nls --disable-shared		\
371
	--disable-libgloss --disable-nls --disable-shared		\
359
	--enable-newlib-io-long-long --enable-newlib-io-long-double	\
372
	--enable-newlib-io-long-long --enable-newlib-io-long-double	\
360
	--enable-target-optspace --enable-newlib-io-pos-args		\
373
	--enable-target-optspace --enable-newlib-io-pos-args		\
361
	--enable-newlib-reent-small  && \
374
	--enable-newlib-reent-small  && \
362
	$(MAKE) -j$(PROCS) CFLAGS_FOR_TARGET=$(NEWLIB_FLAGS) CCASFLAGS=$(NEWLIB_FLAGS) && \
375
	$(MAKE) -j$(PROCS) CFLAGS_FOR_TARGET=$(NEWLIB_FLAGS) CCASFLAGS=$(NEWLIB_FLAGS) && \
363
	[ -d stamps ] || mkdir stamps
376
	[ -d stamps ] || mkdir stamps
364
	touch stamps/build-newlib;
377
	touch stamps/build-newlib;
365
378
366
.PHONY: install-newlib install-newlib-force
379
.PHONY: install-newlib install-newlib-force
367
install-newlib: stamps/install-newlib
380
install-newlib: stamps/install-newlib
368
install-newlib-force stamps/install-newlib: stamps/build-newlib
381
install-newlib-force stamps/install-newlib: stamps/build-newlib
369
	cd build/newlib && \
382
	cd build/newlib && \
370
	$(MAKE) install
383
	$(MAKE) install
371
	[ -d stamps ] || mkdir stamps
384
	[ -d stamps ] || mkdir stamps
372
	touch stamps/install-newlib;
385
	touch stamps/install-newlib;
373
386
374
.PHONY: clean-newlib
387
.PHONY: clean-newlib
375
clean-newlib:
388
clean-newlib:
376
	rm -rf build/newlib stamps/*-newlib newlib-*
389
	rm -rf build/newlib stamps/*-newlib newlib-*
377
390
378
.PHONY: realclean-newlib
391
.PHONY: realclean-newlib
379
realclean-newlib: clean-newlib
392
realclean-newlib: clean-newlib
380
	rm downloads/$(NEWLIB_ARCHIVE)
393
	rm downloads/$(NEWLIB_ARCHIVE)
381
394
382
395
383
################ BINUTILS ################
396
################ BINUTILS ################
384
397
385
.PHONY: download-binutils download-binutils-force
398
.PHONY: download-binutils download-binutils-force
386
download-binutils: downloads/$(BINUTILS_ARCHIVE)
399
download-binutils: downloads/$(BINUTILS_ARCHIVE)
387
download-binutils-force downloads/$(BINUTILS_ARCHIVE):
400
download-binutils-force downloads/$(BINUTILS_ARCHIVE):
388
	[ -d downloads ] || mkdir downloads ;
401
	[ -d downloads ] || mkdir downloads ;
389
	cd downloads && curl -LO $(BINUTILS_URL)
402
	cd downloads && curl -LO $(BINUTILS_URL)
390
403
391
.PHONY: extract-binutils extract-binutils-force
404
.PHONY: extract-binutils extract-binutils-force
392
extract-binutils: stamps/extract-binutils
405
extract-binutils: stamps/extract-binutils
393
extract-binutils-force stamps/extract-binutils: downloads/$(BINUTILS_ARCHIVE)
406
extract-binutils-force stamps/extract-binutils: downloads/$(BINUTILS_ARCHIVE)
394
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
407
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
395
	[ "$$t1" = "$(BINUTILS_MD5)" ] || \
408
	[ "$$t1" = "$(BINUTILS_MD5)" ] || \
396
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
409
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
397
	tar -jxf $< ;
410
	tar -jxf $< ;
398
	[ -d stamps ] || mkdir stamps ;
411
	[ -d stamps ] || mkdir stamps ;
399
	touch stamps/extract-binutils;
412
	touch stamps/extract-binutils;
400
413
401
.PHONY: patch-binutils patch-binutils-force
414
.PHONY: patch-binutils patch-binutils-force
402
patch-binutils: stamps/patch-binutils
415
patch-binutils: stamps/patch-binutils
403
patch-binutils-force stamps/patch-binutils: stamps/extract-binutils stamps/extract-avr32patches
416
patch-binutils-force stamps/patch-binutils: stamps/extract-binutils stamps/extract-avr32patches
404
	pushd binutils-$(BINUTILS_VERSION) ; \
417
	pushd binutils-$(BINUTILS_VERSION) ; \
405
	for f in ../source/avr32/binutils/*.patch; do \
418
	for f in ../source/avr32/binutils/*.patch; do \
406
	patch -N -p0 <$${f} ; \
419
	patch -N -p0 <$${f} ; \
407
	done ; \
420
	done ; \
408
	popd ; \
421
	popd ; \
409
	[ -d stamps ] || mkdir stamps
422
	[ -d stamps ] || mkdir stamps
410
	touch stamps/patch-binutils;
423
	touch stamps/patch-binutils;
411
424
412
.PHONY: regen-binutils regen-binutils-force
425
.PHONY: regen-binutils regen-binutils-force
413
regen-binutils: stamps/regen-binutils
426
regen-binutils: stamps/regen-binutils
414
regen-binutils-force stamps/regen-binutils: stamps/patch-binutils stamps/install-supp-tools
427
regen-binutils-force stamps/regen-binutils: stamps/patch-binutils stamps/install-supp-tools
415
	pushd binutils-$(BINUTILS_VERSION) ; \
428
	pushd binutils-$(BINUTILS_VERSION) ; \
416
	"$(SUPP_PREFIX)/bin/aclocal" -I config ; \
429
	"$(SUPP_PREFIX)/bin/aclocal" -I config ; \
417
	"$(SUPP_PREFIX)/bin/autoconf" ; \
430
	"$(SUPP_PREFIX)/bin/autoconf" ; \
418
	"$(SUPP_PREFIX)/bin/automake" ; \
431
	"$(SUPP_PREFIX)/bin/automake" ; \
419
	"$(SUPP_PREFIX)/bin/autoheader" ; \
432
	"$(SUPP_PREFIX)/bin/autoheader" ; \
420
	for dir in bfd opcodes binutils gas ld; do \
433
	for dir in bfd opcodes binutils gas ld; do \
421
	  pushd $$dir ; \
434
	  pushd $$dir ; \
422
	  "$(SUPP_PREFIX)/bin/autoconf"; \
435
	  "$(SUPP_PREFIX)/bin/autoconf"; \
423
	  "$(SUPP_PREFIX)/bin/automake"; \
436
	  "$(SUPP_PREFIX)/bin/automake"; \
424
	  "$(SUPP_PREFIX)/bin/autoheader"; \
437
	  "$(SUPP_PREFIX)/bin/autoheader"; \
425
	  popd ; \
438
	  popd ; \
426
	done; \
439
	done; \
427
	popd; \
440
	popd; \
428
	[ -d stamps ] || mkdir stamps ;
441
	[ -d stamps ] || mkdir stamps ;
429
	touch stamps/regen-binutils;
442
	touch stamps/regen-binutils;
430
443
431
.PHONY: build-binutils build-binutils-force
444
.PHONY: build-binutils build-binutils-force
432
build-binutils: stamps/build-binutils
445
build-binutils: stamps/build-binutils
433
build-binutils-force stamps/build-binutils: stamps/regen-binutils stamps/install-supp-tools
446
build-binutils-force stamps/build-binutils: stamps/regen-binutils stamps/install-supp-tools
434
	cd binutils-$(BINUTILS_VERSION) ; \
447
	cd binutils-$(BINUTILS_VERSION) ; \
435
	./configure   --enable-maintainer-mode		\
448
	./configure   --enable-maintainer-mode		\
436
	--prefix="$(PREFIX)" --target=$(TARGET) --disable-nls		\
449
	--prefix="$(PREFIX)" --target=$(TARGET) --disable-nls		\
437
	--disable-shared --disable-werror				\
450
	--disable-shared --disable-werror				\
438
	--with-sysroot="$(PREFIX)/$(TARGET)" --with-bugurl=$(BUG_URL) &&	\
451
	--with-sysroot="$(PREFIX)/$(TARGET)" --with-bugurl=$(BUG_URL) &&	\
439
	$(MAKE) all-bfd TARGET-bfd=headers; \
452
	$(MAKE) all-bfd TARGET-bfd=headers; \
440
	rm bfd/Makefile; \
453
	rm bfd/Makefile; \
441
	make configure-bfd; \
454
	make configure-bfd; \
442
	$(MAKE)
455
	$(MAKE)
443
	[ -d stamps ] || mkdir stamps ;
456
	[ -d stamps ] || mkdir stamps ;
444
	touch stamps/build-binutils;
457
	touch stamps/build-binutils;
445
458
446
.PHONY: install-binutils install-binutils-force
459
.PHONY: install-binutils install-binutils-force
447
install-binutils: stamps/install-binutils
460
install-binutils: stamps/install-binutils
448
install-binutils-force stamps/install-binutils: stamps/build-binutils
461
install-binutils-force stamps/install-binutils: stamps/build-binutils
449
	cd binutils-$(BINUTILS_VERSION) && \
462
	cd binutils-$(BINUTILS_VERSION) && \
450
	$(MAKE) installdirs install-host install-target
463
	$(MAKE) installdirs install-host install-target
451
	[ -d stamps ] || mkdir stamps ;
464
	[ -d stamps ] || mkdir stamps ;
452
	touch stamps/install-binutils;
465
	touch stamps/install-binutils;
453
466
454
467
455
.PHONY: clean-binutils
468
.PHONY: clean-binutils
456
clean-binutils:
469
clean-binutils:
457
	rm -rf build/binutils stamps/*-binutils binutils-*
470
	rm -rf build/binutils stamps/*-binutils binutils-*
458
471
459
.PHONY: realclean-binutils
472
.PHONY: realclean-binutils
460
realclean-binutils: clean-binutils
473
realclean-binutils: clean-binutils
461
	rm downloads/$(BINUTILS_ARCHIVE)
474
	rm downloads/$(BINUTILS_ARCHIVE)
462
475
463
476
464
########## DFU PROGRAMMER ###########
477
########## DFU PROGRAMMER ###########
465
478
466
.PHONY: download-dfu download-dfu-force
479
.PHONY: download-dfu download-dfu-force
467
download-dfu: downloads/$(DFU_ARCHIVE)
480
download-dfu: downloads/$(DFU_ARCHIVE)
468
download-dfu-force downloads/$(DFU_ARCHIVE):
481
download-dfu-force downloads/$(DFU_ARCHIVE):
469
	[ -d downloads ] || mkdir downloads ;
482
	[ -d downloads ] || mkdir downloads ;
470
	cd downloads && curl -LO $(DFU_URL)
483
	cd downloads && curl -LO $(DFU_URL)
471
484
472
.PHONY: extract-dfu extract-dfu-force
485
.PHONY: extract-dfu extract-dfu-force
473
extract-dfu: stamps/extract-dfu
486
extract-dfu: stamps/extract-dfu
474
extract-dfu-force stamps/extract-dfu: downloads/$(DFU_ARCHIVE)
487
extract-dfu-force stamps/extract-dfu: downloads/$(DFU_ARCHIVE)
475
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
488
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
476
	[ "$$t1" = "$(DFU_MD5)" ] || \
489
	[ "$$t1" = "$(DFU_MD5)" ] || \
477
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
490
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
478
	tar -zxf $< ;
491
	tar -zxf $< ;
479
	[ -d stamps ] || mkdir stamps ;
492
	[ -d stamps ] || mkdir stamps ;
480
	touch stamps/extract-dfu;
493
	touch stamps/extract-dfu;
481
494
482
.PHONY: build-dfu build-dfu-force
495
.PHONY: build-dfu build-dfu-force
483
build-dfu: stamps/build-dfu
496
build-dfu: stamps/build-dfu
484
build-dfu-force stamps/build-dfu: stamps/extract-dfu
497
build-dfu-force stamps/build-dfu: stamps/extract-dfu
485
	mkdir -p build/dfu-programmer && cd build/dfu-programmer && \
498
	mkdir -p build/dfu-programmer && cd build/dfu-programmer && \
486
	../../dfu-programmer-$(DFU_VERSION)/configure --prefix="$(PREFIX)" && \
499
	../../dfu-programmer-$(DFU_VERSION)/configure --prefix="$(PREFIX)" && \
487
	$(MAKE) -j$(PROCS)
500
	$(MAKE) -j$(PROCS)
488
	[ -d stamps ] || mkdir stamps
501
	[ -d stamps ] || mkdir stamps
489
	touch stamps/build-dfu;
502
	touch stamps/build-dfu;
490
503
491
.PHONY: install-dfu install-dfu-force
504
.PHONY: install-dfu install-dfu-force
492
install-dfu: stamps/install-dfu
505
install-dfu: stamps/install-dfu
493
install-dfu-force stamps/install-dfu: stamps/build-dfu
506
install-dfu-force stamps/install-dfu: stamps/build-dfu
494
	cd build/dfu-programmer && \
507
	cd build/dfu-programmer && \
495
	$(MAKE) install
508
	$(MAKE) install
496
	[ -d stamps ] || mkdir stamps
509
	[ -d stamps ] || mkdir stamps
497
	touch stamps/install-dfu;
510
	touch stamps/install-dfu;
498
511
499
.PHONY: clean-dfu
512
.PHONY: clean-dfu
500
clean-dfu:
513
clean-dfu:
501
	rm -rf build/dfu stamps/*-dfu dfu-*
514
	rm -rf build/dfu stamps/*-dfu dfu-*
502
515
503
.PHONY: realclean-dfu
516
.PHONY: realclean-dfu
504
realclean-dfu: clean-dfu
517
realclean-dfu: clean-dfu
505
	rm downloads/$(DFU_ARCHIVE)
518
	rm downloads/$(DFU_ARCHIVE)
506
519
507
520
508
################ Bootstrap GCC ################
521
################ Bootstrap GCC ################
509
522
510
.PHONY: download-gcc download-gcc-force
523
.PHONY: download-gcc download-gcc-force
511
download-gcc: downloads/$(GCC_ARCHIVE)
524
download-gcc: downloads/$(GCC_ARCHIVE)
512
download-gcc-force downloads/$(GCC_ARCHIVE):
525
download-gcc-force downloads/$(GCC_ARCHIVE):
513
	[ -d downloads ] || mkdir downloads ;
526
	[ -d downloads ] || mkdir downloads ;
514
	cd downloads && curl -LO $(GCC_URL)
527
	cd downloads && curl -LO $(GCC_URL)
515
528
516
.PHONY: extract-gcc extract-gcc-force
529
.PHONY: extract-gcc extract-gcc-force
517
extract-gcc: stamps/extract-gcc
530
extract-gcc: stamps/extract-gcc
518
extract-gcc-force stamps/extract-gcc: downloads/$(GCC_ARCHIVE)
531
extract-gcc-force stamps/extract-gcc: downloads/$(GCC_ARCHIVE)
519
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
532
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
520
	[ "$$t1" = "$(GCC_MD5)" ] || \
533
	[ "$$t1" = "$(GCC_MD5)" ] || \
521
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
534
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
522
	tar -jxf $< ;
535
	tar -jxf $< ;
523
	[ -d stamps ] || mkdir stamps ;
536
	[ -d stamps ] || mkdir stamps ;
524
	touch stamps/extract-gcc;
537
	touch stamps/extract-gcc;
525
538
526
.PHONY: patch-gcc patch-gcc-force
539
.PHONY: patch-gcc patch-gcc-force
527
patch-gcc: stamps/patch-gcc
540
patch-gcc: stamps/patch-gcc
528
patch-gcc-force stamps/patch-gcc: stamps/extract-gcc stamps/extract-avr32patches
541
patch-gcc-force stamps/patch-gcc: stamps/extract-gcc stamps/extract-avr32patches
529
	pushd gcc-$(GCC_VERSION) ; \
542
	pushd gcc-$(GCC_VERSION) ; \
530
	for f in ../source/avr32/gcc/*.patch; do \
543
	for f in ../source/avr32/gcc/*.patch; do \
531
	patch -N -p0 <$${f} ; \
544
	patch -N -p0 <$${f} ; \
532
	done ; \
545
	done ; \
533
	popd ;
546
	popd ;
534
	[ -d stamps ] || mkdir stamps
547
	[ -d stamps ] || mkdir stamps
535
	touch stamps/patch-gcc;
548
	touch stamps/patch-gcc;
536
549
537
CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections			\
550
CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections			\
538
-fomit-frame-pointer -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -g	\
551
-fomit-frame-pointer -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -g	\
539
-Os -fno-unroll-loops"
552
-Os -fno-unroll-loops"
540
553
541
.PHONY: build-gcc build-gcc-force
554
.PHONY: build-gcc build-gcc-force
542
build-gcc: stamps/build-gcc
555
build-gcc: stamps/build-gcc
543
build-gcc-force stamps/build-gcc: stamps/install-binutils stamps/patch-gcc
556
build-gcc-force stamps/build-gcc: stamps/install-binutils stamps/patch-gcc
544
	mkdir -p build/gcc && cd build/gcc && \
557
	mkdir -p build/gcc && cd build/gcc && \
545
	pushd ../../gcc-$(GCC_VERSION) ; \
558
	pushd ../../gcc-$(GCC_VERSION) ; \
546
	make clean ; \
559
	make clean ; \
547
	popd ; \
560
	popd ; \
548
	../../gcc-$(GCC_VERSION)/configure --prefix="$(PREFIX)"		\
561
	../../gcc-$(GCC_VERSION)/configure --prefix="$(PREFIX)"		\
549
	--target=$(TARGET) --enable-languages="c" --with-gnu-ld		\
562
	--target=$(TARGET) --enable-languages="c" --with-gnu-ld		\
550
	--with-gnu-as --with-newlib --disable-nls --disable-libssp	\
563
	--with-gnu-as --with-newlib --disable-nls --disable-libssp	\
551
	--with-dwarf2 --enable-sjlj-exceptions				\
564
	--with-dwarf2 --enable-sjlj-exceptions				\
552
	--enable-version-specific-runtime-libs --disable-libstdcxx-pch	\
565
	--enable-version-specific-runtime-libs --disable-libstdcxx-pch	\
553
	--disable-shared						\
566
	--disable-shared						\
554
	--with-build-time-tools="$(PREFIX)/$(TARGET)/bin"		\
567
	--with-build-time-tools="$(PREFIX)/$(TARGET)/bin"		\
555
	--enable-cxx-flags=$(CFLAGS_FOR_TARGET)				\
568
	--enable-cxx-flags=$(CFLAGS_FOR_TARGET)				\
556
	--with-sysroot="$(PREFIX)/$(TARGET)"				\
569
	--with-sysroot="$(PREFIX)/$(TARGET)"				\
557
	--with-build-sysroot="$(PREFIX)/$(TARGET)"			\
570
	--with-build-sysroot="$(PREFIX)/$(TARGET)"			\
558
	--with-build-time-tools="$(PREFIX)/$(TARGET)/bin"		\
571
	--with-build-time-tools="$(PREFIX)/$(TARGET)/bin"		\
559
	CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)				\
572
	CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)				\
560
	LDFLAGS_FOR_TARGET="--sysroot=\"$(PREFIX)/$(TARGET)\""		\
573
	LDFLAGS_FOR_TARGET="--sysroot=\"$(PREFIX)/$(TARGET)\""		\
561
	CPPFLAGS_FOR_TARGET="--sysroot=\"$(PREFIX)/$(TARGET)\""		\
574
	CPPFLAGS_FOR_TARGET="--sysroot=\"$(PREFIX)/$(TARGET)\""		\
562
	--with-bugurl=$(BUG_URL) \
575
	--with-bugurl=$(BUG_URL) \
563
	--with-pkgversion=$(PKG_VERSION) && \
576
	--with-pkgversion=$(PKG_VERSION) && \
564
	$(MAKE) -j$(PROCS)
577
	$(MAKE) -j$(PROCS)
565
	[ -d stamps ] || mkdir stamps
578
	[ -d stamps ] || mkdir stamps
566
	touch stamps/build-gcc;
579
	touch stamps/build-gcc;
567
580
568
.PHONY: install-gcc install-gcc-force
581
.PHONY: install-gcc install-gcc-force
569
install-gcc: stamps/install-gcc
582
install-gcc: stamps/install-gcc
570
install-gcc-force stamps/install-gcc: stamps/build-gcc
583
install-gcc-force stamps/install-gcc: stamps/build-gcc
571
	cd build/gcc && \
584
	cd build/gcc && \
572
	$(MAKE) installdirs install-target && \
585
	$(MAKE) installdirs install-target && \
573
	$(MAKE) -C gcc install-common install-cpp install- install-driver install-headers install-man
586
	$(MAKE) -C gcc install-common install-cpp install- install-driver install-headers install-man
574
	[ -d stamps ] || mkdir stamps
587
	[ -d stamps ] || mkdir stamps
575
	touch stamps/install-gcc;
588
	touch stamps/install-gcc;
576
589
577
.PHONY: clean-gcc
590
.PHONY: clean-gcc
578
clean-gcc:
591
clean-gcc:
579
	rm -rf build/gcc stamps/*-gcc gcc-*
592
	rm -rf build/gcc stamps/*-gcc gcc-*
580
593
581
.PHONY: realclean-gcc
594
.PHONY: realclean-gcc
582
realclean-gcc: clean-gcc
595
realclean-gcc: clean-gcc
583
	rm downloads/$(GCC_ARCHIVE)
596
	rm downloads/$(GCC_ARCHIVE)
584
597
585
598
586
################ Final GCC ################
599
################ Final GCC ################
587
600
588
.PHONY: build-final-gcc build-final-gcc-force
601
.PHONY: build-final-gcc build-final-gcc-force
589
build-final-gcc: stamps/build-final-gcc
602
build-final-gcc: stamps/build-final-gcc
590
build-final-gcc-force stamps/build-final-gcc: stamps/install-binutils stamps/install-gcc stamps/install-newlib stamps/patch-gcc
603
build-final-gcc-force stamps/build-final-gcc: stamps/install-binutils stamps/install-gcc stamps/install-newlib stamps/patch-gcc
591
	mkdir -p build/final-gcc && cd build/final-gcc && \
604
	mkdir -p build/final-gcc && cd build/final-gcc && \
592
	pushd ../../gcc-$(GCC_VERSION) ; \
605
	pushd ../../gcc-$(GCC_VERSION) ; \
593
	make clean ; \
606
	make clean ; \
594
	popd ; \
607
	popd ; \
595
	../../gcc-$(GCC_VERSION)/configure --prefix=$(PREFIX) \
608
	../../gcc-$(GCC_VERSION)/configure --prefix=$(PREFIX) \
596
	--target=$(TARGET) $(DEPENDENCIES) --enable-languages="c,c++" --with-gnu-ld \
609
	--target=$(TARGET) $(DEPENDENCIES) --enable-languages="c,c++" --with-gnu-ld \
597
	--with-gnu-as --with-newlib --disable-nls --disable-libssp \
610
	--with-gnu-as --with-newlib --disable-nls --disable-libssp \
598
	--with-dwarf2 --enable-sjlj-exceptions \
611
	--with-dwarf2 --enable-sjlj-exceptions \
599
	--enable-version-specific-runtime-libs --disable-libstdcxx-pch \
612
	--enable-version-specific-runtime-libs --disable-libstdcxx-pch \
600
	--disable-shared --enable-__cxa_atexit \
613
	--disable-shared --enable-__cxa_atexit \
601
	--with-build-time-tools=$(PREFIX)/$(TARGET)/bin \
614
	--with-build-time-tools=$(PREFIX)/$(TARGET)/bin \
602
	--enable-cxx-flags=$(CFLAGS_FOR_TARGET) \
615
	--enable-cxx-flags=$(CFLAGS_FOR_TARGET) \
603
	--with-sysroot=$(PREFIX)/$(TARGET) \
616
	--with-sysroot=$(PREFIX)/$(TARGET) \
604
	--with-build-sysroot=$(PREFIX)/$(TARGET) \
617
	--with-build-sysroot=$(PREFIX)/$(TARGET) \
605
	--with-build-time-tools=$(PREFIX)/$(TARGET)/bin \
618
	--with-build-time-tools=$(PREFIX)/$(TARGET)/bin \
606
	CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET) \
619
	CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET) \
607
	LDFLAGS_FOR_TARGET="--sysroot=$(PREFIX)/$(TARGET)" \
620
	LDFLAGS_FOR_TARGET="--sysroot=$(PREFIX)/$(TARGET)" \
608
	CPPFLAGS_FOR_TARGET="--sysroot=$(PREFIX)/$(TARGET)" \
621
	CPPFLAGS_FOR_TARGET="--sysroot=$(PREFIX)/$(TARGET)" \
609
	--with-bugurl=$(BUG_URL) \
622
	--with-bugurl=$(BUG_URL) \
610
	--with-pkgversion=$(PKG_VERSION) && \
623
	--with-pkgversion=$(PKG_VERSION) && \
611
	$(MAKE) -j$(PROCS)
624
	$(MAKE) -j$(PROCS)
612
	[ -d stamps ] || mkdir stamps
625
	[ -d stamps ] || mkdir stamps
613
	touch stamps/build-final-gcc;
626
	touch stamps/build-final-gcc;
614
627
615
.PHONY: install-final-gcc install-final-gcc-force
628
.PHONY: install-final-gcc install-final-gcc-force
616
install-final-gcc: stamps/install-final-gcc
629
install-final-gcc: stamps/install-final-gcc
617
install-final-gcc-force stamps/install-final-gcc: stamps/build-final-gcc
630
install-final-gcc-force stamps/install-final-gcc: stamps/build-final-gcc
618
	cd build/final-gcc && \
631
	cd build/final-gcc && \
619
	$(MAKE) installdirs install-target && \
632
	$(MAKE) installdirs install-target && \
620
	$(MAKE) -C gcc install-common install-cpp install- install-driver install-headers install-man
633
	$(MAKE) -C gcc install-common install-cpp install- install-driver install-headers install-man
621
	[ -d stamps ] || mkdir stamps
634
	[ -d stamps ] || mkdir stamps
622
	touch stamps/install-final-gcc;
635
	touch stamps/install-final-gcc;
623
636
624
.PHONY: clean-final-gcc
637
.PHONY: clean-final-gcc
625
clean-final-gcc: clean-gcc
638
clean-final-gcc: clean-gcc
626
	rm -rf build/final-gcc stamps/*-final-gcc
639
	rm -rf build/final-gcc stamps/*-final-gcc
627
640
628
.PHONY: realclean-final-gcc
641
.PHONY: realclean-final-gcc
629
realclean-final-gcc: realclean-gcc
642
realclean-final-gcc: realclean-gcc
630
643
631
644
632
########## GDB ###########
645
########## GDB ###########
633
646
634
.PHONY: download-gdb download-gdb-force
647
.PHONY: download-gdb download-gdb-force
635
download-gdb: downloads/$(GDB_ARCHIVE)
648
download-gdb: downloads/$(GDB_ARCHIVE)
636
download-gdb-force downloads/$(GDB_ARCHIVE):
649
download-gdb-force downloads/$(GDB_ARCHIVE):
637
	[ -d downloads ] || mkdir downloads ;
650
	[ -d downloads ] || mkdir downloads ;
638
	cd downloads && curl -LO $(GDB_URL)
651
	cd downloads && curl -LO $(GDB_URL)
639
652
640
.PHONY: extract-gdb extract-gdb-force
653
.PHONY: extract-gdb extract-gdb-force
641
extract-gdb: stamps/extract-gdb
654
extract-gdb: stamps/extract-gdb
642
extract-gdb-force stamps/extract-gdb: downloads/$(GDB_ARCHIVE)
655
extract-gdb-force stamps/extract-gdb: downloads/$(GDB_ARCHIVE)
643
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
656
	@(t1=`openssl md5 $< | cut -f 2 -d " " -` && \
644
	[ "$$t1" = "$(GDB_MD5)" ] || \
657
	[ "$$t1" = "$(GDB_MD5)" ] || \
645
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
658
	( echo "Bad Checksum! Please remove the following file and retry: $<" && false ))
646
	tar -jxf $< ;
659
	tar -jxf $< ;
647
	[ -d stamps ] || mkdir stamps ;
660
	[ -d stamps ] || mkdir stamps ;
648
	touch stamps/extract-gdb;
661
	touch stamps/extract-gdb;
649
662
650
.PHONY: patch-gdb patch-gdb-force
663
.PHONY: patch-gdb patch-gdb-force
651
patch-gdb: stamps/patch-gdb
664
patch-gdb: stamps/patch-gdb
652
patch-gdb-force stamps/patch-gdb: stamps/extract-gdb stamps/extract-avr32patches
665
patch-gdb-force stamps/patch-gdb: stamps/extract-gdb stamps/extract-avr32patches
653
	pushd gdb-$(GDB_VERSION) ; \
666
	pushd gdb-$(GDB_VERSION) ; \
654
	for f in ../source/avr32/gdb/*.patch; do \
667
	for f in ../source/avr32/gdb/*.patch; do \
655
	patch -N -p0 <$${f} ; \
668
	patch -N -p0 <$${f} ; \
656
	done ; \
669
	done ; \
657
	popd ; \
670
	popd ; \
658
	[ -d stamps ] || mkdir stamps
671
	[ -d stamps ] || mkdir stamps
659
	touch stamps/patch-gdb;
672
	touch stamps/patch-gdb;
660
673
661
.PHONY: regen-gdb regen-gdb-force
674
.PHONY: regen-gdb regen-gdb-force
662
regen-gdb: stamps/regen-gdb
675
regen-gdb: stamps/regen-gdb
663
regen-gdb-force stamps/regen-gdb: stamps/patch-gdb stamps/install-supp-tools
676
regen-gdb-force stamps/regen-gdb: stamps/patch-gdb stamps/install-supp-tools
664
	pushd gdb-$(GDB_VERSION) ; \
677
	pushd gdb-$(GDB_VERSION) ; \
665
	"$(SUPP_PREFIX)/bin/aclocal" -I config ; \
678
	"$(SUPP_PREFIX)/bin/aclocal" -I config ; \
666
	"$(SUPP_PREFIX)/bin/autoconf" ; \
679
	"$(SUPP_PREFIX)/bin/autoconf" ; \
667
	"$(SUPP_PREFIX)/bin/automake" ; \
680
	"$(SUPP_PREFIX)/bin/automake" ; \
668
	"$(SUPP_PREFIX)/bin/autoheader" ; \
681
	"$(SUPP_PREFIX)/bin/autoheader" ; \
669
	for dir in bfd opcodes gdb; do \
682
	for dir in bfd opcodes gdb; do \
670
	  pushd $$dir ; \
683
	  pushd $$dir ; \
671
	  echo "JESS 1: $$dir" >&2 ; \
684
	  echo "JESS 1: $$dir" >&2 ; \
672
	  "$(SUPP_PREFIX)/bin/autoconf"; \
685
	  "$(SUPP_PREFIX)/bin/autoconf"; \
673
	  "$(SUPP_PREFIX)/bin/automake"; \
686
	  "$(SUPP_PREFIX)/bin/automake"; \
674
	  "$(SUPP_PREFIX)/bin/autoheader"; \
687
	  "$(SUPP_PREFIX)/bin/autoheader"; \
675
	  echo "JESS 2: $$dir" >&2 ; \
688
	  echo "JESS 2: $$dir" >&2 ; \
676
	  popd ; \
689
	  popd ; \
677
	done; \
690
	done; \
678
	popd; \
691
	popd; \
679
	[ -d stamps ] || mkdir stamps ;
692
	[ -d stamps ] || mkdir stamps ;
680
	touch stamps/regen-gdb;
693
	touch stamps/regen-gdb;
681
694
682
.PHONY: build-gdb build-gdb-force
695
.PHONY: build-gdb build-gdb-force
683
build-gdb: stamps/build-gdb
696
build-gdb: stamps/build-gdb
684
build-gdb-force stamps/build-gdb: stamps/regen-gdb stamps/install-supp-tools
697
build-gdb-force stamps/build-gdb: stamps/regen-gdb stamps/install-supp-tools
685
	echo "JESS 3" >&2 ; \
698
	echo "JESS 3" >&2 ; \
686
	mkdir -p build/gdb && cd build/gdb && \
699
	mkdir -p build/gdb && cd build/gdb && \
687
	../../gdb-$(GDB_VERSION)/configure --prefix="$(PREFIX)" --target=$(TARGET) --disable-werror && \
700
	../../gdb-$(GDB_VERSION)/configure --prefix="$(PREFIX)" --target=$(TARGET) --disable-werror && \
688
	$(MAKE) -j$(PROCS)
701
	$(MAKE) -j$(PROCS)
689
	$(MAKE) installdirs install-host install-target
702
	$(MAKE) installdirs install-host install-target
690
	[ -d stamps ] || mkdir stamps
703
	[ -d stamps ] || mkdir stamps
691
	touch stamps/build-gdb;
704
	touch stamps/build-gdb;
692
705
693
.PHONY: install-gdb install-gdb-force
706
.PHONY: install-gdb install-gdb-force
694
install-gdb: stamps/install-gdb
707
install-gdb: stamps/install-gdb
695
install-gdb-force stamps/install-gdb: stamps/build-gdb
708
install-gdb-force stamps/install-gdb: stamps/build-gdb
696
	cd build/gdb && \
709
	cd build/gdb && \
697
	$(MAKE) install
710
	$(MAKE) install
698
	[ -d stamps ] || mkdir stamps
711
	[ -d stamps ] || mkdir stamps
699
	touch stamps/install-gdb;
712
	touch stamps/install-gdb;
700
713
701
.PHONY: clean-gdb
714
.PHONY: clean-gdb
702
clean-gdb:
715
clean-gdb:
703
	rm -rf build/gdb stamps/*-gdb gdb-*
716
	rm -rf build/gdb stamps/*-gdb gdb-*
704
717
705
.PHONY: realclean-gdb
718
.PHONY: realclean-gdb
706
realclean-gdb: clean-gdb
719
realclean-gdb: clean-gdb
707
	rm downloads/$(GDB_ARCHIVE)
720
	rm downloads/$(GDB_ARCHIVE)
708
721
709
################ NON-WORKING/NON-ADJUSTED TARGETS ################
722
################ NON-WORKING/NON-ADJUSTED TARGETS ################
710
723
711
724
712
gcc-optsize-patch: gcc-$(GCC_VERSION)-$(CS_BASE)/
725
gcc-optsize-patch: gcc-$(GCC_VERSION)-$(CS_BASE)/
713
	pushd gcc-$(GCC_VERSION)-$(CS_BASE) ; \
726
	pushd gcc-$(GCC_VERSION)-$(CS_BASE) ; \
714
	patch -N -p1 < ../patches/gcc-optsize.patch ; \
727
	patch -N -p1 < ../patches/gcc-optsize.patch ; \
715
	popd ;
728
	popd ;
716
729
717
gmp: gmp-$(CS_BASE)/ sudomode
730
gmp: gmp-$(CS_BASE)/ sudomode
718
	sudo -u $(SUDO_USER) mkdir -p build/gmp && cd build/gmp ; \
731
	sudo -u $(SUDO_USER) mkdir -p build/gmp && cd build/gmp ; \
719
	pushd ../../gmp-$(CS_BASE) ; \
732
	pushd ../../gmp-$(CS_BASE) ; \
720
	make clean ; \
733
	make clean ; \
721
	popd ; \
734
	popd ; \
722
	sudo -u $(SUDO_USER) ../../gmp-$(CS_BASE)/configure --disable-shared && \
735
	sudo -u $(SUDO_USER) ../../gmp-$(CS_BASE)/configure --disable-shared && \
723
	sudo -u $(SUDO_USER) $(MAKE) -j$(PROCS) all && \
736
	sudo -u $(SUDO_USER) $(MAKE) -j$(PROCS) all && \
724
	$(MAKE) install
737
	$(MAKE) install
725
738
726
mpc: mpc-$(MPC_VERSION)/ sudomode
739
mpc: mpc-$(MPC_VERSION)/ sudomode
727
	sudo -u $(SUDO_USER) mkdir -p build/gmp && cd build/gmp ; \
740
	sudo -u $(SUDO_USER) mkdir -p build/gmp && cd build/gmp ; \
728
	pushd ../../mpc-$(MPC_VERSION) ; \
741
	pushd ../../mpc-$(MPC_VERSION) ; \
729
	make clean ; \
742
	make clean ; \
730
	popd ; \
743
	popd ; \
731
	sudo -u $(SUDO_USER) ../../mpc-$(MPC_VERSION)/configure --disable-shared && \
744
	sudo -u $(SUDO_USER) ../../mpc-$(MPC_VERSION)/configure --disable-shared && \
732
	sudo -u $(SUDO_USER) $(MAKE) -j$(PROCS) all && \
745
	sudo -u $(SUDO_USER) $(MAKE) -j$(PROCS) all && \
733
	$(MAKE) install
746
	$(MAKE) install
734
747
735
mpc-$(MPC_VERSION) : $(LOCAL_BASE)/mpc-$(CS_VERSION).tar.bz2
748
mpc-$(MPC_VERSION) : $(LOCAL_BASE)/mpc-$(CS_VERSION).tar.bz2
736
ifeq ($(USER),root)
749
ifeq ($(USER),root)
737
	sudo -u $(SUDO_USER) tar -jxf $<
750
	sudo -u $(SUDO_USER) tar -jxf $<
738
else
751
else
739
	tar -jxf $<
752
	tar -jxf $<
740
endif
753
endif
741
754
742
mpfr: gmp mpfr-$(CS_BASE)/ sudomode
755
mpfr: gmp mpfr-$(CS_BASE)/ sudomode
743
	sudo -u $(SUDO_USER) mkdir -p build/mpfr && cd build/mpfr && \
756
	sudo -u $(SUDO_USER) mkdir -p build/mpfr && cd build/mpfr && \
744
	pushd ../../mpfr-$(CS_BASE) ; \
757
	pushd ../../mpfr-$(CS_BASE) ; \
745
	make clean ; \
758
	make clean ; \
746
	popd ; \
759
	popd ; \
747
	sudo -u $(SUDO_USER) ../../mpfr-$(CS_BASE)/configure LDFLAGS="-Wl,-search_paths_first" --disable-shared && \
760
	sudo -u $(SUDO_USER) ../../mpfr-$(CS_BASE)/configure LDFLAGS="-Wl,-search_paths_first" --disable-shared && \
748
	sudo -u $(SUDO_USER) $(MAKE) -j$(PROCS) all && \
761
	sudo -u $(SUDO_USER) $(MAKE) -j$(PROCS) all && \
749
	$(MAKE) install
762
	$(MAKE) install
750
763
751
cross-gdb: gdb-$(CS_BASE)/
764
cross-gdb: gdb-$(CS_BASE)/
752
	mkdir -p build/gdb && cd build/gdb && \
765
	mkdir -p build/gdb && cd build/gdb && \
753
	pushd ../../gdb-$(CS_BASE) ; \
766
	pushd ../../gdb-$(CS_BASE) ; \
754
	make clean ; \
767
	make clean ; \
755
	popd ; \
768
	popd ; \
756
	../../gdb-$(CS_BASE)/configure --prefix="$(PREFIX)" --target=$(TARGET) --disable-werror && \
769
	../../gdb-$(CS_BASE)/configure --prefix="$(PREFIX)" --target=$(TARGET) --disable-werror && \
757
	$(MAKE) -j$(PROCS) && \
770
	$(MAKE) -j$(PROCS) && \
758
	$(MAKE) installdirs install-host install-target && \
771
	$(MAKE) installdirs install-host install-target && \
759
	mkdir -p "$(PREFIX)/man/man1" && \
772
	mkdir -p "$(PREFIX)/man/man1" && \
760
	cp ../../gdb-$(CS_BASE)/gdb/gdb.1 "$(PREFIX)/man/man1/arm-none-eabi-gdb.1"
773
	cp ../../gdb-$(CS_BASE)/gdb/gdb.1 "$(PREFIX)/man/man1/arm-none-eabi-gdb.1"
761
774
762
.PHONY : clean
775
.PHONY : clean
763
clean:
776
clean:
764
	rm -rf build *-$(CS_BASE) binutils-* gcc-* gdb-* newlib-* mpc-* $(LOCAL_BASE) dfu-programmer-* autoconf-* automake-* stamps/* source supp
777
	rm -rf build *-$(CS_BASE) binutils-* gcc-* gdb-* newlib-* mpc-* $(LOCAL_BASE) dfu-programmer-* autoconf-* automake-* stamps/* source supp