source: branches/libc-0.6/Makefile@ 3735

Last change on this file since 3735 was 3735, checked in by bird, 14 years ago

Setting version to 0.6.4 / csd4.

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