summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2018-01-04 09:02:17 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-05 14:23:59 +0100
commit9d234716bad79ed0e9ce7c1685da0fe5365f6b5d (patch)
tree2d3a165e3a17a332ea0a59702daf92333a444999
parent07ae36186571efb577040e8b951ba77b6e4c46ce (diff)
FIXME linkcmds
-rw-r--r--testsuites/aclocal/rtems-bsp-linkcmds.m440
-rw-r--r--testsuites/automake/compile.am2
2 files changed, 34 insertions, 8 deletions
diff --git a/testsuites/aclocal/rtems-bsp-linkcmds.m4 b/testsuites/aclocal/rtems-bsp-linkcmds.m4
index d84d270c5c..6517598542 100644
--- a/testsuites/aclocal/rtems-bsp-linkcmds.m4
+++ b/testsuites/aclocal/rtems-bsp-linkcmds.m4
@@ -1,31 +1,55 @@
dnl
dnl RTEMS Include paths.
dnl
+dnl This is messy because the linkcmds have no clear and defined structure.
+dnl There are BSP named linkcmds files, plain linkcmds file, configure template
+dnl .in files configure changes and shared versions of these. The approach to have
+dnl a single file for a number of BSPs in a family is sound, the lack of rules
+dnl means we have a range of variants and this results in following code.
+dnl
+dnl The preinstall hid a number of questionable things and preinstall has gone.
+dnl
AC_DEFUN([RTEMS_BSP_LINKCMDS],
[
AC_REQUIRE([RTEMS_SOURCE_TOP])
AC_REQUIRE([RTEMS_BUILD_TOP])
+AC_MSG_CHECKING([BSP linkcmds])
+
RTEMS_BSP_ARCH_PATH="${RTEMS_SOURCE_ROOT}/c/src/lib/libbsp/${RTEMS_CPU}"
RTEMS_BSP_ARCH_LINKCMDS_PATH="${RTEMS_BSP_ARCH_PATH}/shared/startup"
-AC_SUBST(RTEMS_BSP_ARCH_LINKCMDS_PATH)
RTEMS_BSP_LINKCMDS_PATH="${RTEMS_BSP_ARCH_PATH}/${RTEMS_BSP_FAMILY}/startup"
-AC_SUBST(RTEMS_BSP_LINKCMDS_PATH)
RTEMS_BSP_LINKCMDS_SCRIPT=
-for f in "linkcmds.${RTEMS_BSP}" "linkcmds.${RTEMS_BSP_FAMILY}" "linkcmds";
+for p in "${RTEMS_BSP_LINKCMDS_PATH}" "${RTEMS_BSP_ARCH_LINKCMDS_PATH}";
do
- AS_IF([test -f "${RTEMS_BSP_LINKCMDS_PATH}/$f"],[
- RTEMS_BSP_LINKCMDS_SCRIPT="$f"
- break])
+ for f in "linkcmds.${RTEMS_BSP}" "linkcmds.${RTEMS_BSP_FAMILY}" "linkcmds" "linkcmds.in";
+ do
+ AS_IF([test -f "$p/$f"],[
+ RTEMS_BSP_LINKCMDS_SCRIPT="$f"
+ RTEMS_BSP_LINKCMDS_PATH="$p"
+ break])
+ done
+ AS_IF([test ! -z "$RTEMS_BSP_LINKCMDS_SCRIPT"],[break])
done
AS_IF([test -z "${RTEMS_BSP_LINKCMDS_SCRIPT}"],[
- AC_MSG_ERROR([can not determine linkcmds])])
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([can not determine linkcmds])])
RTEMS_BSP_LIBBSP_PATH="${RTEMS_BUILD_ROOT}/lib/libbsp/${RTEMS_CPU}/${RTEMS_BSP_FAMILY}"
-AC_SUBST(RTEMS_BSP_LIBBSP_PATH)
+RTEMS_BSP_LIBBSP_STARTUP_PATH="${RTEMS_BSP_LIBBSP_PATH}/startup"
+AS_IF([test "${RTEMS_BSP_LINKCMDS_SCRIPT}" == "linkcmds.in"],[
+ RTEMS_BSP_LINKCMDS_PATH="${RTEMS_BSP_LIBBSP_PATH}/startup"
+ RTEMS_BSP_LINKCMDS_SCRIPT=linkcmds])
+
+AC_MSG_RESULT([${RTEMS_BSP_LINKCMDS_PATH}/${RTEMS_BSP_LINKCMDS_SCRIPT}])
+
+AC_SUBST(RTEMS_BSP_ARCH_LINKCMDS_PATH)
+AC_SUBST(RTEMS_BSP_LIBBSP_PATH)
+AC_SUBST(RTEMS_BSP_LIBBSP_STARTUP_PATH)
+AC_SUBST(RTEMS_BSP_LINKCMDS_PATH)
AC_SUBST(RTEMS_BSP_LINKCMDS_SCRIPT)
])
diff --git a/testsuites/automake/compile.am b/testsuites/automake/compile.am
index 738cefe549..190a9ccc55 100644
--- a/testsuites/automake/compile.am
+++ b/testsuites/automake/compile.am
@@ -14,7 +14,9 @@ AM_CFLAGS = $(TEST_C_FLAGS)
AM_CXXFLAGS = $(TEST_CXX_FLAGS)
AM_LDFLAGS = -B$(RTEMS_BSP_LIBBSP_PATH) $(GCCSPECS) -qnolinkcmds \
-L$(PROJECT_LIB) \
+ -L$(RTEMS_BSP_LIBBSP_STARTUP_PATH) \
-L$(RTEMS_BSP_ARCH_LINKCMDS_PATH) \
+ -L$(RTEMS_BSP_LINKCMDS_PATH) \
-Wl,-T$(RTEMS_BSP_LINKCMDS_PATH)/$(RTEMS_BSP_LINKCMDS_SCRIPT) \
$(TEST_LD_FLAGS)