source: trunk/Makefile@ 1330

Last change on this file since 1330 was 1269, checked in by bird, 22 years ago

* empty log message *

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