Subversion Repositories tendra.SVN

Rev

Rev 9 | Rev 89 | 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
 
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
 
37
HOSTARCH=`/usr/bin/env uname -m`
38
SYSTEM=`/usr/bin/env uname -s`
39
VERSION=`/usr/bin/env uname -r`
40
 
41
. ./makedefs.funcs
42
 
43
if [ "${1}" = "-h" ]; then
44
	usage
45
	exit
46
fi
47
 
48
if [ -f Makefile.defs ]; then
49
	echo "NOTICE: old Makefile.defs file found, overwriting..."
50
	echo
51
fi
52
 
53
echo "${SYSTEM}.${VERSION} detected..."
54
echo
55
 
56
# See the URL in the warning below for why this is bad.
57
if [ ! -z ${LD_LIBRARY_PATH} ]; then
58
	echo "WARNING: LD_LIBRARY_PATH set, please don't do that (see:"
59
	echo "http://www.visi.com/~barr/ldpath.html)"
60
	echo "Setting to empty environment variable..."
61
	echo
62
	LD_LIBRARY_PATH=""
63
fi
64
 
65
# Set up defaults
66
EXECFORMAT=elf		# ELF is the de facto executable file format nowadays.
67
 
68
case "${SYSTEM}.${VERSION}" in
69
	DragonFly.1*)	# Use the system supplied GCC for CC.
70
			# System definition is __DragonFly__
71
			check_cc
72
			LD="ld"
73
			CFLAGS=${CFLAGS}
74
			LDOPTS=
75
			LDCRT="/usr/lib/crt1.o"
76
			LIBS="-L/usr/lib -lc"
77
			OSFAM="dragonfly"
78
			OSVER="DRAGONFLY1"
79
			;;
80
	FreeBSD.4*)	# Use the system supplied GCC for CC.
81
			# System definition is __FreeBSD__
82
			check_cc
83
			LD="ld"
84
			CFLAGS=${CFLAGS}
85
			LDOPTS=
86
			LDCRT="/usr/lib/crt1.o"
87
			LIBS="-L/usr/lib -lc"
88
			OSFAM="freebsd"
89
			OSVER="FREEBSD4"
90
			;;
91
	FreeBSD.5*)	# Use the system supplied GCC for CC.
92
			# System definition is __FreeBSD__
93
			check_cc
94
			LD="ld"
95
			CFLAGS=${CFLAGS}
96
			LDOPTS=
97
			LDCRT="/usr/lib/crt1.o"
98
			LIBS="-L/usr/lib -lc"
99
			OSFAM="freebsd"
100
			OSVER="FREEBSD5"
101
			;;
102
	FreeBSD.6*)	# Use the system supplied GCC for CC.
103
			# System definition is __FreeBSD__
104
			check_cc
105
			LD="ld"
106
			CFLAGS=${CFLAGS}
107
			LDOPTS=
108
			LDCRT="/usr/lib/crt1.o"
109
			LIBS="-L/usr/lib -lc"
110
			OSFAM="freebsd"
111
			OSVER="FREEBSD6"
112
			;;
113
	FreeBSD.7*)	# Use the system supplied GCC for CC.
114
			# System definition is __FreeBSD__
115
			check_cc
116
			LD="ld"
117
			CFLAGS=${CFLAGS}
118
			LDOPTS=
119
			LDCRT="/usr/lib/crt1.o"
120
			LIBS="-L/usr/lib -lc"
121
			OSFAM="freebsd"
122
			OSVER="FREEBSD7"
123
			;;
124
	Linux.2.4*)	# Use the system supplied GCC for CC.
125
			# System definition is __linux
126
			check_cc
127
			LD="ld"
128
			CFLAGS=${CFLAGS}
129
			LDOPTS="--dynamic-linker /lib/ld-linux.so.2"
130
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
131
			LIBS="-L/usr/lib -lc"
132
			OSFAM="linux"
133
			OSVER="LINUX24"
134
			;;
135
	Linux.2.6*)	# Use the system supplied GCC for CC.
136
			# System definition is __linux
137
			check_cc
138
			LD="ld"
139
			CFLAGS=${CFLAGS}
140
			LDOPTS=""
141
			LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
142
			LIBS="-L/usr/lib -lc"
143
			OSFAM="linux"
144
			OSVER="LINUX26"
145
			;;
146
	Minix.2*)	# Use the system supplied cc for CC.
147
			# It aims to be C90 conforming.
148
			check_cc
149
			LD=""
150
			CFLAGS=${CFLAGS}
151
			LDOPTS=
152
			LDCRT=""
153
			# Minix only runs on x86 for now.
154
			LIBS="-L/usr/lib/i386 -lc"
155
			OSFAM="minix"
156
			OSVER="MINIX2"
157
			;;
158
	NetBSD.1*)	#
159
			check_cc
160
			LD="ld"
161
			CFLAGS=${CFLAGS}
162
			LDOPTS=
163
			LDCRT="/usr/lib/crt0.o"
164
			LIBS="-L/usr/lib -lc"
165
			OSFAM="netbsd"
166
			OSVER="NETBSD1"
167
			;;
168
	NetBSD.2*)	#
169
			check_cc
170
			LD="ld"
171
			CFLAGS=${CFLAGS}
172
			LDOPTS="--dynamic-linker /libexec/ld.elf_so"
173
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
174
			LIBS="-L/usr/lib -lc"
175
			OSFAM="netbsd"
176
			OSVER="NETBSD2"
177
			;;
178
	NetBSD.3*)	#
179
			check_cc
180
			LD="ld"
181
			CFLAGS=${CFLAGS}
182
			LDOPTS=
183
			LDCRT=
184
			LIBS="-lc"
185
			OSFAM="netbsd"
186
			OSVER="NETBSD3"
187
			;;
9 7u83 188
	NetBSD.8*)	#
189
			check_cc
190
			LD="ld"
191
			CFLAGS=${CFLAGS}
192
			LDOPTS=
193
			LIBS="-lc"
194
			OSFAM="netbsd"
38 7u83 195
			OSVER="NETBSD8"
196
			ASCMD="/usr/bin/as"
197
			AS1CMD="/usr/bin/as"
198
			LDCMD="/usr/bin/ld"
199
 
200
			if [ -z "${PREFIX}" ]; then
201
				PREFIX=/usr/local;
202
			fi
203
			LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
204
 
205
 
9 7u83 206
			;;
6 7u83 207
	OpenBSD.3*)	#
208
			check_cc
209
			LD="ld"
210
			CFLAGS=${CFLAGS}
211
			LDOPTS=
212
			LDCRT="/usr/lib/crt0.o"
213
			LIBS="-L/usr/lib -lc"
214
			OSFAM="openbsd"
215
			OSVER="OPENBSD3"
216
			;;
217
	OpenBSD.4*)	#
218
			check_cc
219
			LD="ld"
220
			CFLAGS=${CFLAGS}
221
			LDOPTS=
222
			LDCRT="/usr/lib/crt0.o"
223
			LIBS="-L/usr/lib -lc"
224
			OSFAM="openbsd"
225
			OSVER="OPENBSD4"
226
			;;
227
	SunOS.5*)	# Do not use the cc in /usr/ucb since it is an optional
228
			# software package.
229
			if [ "x${CC}" = "x" ]; then
230
			    CC=`/usr/bin/env cc`
231
			    case "${CC}" in
232
				*ucb*cc*)
233
				    echo "Please set your PATH or CC environment variable to a working compiler and not"
234
				    echo "the ucb/cc one"
235
				    exit 1
236
				    ;;
237
			    esac;
238
			fi
239
			CC=${CC}
240
			LD="ld"
241
			CFLAGS=${CFLAGS}
242
			LDOPTS=
243
			LDCRT=
244
			LIBS="-L/usr/lib -lc"
245
			OSFAM="sunos"
246
			OSVER="SUNOS5"
247
			;;
248
	*)		# Make sure we specify what we want to hear from the
249
			# people submitting feedback.
250
			echo "Unknown \"${SYSTEM}\" and \"${VERSION}\" combination"
251
			echo "Please report the following to the developers:"
252
			echo
253
			echo "uname -r:	${VERSION}"
254
			echo "uname -s:	${SYSTEM}"
255
			echo
256
			;;
257
esac
258
 
259
check_hostarch
260
 
38 7u83 261
BASE_DIR=`pwd`
262
INSTALL_DIR="/usr/local/lib/TenDRA-5.0.0"
6 7u83 263
 
264
echo "Setting Makefile.defs environment to the following:"
265
echo
266
echo "PREFIX:		${PREFIX}"
267
echo "CC:		${CC}"
268
echo "CCVER_MAJOR:	${CCVER_MAJOR}"
269
echo "CCVER_MINOR:	${CCVER_MINOR}"
270
echo "CCVER_TINY:	${CCVER_TINY}"
271
echo "LD:		${LD}"
272
echo "CFLAGS:		${CFLAGS}"
273
echo "LDOPTS:		${LDOPTS}"
274
echo "LDCRT:		${LDCRT}"
275
echo "LIBS:		${LIBS}"
276
echo "OSFAM:		${OSFAM}"
277
echo "OSVER:		${OSVER}"
278
echo "BLDARCH:	${BLDARCH} (${HOSTARCH})"
279
echo "BLDARCHBITS:	${BLDARCHBITS} bit"
280
echo "EXECFORMAT:	${EXECFORMAT}"
38 7u83 281
echo "BASE_DIR:	${BASE_DIR}"
282
echo "INSTALL_DIR:	${INSTALL_DIR}"
6 7u83 283
 
284
cat > Makefile.defs <<EOF
285
PREFIX=${PREFIX}
286
CC?=${CC}
287
CCVER_MAJOR=${CCVER_MAJOR}
288
CCVER_MINOR=${CCVER_MINOR}
289
CCVER_TINY=${CCVER_TINY}
290
LD?=${LD}
291
CFLAGS=${CFLAGS}
292
LDOPTS=${LDOPTS}
38 7u83 293
LDCRT?=${LDCRT}
6 7u83 294
LIBS=${LIBS}
295
OSFAM=${OSFAM}
296
OSVER=${OSVER}
297
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
298
BLDARCH=${BLDARCH}
299
BLDARCHBITS=${BLDARCHBITS}
300
EXECFORMAT=${EXECFORMAT}
38 7u83 301
BASE_DIR=${BASE_DIR}
302
INSTALL_DIR=${INSTALL_DIR}
303
 
304
CRT0=${CRT0}
305
CRT1=${CRT1}
306
CRTN=${CRTN}
307
 
308
CFLAGS=-I\$(BASE_DIR)/src/include
309
 
310
BUILD_ERRORS=\$(BASE_DIR)/src/build/BUILD_ERRORS
311
 
312
# Binary paths
313
 
314
SHELL=		/bin/sh
315
ENVCMD?=	/usr/bin/env
316
ASCMD?=		${ASCMD}
317
LDCMD?=		${LDCMD}
318
 
319
# Keep in alphabetical order
320
 
321
AS?=		\${ASCMD} 
322
AR?=		\${ENVCMD} ar
323
COPY?=		\${ENVCMD} cp
324
ECHO?=		\${ENVCMD} echo
325
ECHODIR?=	\${ENVCMD} echo
326
EXIT?=		exit
327
INSTALL?=	${ENVCMD} install
328
LN?=		\${ENVCMD} ln
329
MKDIR?=		\${ENVCMD} mkdir
330
MOVE?=		\${ENVCMD} mv
331
RANLIB?=	\${ENVCMD} ranlib
332
REMOVE?=	\${ENVCMD} rm -f
333
SORT?=		\${ENVCMD} sort
334
TEST?=		\${ENVCMD} test
335
 
336
 
337
TOKENS_COMMON=	src/lib/machines/common/tokens
338
TOKENS_MACH=	src/lib/machines/\$(OSFAM)/\$(BLDARCH)/tokens
339
 
340
INSTALL_DIR=\$(BASE_DIR)/install
341
 
342
 
343
INSTALL_MACHDIR?=	\$(INSTALL_DIR)/machines/\$(OSFAM)/\$(BLDARCH)
344
 
345
# Directory where to install binarie tools like tcc and tld 
346
INSTALL_BINDIR?=	\$(INSTALL_MACHDIR)/bin
347
 
348
# Directory where to install environments for tcc
349
INSTALL_ENVDIR?=	\$(INSTALL_MACHDIR)/env
350
 
351
INSTALL_STARTUPDIR=	\$(INSTALL_MACHDIR)/startup
352
 
353
INSTALL_LIBDIR=		\$(INSTALL_DIR)/lib
354
 
355
TLD=		\$(INSTALL_BINDIR)/tld
356
TCC=		\$(INSTALL_BINDIR)/tcc
357
TPL=		\$(INSTALL_BINDIR)/tpl
358
SID=		\$(INSTALL_BINDIR)/sid
359
TSPEC?=		\$(INSTALL_BINDIR)/tspec
360
TNC?=		\$(INSTALL_BINDIR)/tnc 
361
 
362
 
363
#directories
364
COMMON_DIR=${INSTALL_DIR}/lib
365
 
366
MACH_DIR=${INSTALL_DIR}/machines
367
 
368
MAN_DIR=/usr/local/man
369
WORK_DIR=${BASE_DIR}/work
370
TEMP_DIR=/var/tmp
371
 
372
 
373
MACH_CPU=\$(BLDARCH)
374
MACH_OS=\$(OSFAM)
375
 
376
MACH_BASE=${MACH_DIR}/${MACH_OS}/${MACH_CPU}
377
 
378
 
379
#MACH_WORK=${WORK_DIR}/${MACH_OS}/${MACH_CPU}
380
 
381
 
382
PUBLIC_BIN=/usr/local/bin
383
 
6 7u83 384
EOF