source: branches/libc-0.6/Makefile@ 2457

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

it's OFFICIAL_BIRD_VERSION not _BUILD! Rebuilding ga as ga2.

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