diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-02-19 19:55:40 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-02-19 19:55:40 +0000 |
commit | 89376b7141edb6f927fb940c27391cda6e67c785 (patch) | |
tree | 57dd01fd9328b879289493ba848ae5c34c607b91 /m4/rtems-makevars.m4 | |
download | libbsdport-89376b7141edb6f927fb940c27391cda6e67c785.tar.bz2 |
Initial import.initial
Diffstat (limited to 'm4/rtems-makevars.m4')
-rw-r--r-- | m4/rtems-makevars.m4 | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/m4/rtems-makevars.m4 b/m4/rtems-makevars.m4 new file mode 100644 index 0000000..2850dc6 --- /dev/null +++ b/m4/rtems-makevars.m4 @@ -0,0 +1,142 @@ +# This macro saves the BSP-specific variables (such as CC, CXX, CPP, ...) +# into intermediate variables from where they can be restored +# with TILLAC_RTEMS_RESET_MAKEVARS +# +# Note: this macro should not be used directly. It is expanded from +# TILLAC_RTEMS_SETUP +# +# TILLAC_RTEMS_SAVE_MAKEVARS +AC_DEFUN([TILLAC_RTEMS_SAVE_MAKEVARS], + [ + tillac_rtems_cc_orig="$CC" + tillac_rtems_cxx_orig="$CXX" + tillac_rtems_ccas_orig="$CCAS" + tillac_rtems_cpp_orig="$CPP" + tillac_rtems_ldflags_orig="$LDFLAGS" + tillac_rtems_bsp_family_orig="" + tillac_rtems_bsp_insttop_orig=""]dnl +) + +# This macro restores the BSP-specific variables (such as CC, CXX, CPP, ...) +# from intermediate variables that were set by TILLAC_RTEMS_SAVE_MAKEVARS +# +# Note: this macro should not be used directly. It is expanded from +# TILLAC_RTEMS_SETUP +# +# TILLAC_RTEMS_RESET_MAKEVARS +AC_DEFUN([TILLAC_RTEMS_RESET_MAKEVARS], + [ + RTEMS_TILL_MAKEVARS_SET=NO + CC="$tillac_rtems_cc_orig" + CXX="$tillac_rtems_cxx_orig" + CCAS="$tillac_rtems_ccas_orig" + CPP="$tillac_rtems_cpp_orig" + LDFLAGS="$tillac_rtems_ldflags_orig" + RTEMS_BSP_FAMILY="$tillac_rtems_family_orig" + RTEMS_BSP_INSTTOP="$tillac_rtems_insttop_orig"]dnl +) + +# Determine critical, BSP-specific build parameters from the +# RTEMS makefiles. These parameters are cflags, gccspecs, ... +# +# Note: this macro should not be used directly. It is expanded from +# TILLAC_RTEMS_SETUP +# +# TILLAC_RTEMS_MAKEVARS(HOST_SYSTEM, BSP) +AC_DEFUN([TILLAC_RTEMS_MAKEVARS], + [ + AC_MSG_CHECKING([Determining RTEMS Makefile parameters for BSP:]) +dnl DOWNEXT is set in leaf.cfg and we don't include that + if _tillac_rtems_result=`make -s -f - rtems_makevars <<EOF_ +include $with_rtems_top/$1/$2/Makefile.inc +include \\\$(RTEMS_CUSTOM) +include \\\$(CONFIG.CC) + +rtems_makevars: + @echo tillac_rtems_cpu_cflags=\'\\\$(CPU_CFLAGS) \\\$(AM_CFLAGS)\' + @echo tillac_rtems_gccspecs=\'\\\$(GCCSPECS)\' + @echo tillac_rtems_cpu_asflags=\'\\\$(CPU_ASFLAGS)\' + @echo tillac_rtems_ldflags=\'\\\$(AM_LDFLAGS) \\\$(LDFLAGS)\' + @echo tillac_rtems_cppflags= + @echo RTEMS_BSP_FAMILY=\'\\\$(RTEMS_BSP_FAMILY)\' + @echo RTEMS_BSP_INSTTOP=\'\\\$(PROJECT_RELEASE)\' +EOF_ +` ; then + AC_MSG_RESULT([OK: $_tillac_rtems_result]) + else + AC_MSG_ERROR([$_tillac_rtems_result]) + fi + # propagate cpu_cflags and gccspecs into currently executing shell + eval $_tillac_rtems_result + export RTEMS_BSP_INSTTOP="$RTEMS_BSP_INSTTOP" + export RTEMS_BSP_FAMILY="$RTEMS_BSP_FAMILY"]dnl +) + +# Export the set of critical, BSP-specific build parameters +# (cflags, gccspecs, ...) that were determined by TILLAC_RTEMS_MAKEVARS +# into the environment. +# +# This macro takes two (optional) arguments: +# +# <HOST_SYSTEM> and <LIBSUBDIR> +# +# The macro also, adds the paths listed in the --with-extra-incdirs and +# --with-extra-libdirs options to the cppflags and ldflags, respectively +# (adding -I, -L). If 'LIBSUBDIR' is given then it is appended to +# any of the directories listed in --with-extra-libdirs (if the LIBSUBDIR +# exists) there. +# +# Furthermore, if it is determined that RTEMS was configured for +# a multilibbed cpukit then +# i) -I${with_rtems_top}/${host_cpu}-${host_os}/include +# is added to the cppflags (if the directory exists) +# ii) -B${with_rtems_top}/<HOST_SYSTEM>/lib is added to the +# gcc specs so that multilibs are found (workaround for +# a bug in the rtems 4.9.0 makefiles) +# +# Note: this macro should not be used directly. It is expanded from +# TILLAC_RTEMS_SETUP +# +# TILLAC_RTEMS_EXPORT_MAKEVARS([HOST_SYSTEM],[LIBSUBDIR]) +AC_DEFUN([TILLAC_RTEMS_EXPORT_MAKEVARS], + [ + AC_MSG_CHECKING([Checking if RTEMS CC & friends MAKEVARS are already set]) + if test ! "${RTEMS_TILL_MAKEVARS_SET}" = "YES"; then + AC_MSG_RESULT([No (probably a multilibbed build)]) + export RTEMS_TILL_MAKEVARS_SET=YES + # if this is a multilibbed cpukit we need to include + if test -d $with_rtems_top/${host_cpu}-${host_os}/include ; then + tillac_rtems_cppflags="$tillac_rtems_cppflags -I$with_rtems_top/${host_cpu}-${host_os}/include" + # and since the RTEMS (4.9) makefiles seem to be broken + # for multilibbed cpukits (fail to add -B <libdir>) we + # do it here + tillac_rtems_gccspecs="$tillac_rtems_gccspecs -B $with_rtems_top/$1/lib" + fi + if test "${with_extra_incdirs+set}" = "set" ; then + for tillac_extra_incs_val in ${with_extra_incdirs} ; do + tillac_rtems_cppflags="$tillac_rtems_cppflags -I$tillac_extra_incs_val" + done + fi + if test "${with_extra_libdirs+set}" = "set" ; then + for tillac_extra_libs_val in ${with_extra_libdirs} ; do + if test -d $tillac_extra_libs_val/$2 ; then + tillac_rtems_ldflags="$tillac_rtems_ldflags -L$tillac_extra_libs_val/$2" + else + tillac_rtems_ldflags="$tillac_rtems_ldflags -L$tillac_extra_libs_val" + fi + done + fi +#export forged CC & friends so that they are used by sub-configures, too + export CC="$CC $tillac_rtems_gccspecs $tillac_rtems_cpu_cflags $tillac_rtems_cppflags" + export CXX="$CXX $tillac_rtems_gccspecs $tillac_rtems_cpu_cflags $tillac_rtems_cppflags" + export CCAS="$CCAS $tillac_rtems_gccspecs $tillac_rtems_cpu_asflags -DASM" + export CPP="$CPP $tillac_rtems_gccspecs $tillac_rtems_cppflags" +# export CFLAGS="$CFLAGS $tillac_rtems_cpu_cflags" +# export CXXFLAGS="$CXXFLAGS $tillac_rtems_cpu_cflags" +# export CCASFLAGS="$CCASFLAGS $tillac_rtems_cpu_asflags -DASM" +# export CPPFLAGS="$CPPFLAGS $tillac_rtems_cppflags" + export LDFLAGS="$LDFLAGS $tillac_rtems_ldflags" + else + AC_MSG_RESULT([yes]) + fi]dnl +) |