source: trunk/Makefile@ 80

Last change on this file since 80 was 76, checked in by bird, 23 years ago

Installing.

  • Property cvs2svn:cvs-rev set to 1.8
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 12.0 KB
Line 
1# $Id: Makefile 76 2003-05-01 02:22:07Z 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)
36ifndef PATH_OBJ
37export PATH_OBJ = $(PATH_TOP)/obj/$(BUILD_PLATFORM)/$(BUILD_MODE)
38export PATH_OBJD = $(PATH_TOPD)/obj/$(BUILD_PLATFORM)/$(BUILD_MODE)
39endif
40export PATH_BUILTTOOLS = $(PATH_OBJ)/builttools
41export PATH_BUILTTOOLSD= $(PATH_OBJD)/builttools
42
43# Debug info or not (when ever we feel like passing down such options).
44ifeq "$(BUILD_MODE)" "RELEASE"
45BUILD_DEBUGINFO = -s
46else
47BUILD_DEBUGINFO = -g
48endif
49
50
51#
52# For builds on Linux Host builds we do the environment setup here.
53# This is essentially a mimicking of what we do on OS/2.
54#
55ifndef BUILD_PLATFORM
56ifeq "$(shell uname -s)" "Linux"
57export BUILD_PLATFORM ?= LINUX
58export BUILD_PROJECT ?= GCCOS2
59export SH ?= /bin/sh
60export ASH ?= /bin/ash
61export BASH ?= /bin/bash
62export AWK ?= /bin/gawk
63export GAWK ?= /bin/gawk
64export CONFIG_SHELL ?= $(SH)
65export MAKESHELL ?= $(SH)
66export PATH_EMX ?= /usr
67export PATH_EMXPGCC ?= /usr
68export TMP ?= /tmp
69export TMPDIR ?= /tmp
70endif
71endif
72
73
74###############################################################################
75###############################################################################
76###############################################################################
77###############################################################################
78#
79# M a i n R u l e z
80#
81###############################################################################
82###############################################################################
83###############################################################################
84###############################################################################
85all:
86 mkdir -p $(PATH_OBJ)
87 $(MAKE) -C . all-logged 2>&1 | $(UNIXROOT)/usr/bin/tee $(PATH_OBJ)/build-`date +"%Y%m%d-%H%M%S"`.log
88
89all-logged: \
90 all-start \
91 all-env \
92 all-sanity \
93 all-preload \
94 all-builttools-initial \
95 \
96 all-gcc \
97 all-binutils \
98 all-emx \
99 \
100 all-install \
101 \
102 all-ended
103
104
105all-start:
106 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
107 @echo "+ Make started: $(shell date)"
108 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
109
110
111all-ended:
112 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
113 @echo "+ Make ended: $(shell date)"
114 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
115
116
117all-env:
118 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
119 @echo "Variables:"
120 @echo " PWD = $(PWD)"
121 @echo " PWDD = $(PWDD)"
122 @echo " PATH_TOP = $(PATH_TOP)"
123 @echo " PATH_TOPD = $(PATH_TOPD)"
124 @echo " PATH_OBJ = $(PATH_OBJ)"
125 @echo " PATH_OBJD = $(PATH_OBJD)"
126 @echo " PATH_BIN = $(PATH_BIN)"
127 @echo " PATH_BIND = $(PATH_BIND)"
128 @echo " PATH_EMXPGCC = $(PATH_EMXPGCC)"
129 @echo " PATH_EMX = $(PATH_EMX)"
130 @echo " BUILD_MODE = $(BUILD_MODE)"
131 @echo " BUILD_PLATFORM = $(BUILD_PLATFORM)"
132 @echo " BUILD_PROJECT = $(BUILD_PROJECT)"
133 @echo " MAKEFILE = $(MAKEFILE)"
134 @echo " UNIXROOT = $(UNIXROOT)"
135 @echo " AC_PREFIX = $(AC_PREFIX)"
136 @echo " AC_MACRODIR = $(AC_MACRODIR)"
137 @echo " HOSTNAME = $(HOSTNAME)"
138 @echo " USER = $(USER)"
139 @echo " LOGNAME = $(LOGNAME)"
140 @echo " TMP = $(TMP)"
141 @echo " TMPDIR = $(TMPDIR)"
142 @echo " USER = $(USER)"
143 @echo " AWK = $(AWK)"
144 @echo " GAWK = $(GAWK)"
145 @echo " SH = $(SH)"
146 @echo " ASH = $(ASH)"
147 @echo " BASH = $(BASH)"
148 @echo " CONFIG_SHELL = $(CONFIG_SHELL)"
149 @echo " MAKESHELL = $(MAKESHELL)"
150 @echo " EMXSHELL = $(EMXSHELL)"
151 @echo " SHELL = $(SHELL)"
152 @echo " MAKE = $(MAKE)"
153 @echo " PATH = $(PATH)"
154 @echo " C_INCLUDE_PATH = $(C_INCLUDE_PATH)"
155 @echo " CPLUS_INCLUDE_PATH = $(CPLUS_INCLUDE_PATH)"
156 @echo " OBJC_INCLUDE_PATH = $(OBJC_INCLUDE_PATH)"
157 @echo " LIBRARY_PATH = $(LIBRARY_PATH)"
158 @echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"
159
160all-sanity:
161 @echo -n "Checking build environment sanity... "
162 @if [ "x$(BUILD_PROJECT)" != "xGCCOS2" ]; then \
163 echo ""; echo "Error: BUILD_PROJECT is wrong or isn't defined!"; \
164 exit 8; \
165 fi
166 @if [ "x$(BUILD_PLATFORM)" != "xOS2" -a "x$(BUILD_PLATFORM)" != "xLINUX" ]; then \
167 echo ""; echo "Error: BUILD_PLATFORM is wrong or isn't defined!"; \
168 exit 8; \
169 fi
170 @if [ "x$(BUILD_PLATFORM)" = "xOS2" -a "x$(UNIXROOT)" = "x" ]; then \
171 echo ""; echo "Error: UNIXROOT isn't defined!"; \
172 exit 8; \
173 fi
174 @if [ "x$(BUILD_PLATFORM)" != "xOS2" -a "x$(UNIXROOT)" != "x" ]; then \
175 echo ""; echo "Error: UNIXROOT is defined!"; \
176 exit 8; \
177 fi
178ifeq "$(BUILD_PLATFORM)" "OS2"
179 @if gcc --version | grep -qe ".*[3]\.[2-9]\.[0-9]"; then \
180 true; \
181 else \
182 echo ""; echo "Warning: GCC v3.2.x or higher is recommended!"; \
183 fi
184 @if ar --version | grep -qe ".*2\.11\.[2-9]" -e ".*[2]\.1[2-9]\.[0-9]*"; then \
185 true; \
186 else \
187 echo ""; echo "Warning: AR v2.11.2 or higher is recommended!"; \
188 fi
189endif
190 @echo "ok"
191
192
193PRELOADED_TOOLS = bin/sh.exe bin/echo.exe bin/true.exe usr/bin/test.exe usr/bin/expr.exe \
194 usr/bin/gawk.exe usr/bin/sed.exe bin/rm.exe bin/cat.exe bin/cp.exe
195
196all-preload:
197 @echo "Preloading tools:"
198ifeq "$(BUILD_PLATFORM)" "OS2"
199 @for tool in $(PRELOADED_TOOLS); do \
200 echo -n " $$tool"; \
201 emxload -e $(UNIXROOT)/$$tool; \
202 done
203 emxload -e gcc.exe g++.exe ld.exe cc1.exe as.exe cc1plus.exe cpp0.exe ar.exe
204endif
205 @echo ""
206
207
208
209all-install: \
210 gcc-install
211# emx-install
212# binutils-install
213
214
215
216###############################################################################
217###############################################################################
218###############################################################################
219#
220# B u i l t T o o l s
221#
222###############################################################################
223###############################################################################
224###############################################################################
225.PHONY: all-builttools-initial all-builttools-dirs
226all-builttools-initial: \
227 all-builttools-dirs \
228 $(PATH_BUILTTOOLS)/usr/bin/dllar.cmd \
229
230
231all-builttools-dirs:
232 mkdir -p $(PATH_BUILTTOOLS)/bin $(PATH_BUILTTOOLS)/lib $(PATH_BUILTTOOLS)/usr/bin $(PATH_BUILTTOOLS)/usr/lib
233
234$(PATH_BUILTTOOLS)/usr/bin/dllar.cmd: $(PATH_TOP)/src/misc/dllar.cmd
235 cp $< $@
236
237
238
239
240
241
242###############################################################################
243###############################################################################
244###############################################################################
245#
246# G C C
247#
248###############################################################################
249###############################################################################
250###############################################################################
251all-gcc gcc: \
252 gcc-autoconf-refresh \
253 gcc-build
254 echo "Successfully build GCC."
255
256
257
258GCC_DIRS = \
259gcc/libiberty \
260gcc/zlib \
261gcc/gcc \
262gcc/libstdc++-v3 \
263gcc/boehm-gc \
264gcc/fastjar \
265gcc/libf2c \
266gcc/libf2c/libF77 \
267gcc/libf2c/libI77 \
268gcc/libf2c/libU77 \
269gcc/libffi \
270gcc/libjava \
271gcc/libjava/libltdl \
272gcc/libobjc \
273
274GCC_CONFIGURE_DIRS = $(GCC_DIRS)
275
276
277# configure.in/configure
278.PHONY: gcc-autoconf-refresh gcc-autoconf-rerun gcc-autoconf-clean gcc-autoconf-remove
279gcc-autoconf-refresh gcc-autoconf-rerun gcc-autoconf-clean gcc-autoconf-remove:
280 for dir in $(GCC_CONFIGURE_DIRS); do \
281 $(MAKE) $(@:gcc-autoconf-%=%) -f $(PWD)/config.gmk -C src/$$dir ; \
282 done
283
284
285# build the components.
286.PHONY: gcc-build gcc-install gcc-configure
287gcc-build gcc-install gcc-configure:
288 mkdir -p $(PATH_OBJ)/gcc
289 $(MAKE) -C $(PATH_OBJ)/gcc -f $(MAKEFILE) $@-it
290
291
292# When changed directory
293# We pass down BOOT_ flags for stage2+.
294# Because strip is broken on OS/2 we pass -s for release build and -g for
295# non release builds - This overrides some stuff in src/gcc/gcc/config/i386/t-emx!
296gcc-build-it: \
297 $(PATH_OBJ)/gcc/.ts.configured
298ifeq "$(BUILD_PLATFORM)" "OS2"
299 unset GCCLOAD & $(MAKE) -C $(PATH_OBJ)/gcc \
300 LIBGCC2_DEBUG_CFLAGS="$(BUILD_DEBUGINFO)" \
301 BOOT_CFLAGS="$(BUILD_DEBUGINFO) -O2 -mcpu=pentium -mpreferred-stack-boundary=2 -malign-strings=0 -falign-loops=2 -falign-jumps=2 -falign-functions=2" \
302 BOOT_LDFLAGS="$(BUILD_DEBUGINFO) -Zexe -Zcrtdll" \
303 LIBGCC2_DEBUG_CFLAG="$(BUILD_DEBUGINFO)" \
304 bootstrap
305else
306 $(MAKE) -C $(PATH_OBJ)/gcc bootstrap
307endif
308
309# configure it (invoked after directory change).
310# We set CC to help configure finding it.
311gcc-configure-it $(PATH_OBJ)/gcc/.ts.configured: $(PATH_TOP)/src/gcc/configure
312ifeq "$(BUILD_PLATFORM)" "OS2"
313 $(ASH) -c " \
314 export CC=\"gcc.exe\" ; \
315 $< \
316 --enable-clh \
317 --enable-threads=os2 \
318 --enable-shared=libgcc \
319 --enable-nls \
320 --without-included-gettext \
321 --with-local-prefix=$(subst \,/,$(PATH_EMXPGCC)) \
322 --prefix=$(PATH_BIND)/gcc322 \
323 --with-gnu-ld \
324 --with-gnu-as \
325 --disable-libgcj \
326 --enable-languages=c,c++ "
327else
328 $(ASH) -c "$< \
329 --enable-clh \
330 --enable-shared=libgcc \
331 --enable-nls \
332 --without-included-gettext \
333 --with-local-prefix=$(subst \,/,$(PATH_EMXPGCC)) \
334 --prefix=$(PATH_BIND)/gcc322 \
335 --with-gnu-ld \
336 --with-gnu-as \
337 --disable-libgcj \
338 --enable-languages=c,c++ "
339endif
340 touch $(PATH_OBJ)/gcc/.ts.configured
341
342
343# Install the GCC build
344# Repeating the prefix doesn't hurt anybody.
345gcc-install-it:
346 $(MAKE) prefix=$(PATH_BIND)/gcc322 install
347
348
349# Generate diffs for GCC (v3.2.2) - part of packing a release.
350.PHONY: gcc-diff $(PATH_BIN)/usr/src/gcc/gcc-3.2.2.diff
351gcc-diff: $(PATH_BIN)/usr/src/gcc/gcc-3.2.2.diff
352$(PATH_BIN)/usr/src/gcc/gcc-3.2.2.diff:
353 mkdir -p $(@D)
354 -cvs diff -R -N -w -c -r GCC_3-2-2 src/gcc > $@
355
356
357
358###############################################################################
359###############################################################################
360###############################################################################
361#
362# B i n U t i l s
363#
364###############################################################################
365###############################################################################
366###############################################################################
367all-binutils binutils:
368 echo "Successfully build BinUtils."
369 echo "Warning!!! BinUtils not yet done!"
370
371
372
373
374
375
376###############################################################################
377###############################################################################
378###############################################################################
379#
380# E M X
381#
382###############################################################################
383###############################################################################
384###############################################################################
385all-binemx emx:
386 echo "Successfully build EMX."
387 echo "Warning!!! EMX not yet done!"
388
Note: See TracBrowser for help on using the repository browser.