source: trunk/Makefile@ 2015

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

Forgot a builtunix.

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