Subversion Repositories tendra.SVN

Rev

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