source: branches/libc-0.6/Makefile@ 2443

Last change on this file since 2443 was 2443, checked in by bird, 20 years ago

0.6

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