Subversion Repositories avr32-toolchain

Rev

Rev 7 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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