Rev 10 | Rev 27 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/bin/sh
# $Id$
#
# Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of The TenDRA Project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific, prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# This script is inspired by Postfix' makedefs script.
# The purpose of this script is to determine the host on which we are
# compiling TenDRA and provide sane compilation defaults.
HOSTARCH=`/usr/bin/env uname -m`
SYSTEM=`/usr/bin/env uname -s`
VERSION=`/usr/bin/env uname -r`
. ./makedefs.funcs
if [ "${1}" = "-h" ]; then
usage
exit
fi
if [ -f Makefile.defs ]; then
echo "NOTICE: old Makefile.defs file found, overwriting..."
echo
fi
echo "${SYSTEM}.${VERSION} detected..."
echo
# See the URL in the warning below for why this is bad.
if [ ! -z ${LD_LIBRARY_PATH} ]; then
echo "WARNING: LD_LIBRARY_PATH set, please don't do that (see:"
echo "http://www.visi.com/~barr/ldpath.html)"
echo "Setting to empty environment variable..."
echo
LD_LIBRARY_PATH=""
fi
# Set up defaults
EXECFORMAT=elf # ELF is the de facto executable file format nowadays.
case "${SYSTEM}.${VERSION}" in
DragonFly.1*) # Use the system supplied GCC for CC.
# System definition is __DragonFly__
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt1.o"
LIBS="-L/usr/lib -lc"
OSFAM="dragonfly"
OSVER="DRAGONFLY1"
;;
FreeBSD.4*) # Use the system supplied GCC for CC.
# System definition is __FreeBSD__
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt1.o"
LIBS="-L/usr/lib -lc"
OSFAM="freebsd"
OSVER="FREEBSD4"
;;
FreeBSD.5*) # Use the system supplied GCC for CC.
# System definition is __FreeBSD__
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt1.o"
LIBS="-L/usr/lib -lc"
OSFAM="freebsd"
OSVER="FREEBSD5"
;;
FreeBSD.6*) # Use the system supplied GCC for CC.
# System definition is __FreeBSD__
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt1.o"
LIBS="-L/usr/lib -lc"
OSFAM="freebsd"
OSVER="FREEBSD6"
;;
FreeBSD.7*) # Use the system supplied GCC for CC.
# System definition is __FreeBSD__
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt1.o"
LIBS="-L/usr/lib -lc"
OSFAM="freebsd"
OSVER="FREEBSD7"
;;
Linux.2.4*) # Use the system supplied GCC for CC.
# System definition is __linux
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS="--dynamic-linker /lib/ld-linux.so.2"
LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
LIBS="-L/usr/lib -lc"
OSFAM="linux"
OSVER="LINUX24"
;;
Linux.2.6*) # Use the system supplied GCC for CC.
# System definition is __linux
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=""
LDCRT="/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o"
LIBS="-L/usr/lib -lc"
OSFAM="linux"
OSVER="LINUX26"
;;
Minix.2*) # Use the system supplied cc for CC.
# It aims to be C90 conforming.
check_cc
LD=""
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT=""
# Minix only runs on x86 for now.
LIBS="-L/usr/lib/i386 -lc"
OSFAM="minix"
OSVER="MINIX2"
;;
NetBSD.1*) #
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt0.o"
LIBS="-L/usr/lib -lc"
OSFAM="netbsd"
OSVER="NETBSD1"
;;
NetBSD.2*) #
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS="--dynamic-linker /libexec/ld.elf_so"
LDCRT="/usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtn.o"
LIBS="-L/usr/lib -lc"
OSFAM="netbsd"
OSVER="NETBSD2"
;;
NetBSD.3*) #
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT=
LIBS="-lc"
OSFAM="netbsd"
OSVER="NETBSD3"
;;
NetBSD.8*) #
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT=
LIBS="-lc"
OSFAM="netbsd"
OSVER="NETBSD3"
;;
OpenBSD.3*) #
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt0.o"
LIBS="-L/usr/lib -lc"
OSFAM="openbsd"
OSVER="OPENBSD3"
;;
OpenBSD.4*) #
check_cc
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT="/usr/lib/crt0.o"
LIBS="-L/usr/lib -lc"
OSFAM="openbsd"
OSVER="OPENBSD4"
;;
SunOS.5*) # Do not use the cc in /usr/ucb since it is an optional
# software package.
if [ "x${CC}" = "x" ]; then
CC=`/usr/bin/env cc`
case "${CC}" in
*ucb*cc*)
echo "Please set your PATH or CC environment variable to a working compiler and not"
echo "the ucb/cc one"
exit 1
;;
esac;
fi
CC=${CC}
LD="ld"
CFLAGS=${CFLAGS}
LDOPTS=
LDCRT=
LIBS="-L/usr/lib -lc"
OSFAM="sunos"
OSVER="SUNOS5"
;;
*) # Make sure we specify what we want to hear from the
# people submitting feedback.
echo "Unknown \"${SYSTEM}\" and \"${VERSION}\" combination"
echo "Please report the following to the developers:"
echo
echo "uname -r: ${VERSION}"
echo "uname -s: ${SYSTEM}"
echo
;;
esac
check_hostarch
if [ -z "${PREFIX}" ]; then
PREFIX=/usr/local;
fi
BASE_DIR=`pwd`
INSTALL_DIR="/usr/local/lib/TenDRA-5.0.0"
echo "Setting Makefile.defs environment to the following:"
echo
echo "PREFIX: ${PREFIX}"
echo "CC: ${CC}"
echo "CCVER_MAJOR: ${CCVER_MAJOR}"
echo "CCVER_MINOR: ${CCVER_MINOR}"
echo "CCVER_TINY: ${CCVER_TINY}"
echo "LD: ${LD}"
echo "CFLAGS: ${CFLAGS}"
echo "LDOPTS: ${LDOPTS}"
echo "LDCRT: ${LDCRT}"
echo "LIBS: ${LIBS}"
echo "OSFAM: ${OSFAM}"
echo "OSVER: ${OSVER}"
echo "BLDARCH: ${BLDARCH} (${HOSTARCH})"
echo "BLDARCHBITS: ${BLDARCHBITS} bit"
echo "EXECFORMAT: ${EXECFORMAT}"
echo "BASE_DIR: ${BASE_DIR}"
echo "INSTALL_DIR: ${INSTALL_DIR}"
cat > Makefile.defs <<EOF
PREFIX=${PREFIX}
CC?=${CC}
CCVER_MAJOR=${CCVER_MAJOR}
CCVER_MINOR=${CCVER_MINOR}
CCVER_TINY=${CCVER_TINY}
LD?=${LD}
CFLAGS=${CFLAGS}
LDOPTS=${LDOPTS}
LDCRT=${LDCRT}
LIBS=${LIBS}
OSFAM=${OSFAM}
OSVER=${OSVER}
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
BLDARCH=${BLDARCH}
BLDARCHBITS=${BLDARCHBITS}
EXECFORMAT=${EXECFORMAT}
BASE_DIR=${BASE_DIR}
INSTALL_DIR=${INSTALL_DIR}
EOF