Subversion Repositories tendra.SVN

Rev

Rev 75 | Rev 85 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 7u83 1
#!/bin/sh
2
 
27 7u83 3
# $Id\$
6 7u83 4
# 
5
# Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>
6
# All rights reserved.
7
# 
8
# Redistribution and use in source and binary forms, with or without
9
# modification, are permitted provided that the following conditions
10
# are met:
11
# 
12
# 1. Redistributions of source code must retain the above copyright
13
#    notice, this list of conditions and the following disclaimer.
14
# 2. Redistributions in binary form must reproduce the above copyright
15
#    notice, this list of conditions and the following disclaimer in the
16
#    documentation and/or other materials provided with the distribution.
17
# 3. Neither the name of The TenDRA Project nor the names of its contributors
18
#    may be used to endorse or promote products derived from this software
19
#    without specific, prior written permission.
20
# 
21
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
25
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31
# SUCH DAMAGE.
32
 
33
# This script is inspired by Postfix' makedefs script.
34
# The purpose of this script is to determine the host on which we are
35
# compiling TenDRA and provide sane compilation defaults.
36
 
46 7u83 37
HOSTARCH=`uname -m`
38
SYSTEM=`uname -s`
39
VERSION=`uname -r`
6 7u83 40
 
41
. ./makedefs.funcs
42
 
43
if [ "${1}" = "-h" ]; then
44
	usage
45
	exit
46
fi
47
 
46 7u83 48
if [ -f defs.mk ]; then
49
	echo "NOTICE: defs.mk file found, backing up to defs.mk.bak, overwriting..."
6 7u83 50
	echo
46 7u83 51
	cp defs.mk defs.mk.bak
6 7u83 52
fi
53
 
46 7u83 54
echo "${SYSTEM}.${VERSION} ${HOSTARCH} detected..."
6 7u83 55
echo
56
 
57
# See the URL in the warning below for why this is bad.
58
if [ ! -z ${LD_LIBRARY_PATH} ]; then
59
	echo "WARNING: LD_LIBRARY_PATH set, please don't do that (see:"
60
	echo "http://www.visi.com/~barr/ldpath.html)"
61
	echo "Setting to empty environment variable..."
62
	echo
63
	LD_LIBRARY_PATH=""
64
fi
65
 
46 7u83 66
 
6 7u83 67
# Set up defaults
68
EXECFORMAT=elf		# ELF is the de facto executable file format nowadays.
69
 
70
case "${SYSTEM}.${VERSION}" in
71
	DragonFly.1*)	# Use the system supplied GCC for CC.
72
			# System definition is __DragonFly__
73
			check_cc
74
			LD="ld"
75
			CFLAGS=${CFLAGS}
76
			LDOPTS=
77
			LDCRT="/usr/lib/crt1.o"
78
			LIBS="-L/usr/lib -lc"
79
			OSFAM="dragonfly"
80
			OSVER="DRAGONFLY1"
81
			;;
82
	FreeBSD.4*)	# Use the system supplied GCC for CC.
83
			# System definition is __FreeBSD__
84
			check_cc
85
			LD="ld"
86
			CFLAGS=${CFLAGS}
87
			LDOPTS=
88
			LDCRT="/usr/lib/crt1.o"
89
			LIBS="-L/usr/lib -lc"
90
			OSFAM="freebsd"
91
			OSVER="FREEBSD4"
92
			;;
93
	FreeBSD.5*)	# Use the system supplied GCC for CC.
94
			# System definition is __FreeBSD__
95
			check_cc
96
			LD="ld"
97
			CFLAGS=${CFLAGS}
98
			LDOPTS=
99
			LDCRT="/usr/lib/crt1.o"
100
			LIBS="-L/usr/lib -lc"
101
			OSFAM="freebsd"
102
			OSVER="FREEBSD5"
103
			;;
104
	FreeBSD.6*)	# Use the system supplied GCC for CC.
105
			# System definition is __FreeBSD__
106
			check_cc
107
			LD="ld"
108
			CFLAGS=${CFLAGS}
109
			LDOPTS=
110
			LDCRT="/usr/lib/crt1.o"
111
			LIBS="-L/usr/lib -lc"
112
			OSFAM="freebsd"
113
			OSVER="FREEBSD6"
114
			;;
115
	FreeBSD.7*)	# Use the system supplied GCC for CC.
116
			# System definition is __FreeBSD__
117
			check_cc
118
			LD="ld"
119
			CFLAGS=${CFLAGS}
120
			LDOPTS=
121
			LDCRT="/usr/lib/crt1.o"
122
			LIBS="-L/usr/lib -lc"
123
			OSFAM="freebsd"
124
			OSVER="FREEBSD7"
125
			;;
46 7u83 126
	FreeBSD.*)	# Use the system supplied GCC for CC.
127
			# System definition is __FreeBSD__
128
			check_cc
129
			LD="ld"
130
			CFLAGS=${CFLAGS}
131
			LDOPTS=
77 7u83 132
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
75 7u83 133
			#LDCRT="/usr/lib/crt1.o"
46 7u83 134
			LIBS="-L/usr/lib -lc"
135
			OSFAM="freebsd"
136
			OSVER="12"
137
			;;
138
	Plan9.*)	#Plan 9
139
			LD="ld"
140
			CC="cc"
58 7u83 141
			CFLAGS="-DFS_TEMPNAM=0 -D_BSD_EXTENSION ${CFLAGS}"
46 7u83 142
			LDOPTS=
143
			LDCRT="/usr/lib/crt1.o"
144
			LIBS="-L/usr/lib -lc"
58 7u83 145
			OSFAM="plan9"
46 7u83 146
			OSVER="4"
147
			EXECFORMAT="aout"
148
			;;		
6 7u83 149
	Linux.2.4*)	# Use the system supplied GCC for CC.
150
			# System definition is __linux
151
			check_cc
152
			LD="ld"
153
			CFLAGS=${CFLAGS}
154
			LDOPTS="--dynamic-linker /lib/ld-linux.so.2"
155
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
156
			LIBS="-L/usr/lib -lc"
157
			OSFAM="linux"
158
			OSVER="LINUX24"
159
			;;
160
	Linux.2.6*)	# Use the system supplied GCC for CC.
161
			# System definition is __linux
162
			check_cc
163
			LD="ld"
164
			CFLAGS=${CFLAGS}
165
			LDOPTS=""
166
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
167
			LIBS="-L/usr/lib -lc"
168
			OSFAM="linux"
169
			OSVER="LINUX26"
170
			;;
171
	Minix.2*)	# Use the system supplied cc for CC.
172
			# It aims to be C90 conforming.
173
			check_cc
174
			LD=""
175
			CFLAGS=${CFLAGS}
176
			LDOPTS=
177
			LDCRT=""
178
			# Minix only runs on x86 for now.
179
			LIBS="-L/usr/lib/i386 -lc"
180
			OSFAM="minix"
181
			OSVER="MINIX2"
182
			;;
183
	NetBSD.1*)	#
184
			check_cc
185
			LD="ld"
186
			CFLAGS=${CFLAGS}
187
			LDOPTS=
188
			LDCRT="/usr/lib/crt0.o"
189
			LIBS="-L/usr/lib -lc"
190
			OSFAM="netbsd"
191
			OSVER="NETBSD1"
192
			;;
193
	NetBSD.2*)	#
194
			check_cc
195
			LD="ld"
196
			CFLAGS=${CFLAGS}
197
			LDOPTS="--dynamic-linker /libexec/ld.elf_so"
198
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
199
			LIBS="-L/usr/lib -lc"
200
			OSFAM="netbsd"
201
			OSVER="NETBSD2"
202
			;;
203
	NetBSD.3*)	#
204
			check_cc
205
			LD="ld"
206
			CFLAGS=${CFLAGS}
207
			LDOPTS=
208
			LDCRT=
209
			LIBS="-lc"
210
			OSFAM="netbsd"
211
			OSVER="NETBSD3"
212
			;;
47 7u83 213
 
214
 
215
 
216
	NetBSD.7*)	#
10 7u83 217
			check_cc
218
			LD="ld"
219
			CFLAGS=${CFLAGS}
220
			LDOPTS=
221
			LIBS="-lc"
222
			OSFAM="netbsd"
47 7u83 223
			OSVER="7.x"
224
			ASCMD="/usr/bin/as"
225
			AS1CMD="/usr/bin/as"
226
			LDCMD="/usr/bin/ld"
227
 
228
			if [ -z "${PREFIX}" ]; then
229
				PREFIX=/usr/local;
230
			fi
231
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
232
 
233
 
234
			;;
235
 
236
 
237
		NetBSD.8*)	#
238
			check_cc
239
			LD="ld"
240
			CFLAGS=${CFLAGS}
241
			LDOPTS=
242
			LIBS="-lc"
243
			OSFAM="netbsd"
27 7u83 244
			OSVER="NETBSD8"
245
			ASCMD="/usr/bin/as"
246
			AS1CMD="/usr/bin/as"
37 7u83 247
			LDCMD="/usr/bin/ld"
27 7u83 248
 
249
			if [ -z "${PREFIX}" ]; then
250
				PREFIX=/usr/local;
251
			fi
252
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
253
 
254
 
10 7u83 255
			;;
6 7u83 256
	OpenBSD.3*)	#
257
			check_cc
258
			LD="ld"
259
			CFLAGS=${CFLAGS}
260
			LDOPTS=
261
			LDCRT="/usr/lib/crt0.o"
262
			LIBS="-L/usr/lib -lc"
263
			OSFAM="openbsd"
264
			OSVER="OPENBSD3"
265
			;;
266
	OpenBSD.4*)	#
267
			check_cc
268
			LD="ld"
269
			CFLAGS=${CFLAGS}
270
			LDOPTS=
271
			LDCRT="/usr/lib/crt0.o"
272
			LIBS="-L/usr/lib -lc"
273
			OSFAM="openbsd"
274
			OSVER="OPENBSD4"
275
			;;
276
	SunOS.5*)	# Do not use the cc in /usr/ucb since it is an optional
277
			# software package.
278
			if [ "x${CC}" = "x" ]; then
279
			    CC=`/usr/bin/env cc`
280
			    case "${CC}" in
281
				*ucb*cc*)
282
				    echo "Please set your PATH or CC environment variable to a working compiler and not"
283
				    echo "the ucb/cc one"
284
				    exit 1
285
				    ;;
286
			    esac;
287
			fi
288
			CC=${CC}
289
			LD="ld"
290
			CFLAGS=${CFLAGS}
291
			LDOPTS=
292
			LDCRT=
293
			LIBS="-L/usr/lib -lc"
294
			OSFAM="sunos"
295
			OSVER="SUNOS5"
296
			;;
297
	*)		# Make sure we specify what we want to hear from the
298
			# people submitting feedback.
299
			echo "Unknown \"${SYSTEM}\" and \"${VERSION}\" combination"
300
			echo "Please report the following to the developers:"
301
			echo
302
			echo "uname -r:	${VERSION}"
303
			echo "uname -s:	${SYSTEM}"
304
			echo
305
			;;
306
esac
307
 
308
check_hostarch
309
 
15 7u83 310
BASE_DIR=`pwd`
311
INSTALL_DIR="/usr/local/lib/TenDRA-5.0.0"
46 7u83 312
CFLAGS="${CFLAGS} -I${BASE_DIR}/src/include"
15 7u83 313
 
46 7u83 314
echo "Setting defs.mk environment to the following:"
6 7u83 315
echo
316
echo "PREFIX:		${PREFIX}"
317
echo "CC:		${CC}"
318
echo "CCVER_MAJOR:	${CCVER_MAJOR}"
319
echo "CCVER_MINOR:	${CCVER_MINOR}"
320
echo "CCVER_TINY:	${CCVER_TINY}"
321
echo "LD:		${LD}"
322
echo "CFLAGS:		${CFLAGS}"
323
echo "LDOPTS:		${LDOPTS}"
324
echo "LDCRT:		${LDCRT}"
325
echo "LIBS:		${LIBS}"
326
echo "OSFAM:		${OSFAM}"
327
echo "OSVER:		${OSVER}"
328
echo "BLDARCH:	${BLDARCH} (${HOSTARCH})"
329
echo "BLDARCHBITS:	${BLDARCHBITS} bit"
330
echo "EXECFORMAT:	${EXECFORMAT}"
15 7u83 331
echo "BASE_DIR:	${BASE_DIR}"
332
echo "INSTALL_DIR:	${INSTALL_DIR}"
6 7u83 333
 
46 7u83 334
cat > defs.mk <<EOF
6 7u83 335
PREFIX=${PREFIX}
336
CC?=${CC}
337
CCVER_MAJOR=${CCVER_MAJOR}
338
CCVER_MINOR=${CCVER_MINOR}
339
CCVER_TINY=${CCVER_TINY}
340
LD?=${LD}
341
CFLAGS=${CFLAGS}
342
LDOPTS=${LDOPTS}
58 7u83 343
LDCRT=${LDCRT}
6 7u83 344
LIBS=${LIBS}
345
OSFAM=${OSFAM}
346
OSVER=${OSVER}
347
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
348
BLDARCH=${BLDARCH}
349
BLDARCHBITS=${BLDARCHBITS}
350
EXECFORMAT=${EXECFORMAT}
15 7u83 351
BASE_DIR=${BASE_DIR}
352
INSTALL_DIR=${INSTALL_DIR}
25 7u83 353
 
27 7u83 354
CRT0=${CRT0}
355
CRT1=${CRT1}
356
CRTN=${CRTN}
25 7u83 357
 
358
 
27 7u83 359
BUILD_ERRORS=\$(BASE_DIR)/src/build/BUILD_ERRORS
360
 
361
# Binary paths
362
 
363
SHELL=		/bin/sh
58 7u83 364
ENVCMD=	
365
ASCMD=		${ASCMD}
366
LDCMD=		${LDCMD}
27 7u83 367
 
368
# Keep in alphabetical order
369
 
58 7u83 370
AS=		\${ASCMD} 
371
AR=		\${ENVCMD} ar
372
COPY=		\${ENVCMD} cp
373
ECHO=		\${ENVCMD} echo
374
ECHODIR=	\${ENVCMD} echo
375
EXIT=		exit
376
INSTALL=	${ENVCMD} install
377
LN=		\${ENVCMD} ln
378
MKDIR=		\${ENVCMD} mkdir
379
MOVE=		\${ENVCMD} mv
380
RANLIB=	\${ENVCMD} ranlib
381
REMOVE=	\${ENVCMD} rm -f
382
SORT=		\${ENVCMD} sort
383
TEST=		\${ENVCMD} test
27 7u83 384
 
385
 
386
TOKENS_COMMON=	src/lib/machines/common/tokens
387
TOKENS_MACH=	src/lib/machines/\$(OSFAM)/\$(BLDARCH)/tokens
388
 
389
INSTALL_DIR=\$(BASE_DIR)/install
390
 
391
 
58 7u83 392
INSTALL_MACHDIR=	\$(INSTALL_DIR)/machines/\$(OSFAM)/\$(BLDARCH)
27 7u83 393
 
394
# Directory where to install binarie tools like tcc and tld 
58 7u83 395
INSTALL_BINDIR=		\$(INSTALL_MACHDIR)/bin
27 7u83 396
 
397
# Directory where to install environments for tcc
58 7u83 398
INSTALL_ENVDIR=		\$(INSTALL_MACHDIR)/env
27 7u83 399
 
400
INSTALL_STARTUPDIR=	\$(INSTALL_MACHDIR)/startup
401
 
37 7u83 402
INSTALL_LIBDIR=		\$(INSTALL_DIR)/lib
403
 
27 7u83 404
TLD=		\$(INSTALL_BINDIR)/tld
405
TCC=		\$(INSTALL_BINDIR)/tcc
406
TPL=		\$(INSTALL_BINDIR)/tpl
407
SID=		\$(INSTALL_BINDIR)/sid
58 7u83 408
TSPEC=		\$(INSTALL_BINDIR)/tspec
409
TNC=		\$(INSTALL_BINDIR)/tnc 
27 7u83 410
 
411
 
412
#directories
413
COMMON_DIR=${INSTALL_DIR}/lib
414
 
415
MACH_DIR=${INSTALL_DIR}/machines
416
 
417
MAN_DIR=/usr/local/man
418
WORK_DIR=${BASE_DIR}/work
419
TEMP_DIR=/var/tmp
420
 
421
 
422
MACH_CPU=\$(BLDARCH)
423
MACH_OS=\$(OSFAM)
424
 
425
MACH_BASE=${MACH_DIR}/${MACH_OS}/${MACH_CPU}
426
 
427
 
428
#MACH_WORK=${WORK_DIR}/${MACH_OS}/${MACH_CPU}
429
 
430
 
431
PUBLIC_BIN=/usr/local/bin
432
 
6 7u83 433
EOF