Subversion Repositories tendra.SVN

Rev

Rev 105 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 7u83 1
#!/bin/sh
2
 
38 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
 
89 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
 
89 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
89 7u83 51
	cp defs.mk defs.mk.bak
6 7u83 52
fi
53
 
89 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
 
89 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
			;;
89 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=
132
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
133
			#LDCRT="/usr/lib/crt1.o"
134
			LIBS="-L/usr/lib -lc"
135
			OSFAM="freebsd"
136
			OSVER="12"
137
			MKDIRCMD="/bin/mkdir"
138
			RMCMD="/bin/rm -rf"
121 7u83 139
			ASCMD="/usr/bin/as"
140
			AS1CMD="/usr/bin/as"
141
			LDCMD="/usr/bin/ld"
142
 
143
		;;
89 7u83 144
	Plan9.*)	#Plan 9
145
			LD="ld"
146
			CC="cc"
147
			CFLAGS="-DFS_TEMPNAM=0 -D_BSD_EXTENSION ${CFLAGS}"
148
			LDOPTS=
149
			LDCRT="/usr/lib/crt1.o"
150
			LIBS="-L/usr/lib -lc"
151
			OSFAM="plan9"
152
			OSVER="4"
153
			EXECFORMAT="aout"
154
			;;		
6 7u83 155
	Linux.2.4*)	# Use the system supplied GCC for CC.
156
			# System definition is __linux
157
			check_cc
158
			LD="ld"
159
			CFLAGS=${CFLAGS}
160
			LDOPTS="--dynamic-linker /lib/ld-linux.so.2"
161
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
162
			LIBS="-L/usr/lib -lc"
163
			OSFAM="linux"
164
			OSVER="LINUX24"
165
			;;
166
	Linux.2.6*)	# Use the system supplied GCC for CC.
167
			# System definition is __linux
168
			check_cc
169
			LD="ld"
170
			CFLAGS=${CFLAGS}
171
			LDOPTS=""
172
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
173
			LIBS="-L/usr/lib -lc"
174
			OSFAM="linux"
175
			OSVER="LINUX26"
176
			;;
177
	Minix.2*)	# Use the system supplied cc for CC.
178
			# It aims to be C90 conforming.
179
			check_cc
180
			LD=""
181
			CFLAGS=${CFLAGS}
182
			LDOPTS=
183
			LDCRT=""
184
			# Minix only runs on x86 for now.
185
			LIBS="-L/usr/lib/i386 -lc"
186
			OSFAM="minix"
187
			OSVER="MINIX2"
188
			;;
189
	NetBSD.1*)	#
190
			check_cc
191
			LD="ld"
192
			CFLAGS=${CFLAGS}
193
			LDOPTS=
194
			LDCRT="/usr/lib/crt0.o"
195
			LIBS="-L/usr/lib -lc"
196
			OSFAM="netbsd"
197
			OSVER="NETBSD1"
198
			;;
199
	NetBSD.2*)	#
200
			check_cc
201
			LD="ld"
202
			CFLAGS=${CFLAGS}
203
			LDOPTS="--dynamic-linker /libexec/ld.elf_so"
204
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
205
			LIBS="-L/usr/lib -lc"
206
			OSFAM="netbsd"
207
			OSVER="NETBSD2"
208
			;;
209
	NetBSD.3*)	#
210
			check_cc
211
			LD="ld"
212
			CFLAGS=${CFLAGS}
213
			LDOPTS=
214
			LDCRT=
215
			LIBS="-lc"
216
			OSFAM="netbsd"
217
			OSVER="NETBSD3"
218
			;;
89 7u83 219
 
220
 
221
 
222
	NetBSD.7*)	#
9 7u83 223
			check_cc
224
			LD="ld"
225
			CFLAGS=${CFLAGS}
226
			LDOPTS=
227
			LIBS="-lc"
228
			OSFAM="netbsd"
89 7u83 229
			OSVER="7.x"
230
			ASCMD="/usr/bin/as"
231
			AS1CMD="/usr/bin/as"
232
			LDCMD="/usr/bin/ld"
233
 
234
			if [ -z "${PREFIX}" ]; then
235
				PREFIX=/usr/local;
236
			fi
237
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
238
 
239
 
240
			;;
241
 
242
 
243
		NetBSD.8*)	#
244
			check_cc
245
			LD="ld"
246
			CFLAGS=${CFLAGS}
247
			LDOPTS=
248
			LIBS="-lc"
249
			OSFAM="netbsd"
38 7u83 250
			OSVER="NETBSD8"
251
			ASCMD="/usr/bin/as"
252
			AS1CMD="/usr/bin/as"
253
			LDCMD="/usr/bin/ld"
254
 
255
			if [ -z "${PREFIX}" ]; then
256
				PREFIX=/usr/local;
257
			fi
258
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
259
 
260
 
9 7u83 261
			;;
6 7u83 262
	OpenBSD.3*)	#
263
			check_cc
264
			LD="ld"
265
			CFLAGS=${CFLAGS}
266
			LDOPTS=
267
			LDCRT="/usr/lib/crt0.o"
268
			LIBS="-L/usr/lib -lc"
269
			OSFAM="openbsd"
270
			OSVER="OPENBSD3"
271
			;;
272
	OpenBSD.4*)	#
273
			check_cc
274
			LD="ld"
275
			CFLAGS=${CFLAGS}
276
			LDOPTS=
277
			LDCRT="/usr/lib/crt0.o"
278
			LIBS="-L/usr/lib -lc"
279
			OSFAM="openbsd"
280
			OSVER="OPENBSD4"
281
			;;
282
	SunOS.5*)	# Do not use the cc in /usr/ucb since it is an optional
283
			# software package.
284
			if [ "x${CC}" = "x" ]; then
285
			    CC=`/usr/bin/env cc`
286
			    case "${CC}" in
287
				*ucb*cc*)
288
				    echo "Please set your PATH or CC environment variable to a working compiler and not"
289
				    echo "the ucb/cc one"
290
				    exit 1
291
				    ;;
292
			    esac;
293
			fi
294
			CC=${CC}
295
			LD="ld"
296
			CFLAGS=${CFLAGS}
297
			LDOPTS=
298
			LDCRT=
299
			LIBS="-L/usr/lib -lc"
300
			OSFAM="sunos"
301
			OSVER="SUNOS5"
302
			;;
303
	*)		# Make sure we specify what we want to hear from the
304
			# people submitting feedback.
305
			echo "Unknown \"${SYSTEM}\" and \"${VERSION}\" combination"
306
			echo "Please report the following to the developers:"
307
			echo
308
			echo "uname -r:	${VERSION}"
309
			echo "uname -s:	${SYSTEM}"
310
			echo
311
			;;
312
esac
313
 
314
check_hostarch
315
 
38 7u83 316
BASE_DIR=`pwd`
317
INSTALL_DIR="/usr/local/lib/TenDRA-5.0.0"
89 7u83 318
CFLAGS="${CFLAGS} -I${BASE_DIR}/src/include"
6 7u83 319
 
89 7u83 320
echo "Setting defs.mk environment to the following:"
6 7u83 321
echo
322
echo "PREFIX:		${PREFIX}"
323
echo "CC:		${CC}"
324
echo "CCVER_MAJOR:	${CCVER_MAJOR}"
325
echo "CCVER_MINOR:	${CCVER_MINOR}"
326
echo "CCVER_TINY:	${CCVER_TINY}"
327
echo "LD:		${LD}"
89 7u83 328
echo "MKDIR		${MKDIRCMD}"
329
echo "RM		${RMCMD}"
6 7u83 330
echo "CFLAGS:		${CFLAGS}"
331
echo "LDOPTS:		${LDOPTS}"
332
echo "LDCRT:		${LDCRT}"
333
echo "LIBS:		${LIBS}"
334
echo "OSFAM:		${OSFAM}"
335
echo "OSVER:		${OSVER}"
336
echo "BLDARCH:	${BLDARCH} (${HOSTARCH})"
337
echo "BLDARCHBITS:	${BLDARCHBITS} bit"
338
echo "EXECFORMAT:	${EXECFORMAT}"
38 7u83 339
echo "BASE_DIR:	${BASE_DIR}"
340
echo "INSTALL_DIR:	${INSTALL_DIR}"
89 7u83 341
cat > defs.mk <<EOF
6 7u83 342
PREFIX=${PREFIX}
343
CC?=${CC}
344
CCVER_MAJOR=${CCVER_MAJOR}
345
CCVER_MINOR=${CCVER_MINOR}
346
CCVER_TINY=${CCVER_TINY}
347
LD?=${LD}
348
CFLAGS=${CFLAGS}
349
LDOPTS=${LDOPTS}
89 7u83 350
LDCRT=${LDCRT}
6 7u83 351
LIBS=${LIBS}
352
OSFAM=${OSFAM}
353
OSVER=${OSVER}
354
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
355
BLDARCH=${BLDARCH}
356
BLDARCHBITS=${BLDARCHBITS}
357
EXECFORMAT=${EXECFORMAT}
38 7u83 358
BASE_DIR=${BASE_DIR}
105 7u83 359
 
38 7u83 360
INSTALL_DIR=${INSTALL_DIR}
105 7u83 361
BOOTSTRAP_DIR=${BASE_DIR}/bootstrap_install
38 7u83 362
 
363
CRT0=${CRT0}
364
CRT1=${CRT1}
365
CRTN=${CRTN}
366
 
367
 
368
BUILD_ERRORS=\$(BASE_DIR)/src/build/BUILD_ERRORS
369
 
370
# Binary paths
371
 
372
SHELL=		/bin/sh
89 7u83 373
ENVCMD=	
374
ASCMD=		${ASCMD}
375
LDCMD=		${LDCMD}
376
MKDIRCMD=	${MKDIRCMD}
377
RMCMD=		${RMCMD}
38 7u83 378
 
379
# Keep in alphabetical order
380
 
89 7u83 381
AS=		\${ASCMD} 
382
AR=		\${ENVCMD} ar
383
COPY=		\${ENVCMD} cp
384
ECHO=		\${ENVCMD} echo
385
ECHODIR=	\${ENVCMD} echo
386
EXIT=		exit
387
INSTALL=	${ENVCMD} install
388
LN=		\${ENVCMD} ln
389
MKDIR=		\${ENVCMD} mkdir
390
MOVE=		\${ENVCMD} mv
391
RANLIB=	\${ENVCMD} ranlib
392
REMOVE=	\${ENVCMD} rm -f
393
SORT=		\${ENVCMD} sort
394
TEST=		\${ENVCMD} test
38 7u83 395
 
396
 
397
TOKENS_COMMON=	src/lib/machines/common/tokens
398
TOKENS_MACH=	src/lib/machines/\$(OSFAM)/\$(BLDARCH)/tokens
399
 
400
INSTALL_DIR=\$(BASE_DIR)/install
401
 
402
 
89 7u83 403
INSTALL_MACHDIR=	\$(INSTALL_DIR)/machines/\$(OSFAM)/\$(BLDARCH)
38 7u83 404
 
405
# Directory where to install binarie tools like tcc and tld 
89 7u83 406
INSTALL_BINDIR=		\$(INSTALL_MACHDIR)/bin
38 7u83 407
 
408
# Directory where to install environments for tcc
89 7u83 409
INSTALL_ENVDIR=		\$(INSTALL_MACHDIR)/env
38 7u83 410
 
411
INSTALL_STARTUPDIR=	\$(INSTALL_MACHDIR)/startup
412
 
413
INSTALL_LIBDIR=		\$(INSTALL_DIR)/lib
414
 
415
TLD=		\$(INSTALL_BINDIR)/tld
416
TCC=		\$(INSTALL_BINDIR)/tcc
417
TPL=		\$(INSTALL_BINDIR)/tpl
418
SID=		\$(INSTALL_BINDIR)/sid
89 7u83 419
TSPEC=		\$(INSTALL_BINDIR)/tspec
420
TNC=		\$(INSTALL_BINDIR)/tnc 
38 7u83 421
 
422
 
423
#directories
424
COMMON_DIR=${INSTALL_DIR}/lib
425
 
426
MACH_DIR=${INSTALL_DIR}/machines
427
 
428
MAN_DIR=/usr/local/man
429
WORK_DIR=${BASE_DIR}/work
430
TEMP_DIR=/var/tmp
431
 
432
 
433
MACH_CPU=\$(BLDARCH)
434
MACH_OS=\$(OSFAM)
435
 
436
MACH_BASE=${MACH_DIR}/${MACH_OS}/${MACH_CPU}
437
 
438
 
439
#MACH_WORK=${WORK_DIR}/${MACH_OS}/${MACH_CPU}
440
 
441
 
442
PUBLIC_BIN=/usr/local/bin
443
 
6 7u83 444
EOF