source: trunk/Makefile@ 2912

Last change on this file since 2912 was 2820, checked in by bird, 19 years ago

Copyright.

  • Property cvs2svn:cvs-rev set to 1.113
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 55.5 KB
Line 
1# $Id: Makefile 2820 2006-10-19 01:55:30Z bird $
2#
3# Top level makefile.
4#
5# InnoTek Systemberatung GmbH confidential
6#
7# Copyright (c) 2003-2006 Knut St. Osmundsen
8# Copyright (c) 2003-2004 InnoTek Systemberatung GmbH
9# Author: knut st. osmundsen <bird@anduin.net>
10#
11# All Rights Reserved
12#
13
14
15###############################################################################
16## Global Variables
17## (D = no drive)
18###############################################################################
19PWD := $(shell pwd)
20PWDD := $(shell pwd|sed 's/^[a-zA-Z]://')
21MAKEFILE = $(PWD)/Makefile
22
23ifndef BUILD_MODE
24export BUILD_MODE=DEBUG
25endif
26
27ifndef PATH_TOP
28export PATH_TOP := $(PWD)
29endif
30ifndef PATH_TOPD
31export PATH_TOPD := $(PWDD)
32endif
33
34
35export PATH_BIN = $(PATH_TOP)/bin/$(BUILD_PLATFORM)/$(BUILD_MODE)
36export PATH_BIND = $(PATH_TOPD)/bin/$(BUILD_PLATFORM)/$(BUILD_MODE)
37export PATH_OBJ = $(PATH_TOP)/obj/$(BUILD_PLATFORM)/$(BUILD_MODE)
38export PATH_OBJD = $(PATH_TOPD)/obj/$(BUILD_PLATFORM)/$(BUILD_MODE)
39export PATH_BUILTUNIX = $(PATH_OBJ)/builtunix
40export PATH_BUILTUNIXD = $(PATH_OBJD)/builtunix
41export PATH_BUILTTOOLS = $(PATH_BUILTUNIX)/usr
42export PATH_BUILTTOOLSD= $(PATH_BUILTUNIXD)/usr
43PATH_BUILTUNIX_TMP = $(PATH_BUILTUNIX).tmp
44PATH_BUILTUNIX_TMPD = $(PATH_BUILTUNIXD).tmp
45PATH_BUILTTOOLS_TMP = $(PATH_BUILTUNIX_TMP)/usr
46PATH_BUILTTOOLS_TMPD = $(PATH_BUILTUNIX_TMPD)/usr
47
48# Debug info or not (when ever we feel like passing down such options).
49# Several ways to do this it seems.
50ifeq "$(BUILD_MODE)" "RELEASE"
51BUILD_DEBUGINFO = -s
52BUILD_ENABLE_SYMBOLS = --disable-symbols
53BUILD_OPTIMIZE = -O2 -mcpu=pentium -mpreferred-stack-boundary=2 -malign-strings=0 -falign-loops=2 -falign-jumps=2 -falign-functions=2
54else
55BUILD_OPTIMIZE = -O0
56BUILD_DEBUGINFO = -g
57BUILD_ENABLE_SYMBOLS = --enable-symbols
58endif
59
60
61# Version and CVS defines - real stuff in env.cmd.
62export GCC_VERSION ?= 3.3.5
63export GCC_VERSION_SHORT ?= 335
64export GCC_RELEASE_ID ?= rc2
65export GCC_CVS_VENDOR ?= GNU
66export GCC_CVS_REL ?= GCC_3-3-5
67export BINUTILS_VERSION ?= 2.14
68export BINUTILS_VERSION_SHORT ?= 214
69export BINUTILS_CVS_VENDOR ?= GNU
70export BINUTILS_CVS_REL ?= BINUTILS_2-14
71export EMX_VERSION ?= 0.9d-fix04
72export EMX_VERSION_SHORT ?= 9d04
73export EMX_CVS_VENDOR ?= EMX
74export EMX_CVS_REL ?= EMX_0-9D-FIX04
75export LIBC_VERSION ?= 0.7.0a1
76export LIBC_VERSION_SHORT ?= 07a1
77
78# innotek version and timestamp
79ifndef BUILD_TS
80export BUILD_TS := $(shell date '+%Y-%m-%d %H:%M')
81else
82export BUILD_TS
83endif
84export INNOTEK_VERSION ?= (Innotek Build $(BUILD_TS))
85
86
87#
88# For builds on Linux Host builds we do the environment setup here.
89# This is essentially a mimicking of what we do on OS/2.
90#
91ifndef BUILD_PLATFORM
92ifeq "$(shell uname -s)" "Linux"
93export BUILD_PLATFORM ?= LINUX
94export BUILD_PROJECT ?= GCCOS2
95export SH ?= /bin/sh
96export ASH ?= /bin/ash
97export BASH ?= /bin/bash
98export AWK ?= /bin/gawk
99export GAWK ?= /bin/gawk
100export CONFIG_SHELL ?= $(SH)
101export MAKESHELL ?= $(SH)
102export PATH_EMX ?= /usr
103export PATH_IGCC ?= /usr
104export TMP ?= /tmp
105export TMPDIR ?= /tmp
106endif
107endif
108export PATH_IGCC ?= $(PATH_EMXPGCC)
109export PATH_EMXPGCC ?= $(PATH_IGCC)
110
111
112
113# Misc Helpers
114ALL_PREFIX = $(PATH_BIND)/$(GCC_VERSION)-$(GCC_RELEASE_ID)/usr
115TOOL_CVS_DIFF_TREE = -cvs diff -R -N -w -u -r
116ifeq "$(BUILD_PLATFORM)" "OS2"
117NICE = nice -i
118else
119NICE =
120endif
121
122
123
124
125###############################################################################
126###############################################################################
127###############################################################################
128###############################################################################
129#
130# M a i n R u l e z
131#
132###############################################################################
133###############################################################################
134###############################################################################
135###############################################################################
136
137# default is quick
138all: all-quick
139all-logged: all-quick-logged
140
141# release builds are built 'double quick'.
142all-double-quick:
143
144
145
146# old bootstrap building.
147bootstrap all-boostrap:
148 mkdir -p $(PATH_OBJ)
149 $(NICE) $(MAKE) $(MAKEOPT) -j 1 -C . all-bootstrap-logged 2>&1 | $(UNIXROOT)/usr/bin/tee $(PATH_OBJ)/build-`date +"%Y%m%d-%H%M%S"`.log
150
151all-bootstrap-logged: \
152 all-banner-start \
153 all-env \
154 all-sanity \
155 all-preload \
156 all-versionstamps \
157 all-symlinks \
158 \
159 all-stage1 \
160 all-stage2 \
161 \
162 all-install \
163 \
164 all-symlinks-unlink \
165 all-preload-unload
166 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
167 @echo "+ Make Ended Successfully: $(shell date)"
168 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
169
170#
171# banners
172#
173
174all-banner-start:
175 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
176 @echo "+ Make started: $(shell date)"
177 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
178
179all-banner-stage1:
180 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
181 @echo "+ Stage 1 - starting: $(shell date)"
182 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
183
184all-banner-stage2:
185 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
186 @echo "+ Stage 2 - starting: $(shell date)"
187 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
188
189all-banner-builtunix-initial:
190 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
191 @echo "+ Initializing builtunix tree"
192 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
193
194all-banner-builtunix-stage2:
195 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
196 @echo "+ Copying stage2 builtunix"
197 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
198
199all-banner-install:
200 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
201 @echo "+ Install - starting: $(shell date)"
202 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
203
204all-banner-install-done:
205 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
206 @echo "+ Install - done: $(shell date)"
207 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
208
209all-banner-symlinks-start:
210 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
211 @echo "+ symlinks - staring: $(shell date)"
212 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
213
214all-banner-symlinks-done:
215 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
216 @echo "+ symlinks - done: $(shell date)"
217 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
218
219all-banner-symlinks-unlink-start:
220 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
221 @echo "+ symlinks unlinking - staring: $(shell date)"
222 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
223
224all-banner-symlinks-unlink-done:
225 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
226 @echo "+ symlinks unlinking - done: $(shell date)"
227 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
228
229
230#
231# Sanity and environment dumps - to make it easier to figure out make bugs.
232#
233
234.PHONY: all-env
235all-env:
236 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
237 @echo "Variables:"
238 @echo " PWD = $(PWD)"
239 @echo " PWDD = $(PWDD)"
240 @echo " PATH_TOP = $(PATH_TOP)"
241 @echo " PATH_TOPD = $(PATH_TOPD)"
242 @echo " PATH_OBJ = $(PATH_OBJ)"
243 @echo " PATH_OBJD = $(PATH_OBJD)"
244 @echo " PATH_BIN = $(PATH_BIN)"
245 @echo " PATH_BIND = $(PATH_BIND)"
246 @echo " ALL_PREFIX = $(ALL_PREFIX)"
247 @echo " PATH_IGCC = $(PATH_IGCC)"
248 @echo " PATH_EMX = $(PATH_EMX)"
249 @echo " BUILD_MODE = $(BUILD_MODE)"
250 @echo " BUILD_PLATFORM = $(BUILD_PLATFORM)"
251 @echo " BUILD_PROJECT = $(BUILD_PROJECT)"
252 @echo " GCC_VERSION = $(GCC_VERSION)"
253 @echo " GCC_VERSION_SHORT = $(GCC_VERSION_SHORT)"
254 @echo " GCC_CVS_VENDOR = $(GCC_CVS_VENDOR)"
255 @echo " GCC_CVS_REL = $(GCC_CVS_REL)"
256 @echo " BINUTILS_VERSION = $(BINUTILS_VERSION)"
257 @echo " BINUTILS_VERSION_SHORT = $(BINUTILS_VERSION_SHORT)"
258 @echo " BINUTILS_CVS_VENDOR = $(BINUTILS_CVS_VENDOR)"
259 @echo " BINUTILS_CVS_REL = $(BINUTILS_CVS_REL)"
260 @echo " EMX_VERSION = $(EMX_VERSION)"
261 @echo " EMX_VERSION_SHORT = $(EMX_VERSION_SHORT)"
262 @echo " EMX_CVS_VENDOR = $(EMX_CVS_VENDOR)"
263 @echo " EMX_CVS_REL = $(EMX_CVS_REL)"
264 @echo " MAKEFILE = $(MAKEFILE)"
265 @echo " UNIXROOT = $(UNIXROOT)"
266 @echo " AC_PREFIX = $(AC_PREFIX)"
267 @echo " AC_MACRODIR = $(AC_MACRODIR)"
268 @echo " HOSTNAME = $(HOSTNAME)"
269 @echo " USER = $(USER)"
270 @echo " LOGNAME = $(LOGNAME)"
271 @echo " TMP = $(TMP)"
272 @echo " TMPDIR = $(TMPDIR)"
273 @echo " USER = $(USER)"
274 @echo " AWK = $(AWK)"
275 @echo " GAWK = $(GAWK)"
276 @echo " SH = $(SH)"
277 @echo " ASH = $(ASH)"
278 @echo " BASH = $(BASH)"
279 @echo " CONFIG_SHELL = $(CONFIG_SHELL)"
280 @echo " MAKESHELL = $(MAKESHELL)"
281 @echo " EMXSHELL = $(EMXSHELL)"
282 @echo " SHELL = $(SHELL)"
283 @echo " MAKE = $(MAKE)"
284 @echo " MAKEOPT = $(MAKEOPT)"
285 @echo " PATH = $(PATH)"
286 @echo " C_INCLUDE_PATH = $(C_INCLUDE_PATH)"
287 @echo " CPLUS_INCLUDE_PATH = $(CPLUS_INCLUDE_PATH)"
288 @echo " OBJC_INCLUDE_PATH = $(OBJC_INCLUDE_PATH)"
289 @echo " LIBRARY_PATH = $(LIBRARY_PATH)"
290 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
291 @echo "Content of PATH_OBJ:"
292 -ls -la $(PATH_OBJ)/
293 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
294 @echo "Content of PATH_BIN:"
295 -ls -la $(PATH_BIN)/
296 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
297
298
299.PHONY: all-sanity
300all-sanity:
301 @echo -n "Checking build environment sanity... "
302 @if [ "x$(BUILD_PROJECT)" != "xGCCOS2" ]; then \
303 echo ""; echo "Error: BUILD_PROJECT is wrong or isn't defined!"; \
304 exit 8; \
305 fi
306 @if [ "x$(BUILD_PLATFORM)" != "xOS2" -a "x$(BUILD_PLATFORM)" != "xLINUX" ]; then \
307 echo ""; echo "Error: BUILD_PLATFORM is wrong or isn't defined!"; \
308 exit 8; \
309 fi
310 @if [ "x$(BUILD_PLATFORM)" = "xOS2" -a "x$(UNIXROOT)" = "x" ]; then \
311 echo ""; echo "Error: UNIXROOT isn't defined!"; \
312 exit 8; \
313 fi
314 @if [ "x$(BUILD_PLATFORM)" != "xOS2" -a "x$(UNIXROOT)" != "x" ]; then \
315 echo ""; echo "Error: UNIXROOT is defined!"; \
316 exit 8; \
317 fi
318ifeq "$(BUILD_PLATFORM)" "OS2"
319 @if gcc --version | grep -qe ".*[3]\.[2-9]\.[0-9]"; then \
320 true; \
321 else \
322 echo ""; echo "Warning: GCC v3.2.x or higher is recommended!"; \
323 fi
324 @if ar --version | grep -qe ".*2\.11\.[2-9]" -e ".*[2]\.1[2-9][.0-9]*"; then \
325 true; \
326 else \
327 echo ""; echo "Warning: AR v2.11.2 or higher is recommended!"; \
328 fi
329endif
330 @echo "ok"
331
332
333#
334# Preload tools we commonly use this speeds up stuff.
335#
336PRELOADED_TOOLS = bin/sh.exe bin/echo.exe bin/true.exe usr/bin/test.exe usr/bin/expr.exe \
337 usr/bin/gawk.exe bin/sed.exe bin/rm.exe bin/cat.exe bin/cp.exe bin/mkdir.exe bin/rm.exe
338
339.PHONY: all-preload-unload all-preload
340all-preload:
341 @echo "Preloading tools:"
342ifeq "$(BUILD_PLATFORM)" "OS2"
343 @for tool in $(PRELOADED_TOOLS); do \
344 echo -n " $$tool"; \
345 emxload -e $(UNIXROOT)/$$tool; \
346 done
347 @echo ""
348 emxload -e gcc.exe g++.exe ld.exe as.exe ar.exe ld.exe emxomfld.exe emxomf.exe emxomfar.exe \
349 `gcc -print-prog-name=cc1` \
350 `gcc -print-prog-name=as` \
351 `gcc -print-prog-name=cc1plus`
352endif
353 @echo ""
354
355all-preload-unload:
356ifeq "$(BUILD_PLATFORM)" "OS2"
357 emxload -qw
358endif
359
360
361#
362# Version stamping/branding.
363# Update various version strings which are printed from the tools to tell
364# the build date and that's our built. This helps us tell releases apart.
365#
366# IMPORTANT! Take care not to commit the changed files
367# (TODO! Try make these changes to non-cvs backed files. (long-term-goal))
368.PHONY: all-versionstamps
369all-versionstamps: $(PATH_OBJ)/.ts.versionstamped
370$(PATH_OBJ)/.ts.versionstamped:
371# echo '#define INNOTEK_VERSION "$(INNOTEK_VERSION)"' > include/innotekversion.h
372 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) "INNOTEK_VERSION=$(INNOTEK_VERSION)" gcc-versionstamps binutils-versionstamps emx-versionstamps
373 mkdir -p $(@D)
374 touch $@
375
376
377#
378# Stages
379# A rebuild with the new toolsuite is usually required when there is ABI
380# changes and other vital changes done to the tools.
381#
382
383.PHONY: all-stage1 all-stage1-it
384all-stage1: $(PATH_OBJ)/.all-stage1
385$(PATH_OBJ)/.all-stage1:
386 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-stage1-it
387 echo "$(@F)" > $(PATH_OBJ)/.last-stage
388 touch $@
389 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
390 @echo "+ Stage 1 - done: $(shell date)"
391 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
392
393all-stage1-it: \
394 all-banner-stage1 \
395 all-builtunix-initial \
396 all-binutils \
397 all-gcc \
398 all-emx
399
400.PHONY: all-stage2 all-stage2-it
401all-stage2: $(PATH_OBJ)/.all-stage2
402$(PATH_OBJ)/.all-stage2: \
403 $(PATH_OBJ)/.all-stage2.save-stage1
404 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-stage2-it
405 echo "$(@F)" > $(PATH_OBJ)/.last-stage
406 touch $@
407 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
408 @echo "+ Stage 2 - done: $(shell date)"
409 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
410
411$(PATH_OBJ)/.all-stage2.save-stage1:
412 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
413 @echo "+ Saving Stage 1 - Starting: $(shell date)"
414 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
415 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-preload-unload
416 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-builtunix-stage2
417 rm -Rf $(PATH_OBJ)/stage1
418 mkdir -p $(PATH_OBJ)/stage1
419 if [ -d $(PATH_OBJ)/gcc ] ; then mv $(PATH_OBJ)/gcc $(PATH_OBJ)/stage1/gcc; fi
420 if [ -d $(PATH_OBJ)/emx ] ; then mv $(PATH_OBJ)/emx $(PATH_OBJ)/stage1/emx; fi
421 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-preload
422 touch $@
423 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
424 @echo "+ Saving Stage 1 - done: $(shell date)"
425 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
426
427all-stage2-it: \
428 all-banner-stage2 \
429 all-binutils \
430 all-gcc \
431 all-emx
432
433
434#
435# Install to bin tree makeing it ready for packing.
436#
437.PHONY: all-install
438all-install: \
439 all-banner-install \
440 gcc-install \
441 emx-install \
442 misc-install \
443 all-strip-install \
444 all-banner-install-done \
445
446# strips release build installations.
447.PHONY: all-strip-install
448all-strip-install:
449ifeq ($(BUILD_MODE), RELEASE)
450 echo "Stripping installed binaries..."
451 exes="`find $(PATH_BIN) -name '*.exe' | sed -e 's,/,\\\\,g'`"; \
452 dlls="`find $(PATH_BIN) -name '*.dll' | sed -e 's,/,\\\\,g'`"; \
453 for i in $$exes $$dlls; \
454 do \
455 if lxlite /F+ /AP:4096 /MRN /MLN /MF1 $$i; then true; \
456 else exit 1; \
457 fi; \
458 done
459endif
460
461
462#
463# Generate all the diffs we have to supply.
464#
465.PHONY: all-diff
466all-diff: \
467 gcc-diff \
468 binutils-diff \
469 emx-diff \
470
471
472
473
474
475###############################################################################
476###############################################################################
477###############################################################################
478#
479# Q u i c k b o o t s t r a p p i n g
480#
481###############################################################################
482###############################################################################
483###############################################################################
484
485# This is the default buildtype now.
486# It requires a very up-to-date gcc build, not good for bootstrapping from old GCCs.
487.PHONY: quick all-quick
488quick all-quick:
489 mkdir -p $(PATH_OBJ)
490 $(NICE) $(MAKE) $(MAKEOPT) -j 1 -C . all-quick-logged 2>&1 | $(UNIXROOT)/usr/bin/tee $(PATH_OBJ)/build-`date +"%Y%m%d-%H%M%S"`.log
491
492all-quick-banner-start:
493 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
494 @echo "+ Quick Bootstrap started: $(shell date)"
495 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
496.PHONY: all-quick-logged
497all-quick-logged: \
498 all-quick-banner-start \
499 all-env \
500 all-sanity \
501 all-quick-builtunix-initial \
502 all-versionstamps \
503 all-symlinks-unlink \
504 \
505 all-quick-step1 \
506 all-quick-step2 \
507 all-quick-step3 \
508 all-quick-step4 \
509 \
510 all-quick-install \
511 all-preload-unload
512 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
513 @echo "+ Quick Bootstrap Ended Successfully: $(shell date)"
514 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
515
516.PHONY: all-quick-builtunix-initial
517all-quick-builtunix-initial: $(PATH_OBJ)/.quick-builtunix-initial
518all-quick-builtunix-initial-it: \
519 all-preload-unload \
520 all-builtunix-initial \
521 all-preload
522$(PATH_OBJ)/.quick-builtunix-initial:
523 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-quick-builtunix-initial-it
524 touch $@
525
526
527# This build type is used for release builds.
528# We're doing two quick builds here to ensure everything is alright.
529.PHONY: double-quick all-double-quick
530double-quick all-double-quick:
531 mkdir -p $(PATH_OBJ)
532 $(NICE) $(MAKE) $(MAKEOPT) -j 1 -C . all-double-quick-logged 2>&1 | $(UNIXROOT)/usr/bin/tee $(PATH_OBJ)/build-`date +"%Y%m%d-%H%M%S"`.log
533
534all-double-quick-banner-start:
535 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
536 @echo "+ Double Quick Bootstrap started: $(shell date)"
537 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
538PHONY: all-double-quick-logged
539all-double-quick-logged: \
540 all-double-quick-banner-start \
541 all-env \
542 all-sanity \
543 all-preload-unload \
544 all-double-quick-builtunix-initial \
545 all-preload \
546 all-versionstamps \
547 all-symlinks-unlink \
548 \
549 all-double-quick-stage1 \
550 all-preload-unload \
551 all-double-quick-save-stage1 \
552 all-preload \
553 all-double-quick-stage2 \
554 \
555 all-quick-install \
556 all-preload-unload
557 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
558 @echo "+ Double Quick Bootstrap Ended Successfully: $(shell date)"
559 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
560
561.PHONY: all-double-quick-builtunix-initial
562all-double-quick-builtunix-initial: $(PATH_OBJ)/.doublequick-builtunix-initial
563all-double-quick-builtunix-initial-it: \
564 all-preload-unload \
565 all-builtunix-initial \
566 all-preload
567$(PATH_OBJ)/.doublequick-builtunix-initial:
568 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-double-quick-builtunix-initial-it
569 touch $@
570
571# stage1
572.PHONY: all-double-quick-stage1 all-double-quick-stage1-it
573all-double-quick-stage1: $(PATH_OBJ)/.doublequick-stage1
574all-double-quick-stage1-it: \
575 all-quick-step1 \
576 all-quick-step2 \
577 all-quick-step3 \
578 all-quick-step4
579$(PATH_OBJ)/.doublequick-stage1:
580 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
581 @echo "+ Double Quick Bootstrap Stage 1 - starting: $(shell date)"
582 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
583 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-double-quick-stage1-it
584 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
585 @echo "+ Double Quick Bootstrap Stage 1 - done: $(shell date)"
586 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
587 touch $@
588
589# save stage1
590.PHONY: all-double-quick-save-stage1 all-double-quick-save-stage1-it
591all-double-quick-save-stage1: $(PATH_OBJ)/.doublequick-stage1-saved
592all-double-quick-save-stage1-it: all-preload-unload
593 mkdir -p $(PATH_OBJ)/stage1
594 if [ -d $(PATH_OBJ)/emx ]; then rm -Rf $(PATH_OBJ)/stage1/emx && mv $(PATH_OBJ)/emx $(PATH_OBJ)/stage1/emx; fi
595 if [ -d $(PATH_OBJ)/binutils ]; then rm -Rf $(PATH_OBJ)/stage1/binutils && mv $(PATH_OBJ)/binutils $(PATH_OBJ)/stage1/binutils; fi
596 if [ -d $(PATH_OBJ)/gcc ]; then rm -Rf $(PATH_OBJ)/stage1/gcc && mv $(PATH_OBJ)/gcc $(PATH_OBJ)/stage1/gcc; fi
597 if [ -f $(PATH_OBJ)/.quick-last-step ]; then mv -f $(PATH_OBJ)/.quick-last-step $(PATH_OBJ)/stage1; fi
598 rm -f $(PATH_OBJ)/.quick*
599$(PATH_OBJ)/.doublequick-stage1-saved:
600 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
601 @echo "+ Double Quick Bootstrap Saving Stage 1 - starting: $(shell date)"
602 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
603 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-double-quick-save-stage1-it
604 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
605 @echo "+ Double Quick Bootstrap Saving Stage 1 - done: $(shell date)"
606 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
607 touch $@
608
609# stage2
610.PHONY: all-double-quick-stage2 all-double-quick-stage2-it
611all-double-quick-stage2: $(PATH_OBJ)/.doublequick-stage2
612all-double-quick-stage2-it: \
613 all-quick-step1 \
614 all-quick-step2 \
615 all-quick-step3 \
616 all-quick-step4
617$(PATH_OBJ)/.doublequick-stage2:
618 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
619 @echo "+ Double Quick Bootstrap Stage 2 - starting: $(shell date)"
620 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
621 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-double-quick-stage2-it
622 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
623 @echo "+ Double Quick Bootstrap Stage 2 - done: $(shell date)"
624 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
625 touch $@
626
627
628# step 1 builds the base libraries.
629.PHONY: all-quick-step1 all-quick-step1-it
630all-quick-step1: $(PATH_OBJ)/.quick-step1
631all-quick-step1-it: \
632 all-preload \
633 libc-quick \
634 all-preload-unload \
635 libc-quick-install \
636 all-preload
637$(PATH_OBJ)/.quick-step1:
638 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
639 @echo "+ Quick Bootstrap Step 1 - starting: $(shell date)"
640 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
641 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-quick-step1-it
642 echo "$(@F)" > $(PATH_OBJ)/.quick-last-step
643 touch $@
644 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
645 @echo "+ Quick Bootstrap Step 1 - done: $(shell date)"
646 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
647
648# step 2 builds the emx base utilities.
649.PHONY: all-quick-step2 all-quick-step2-it
650all-quick-step2: $(PATH_OBJ)/.quick-step2
651all-quick-step2-it: \
652 emx-quick \
653 all-preload-unload \
654 emx-quick-install \
655 all-preload
656$(PATH_OBJ)/.quick-step2:
657 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
658 @echo "+ Quick Bootstrap Step 2 - starting: $(shell date)"
659 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
660 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-quick-step2-it
661 echo "$(@F)" > $(PATH_OBJ)/.quick-last-step
662 touch $@
663 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
664 @echo "+ Quick Bootstrap Step 2 - done: $(shell date)"
665 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
666
667# step 3 builds all the binutil utilities and libraries.
668.PHONY: all-quick-step3 all-quick-step3-it
669all-quick-step3: $(PATH_OBJ)/.quick-step3
670all-quick-step3-it: \
671 binutils-quick \
672 all-preload-unload \
673 binutils-quick-installstage \
674 all-preload
675$(PATH_OBJ)/.quick-step3:
676 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
677 @echo "+ Quick Bootstrap Step 3 - starting: $(shell date)"
678 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
679 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-quick-step3-it
680 echo "$(@F)" > $(PATH_OBJ)/.quick-last-step
681 touch $@
682 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
683 @echo "+ Quick Bootstrap Step 3 - done: $(shell date)"
684 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
685
686# step 4 builds gcc.
687.PHONY: all-quick-step4 all-quick-step4-it
688all-quick-step4: $(PATH_OBJ)/.quick-step4
689all-quick-step4-it: \
690 gcc-quick \
691 all-preload-unload \
692 gcc-quick-installstage \
693 all-preload
694$(PATH_OBJ)/.quick-step4:
695 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
696 @echo "+ Quick Bootstrap Step 4 - starting: $(shell date)"
697 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
698 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) all-quick-step4-it
699 echo "$(@F)" > $(PATH_OBJ)/.quick-last-step
700 touch $@
701 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
702 @echo "+ Quick Bootstrap Step 4 - done: $(shell date)"
703 @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
704
705
706# Installs the stuff we've built.
707.PHONY: all-quick-install
708all-quick-install: \
709 all-banner-install \
710 gcc-install \
711 binutils-install \
712 emx-install \
713 misc-install \
714 all-strip-install \
715 all-banner-install-done
716
717
718###############################################################################
719###############################################################################
720###############################################################################
721#
722# B u i l t U n i x
723#
724###############################################################################
725###############################################################################
726###############################################################################
727
728all-builtunix-initial: \
729 all-banner-builtunix-initial \
730 all-builtunix-clean \
731 all-builtunix-dirs \
732 $(PATH_BUILTTOOLS)/bin/dllar.cmd \
733 $(PATH_BUILTTOOLS)/omfhack/ar.exe \
734 $(PATH_BUILTTOOLS)/omfhack/realar.exe \
735 $(PATH_BUILTTOOLS)/omfhack/ranlib.exe
736
737all-builtunix-clean: \
738 all-preload-unload
739 rm -Rf $(PATH_BUILTUNIX)
740
741all-builtunix-dirs:
742 mkdir -p $(PATH_BUILTTOOLS)/bin $(PATH_BUILTTOOLS)/lib $(PATH_BUILTTOOLS)/include $(PATH_BUILTTOOLS)/omfhack
743
744$(PATH_BUILTTOOLS)/omfhack/ranlib.exe $(PATH_BUILTTOOLS_TMP)/omfhack/ranlib.exe: $(PATH_TOP)/tools/bin/true.exe
745 cp $< $@
746$(PATH_BUILTTOOLS)/omfhack/ar.exe: $(PATH_IGCC)/bin/emxomfar.exe
747 cp $< $@
748$(PATH_BUILTTOOLS_TMP)/omfhack/ar.exe: $(PATH_BUILTTOOLS_TMP)/bin/emxomfar.exe
749 cp $< $@
750$(PATH_BUILTTOOLS)/omfhack/realar.exe $(PATH_BUILTTOOLS_TMP)/omfhack/realar.exe: $(PATH_IGCC)/bin/ar.exe
751 cp $< $@
752$(PATH_BUILTTOOLS_TMP)/omfhack:
753 mkdir -p $@
754
755all-builtunix-stage2: \
756 all-banner-builtunix-stage2 \
757 gcc-builtunix-stage2 \
758 emx-builtunix-stage2 \
759 all-builtunix-stage2-libs \
760 $(PATH_BUILTTOOLS_TMP)/bin/dllar.cmd \
761 $(PATH_BUILTTOOLS_TMP)/omfhack \
762 $(PATH_BUILTTOOLS_TMP)/omfhack/ar.exe \
763 $(PATH_BUILTTOOLS_TMP)/omfhack/realar.exe \
764 $(PATH_BUILTTOOLS_TMP)/omfhack/ranlib.exe \
765 all-builtunix-clean
766 mv -f $(PATH_BUILTUNIX_TMP) $(PATH_BUILTUNIX)
767
768all-builtunix-stage2-libs:
769 -for aoutlib in `find $(PATH_BUILTUNIX_TMP) -name "*.a" | sed -e 's/\.a$$//' `; \
770 do \
771 if [ ! -f $(aoutlib).lib ]; then \
772 echo " $${aoutlib}"; \
773 $(PATH_BUILTTOOLS_TMP)/bin/emxomf.exe $${aoutlib}.a; \
774 fi;\
775 done
776
777
778###############################################################################
779###############################################################################
780###############################################################################
781#
782# S y m l i n k s
783#
784#
785# We use symlinking of binutils stuff into the gcc tree so we can
786# build everything in one go and take advantage of the gcc
787# makesystem which will use the binutils we built when doing the
788# gcc libraries and such.
789#
790# On OS/2 symlinks doesn't exist so, we'll copy the source trees.
791# Copy because this will for directories work ok with cvs, moving
792# directories would cause 'cvs update -d' to refetch stuff.
793#
794# IMPORTANT! Take care, the 'symlined' stuff will be removed at the
795# end of the build. Remeber to do all-symlinks-unlink before a fresh
796# build is started as the duplicated binutils things doesn't get
797# updated by cvs.
798#
799#
800#w##############################################################################
801###############################################################################
802###############################################################################
803all-symlinks: \
804 all-banner-symlinks-start \
805 all-symlinks-binutils \
806 all-banner-symlinks-done
807
808all-symlinks-unlink: \
809 all-banner-symlinks-unlink-start \
810 all-symlinks-unlink-binutils \
811 all-banner-symlinks-unlink-done
812
813
814ifeq "$(BUILD_PLATFORM)" "OS2"
815TOOL_SYMLINK_FILE = cp -p
816TOOL_SYMLINK_DIR = cp -pRf
817TOOL_SYMLINK_MKDIR = mkdir
818TOOL_UNSYMLINK_DIR = rm -Rf
819else
820TOOL_SYMLINK_FILE = ln -fs
821TOOL_SYMLINK_DIR = ln -fs
822TOOL_SYMLINK_MKDIR = true
823TOOL_UNSYMLINK_DIR = rm
824endif
825
826# ld is broken, so don't use it!
827# ld \
828
829SYMLINKS_BINUTILS_TO_GCC_DIRS = \
830bfd \
831binutils \
832etc \
833gas \
834gprof \
835intl \
836opcodes \
837texinfo \
838libiberty \
839include/aout \
840include/coff \
841include/elf \
842include/gdb \
843include/mpw \
844include/nlm \
845include/opcode \
846include/regs \
847
848SYMLINKS_BINUTILS_TO_GCC_FILES = \
849include/alloca-conf.h \
850include/ansidecl.h \
851include/bfdlink.h \
852include/bin-bugs.h \
853include/bout.h \
854include/ChangeLog \
855include/COPYING \
856include/demangle.h \
857include/dis-asm.h \
858include/dyn-string.h \
859include/fibheap.h \
860include/filenames.h \
861include/floatformat.h \
862include/fnmatch.h \
863include/fopen-bin.h \
864include/fopen-same.h \
865include/fopen-vms.h \
866include/gdbm.h \
867include/getopt.h \
868include/hashtab.h \
869include/hp-symtab.h \
870include/ieee.h \
871include/libiberty.h \
872include/MAINTAINERS \
873include/md5.h \
874include/oasys.h \
875include/objalloc.h \
876include/obstack.h \
877include/os9k.h \
878include/partition.h \
879include/progress.h \
880include/safe-ctype.h \
881include/sort.h \
882include/splay-tree.h \
883include/symcat.h \
884include/ternary.h \
885include/xregex.h \
886include/xregex2.h \
887include/xtensa-config.h \
888include/xtensa-isa-internal.h \
889include/xtensa-isa.h \
890
891
892# Symlink binutils stuff to gcc.
893# Note the test should've been "! -e", but that doesn' work in ash... :/
894all-symlinks-binutils:
895 for file in $(SYMLINKS_BINUTILS_TO_GCC_FILES); do \
896 if [ ! -f "$(PATH_TOP)/gcc/.symlinked.`echo $${file} | sed -e 's@/@_@g'`" ]; then \
897 echo symlinking file gcc/$${file} to binutils/$${file} ; \
898 if rm -f $(PATH_TOP)/gcc/$$file && \
899 $(TOOL_SYMLINK_FILE) $(PATH_TOP)/binutils/$$file $(PATH_TOP)/gcc/$$file && \
900 touch $(PATH_TOP)/gcc/.symlinked.`echo $${file} | sed -e 's@/@_@g'`; \
901 then true ; \
902 else exit 1; \
903 fi ; \
904 fi ; \
905 done
906 for dir in $(SYMLINKS_BINUTILS_TO_GCC_DIRS) ; do \
907 if [ ! -f "$(PATH_TOP)/gcc/.symlinked.`echo $${dir} | sed -e 's@/@_@g'`" ] ; then \
908 echo symlinking directory gcc/$${dir} to binutils/$${dir} ; \
909 if [ -d "$(PATH_TOP)/gcc/$$dir" ] ; then \
910 echo removing existing directory: $${dir} ; \
911 rm -Rf $(PATH_TOP)/gcc/$$dir ; \
912 fi ; \
913 if $(TOOL_SYMLINK_MKDIR) $(PATH_TOP)/gcc/$$dir && \
914 $(TOOL_SYMLINK_DIR) $(PATH_TOP)/binutils/$$dir $(PATH_TOP)/gcc/`echo $${dir}| sed -e '/\//!d' -e 's@\([a-zA-z0-9]*\)/.*@\1/@'` ; \
915 touch $(PATH_TOP)/gcc/.symlinked.`echo $${dir} | sed -e 's@/@_@g'` ; \
916 then true ; \
917 else exit 1; \
918 fi ; \
919 fi ; \
920 done
921 -ls -a1 gcc/.sym*
922
923all-symlinks-unlink-binutils:
924 for name in `ls gcc/.symlinked* | sed -e "s/.*\.symlinked.//" -e "s/_/\//g"`; do \
925 echo unlinking $${name} ; \
926 if [ -d "$(PATH_TOP)/gcc/$${name}" ] ; then \
927 rm -Rf $(PATH_TOP)/gcc/$${name} ; \
928 else \
929 rm -f $(PATH_TOP)/gcc/$${name} ; \
930 fi ; \
931 if [ ! -f "$(PATH_TOP)/gcc/$${name}" -a ! -d "$(PATH_TOP)/gcc/$${name}" ] ; then \
932 rm $(PATH_TOP)/gcc/.symlinked.`echo $${name} | sed -e 's@/@_@g'` ; \
933 else \
934 echo "unlink error: $(PATH_TOP)/gcc/$${name} exist" ; \
935 ls -l "$(PATH_TOP)/gcc/$${name}" ; \
936 exit 1; \
937 fi ; \
938 done
939 -ls -a1 gcc/.sym*
940
941
942###############################################################################
943###############################################################################
944###############################################################################
945#
946# G C C
947#
948###############################################################################
949###############################################################################
950###############################################################################
951all-gcc gcc: \
952 gcc-autoconf-refresh \
953 gcc-bootstrap
954 echo "Successfully build GCC."
955
956
957
958GCC_DIRS = \
959gcc/libiberty \
960gcc/zlib \
961gcc/gcc \
962gcc/libstdc++-v3 \
963gcc/boehm-gc \
964gcc/fastjar \
965gcc/libf2c \
966gcc/libf2c/libF77 \
967gcc/libf2c/libI77 \
968gcc/libf2c/libU77 \
969gcc/libffi \
970gcc/libjava \
971gcc/libjava/libltdl \
972gcc/libobjc \
973
974# Here is a problem, we can't regenerate binutils makefiles when symlinked into
975# gcc. At least not yet. The result is messed up severely.
976not_yet =\
977gcc/bfd \
978gcc/binutils \
979gcc/gas \
980gcc/gprof \
981gcc/ld \
982gcc/libiberty \
983gcc/opcodes
984#gcc/intl
985
986GCC_CONFIGURE_DIRS = $(GCC_DIRS)
987
988
989# configure.in/configure
990.PHONY: gcc-autoconf-refresh gcc-autoconf-rerun gcc-autoconf-clean gcc-autoconf-remove
991gcc-autoconf-refresh gcc-autoconf-rerun gcc-autoconf-clean gcc-autoconf-remove:
992ifeq "$(BUILD_PLATFORM)" "LINUX"
993 -$(SH) $(PATH_TOP)/xfix.sh
994endif
995 for dir in $(GCC_CONFIGURE_DIRS); do \
996 echo $$dir; \
997 if $(MAKE) $(MAKEOPT) -j 1 $(@:gcc-autoconf-%=%) -f $(PWD)/config.gmk -C $$dir ; then \
998 true; \
999 else \
1000 exit 8; \
1001 fi \
1002 done
1003
1004
1005# build the components.
1006.PHONY: gcc-bootstrap gcc-build gcc-install gcc-configure
1007gcc-bootstrap gcc-build gcc-install gcc-configure:
1008 mkdir -p $(PATH_OBJ)/gcc
1009 $(MAKE) $(MAKEOPT) -j 1 -C $(PATH_OBJ)/gcc -f $(MAKEFILE) $@-it
1010
1011# let the build/bootstrap create the gcc import .def file before kicking off a build.
1012gcc-bootstrap gcc-build: gcc/gcc/config/i386/emx-libgcc_so_d.def
1013gcc/gcc/config/i386/emx-libgcc_so_d.def: libc/src/libc/libgcc_d.awk $(PATH_OBJD)/libc/omf/libc.def libc/src/libc/libc.def
1014 $(GAWK) -f libc/src/libc/libgcc_d.awk $(filter %.def,$^) > $@
1015
1016
1017# When changed directory
1018# We pass down BOOT_ flags for stage2+.
1019# Because strip is broken on OS/2 we pass -s for release build and -g for
1020# non release builds - This overrides some stuff in gcc/gcc/config/i386/t-emx!
1021# For the 2nd stage we need a hack for using the right specs when linking...
1022#SPEC_HACK = $(if $(wildchar $(PATH_OBJ)/.all-stage1),\
1023# -specs $(PATH_TOP)/libc/src/libc/libc.specs, \
1024# -specs $(PATH_TOP)/tools/x86.os2/gcc/staged/lib/gcc-lib/i386-pc-os2-emx/$(GCC_VERSION)/specs)
1025SPECS_HACK =
1026gcc-bootstrap-it gcc-build-it: \
1027 $(PATH_OBJ)/gcc/.ts.configured
1028ifeq "$(BUILD_PLATFORM)" "OS2"
1029 unset GCCLOAD ; export LT_OS2_LDFLAGS="-Zomf -g" ; \
1030 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/gcc \
1031 LIBGCC2_DEBUG_CFLAGS="$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem " \
1032 CFLAGS="$(SPEC_HACK) $(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem" \
1033 CXXFLAGS="$(SPEC_HACK) $(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem" \
1034 BOOT_CFLAGS="$(SPEC_HACK) $(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem" \
1035 LDFLAGS="$(SPEC_HACK) $(BUILD_DEBUGINFO) -Zhigh-mem -Zcrtdll -Zstack 1024 -Zomf" \
1036 BOOT_LDFLAGS="$(SPEC_HACK) $(BUILD_DEBUGINFO) -Zhigh-mem -Zcrtdll -Zstack 1024 -Zomf" \
1037 $(subst build, all, $(patsubst gcc-%-it, %, $@))
1038else
1039 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/gcc $(subst build, all, $(patsubst gcc-%-it, %, $@))
1040endif
1041
1042# configure it (invoked after directory change).
1043# We set CC to help configure finding it.
1044# We also set some LDFLAGS to get omf linking.
1045gcc-configure-it $(PATH_OBJ)/gcc/.ts.configured: $(PATH_TOP)/gcc/configure
1046ifeq "$(BUILD_PLATFORM)" "OS2"
1047 $(ASH) -c " \
1048 export CC=\"gcc.exe\" ; \
1049 export LDFLAGS=\"$(SPEC_HACK) $(BUILD_DEBUGINFO) -Zhigh-mem -Zcrtdll -Zstack 1024 -Zomf\" ; \
1050 export BOOT_LDFLAGS=\"$(SPEC_HACK) $(BUILD_DEBUGINFO) -Zhigh-mem -Zcrtdll -Zstack 1024 -Zomf\" ; \
1051 $< \
1052 --enable-clh \
1053 --enable-threads=os2 \
1054 --enable-shared=libgcc,bfd,opcodes \
1055 --enable-nls \
1056 --without-included-gettext \
1057 --with-local-prefix=$(subst \,/,$(PATH_IGCC)) \
1058 --prefix=/gcc \
1059 --with-gnu-as \
1060 --disable-libgcj \
1061 --enable-languages=c,c++ "
1062else
1063 $(ASH) -c "$< \
1064 --disable-clh \
1065 --enable-shared=libgcc,bfd,opcodes \
1066 --enable-nls \
1067 --without-included-gettext \
1068 --with-local-prefix=$(subst \,/,$(PATH_IGCC)) \
1069 --prefix=/gcc \
1070 --with-gnu-as \
1071 --disable-libgcj \
1072 --enable-languages=c,c++ "
1073endif
1074 touch $(PATH_OBJ)/gcc/.ts.configured
1075# TODO: Andy, on Linux --enable-clh result in linking errors.
1076
1077# Install the GCC build
1078# Repeating the prefix doesn't hurt anybody.
1079gcc-install-it:
1080 $(MAKE) $(MAKEOPT) prefix=$(ALL_PREFIX) install
1081
1082
1083# easy, update gcc/gcc/version.c
1084gcc-versionstamps:
1085 @echo "Version stamping gcc..."
1086 mv -f $(PATH_TOP)/gcc/gcc/version.c $(PATH_TOP)/gcc/gcc/version.tmp.c
1087 sed -e '/version_string/s/\([0-9]\.[0-9]*\.[0-9]*\).*/\1 $(INNOTEK_VERSION)";/' \
1088 $(PATH_TOP)/gcc/gcc/version.tmp.c > $(PATH_TOP)/gcc/gcc/version.c
1089 rm -f $(PATH_TOP)/gcc/gcc/version.tmp.c
1090
1091
1092# Install to builtunix directory.
1093## WARNING! Another spec HACK!
1094gcc-builtunix-stage2:
1095 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/gcc prefix=$(PATH_BUILTTOOLS_TMPD) install
1096## cp $(PATH_TOP)/libc/src/libc/libc.specs $(PATH_OBJ)/gcc/gcc/specs
1097
1098
1099# Quick bootstrap workers.
1100gcc-quick: \
1101 gcc-autoconf-refresh \
1102 gcc-build
1103
1104gcc-quick-installstage:
1105 rm -Rf $(PATH_BUILTUNIX_TMP)
1106 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/gcc prefix=$(PATH_BUILTTOOLS_TMPD) install
1107 cp -Rf $(PATH_BUILTUNIX_TMP)/* $(PATH_BUILTUNIX)/
1108 rm -Rf $(PATH_BUILTUNIX_TMP)
1109
1110
1111# Generate diffs for GCC - part of packing a release.
1112.PHONY: gcc-diff $(ALL_PREFIX)/src/diffs/gcc-$(GCC_VERSION).diff
1113gcc-diff: $(ALL_PREFIX)/src/diffs/gcc-$(GCC_VERSION).diff
1114$(ALL_PREFIX)/src/diffs/gcc-$(GCC_VERSION).diff:
1115 mkdir -p $(@D)
1116 $(TOOL_CVS_DIFF_TREE) $(GCC_CVS_REL) gcc > $@
1117
1118
1119
1120
1121
1122###############################################################################
1123###############################################################################
1124###############################################################################
1125#
1126# B i n U t i l s
1127#
1128###############################################################################
1129###############################################################################
1130###############################################################################
1131
1132BINUTILS_DIRS = \
1133binutils/bfd \
1134binutils/opcodes \
1135binutils/gas \
1136binutils/gprof \
1137binutils/binutils \
1138binutils/ld \
1139
1140BINUTILS_NOT_DIRS =\
1141binutils/etc \
1142binutils/libiberty
1143#binutils/intl
1144
1145
1146BINUTILS_CONFIGURE_DIRS = $(BINUTILS_DIRS) $(BINUTILS_NOT_DIRS)
1147
1148all-binutils binutils:
1149 echo "Binutils are build together with the other GNU Tools in GCC."
1150 echo "Separate building of binutils is not configured."
1151
1152binutils214: \
1153 binutils-autoconf-refresh \
1154 binutils-build
1155 echo "Successfully build Binutils v2.14."
1156
1157
1158
1159# configure.in/configure
1160.PHONY: binutils-autoconf-refresh binutils-autoconf-rerun binutils-autoconf-clean binutils-autoconf-remove
1161binutils-autoconf-refresh binutils-autoconf-rerun binutils-autoconf-clean binutils-autoconf-remove:
1162ifeq "$(BUILD_PLATFORM)" "LINUX"
1163 -$(SH) $(PATH_TOP)/xfix.sh
1164endif
1165 for dir in $(BINUTILS_CONFIGURE_DIRS); do \
1166 if $(MAKE) $(MAKEOPT) -j 1 $(@:binutils-autoconf-%=%) -f $(PWD)/config.gmk -C $$dir ; then \
1167 true; \
1168 else \
1169 exit 8; \
1170 fi \
1171 done
1172
1173
1174# build the components.
1175.PHONY: binutils-build binutils-install binutils-configure binutils-configure-elf
1176binutils-build binutils-install binutils-configure binutils-configure-elf:
1177 mkdir -p $(PATH_OBJ)/binutils
1178 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/binutils -f $(MAKEFILE) $@-it
1179
1180
1181# When changed directory
1182binutils-build-it: \
1183 $(PATH_OBJ)/binutils/.ts.configured
1184 unset GCCLOAD ; export LT_OS2_LDFLAGS="-Zomf -g -Zmap" ; \
1185 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/binutils \
1186 CFLAGS="$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem" \
1187 LDFLAGS="$(BUILD_DEBUGINFO) -Zhigh-mem -Zstack 1024 -Zomf"
1188 unset GCCLOAD ; export LT_OS2_LDFLAGS="-Zomf -g -Zmap" ; \
1189 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/binutils/gas-elf \
1190 CFLAGS="$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem" \
1191 LDFLAGS="$(BUILD_DEBUGINFO) -Zhigh-mem -Zstack 1024 -Zomf"
1192 unset GCCLOAD ; export LT_OS2_LDFLAGS="-Zomf -g -Zmap" ; \
1193 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/binutils/ld-elf \
1194 CFLAGS="$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem" \
1195 LDFLAGS="$(BUILD_DEBUGINFO) -Zhigh-mem -Zstack 1024 -Zomf"
1196
1197# configure it (invoked after directory change).
1198# We set CC to help configure finding it.
1199# And we reconfigure libiberty to the gcc one.
1200binutils-configure-it $(PATH_OBJ)/binutils/.ts.configured: $(PATH_TOP)/binutils/configure
1201ifeq "$(BUILD_PLATFORM)" "OS2"
1202 $(ASH) -c " \
1203 CC=\"gcc.exe\" \
1204 CFLAGS=\"$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem\" \
1205 LDFLAGS=\"$(BUILD_DEBUGINFO) -Zhigh-mem -Zstack 1024 -Zomf\" \
1206 $< \
1207 --enable-clh \
1208 --enable-threads=os2 \
1209 --enable-shared=libgcc,bfd,opcodes \
1210 --enable-nls \
1211 --without-included-gettext \
1212 --with-local-prefix=$(subst \,/,$(PATH_IGCC)) \
1213 --prefix=/gcc \
1214 --with-gnu-as \
1215 --disable-libgcj \
1216 --enable-languages=c,c++ "
1217else
1218 $(ASH) -c "$< \
1219 --disable-clh \
1220 --enable-shared=libgcc,bfd,opcodes \
1221 --enable-nls \
1222 --without-included-gettext \
1223 --with-local-prefix=$(subst \,/,$(PATH_IGCC)) \
1224 --prefix=/gcc \
1225 --with-gnu-as \
1226 --disable-libgcj \
1227 --enable-languages=c,c++ "
1228endif
1229 mkdir -p gas-elf
1230 $(ASH) -c "cd gas-elf && \
1231 CC=\"gcc.exe\" \
1232 CFLAGS=\"$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem\" \
1233 LDFLAGS=\"$(BUILD_DEBUGINFO) -Zhigh-mem -Zstack 1024 -Zomf\" \
1234 $(PATH_TOP)/binutils/gas/configure \
1235 --target=i386-pc-os2-elf \
1236 --enable-shared=libgcc,bfd,opcodes \
1237 --enable-nls \
1238 --without-included-gettext \
1239 --with-local-prefix=$(subst \,/,$(PATH_IGCC)) \
1240 --prefix=/gcc \
1241 --with-gnu-as \
1242 --program-suffix=-elf "
1243 mkdir -p ld-elf
1244 $(ASH) -c "cd ld-elf && \
1245 CC=\"gcc.exe\" \
1246 CFLAGS=\"$(BUILD_DEBUGINFO) $(BUILD_OPTIMIZE) -Zhigh-mem\" \
1247 LDFLAGS=\"$(BUILD_DEBUGINFO) -Zhigh-mem -Zstack 1024 -Zomf\" \
1248 $(PATH_TOP)/binutils/ld/configure \
1249 --target=i386-pc-os2-elf \
1250 --enable-shared=libgcc,bfd,opcodes \
1251 --enable-nls \
1252 --without-included-gettext \
1253 --with-local-prefix=$(subst \,/,$(PATH_IGCC)) \
1254 --prefix=/gcc \
1255 --with-gnu-as \
1256 --program-suffix=-elf "
1257 touch $(PATH_OBJ)/binutils/.ts.configured
1258
1259
1260
1261# Install the Binutils build
1262# Repeating the prefix doesn't hurt anybody.
1263binutils-install-it:
1264 cd gas-elf && $(MAKE) $(MAKEOPT) prefix=$(ALL_PREFIX) install
1265 cd ld-elf && $(MAKE) $(MAKEOPT) prefix=$(ALL_PREFIX) install
1266 $(MAKE) $(MAKEOPT) prefix=$(ALL_PREFIX) install
1267 mv -f $(ALL_PREFIX)/bin/ld.exe $(ALL_PREFIX)/bin/ld-bad.exe
1268 mv -f $(ALL_PREFIX)/i386-pc-os2-emx/bin/ld.exe $(ALL_PREFIX)/i386-pc-os2-emx/bin/ld-bad.exe
1269
1270
1271# Not so easy, need to patch a few files.
1272binutils-versionstamps:
1273 @echo "Version stamping binutils..."
1274 cp -f $(PATH_TOP)/binutils/binutils/version.c $(PATH_TOP)/binutils/binutils/version.tmp.c
1275 sed -e '/printf.*program_version/s/%s %s.*\\n/%s %s $(INNOTEK_VERSION)\\n/' \
1276 $(PATH_TOP)/binutils/binutils/version.tmp.c > $(PATH_TOP)/binutils/binutils/version.c
1277 rm -f $(PATH_TOP)/binutils/binutils/version.tmp.c
1278 if [ -f $(PATH_TOP)/gcc/binutils/version.c ]; then \
1279 cp -f $(PATH_TOP)/gcc/binutils/version.c $(PATH_TOP)/gcc/binutils/version.tmp.c && \
1280 sed -e '/printf.*program_version/s/%s %s.*\\n/%s %s $(INNOTEK_VERSION)\\n/' \
1281 $(PATH_TOP)/gcc/binutils/version.tmp.c > $(PATH_TOP)/gcc/binutils/version.c && \
1282 rm -f $(PATH_TOP)/gcc/binutils/version.tmp.c ; \
1283 fi
1284 @echo "Version stamping gas..."
1285 cp -f $(PATH_TOP)/binutils/gas/as.c $(PATH_TOP)/binutils/gas/as.tmp.c
1286 sed -e '/printf.*GNU.*assembler/s/%s.*\\n/%s $(INNOTEK_VERSION)\\n/' \
1287 -e '/fprintf.*GNU.*assembler.*version.*BFD.*/s/using BFD version %s.*/using BFD version %s $(INNOTEK_VERSION)"),/ ' \
1288 $(PATH_TOP)/binutils/gas/as.tmp.c > $(PATH_TOP)/binutils/gas/as.c
1289 rm -f $(PATH_TOP)/binutils/gas/as.tmp.c
1290 if [ -f $(PATH_TOP)/gcc/gas/as.c ]; then \
1291 cp -f $(PATH_TOP)/gcc/gas/as.c $(PATH_TOP)/gcc/gas/as.tmp.c && \
1292 sed -e '/printf.*GNU.*assembler/s/%s.*\\n/%s $(INNOTEK_VERSION)\\n/' \
1293 -e '/fprintf.*GNU.*assembler.*version.*BFD.*/s/using BFD version %s.*/using BFD version %s $(INNOTEK_VERSION)"),/ ' \
1294 $(PATH_TOP)/gcc/gas/as.tmp.c > $(PATH_TOP)/gcc/gas/as.c && \
1295 rm -f $(PATH_TOP)/gcc/gas/as.tmp.c ; \
1296 fi
1297 @echo "Version stamping ld..."
1298 cp -f $(PATH_TOP)/binutils/ld/ldver.c $(PATH_TOP)/binutils/ld/ldver.tmp.c
1299 sed -e '/fprintf.*GNU.*ld.*version/s/(with BFD %s).*/(with BFD %s) $(INNOTEK_VERSION)\\n"),/' \
1300 $(PATH_TOP)/binutils/ld/ldver.tmp.c > $(PATH_TOP)/binutils/ld/ldver.c
1301 rm -f $(PATH_TOP)/binutils/ld/ldver.tmp.c
1302 if [ -f $(PATH_TOP)/gcc/ld/ldver.c ]; then \
1303 cp -f $(PATH_TOP)/gcc/ld/ldver.c $(PATH_TOP)/gcc/ld/ldver.tmp.c && \
1304 sed -e '/fprintf.*GNU.*ld.*version/s/(with BFD %s).*/(with BFD %s) $(INNOTEK_VERSION)\\n"),/' \
1305 $(PATH_TOP)/gcc/ld/ldver.tmp.c > $(PATH_TOP)/gcc/ld/ldver.c && \
1306 rm -f $(PATH_TOP)/gcc/ld/ldver.tmp.c ; \
1307 fi
1308
1309
1310# Quick bootstrap workers.
1311binutils-quick:
1312 GCCLOAD=5 $(MAKE) $(MAKEOPT) -f $(MAKEFILE) binutils214
1313
1314binutils-quick-installstage:
1315 rm -Rf $(PATH_BUILTUNIX_TMP)
1316 if test -f $(PATH_BUILTTOOLS_TMP)/bin/ld.exe; then cp -f $(PATH_BUILTTOOLS_TMP)/bin/ld.exe $(PATH_BUILTTOOLS_TMP)/bin/ld-saved.exe; fi
1317 if test -f $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld.exe; then cp -f $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld.exe $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld-saved.exe; fi
1318 $(MAKE) $(MAKEOPT) -C $(PATH_OBJ)/binutils prefix=$(PATH_BUILTTOOLS_TMPD) install
1319 mv -f $(PATH_BUILTTOOLS_TMP)/bin/ld.exe $(PATH_BUILTTOOLS_TMP)/bin/ld-bad.exe
1320 mv -f $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld.exe $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld-bad.exe
1321 if test -f $(PATH_BUILTTOOLS_TMP)/bin/ld-saved.exe; then mv -f $(PATH_BUILTTOOLS_TMP)/bin/ld-saved.exe $(PATH_BUILTTOOLS_TMP)/bin/ld.exe; fi
1322 if test -f $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld-saved.exe; then mv -f $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld-saved.exe $(PATH_BUILTTOOLS_TMP)/i386-pc-os2-emx/bin/ld.exe; fi
1323 cp -Rf $(PATH_BUILTUNIX_TMP)/* $(PATH_BUILTUNIX)/
1324 rm -Rf $(PATH_BUILTUNIX_TMP)
1325
1326
1327# Generate diffs for Binutils (part of packing).
1328.PHONY: binutils-diff $(ALL_PREFIX)/src/diffs/binutils-$(BINUTILS_VERSION).diff
1329binutils-diff: $(ALL_PREFIX)/src/diffs/binutils-$(BINUTILS_VERSION).diff
1330$(ALL_PREFIX)/src/diffs/binutils-$(BINUTILS_VERSION).diff:
1331 mkdir -p $(@D)
1332 $(TOOL_CVS_DIFF_TREE) $(BINUTILS_CVS_REL) binutils > $@
1333
1334
1335
1336
1337
1338
1339
1340
1341###############################################################################
1342###############################################################################
1343###############################################################################
1344#
1345# E M X
1346#
1347###############################################################################
1348###############################################################################
1349###############################################################################
1350all-emx emx: \
1351 emx-build
1352 @echo "Successfully build EMX."
1353
1354# Some helpers.
1355# TODO: Change OUT and INS to the right ones. Currently not possible as
1356# doing such breaks the rules generating.
1357EMX_MODE = dbg
1358ifeq "$(BUILD_MODE)" "RELEASE"
1359EMX_MODE = opt
1360endif
1361#EMX_OUT = out/
1362#EMX_INS = out/install/
1363EMX_OUT = $(PATH_OBJD)/emx/
1364EMX_INS = $(ALL_PREFIX)/
1365EMX_MASM = $(PATH_TOP)/tools/x86.os2/masm/v6.0/binp/ml.exe
1366EMX_DEFINES = "OUT=$(EMX_OUT)" "INS=$(EMX_INS)" "MODE=$(EMX_MODE)" "ASM=$(EMX_MASM) -c"
1367
1368# build the components. (directory changer rules)
1369.PHONY: emx-build emx-install emx-configure
1370emx-build emx-install:
1371 mkdir -p $(PATH_OBJ)/emx
1372 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx -f $(MAKEFILE) $@-it
1373
1374emx-build-it:
1375 $(MAKE) $(MAKEOPT) -j 1 -f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx $(EMX_DEFINES) tools
1376 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx $(EMX_DEFINES) all
1377
1378emx-install-it:
1379 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx $(EMX_DEFINES) INS=$(ALL_PREFIX)/ install
1380
1381
1382# We pass down the INNOTEK_VERSION define when building EMX.
1383emx-versionstamps:
1384 @echo "Version stamping EMX... nothing to do"
1385
1386# Install the compiled emx stuff to builtunix.
1387emx-builtunix-stage2:
1388 $(MAKE) $(MAKEOPT)-f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx $(EMX_DEFINES) INS=$(PATH_BUILTTOOLS_TMP)/ install
1389
1390# Quick bootstrap workers.
1391emx-quick:
1392 GCCLOAD=3 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx $(EMX_DEFINES) all
1393
1394emx-quick-install:
1395 $(MAKE) $(MAKEOPT)-f $(PATH_TOP)/emx/Makefile.gmk -C $(PATH_TOP)/emx $(EMX_DEFINES) INS=$(PATH_BUILTTOOLS)/ install
1396
1397
1398# Generate diffs for EMX (part of packing).
1399.PHONY: emx-diff $(ALL_PREFIX)/src/diffs/emx-$(EMX_VERSION).diff
1400emx-diff: $(ALL_PREFIX)/src/diffs/emx-$(EMX_VERSION).diff
1401$(ALL_PREFIX)/src/diffs/emx-$(EMX_VERSION).diff:
1402 mkdir -p $(@D)
1403 $(TOOL_CVS_DIFF_TREE) $(EMX_CVS_REL) emx > $@
1404
1405
1406
1407###############################################################################
1408###############################################################################
1409###############################################################################
1410#
1411# L I B C
1412#
1413###############################################################################
1414###############################################################################
1415###############################################################################
1416all-libc libc: \
1417 libc-build
1418 @echo "Successfully build LIBC."
1419
1420# Some helpers.
1421# TODO: Change OUT and INS to the right ones. Currently not possible as
1422# doing such breaks the rules generating.
1423LIBC_MODE = dbg
1424ifeq "$(BUILD_MODE)" "RELEASE"
1425LIBC_MODE = opt
1426endif
1427#LIBC_OUT = out/
1428#LIBC_INS = out/install/
1429LIBC_OUT = $(PATH_OBJD)/libc/
1430LIBC_INS = $(ALL_PREFIX)/
1431LIBC_MASM = $(PATH_TOP)/tools/x86.os2/masm/v6.0/binp/ml.exe
1432LIBC_DEFINES = "OUT=$(LIBC_OUT)" "INS=$(LIBC_INS)" "MODE=$(LIBC_MODE)" "ASM=$(LIBC_MASM) -c"
1433
1434# build the components. (directory changer rules)
1435.PHONY: libc-build libc-install libc-configure
1436libc-build libc-install:
1437 mkdir -p $(PATH_OBJ)/libc
1438 $(MAKE) $(MAKEOPT) -C $(PATH_TOP)/libc -f $(MAKEFILE) $@-it
1439
1440libc-build-it:
1441 $(MAKE) $(MAKEOPT) -j 1 -f $(PATH_TOP)/libc/Makefile.gmk -C $(PATH_TOP)/libc $(LIBC_DEFINES) tools
1442 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/libc/Makefile.gmk -C $(PATH_TOP)/libc $(LIBC_DEFINES) all
1443
1444libc-install-it:
1445 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/libc/Makefile.gmk -C $(PATH_TOP)/libc $(LIBC_DEFINES) INS=$(ALL_PREFIX)/ install
1446
1447
1448# We pass down the INNOTEK_VERSION define when building LIBC.
1449libc-versionstamps:
1450 @echo "Version stamping LIBC... nothing to do"
1451
1452# Install the compiled libc stuff to builtunix.
1453libc-builtunix-stage2:
1454 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/libc/Makefile.gmk -C $(PATH_TOP)/libc $(LIBC_DEFINES) INS=$(PATH_BUILTTOOLS_TMP)/ install
1455
1456# Quick bootstrap workers.
1457libc-quick:
1458 GCCLOAD=3 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/libc/Makefile.gmk -C $(PATH_TOP)/libc $(LIBC_DEFINES) all
1459
1460libc-quick-install:
1461 $(MAKE) $(MAKEOPT) -f $(PATH_TOP)/libc/Makefile.gmk -C $(PATH_TOP)/libc $(LIBC_DEFINES) INS=$(PATH_BUILTTOOLS)/ install
1462
1463
1464
1465# Generate diffs for LIBC (part of packing).
1466.PHONY: libc-diff $(ALL_PREFIX)/src/diffs/libc-$(LIBC_VERSION).diff
1467libc-diff: $(ALL_PREFIX)/src/diffs/libc-$(LIBC_VERSION).diff
1468$(ALL_PREFIX)/src/diffs/libc-$(LIBC_VERSION).diff:
1469 mkdir -p $(@D)
1470 $(TOOL_CVS_DIFF_TREE) $(LIBC_CVS_REL) libc > $@
1471
1472
1473
1474
1475
1476
1477###############################################################################
1478###############################################################################
1479###############################################################################
1480#
1481# P A C K I N G
1482#
1483###############################################################################
1484###############################################################################
1485###############################################################################
1486packing: \
1487 packing-all \
1488 packing-doc \
1489 packing-libc \
1490 installer
1491# don't need this anylonger - all or nothing at all.
1492# packing-core
1493# packing-dbg
1494# packing-prf
1495
1496ZIPFLAGS=-rX9
1497ZIPBASE=$(PATH_BIN)/GCC-$(GCC_VERSION)-$(GCC_RELEASE_ID)
1498
1499packing-all:
1500 rm -f $(ZIPBASE).zip
1501 cd $(ALL_PREFIX)/.. ; zip $(ZIPFLAGS) $(ZIPBASE).zip *
1502
1503packing-doc:
1504 rm -f $(ZIPBASE)-doc.zip
1505 cd $(ALL_PREFIX)/..; zip $(ZIPFLAGS) $(ZIPBASE)-doc.zip usr/doc/GCC-$(GCC_VERSION)/*
1506
1507packing-libc:
1508 rm -f $(PATH_BIN)/libc.zip
1509 cd $(ALL_PREFIX)/lib; zip $(ZIPFLAGS) $(PATH_BIN)/libc.zip libc*.dll gcc*.dll
1510 cd $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION); zip $(ZIPFLAGS) $(PATH_BIN)/libc.zip COPYING.LIB
1511
1512packing-core:
1513 rm -f $(ZIPBASE)-core.zip
1514 cd $(ALL_PREFIX)/.. ; zip $(ZIPFLAGS) $(ZIPBASE)-core.zip * -x \*.dbg -x \*.map -x \*_p.\* -x \*.elh -x \*.prf -x \*.lib -x usr/lib/dbg/\* -x \*.lib
1515 cd $(ALL_PREFIX)/.. ; zip $(ZIPFLAGS) $(ZIPBASE)-core.zip usr/lib/libc*dbg usr/lib/end.lib
1516
1517packing-dbg:
1518 rm -f $(ZIPBASE)-dbg.zip
1519 cd $(ALL_PREFIX)/.. ; zip $(ZIPFLAGS) $(ZIPBASE)-dbg.zip . -i \*.dbg -i \*.map -i \*.elh -i \*.sym -i usr/lib/dbg/\*
1520
1521packing-prf:
1522 rm -f $(ZIPBASE)-prf.zip
1523 cd $(ALL_PREFIX)/.. ; zip $(ZIPFLAGS) $(ZIPBASE)-prf.zip . -i \*_p.\* -i \*.prf
1524
1525packing-src: \
1526 packing-src-gcc \
1527 packing-src-binutils \
1528 packing-src-emx \
1529 packing-src-libc \
1530
1531packing-src-gcc:
1532 rm -f $(ZIPBASE)-src-GCC.zip
1533 zip $(ZIPFLAGS) $(ZIPBASE)-src-GCC.zip gcc -x \*CVS\*
1534
1535packing-src-binutils:
1536 rm -f $(ZIPBASE)-src-binutils.zip
1537 zip $(ZIPFLAGS) $(ZIPBASE)-src-binutils.zip binutils -x \*CVS\*
1538
1539packing-src-emx:
1540 rm -f $(ZIPBASE)-src-emx.zip
1541 zip $(ZIPFLAGS) $(ZIPBASE)-src-emx.zip emx/* -x \*CVS\* -x \*testcase\* -x \*out\*
1542
1543packing-src-libc:
1544 rm -f $(ZIPBASE)-src-libc.zip
1545 zip $(ZIPFLAGS) $(ZIPBASE)-src-libc.zip libc/* -x \*CVS\* -x \*testcase\* -x \*out\*
1546
1547installer:
1548 $(MAKE) $(MAKEOPT) -C $(PATH_TOP)/src/install all packing
1549
1550
1551###############################################################################
1552###############################################################################
1553###############################################################################
1554#
1555# M I S C
1556#
1557###############################################################################
1558###############################################################################
1559###############################################################################
1560
1561misc-install:
1562 mkdir -p $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1563 mkdir -p $(ALL_PREFIX)/lib
1564 mkdir -p $(ALL_PREFIX)/bin
1565 cp $(PATH_TOP)/doc/ReleaseNotes.os2 $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1566 cp $(PATH_TOP)/doc/MailingLists.os2 $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1567 cp $(PATH_TOP)/doc/Install.os2 $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1568 cp $(PATH_TOP)/doc/Licenses.os2 $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1569 cp $(PATH_TOP)/doc/KnownProblems.os2 $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1570 cp $(PATH_TOP)/doc/COPYING.LIB $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1571 cp $(PATH_TOP)/doc/COPYING $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1572 cp $(PATH_TOP)/libc/ChangeLog.LIBC $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1573 cp $(PATH_TOP)/emx/ChangeLog.emx $(ALL_PREFIX)/doc/GCC-$(GCC_VERSION)
1574
1575
1576#
1577# Checkout rule
1578#
1579checkout update up:
1580 cvs -q update -d -P 2>&1 | tee up.log
1581
1582# DO NOT DELETE
Note: See TracBrowser for help on using the repository browser.