haiku/configure

158 lines
3.4 KiB
Plaintext
Raw Normal View History

#!/bin/sh
#
# configure [ --floppy <floppy location> ]
target=unknown
# usage
#
# Prints usage.
#
usage()
{
cat << EOF
Usage: $0 <options>
options:
--floppy <floppy location> Specifies the location of the floppy
(device or image).
--bochs-debug Enables bochs serial debug emulation (activated
via kernel settings file).
--target=TARGET Select build target platform. [default=${target}]
valid targets=r5,bone,dano,haiku
--include-gpl-addons Include GPL licensed add-ons.
--help Prints out this help.
EOF
}
# assertparam
#
# Checks whether at least one parameter is left.
#
assertparam()
{
if [ $2 \< 2 ]; then
echo $0: \`$1\': Parameter expected.
exit 1
fi
}
# standard_gcc_settings
#
# Sets the variables for a GCC platform.
#
standard_gcc_settings()
{
# PLATFORM_LINKLIBS
gcclib=`gcc -print-libgcc-file-name`
gccdir=`dirname ${gcclib}`
gcc_version=`gcc -dumpversion`
if [ "x${PLATFORM_LINKLIBS}" == "x" ] ; then
PLATFORM_LINKLIBS="-L ${gccdir} -lgcc"
fi
if [ "x${PLATFORM_HEADERS}" == "x" ] ; then
PLATFORM_HEADERS="${gccdir}/include"
fi
if [ "${LIBGCC_DIR}" == "" ] ; then
LIBGCC_DIR="${gccdir}"
fi
if [ "${LIBGCC_OBJECTS}" == "" ] ; then
LIBGCC_OBJECTS=`ar t ${gccdir}/libgcc.a`
fi
}
# default parameter values
#
platform=`uname`
gcc_version=
floppy=
bochs_debug=0
include_gpl_addons=0
revision=`uname -r`
case "$revision" in
5.1) target=dano ;;
5.0.4) target=bone ;;
5.0*) target=r5 ;;
*) target=haiku ;;
esac
# parse parameters
#
while [ $# \> 0 ] ; do
case "$1" in
--include-gpl-addons) include_gpl_addons=1; shift 1;;
--floppy) assertparam "$1" $#; floppy=$2; shift 2;;
--bochs-debug) bochs_debug=1; shift 1;;
--target=*) target=`echo $1 | cut -d'=' -f2-`; shift 1;;
--help | -h) usage; exit 0;;
*) echo Invalid argument: \`$1\'; exit 1;;
esac
done
# check parameters
#
if [ -n "$floppy" ]; then
case "$floppy" in
/*) ;;
*) echo "Warning: non-absolute floppy path. Parameter ignored.";
floppy=;;
esac
fi
# BeOS
if [ "${platform}" = "BeOS" ] ; then
standard_gcc_settings
# Linux
else if [ "${platform}" = "Linux" ] ; then
standard_gcc_settings
# Unknown platform
else
echo Unsupported platform: ${platform}
exit 1
fi; fi
# Generate BuildConfig
cat << EOF > build/BuildConfig
# BuildConfig
# Note: This file has been automatically generated by configure.
FLOPPY_PATH ?= "${floppy}" ;
PLATFORM_LINKLIBS ?= ${PLATFORM_LINKLIBS} ;
PLATFORM_HEADERS ?= ${PLATFORM_HEADERS} ;
GCC_RAW_VERSION ?= ${gcc_version} ;
LIBGCC_DIR ?= ${LIBGCC_DIR} ;
BOCHS_DEBUG_HACK ?= ${bochs_debug} ;
INCLUDE_GPL_ADDONS ?= ${include_gpl_addons} ;
TARGET_PLATFORM ?= ${target} ;
EOF
# Libgcc.a objects
cat << EOF > build/libgccObjects
# libgcc.a objects to be linked against libroot.so
# Note: This file has been automatically generated by configure.
LIBGCC_OBJECTS ?= ${LIBGCC_OBJECTS} ;
EOF
# Generate Timezones binaries bindings
cat << EOF > build/Timezones
# Timezones used for the build
# Note: This file has been automatically generated by configure.
EOF
timezones=`echo src/data/etc/timezones/* | sed -e s@src/data/etc/timezones/.svn@@`
for f in ${timezones};
do
TZOBJECTS=`gawk '/^Zone/ { print $2 } /^Link/ { print $3 } ' $f `
cat << EOF >> build/Timezones
TZ_OBJECTS on <src!data!etc!timezones>${f##src/data/etc/timezones/} ?= $TZOBJECTS ;
EOF
done