source: trunk/Makefile@ 706

Last change on this file since 706 was 705, checked in by bird, 22 years ago

more docs.

  • Property cvs2svn:cvs-rev set to 1.50
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 43.0 KB
Line 
1# $Id: Makefile 705 2003-09-12 13:28:37Z bird $
2#
3# Top level makefile.
4#
5# InnoTek Systemberatung GmbHconfidential
6#
7# Copyright (c) 2003 InnoTek Systemberatung GmbH
8# Author: knut st. osmundsen <[email protected]>
9#
10# All Rights Reserved
11#
12
13
14###############################################################################
15## Global Variables
16## (D = no drive)
17###############################################################################
18PWD := $(shell pwd)
19PWDD := $(shell pwd|sed 's/^[a-zA-Z]://')
20MAKEFILE = $(PWD)/Makefile
21
22ifndef BUILD_MODE
23export BUILD_MODE=DEBUG
24endif
25
26ifndef PATH_TOP
27export PATH_TOP := $(PWD)
28endif
29ifndef PATH_TOPD
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
40PATH_BUILTTOOLS_TMP = $(PATH_OBJ)/builttools.tmp
41PATH_BUILTTOOLS_TMPD = $(PATH_OBJD)/builttools.tmp
42
43# Debug info or not (when ever we feel like passing down such options).
44# Several ways to do this it seems.
45ifeq "$(BUILD_MODE)" "RELEASE"
46BUILD_DEBUGINFO = -s
47BUILD_ENABLE_SYMBOLS = --disable-symbols
48else
49BUILD_DEBUGINFO = -g
50BUILD_ENABLE_SYMBOLS = --enable-symbols
51endif
52
53
54# Version and CVS defines
55export GCC_VERSION ?= 3.2.2
56export GCC_VERSION_SHORT ?= 3022
57export GCC_CVS_VENDOR ?= GNU
58export GCC_CVS_REL ?= GCC_3-2-2
59export BINUTILS_VERSION ?= 2.11.2
60export BINUTILS_VERSION_SHORT ?= 2112
61export BINUTILS_CVS_VENDOR ?= GNU
62export BINUTILS_CVS_REL ?= BINUTILS_2-11-2
63export EMX_VERSION ?= 0.9d-fix04
64export EMX_VERSION_SHORT ?= 9d04
65export EMX_CVS_VENDOR ?= EMX
66export EMX_CVS_REL ?= EMX_0-9D-FIX04
67
68# innotek version and timestamp
69export INNOTEK_VERSION ?= (Innotek Build $(shell date '+%Y-%m-%d %H:%M'))
70
71
72#
73# For builds on Linux Host builds we do the environment setup here.
74# This is essentially a mimicking of what we do on OS/2.
75#
76ifndef BUILD_PLATFORM
77ifeq "$(shell uname -s)" "Linux"
78export BUILD_PLATFORM ?= LINUX
79export BUILD_PROJECT ?= GCCOS2
80export SH ?= /bin/sh
81export ASH ?= /bin/ash
82export BASH ?= /bin/bash
83export AWK ?= /bin/gawk
84export GAWK ?= /bin/gawk
85export CONFIG_SHELL ?= $(SH)
86export MAKESHELL ?= $(SH)
87export PATH_EMX ?= /usr
88export PATH_EMXPGCC ?= /usr
89export TMP ?= /tmp
90export TMPDIR ?= /tmp
91endif
92endif
93
94
95
96# Misc Helpers
97ALL_PREFIX = $(PATH_BIND)/$(GCC_VERSION)/usr
98TOOL_CVS_DIFF_TREE = -cvs diff -R -N -w -u -r
99ifeq "$(BUILD_PLATFORM)" "OS2"
100NICE = nice -i
101else
102NICE =
103endif
104
105
106
107
108###############################################################################
109###############################################################################
110###############################################################################
111###############################################################################
112#
113# M a i n R u l e z
114#
115###############################################################################
116###############################################################################
117###############################################################################
118###############################################################################
119all:
120 mkdir -p $(PATH_OBJ)
121 $(NICE) $(MAKE) $(MAKEOPT) -j 1 -C . all-logged 2>&1 | $(UNIXROOT)/usr/bin/tee $(PATH_OBJ)/build-`date +"%Y%m%d-%H%M%S"`.log
122
123all-logged: \
124 all-banner-start \
125 all-env \
126 all-sanity \
127 all-preload \
128 all-versionstamps \
129 all-symlinks \
130 \
131 all-stage1 \
132 all-stage2 \
133 \
134 all-install \
135 \
136 all-symlinks-unlink
137 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
138 @echo "+ Make Ended Successfully: $(shell date)"
139 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
140
141#
142# banners
143#
144
145all-banner-start:
146 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
147 @echo "+ Make started: $(shell date)"
148 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
149
150all-banner-stage1:
151 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
152 @echo "+ Stage 1 - starting: $(shell date)"
153 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
154
155all-banner-stage2:
156 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
157 @echo "+ Stage 2 - starting: $(shell date)"
158 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
159
160all-banner-builttools-initial:
161 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
162 @echo "+ Initializing builttools tree"
163 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
164
165all-banner-builttools-stage2:
166 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
167 @echo "+ Copying stage2 builttools"
168 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
169
170all-banner-install:
171 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
172 @echo "+ Install - starting: $(shell date)"
173 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
174
175all-banner-install-done:
176 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
177 @echo "+ Install - done: $(shell date)"
178 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
179
180
181#
182# Sanity and environment dumps - to make it easier to figure out make bugs.
183#
184
185all-env:
186 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
187 @echo "Variables:"
188 @echo " PWD = $(PWD)"
189 @echo " PWDD = $(PWDD)"
190 @echo " PATH_TOP = $(PATH_TOP)"
191 @echo " PATH_TOPD = $(PATH_TOPD)"
192 @echo " PATH_OBJ = $(PATH_OBJ)"
193 @echo " PATH_OBJD = $(PATH_OBJD)"
194 @echo " PATH_BIN = $(PATH_BIN)"
195 @echo " PATH_BIND = $(PATH_BIND)"
196 @echo " ALL_PREFIX = $(ALL_PREFIX)"
197 @echo " PATH_EMXPGCC = $(PATH_EMXPGCC)"
198 @echo " PATH_EMX = $(PATH_EMX)"
199 @echo " BUILD_MODE = $(BUILD_MODE)"
200 @echo " BUILD_PLATFORM = $(BUILD_PLATFORM)"
201 @echo " BUILD_PROJECT = $(BUILD_PROJECT)"
202 @echo " GCC_VERSION = $(GCC_VERSION)"
203 @echo " GCC_VERSION_SHORT = $(GCC_VERSION_SHORT)"
204 @echo " GCC_CVS_VENDOR = $(GCC_CVS_VENDOR)"
205 @echo " GCC_CVS_REL = $(GCC_CVS_REL)"
206 @echo " BINUTILS_VERSION = $(BINUTILS_VERSION)"
207 @echo " BINUTILS_VERSION_SHORT = $(BINUTILS_VERSION_SHORT)"
208 @echo " BINUTILS_CVS_VENDOR = $(BINUTILS_CVS_VENDOR)"
209 @echo " BINUTILS_CVS_REL = $(BINUTILS_CVS_REL)"
210 @echo " EMX_VERSION = $(EMX_VERSION)"
211 @echo " EMX_VERSION_SHORT = $(EMX_VERSION_SHORT)"
212 @echo " EMX_CVS_VENDOR = $(EMX_CVS_VENDOR)"
213 @echo " EMX_CVS_REL = $(EMX_CVS_REL)"
214 @echo " MAKEFILE = $(MAKEFILE)"
215 @echo " UNIXROOT = $(UNIXROOT)"
216 @echo " AC_PREFIX = $(AC_PREFIX)"
217 @echo " AC_MACRODIR = $(AC_MACRODIR)"
218 @echo " HOSTNAME = $(HOSTNAME)"
219 @echo " USER = $(USER)"
220 @echo " LOGNAME = $(LOGNAME)"
221 @echo " TMP = $(TMP)"
222 @echo " TMPDIR = $(TMPDIR)"
223 @echo " USER = $(USER)"
224 @echo " AWK = $(AWK)"
225 @echo " GAWK = $(GAWK)"
226 @echo " SH = $(SH)"
227 @echo " ASH = $(ASH)"
228 @echo " BASH = $(BASH)"
229 @echo " CONFIG_SHELL = $(CONFIG_SHELL)"
230 @echo " MAKESHELL = $(MAKESHELL)"
231 @echo " EMXSHELL = $(EMXSHELL)"
232 @echo " SHELL = $(SHELL)"
233 @echo " MAKE = $(MAKE)"
234 @echo " MAKEOPT = $(MAKEOPT)"
235 @echo " PATH = $(PATH)"
236 @echo " C_INCLUDE_PATH = $(C_INCLUDE_PATH)"
237 @echo " CPLUS_INCLUDE_PATH = $(CPLUS_INCLUDE_PATH)"
238 @echo " OBJC_INCLUDE_PATH = $(OBJC_INCLUDE_PATH)"
239 @echo " LIBRARY_PATH = $(LIBRARY_PATH)"
240 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
241 @echo "Content of PATH_OBJ:"
242 -ls -la $(PATH_OBJ)/
243 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
244 @echo "Content of PATH_BIN:"
245 -ls -la $(PATH_BIN)/
246 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
247
248
249all-sanity:
250 @echo -n "Checking build environment sanity... "
251 @if [ "x$(BUILD_PROJECT)" != "xGCCOS2" ]; then \
252 echo ""; echo "Error: BUILD_PROJECT is wrong or isn't defined!"; \
253 exit 8; \
254 fi
255 @if [ "x$(BUILD_PLATFORM)" != "xOS2" -a "x$(BUILD_PLATFORM)" != "xLINUX" ]; then \
256 echo ""; echo "Error: BUILD_PLATFORM is wrong or isn't defined!"; \
257 exit 8; \
258 fi
259 @if [ "x$(BUILD_PLATFORM)" = "xOS2" -a "x$(UNIXROOT)" = "x" ]; then \
260 echo ""; echo "Error: UNIXROOT isn't defined!"; \
261 exit 8; \
262 fi
263 @if [ "x$(BUILD_PLATFORM)" != "xOS2" -a "x$(UNIXROOT)" != "x" ]; then \
264 echo ""; echo "Error: UNIXROOT is defined!"; \
265 exit 8; \
266 fi
267ifeq "$(BUILD_PLATFORM)" "OS2"
268 @if gcc --version | grep -qe ".*[3]\.[2-9]\.[0-9]"; then \
269 true; \
270 else \
271 echo ""; echo "Warning: GCC v3.2.x or higher is recommended!"; \
272 fi
273 @if ar --version | grep -qe ".*2\.11\.[2-9]" -e ".*[2]\.1[2-9]\.[0-9]*"; then \
274 true; \
275 else \
276 echo ""; echo "Warning: AR v2.11.2 or higher is recommended!"; \
277 fi
278endif
279 @echo "ok"
280
281
282#
283# Preload tools we commonly use this speeds up stuff.
284#
285PRELOADED_TOOLS = bin/sh.exe bin/echo.exe bin/true.exe usr/bin/test.exe usr/bin/expr.exe \
286 usr/bin/gawk.exe usr/bin/sed.exe bin/rm.exe bin/cat.exe bin/cp.exe
287
288all-preload:
289 @echo "Preloading tools:"
290ifeq "$(BUILD_PLATFORM)" "OS2"
291 @for tool in $(PRELOADED_TOOLS); do \
292 echo -n " $$tool"; \
293 emxload -e $(UNIXROOT)/$$tool; \
294 done
295 emxload -e gcc.exe g++.exe ld.exe as.exe ar.exe ld.exe
296endif
297 @echo ""
298
299all-preload-unload:
300ifeq "$(BUILD_PLATFORM)" "OS2"
301 emxload -qw
302endif
303
304
305#
306# Version stamping/branding.
307# Update various version strings which are printed from the tools to tell
308# the build date and that's our built. This helps us tell releases apart.
309#
310# IMPORTANT! Take care not to commit the changed files
311# (TODO! Try make these changes to non-cvs backed files. (long-term-goal))
312.PHONY: all-versionstamps
313all-versionstamps: $(PATH_OBJ)/.ts.versionstamped
314$(PATH_OBJ)/.ts.versionstamped:
315 echo '#define INNOTEK_VERSION "$(INNOTEK_VERSION)"' > include/innotekversion.h
316 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) "INNOTEK_VERSION=$(INNOTEK_VERSION)" gcc-versionstamps binutils-versionstamps emx-versionstamps
317 mkdir -p $(@D)
318 touch $@
319
320
321#
322# Stages
323# A rebuild with the new toolsuite is usually required when there is ABI
324# changes and other vital changes done to the tools.
325#
326
327all-stage1: $(PATH_OBJ)/.all-stage1
328$(PATH_OBJ)/.all-stage1:
329 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-stage1-it
330 echo "$(@F)" > $(PATH_OBJ)/.last-stage
331 touch $@
332 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
333 @echo "+ Stage 1 - done: $(shell date)"
334 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
335
336all-stage1-it: \
337 all-banner-stage1 \
338 all-builttools-initial \
339 all-emx \
340 all-binutils \
341 all-gcc
342
343
344all-stage2: $(PATH_OBJ)/.all-stage2
345$(PATH_OBJ)/.all-stage2: \
346 $(PATH_OBJ)/.all-stage2.save-stage1
347 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-stage2-it
348 echo "$(@F)" > $(PATH_OBJ)/.last-stage
349 touch $@
350 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
351 @echo "+ Stage 2 - done: $(shell date)"
352 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
353
354$(PATH_OBJ)/.all-stage2.save-stage1:
355 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
356 @echo "+ Saving Stage 1 - Starting: $(shell date)"
357 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
358 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-preload-unload
359 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-builttools-stage2
360 rm -Rf $(PATH_OBJ)/stage1
361 mkdir -p $(PATH_OBJ)/stage1
362 if [ -d $(PATH_OBJ)/gcc ] ; then mv $(PATH_OBJ)/gcc $(PATH_OBJ)/stage1/gcc; fi
363 if [ -d $(PATH_OBJ)/emx ] ; then mv $(PATH_OBJ)/emx $(PATH_OBJ)/stage1/emx; fi
364 if [ -d $(PATH_TOP)/src/emx/out ] ; then mv $(PATH_TOP)/src/emx/out $(PATH_OBJ)/stage1/emx_out; fi
365 $(MAKE) $(MAKEOPT) -j 1 -f $(MAKEFILE) all-preload
366 touch $@
367 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
368 @echo "+ Saving Stage 1 - done: $(shell date)"
369 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
370
371all-stage2-it: \
372 all-banner-stage2 \
373 all-emx \
374 all-binutils \
375 all-gcc
376
377
378#
379# Install to bin tree makeing it ready for packing.
380#
381all-install: \
382 all-banner-install \
383 gcc-install \
384 emx-install \
385 misc-install \
386 all-banner-install-done \
387
388
389#
390# Generate all the diffs we have to supply.
391#
392all-diff: \
393 gcc-diff \
394 binutils-diff \
395 emx-diff \
396
397
398
399
400
401
402###############################################################################
403###############################################################################
404###############################################################################
405#
406# B u i l t T o o l s
407#
408###############################################################################
409###############################################################################
410###############################################################################
411.PHONY: all-builttools-initial all-builttools-dirs all-builttools-clean all-builttools-stage2
412
413all-builttools-initial: \
414 all-banner-builttools-initial \
415 all-builttools-clean \
416 all-builttools-dirs \
417 $(PATH_BUILTTOOLS)/bin/dllar.cmd \
418 $(PATH_BUILTTOOLS)/omfhack/ar.exe \
419 $(PATH_BUILTTOOLS)/omfhack/realar.exe \
420 $(PATH_BUILTTOOLS)/omfhack/ranlib.exe
421
422all-builttools-clean: \
423 all-preload-unload
424 rm -Rf $(PATH_BUILTTOOLS)
425
426all-builttools-dirs:
427 mkdir -p $(PATH_BUILTTOOLS)/bin $(PATH_BUILTTOOLS)/lib $(PATH_BUILTTOOLS)/include $(PATH_BUILTTOOLS)/omfhack
428
429$(PATH_BUILTTOOLS)/bin/dllar.cmd $(PATH_BUILTTOOLS_TMP)/bin/dllar.cmd: $(PATH_TOP)/src/misc/dllar.cmd
430 cp $< $@
431$(PATH_BUILTTOOLS)/omfhack/ranlib.exe $(PATH_BUILTTOOLS_TMP)/omfhack/ranlib.exe: $(PATH_TOP)/tools/bin/true.exe
432 cp $< $@
433$(PATH_BUILTTOOLS)/omfhack/ar.exe: $(PATH_EMXPGCC)/bin/emxomfar.exe
434 cp $< $@
435$(PATH_BUILTTOOLS_TMP)/omfhack/ar.exe: $(PATH_BUILTTOOLS_TMP)/bin/emxomfar.exe
436 cp $< $@
437$(PATH_BUILTTOOLS)/omfhack/realar.exe $(PATH_BUILTTOOLS_TMP)/omfhack/realar.exe: $(PATH_EMXPGCC)/bin/ar.exe
438 cp $< $@
439$(PATH_BUILTTOOLS_TMP)/omfhack:
440 mkdir -p $@
441
442all-builttools-stage2: \
443 all-banner-builttools-stage2 \
444 gcc-builttools-stage2 \
445 emx-builttools-stage2 \
446 all-builttools-stage2-libs \
447 $(PATH_BUILTTOOLS_TMP)/bin/dllar.cmd \
448 $(PATH_BUILTTOOLS_TMP)/omfhack \
449 $(PATH_BUILTTOOLS_TMP)/omfhack/ar.exe \
450 $(PATH_BUILTTOOLS_TMP)/omfhack/realar.exe \
451 $(PATH_BUILTTOOLS_TMP)/omfhack/ranlib.exe \
452 all-builttools-clean
453 mv -f $(PATH_BUILTTOOLS_TMP) $(PATH_BUILTTOOLS)
454
455all-builttools-stage2-libs:
456 -for aoutlib in `find $(PATH_BUILTTOOLS_TMP) -name "*.a" | sed -e 's/\.a$$//' `; \
457 do \
458 if [ ! -f $(aoutlib).lib ]; then \
459 echo " $${aoutlib}"; \
460 $(PATH_BUILTTOOLS_TMP)/bin/emxomf.exe -p256 $${aoutlib}.a; \
461 fi;\
462 done
463
464
465###############################################################################
466###############################################################################
467###############################################################################
468#
469# S y m l i n k s
470#
471#
472# We use symlinking of binutils stuff into the gcc tree so we can
473# build everything in one go and take advantage of the gcc
474# makesystem which will use the binutils we built when doing the
475# gcc libraries and such.
476#
477# On OS/2 symlinks doesn't exist so, we'll copy the source trees.
478# Copy because this will for directories work ok with cvs, moving
479# directories would cause 'cvs update -d' to refetch stuff.
480#
481# IMPORTANT! Take care, the 'symlined' stuff will be removed at the
482# end of the build. Remeber to do all-symlinks-unlink before a fresh
483# build is started as the duplicated binutils things doesn't get
484# updated by cvs.
485#
486#
487#w##############################################################################
488###############################################################################
489###############################################################################
490all-symlinks: \
491 all-symlinks-binutils
492
493all-symlinks-unlink: \
494 all-symlinks-unlink-binutils
495
496
497ifeq "$(BUILD_PLATFORM)" "OS2"
498TOOL_SYMLINK_FILE = cp -p
499TOOL_SYMLINK_DIR = cp -pRf
500TOOL_SYMLINK_MKDIR = mkdir
501TOOL_UNSYMLINK_DIR = rm -Rf
502else
503TOOL_SYMLINK_FILE = ln -s
504TOOL_SYMLINK_DIR = ln -s
505TOOL_SYMLINK_MKDIR = true
506TOOL_UNSYMLINK_DIR = rm
507endif
508
509# ld is broken, so don't use it!
510# ld \
511
512SYMLINKS_BINUTILS_TO_GCC_DIRS = \
513bfd \
514binutils \
515etc \
516gas \
517gprof \
518intl \
519opcodes \
520texinfo \
521include/aout \
522include/coff \
523include/elf \
524include/nlm \
525include/opcode \
526include/regs \
527
528SYMLINKS_BINUTILS_TO_GCC_FILES = \
529include/alloca-conf.h \
530include/ansidecl.h \
531include/bfdlink.h \
532include/bin-bugs.h \
533include/bout.h \
534include/callback.h \
535include/ChangeLog \
536include/COPYING \
537include/demangle.h \
538include/dis-asm.h \
539include/dyn-string.h \
540include/filenames.h \
541include/floatformat.h \
542include/fnmatch.h \
543include/fopen-bin.h \
544include/fopen-same.h \
545include/fopen-vms.h \
546include/gdbm.h \
547include/getopt.h \
548include/hashtab.h \
549include/hp-symtab.h \
550include/ieee.h \
551include/libiberty.h \
552include/MAINTAINERS \
553include/md5.h \
554include/oasys.h \
555include/objalloc.h \
556include/obstack.h \
557include/os9k.h \
558include/partition.h \
559include/progress.h \
560include/remote-sim.h \
561include/safe-ctype.h \
562include/sim-d10v.h \
563include/sort.h \
564include/splay-tree.h \
565include/symcat.h \
566
567# Symlink binutils stuff to gcc.
568# Note the test should've been "! -e", but that doesn' work in ash... :/
569all-symlinks-binutils:
570 for file in $(SYMLINKS_BINUTILS_TO_GCC_FILES); do \
571 if [ ! -f "$(PATH_TOP)/src/gcc/$$file" ]; then \
572 $(TOOL_SYMLINK_FILE) $(PATH_TOP)/src/binutils/$$file $(PATH_TOP)/src/gcc/$$file && \
573 touch $(PATH_TOP)/src/gcc/.symlinked.`echo $${file} | sed -e 's@/@_@g'`; \
574 fi ; \
575 done
576 for dir in $(SYMLINKS_BINUTILS_TO_GCC_DIRS) ; do \
577 if [ ! -d "$(PATH_TOP)/src/gcc/$$dir" ] ; then \
578 $(TOOL_SYMLINK_MKDIR) $(PATH_TOP)/src/gcc/$$dir && \
579 touch $(PATH_TOP)/src/gcc/.symlinked.`echo $${dir} | sed -e 's@/@_@g'` && \
580 $(TOOL_SYMLINK_DIR) $(PATH_TOP)/src/binutils/$$dir $(PATH_TOP)/src/gcc/`echo $${dir}| sed -e '/\//!d' -e 's@\([a-zA-z0-9]*\)/.*@\1/@'` ; \
581 fi ; \
582 done
583 -ls -a1 src/gcc/.sym*
584
585all-symlinks-unlink-binutils:
586 for file in $(SYMLINKS_BINUTILS_TO_GCC_FILES); do \
587 if [ -f "$(PATH_TOP)/src/gcc/.symlinked.`echo $${file} | sed -e 's@/@_@g'`" ]; then \
588 rm $(PATH_TOP)/src/gcc/$${file} && \
589 rm $(PATH_TOP)/src/gcc/.symlinked.`echo $${file} | sed -e 's@/@_@g'` ; \
590 fi ; \
591 done
592 for dir in $(SYMLINKS_BINUTILS_TO_GCC_DIRS) ; do \
593 if [ -f "$(PATH_TOP)/src/gcc/.symlinked.`echo $${dir} | sed -e 's@/@_@g'`" ] ; then \
594 $(TOOL_UNSYMLINK_DIR) $(PATH_TOP)/src/gcc/$${dir} && \
595 rm $(PATH_TOP)/src/gcc/.symlinked.`echo $${dir} | sed -e 's@/@_@g'`; \
596 fi ; \
597 done
598 -ls -a1 src/gcc/.sym*
599
600
601###############################################################################
602###############################################################################
603###############################################################################
604#
605# G C C
606#
607###############################################################################
608###############################################################################
609###############################################################################
610all-gcc gcc: \
611 gcc-autoconf-refresh \
612 gcc-build
613 echo "Successfully build GCC."
614
615
616
617GCC_DIRS = \
618gcc/libiberty \
619gcc/zlib \
620gcc/gcc \
621gcc/libstdc++-v3 \
622gcc/boehm-gc \
623gcc/fastjar \
624gcc/libf2c \
625gcc/libf2c/libF77 \
626gcc/libf2c/libI77 \
627gcc/libf2c/libU77 \
628gcc/libffi \
629gcc/libjava \
630gcc/libjava/libltdl \
631gcc/libobjc \
632
633# Here is a problem, we can't regenerate binutils makefiles when symlinked into
634# gcc. At least not yet. The result is messed up severely.
635not_yet =\
636gcc/bfd \
637gcc/binutils \
638gcc/gas \
639gcc/gprof \
640gcc/intl \
641gcc/ld \
642gcc/libiberty \
643gcc/opcodes \
644
645GCC_CONFIGURE_DIRS = $(GCC_DIRS)
646
647
648# configure.in/configure
649.PHONY: gcc-autoconf-refresh gcc-autoconf-rerun gcc-autoconf-clean gcc-autoconf-remove
650gcc-autoconf-refresh gcc-autoconf-rerun gcc-autoconf-clean gcc-autoconf-remove:
651ifeq "$(BUILD_PLATFORM)" "LINUX"
652 -$(SH) $(PATH_TOP)/xfix.sh
653endif
654 for dir in $(GCC_CONFIGURE_DIRS); do \
655 if $(MAKE) $(MAKEOPT) -j 1 $(@:gcc-autoconf-%=%) -f $(PWD)/config.gmk -C src/$$dir ; then \
656 true; \
657 else \
658 exit 8; \
659 fi \
660 done
661
662
663# build the components.
664.PHONY: gcc-build gcc-install gcc-configure
665gcc-build gcc-install gcc-configure:
666 mkdir -p $(PATH_OBJ)/gcc