Subversion Repositories tendra.SVN

Rev

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