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