source: trunk/Makefile@ 1736

Last change on this file since 1736 was 1734, checked in by bird, 21 years ago

* empty log message *

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