| # |
| # 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) |
| # |
| |
| cmake_minimum_required(VERSION 3.7.2) |
| |
| project(libsel4muslcsys C) |
| |
| set(configure_string "") |
| |
| config_string(LibSel4MuslcSysMorecoreBytes LIB_SEL4_MUSLC_SYS_MORECORE_BYTES "Malloc limit \ |
| This value sets the number of bytes reserved for the region malloc \ |
| allocates from. Note that you won't actually be able to allocate this \ |
| entire amount because there is some bookkeeping overhead. This area is \ |
| allocated statically." DEFAULT 1048576 UNQUOTE) |
| |
| config_option( |
| LibSel4MuslcSysDebugHalt |
| LIB_SEL4_MUSLC_SYS_DEBUG_HALT |
| "Perform seL4_DebugHalt on _exit and _abort \ |
| Controls whether or not a DebugHalt should be called to implement Exit \ |
| style syscalls. This is useful if you have a single app and thread, but \ |
| should be turned off if using multiple threads that may wish to exit \ |
| independently of the whole system" |
| DEFAULT |
| ON |
| ) |
| |
| config_option( |
| LibSel4MuslcSysCPIOFS |
| LIB_SEL4_MUSLC_SYS_CPIO_FS |
| "Implementation of a simple file system usi g CPIO archives \ |
| If this is enabled open and read syscalls will attempt to use the cpio archive \ |
| _cpio_archive. This implements a basic read only POSIX interface to that file system" |
| DEFAULT |
| OFF |
| ) |
| |
| config_option( |
| LibSel4MuslcSysArchPutcharWeak |
| LIB_SEL4_MUSLC_SYS_ARCH_PUTCHAR_WEAK |
| "Make __arch_putchar a weak symbol \ |
| This allows you to override __arch_putchar in another library or your \ |
| application." |
| DEFAULT |
| OFF |
| ) |
| |
| config_string( |
| LibSel4MuslcSysConstructorPriority |
| LIB_SEL4_MUSLC_SYS_CONSTRUCTOR_PRIORITY |
| "Set the priority of the muslc initialisation constructors such that |
| they occur after external initialisation of the system call |
| dependencies." |
| DEFAULT |
| "MUSLCSYS_WITH_VSYSCALL_PRIORITY + 10" |
| UNQUOTE |
| ) |
| mark_as_advanced( |
| LibSel4MuslcSysMorecoreBytes |
| LibSel4MuslcSysDebugHalt |
| LibSel4MuslcSysCPIOFS |
| LibSel4MuslcSysArchPutcharWeak |
| ) |
| add_config_library(sel4muslcsys "${configure_string}") |
| |
| file(GLOB deps src/*.c) |
| |
| list(SORT deps) |
| |
| # TODO: This use to be calculated by the following line. Need to use a generator expression and generate |
| # this into a header file at build time |
| # MUSLC_HIGHEST_SYSCALL := $(shell cat $(STAGE_DIR)/include/bits/syscall.h | sed 's/^.*[^0-9]\([0-9]*\)$$/\1/' | sort -nr | head -1) |
| set(HighestSyscall 400) |
| |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_XOPEN_SOURCE=700 -DMUSLC_HIGHEST_SYSCALL=${HighestSyscall}") |
| |
| add_library(sel4muslcsys STATIC EXCLUDE_FROM_ALL ${deps}) |
| # Force the muslcsys_init_muslc constructor to be included in dependants |
| target_link_options(sel4muslcsys BEFORE INTERFACE "-Wl,-umuslcsys_init_muslc") |
| target_include_directories(sel4muslcsys PUBLIC include) |
| target_link_libraries( |
| sel4muslcsys |
| PUBLIC |
| # These quotes are needed to prevent cmake splitting these arguments |
| "-Wl,-u -Wl,__vsyscall_ptr" |
| muslc |
| sel4 |
| cpio |
| utils |
| sel4utils |
| sel4muslcsys_Config |
| PRIVATE sel4_autoconf |
| ) |