#!/bin/sh # # configure [ --floppy ] target=unknown # usage # # Prints usage. # usage() { cat << EOF Usage: $0 options: --floppy 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 ${f##src/data/etc/timezones/} ?= $TZOBJECTS ; EOF done