| # |
| # Copyright 2017, Data61 |
| # Commonwealth Scientific and Industrial Research Organisation (CSIRO) |
| # ABN 41 687 119 230. |
| # |
| # This software may be distributed and modified according to the terms of |
| # the BSD 2-Clause license. Note that NO WARRANTY is provided. |
| # See "LICENSE_BSD2.txt" for details. |
| # |
| # @TAG(DATA61_BSD) |
| # |
| |
| # This is a bit of a hacky wrapper around the original muslc Makefile, which has |
| # been renamed Makefile.muslc. This wrapper allows for bashing muslc into the |
| # greater seL4 build system, but still preserving the original Makefile (albeit renamed) |
| # to allow for ease of merging changes |
| |
| all: build_muslc |
| |
| ifeq (${CONFIG_USER_DEBUG_BUILD},y) |
| ENABLE_DEBUG = --enable-debug |
| else |
| ENABLE_DEBUG = |
| endif |
| |
| ifeq (${CONFIG_ARCH_IA32},y) |
| TARGET = i386 |
| endif |
| |
| ifeq (${CONFIG_ARCH_AARCH32},y) |
| TARGET = arm |
| endif |
| |
| ifeq (${CONFIG_ARCH_X86_64},y) |
| TARGET = x86_64 |
| endif |
| |
| ifeq (${CONFIG_ARCH_AARCH64},y) |
| TARGET = aarch64 |
| endif |
| |
| ifeq (${CONFIG_ARCH_RISCV},y) |
| TARGET = riscv |
| endif |
| |
| ifeq (${CONFIG_LINK_TIME_OPTIMISATIONS},y) |
| CFLAGS += -flto |
| endif |
| |
| |
| CC = ${C_COMPILER} |
| CROSS_COMPILE = ${TOOLPREFIX} |
| CFLAGS += ${NK_CFLAGS} |
| |
| export CC CROSS_COMPILE CFLAGS |
| |
| configure_line := --srcdir=${SOURCE_DIR} --prefix=${STAGE_DIR} ${ENABLE_DEBUG} \ |
| --target=${TARGET} --enable-warnings --disable-shared --enable-static |
| |
| build_muslc: |
| # If the configure line changed and we've done a build (i.e. we have a makefile) then we should |
| # do a clean as muslc does not rebuild in the same directory correctly if you change the target |
| # or other major things |
| [ "`cat configure_line 2>&1`" != "${configure_line}" ] && [ -e Makefile.muslc ] && \ |
| $(MAKE) CFLAGS="${CFLAGS}" CC="${CC}" CROSS_COMPILE="${CROSS_COMPILE}" -f Makefile.muslc clean || true |
| |
| # If the configure line did change (or we don't have one yet) then we also need to (re)run configure |
| # Only print output if there's an error as configure is quite noisy |
| # Also need to update the ARCH in the config.mak file configure generates |
| [ "`cat configure_line 2>&1`" != "${configure_line}" ] && \ |
| ${SOURCE_DIR}/configure ${configure_line} 2>&1 > config.log || cat config.log && sed -ibak 's/^ARCH = \(.*\)/ARCH = \1_sel4/' config.mak || true |
| # Store the current configuration |
| echo "${configure_line}" > configure_line |
| # Symlink in the correct Makefile as the configure script doesn't know that we renamed the muslc one |
| [ -e Makefile.muslc ] || ln -s ${SOURCE_DIR}/Makefile.muslc Makefile.muslc |
| $(MAKE) CFLAGS="${CFLAGS}" CC="${CC}" CROSS_COMPILE="${CROSS_COMPILE}" -f Makefile.muslc |
| $(MAKE) CFLAGS="${CFLAGS}" CC="${CC}" CROSS_COMPILE="${CROSS_COMPILE}" -f Makefile.muslc install-libs install-headers |