source: trunk/Makefile@ 1194

Last change on this file since 1194 was 1174, checked in by bird, 22 years ago

-P to update.

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