blob: 731bc6571fb11abf68a41c14e67bb674a580847e [file] [log] [blame]
#
# 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
)