diff --git a/Jamrules b/Jamrules index d6215a75d5..b17c9723dc 100644 --- a/Jamrules +++ b/Jamrules @@ -46,6 +46,27 @@ LOCATE on $(HCACHEFILE) $(JCACHEFILE) = $(OBOS_BUILD_DIR) ; include BuildConfig ; } +# analyze GCC version +if ! $(GCC_RAW_VERSION) { + ECHO "Variable GCC_RAW_VERSION not set. Please run ./configure or" ; + EXIT "specify it manually." ; +} +GCC_VERSION = ; +{ + # split the raw version string at `.' and `-' characters + local version = $(GCC_RAW_VERSION) ; + while $(version) { + local split = [ Match "([^.-]*)[.-](.*)" : $(version) ] ; + if $(split) { + GCC_VERSION += $(split[1]) ; + version = $(split[2]) ; + } else { + GCC_VERSION += $(version) ; + version = ; + } + } +} + # Save the platform default headers. PLATFORM_DEFAULT_HEADERS = $(HDRS) ; diff --git a/configure b/configure index b8a16fe780..ab1f8890e7 100755 --- a/configure +++ b/configure @@ -42,6 +42,7 @@ standard_gcc_settings() # PLATFORM_LINKLIBS gcclib=`gcc -print-libgcc-file-name` gccdir=`dirname ${gcclib}` + gcc_version=`gcc --version` if [ "x${PLATFORM_LINKLIBS}" == "x" ] ; then PLATFORM_LINKLIBS="-L ${gccdir} -lgcc" fi @@ -53,6 +54,7 @@ standard_gcc_settings() # default parameter values # platform=`uname` +gcc_version= floppy= bochs_debug=0 @@ -99,6 +101,7 @@ cat << EOF > build/BuildConfig FLOPPY_PATH ?= "${floppy}" ; PLATFORM_LINKLIBS ?= ${PLATFORM_LINKLIBS} ; PLATFORM_HEADERS ?= ${PLATFORM_HEADERS} ; +GCC_RAW_VERSION ?= ${gcc_version} BOCHS_DEBUG_HACK ?= ${bochs_debug} ; EOF