on master help sign in
Update the seL4 build to use CMake instead of Kbuild
f95d230Jonas Claeson
rts/seL4/CMakeLists.txtnew file+43
@@ -0,0 +1,43 @@
1+cmake_minimum_required(VERSION 3.7.2)
2+
3+project(libsel4-idris-rts C)
4+
5+file(GLOB static
6+ rts/idris_rts.c
7+ rts/idris_heap.c
8+ rts/idris_gc.c
9+ rts/idris_gmp.c
10+ rts/idris_bitstring.c
11+ rts/idris_opts.c
12+ rts/idris_stats.c
13+ rts/idris_utf8.c
14+ rts/idris_stdfgn.c
15+ rts/mini-gmp.c
16+ rts/idris_buffer.c
17+ rts/getline.c
18+ rts/idris_net.c
19+ rts/seL4/idris_main.c
20+)
21+
22+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
23+# Ignore some warnings
24+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter")
25+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-sign-compare")
26+# Don't use the host machines' environment when cross compiling
27+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -undef")
28+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DIDRIS_TARGET_OS=\"\\\"seL4\\\"\"")
29+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSEL4")
30+execute_process(
31+ COMMAND ${CMAKE_C_COMPILER} -dumpmachine
32+ OUTPUT_VARIABLE MACHINE
33+ OUTPUT_STRIP_TRAILING_WHITESPACE
34+)
35+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DIDRIS_TARGET_TRIPLE=\"\\\"${MACHINE}\\\"\"")
36+
37+add_library(sel4-idris-rts EXCLUDE_FROM_ALL ${static})
38+target_include_directories(sel4-idris-rts PUBLIC rts)
39+target_link_libraries(
40+ sel4-idris-rts
41+ Configuration
42+ muslc
43+)
rts/seL4/Kbuilddeleted−2
@@ -1,2 +0,0 @@
1−libsel4-idris-rts: $(libc) common
2−libs-$(CONFIG_LIBSEL4_IDRIS_RTS) += libsel4-idris-rts
rts/seL4/Kconfigdeleted−9
@@ -1,9 +0,0 @@
1−config LIBSEL4_IDRIS_RTS
2− bool "libsel4-idris-rts"
3− default y
4− select HAVE_LIBSEL4_IDRIS_RTS
5− help
6− Idris RTS compiled for seL4
7−
8−config HAVE_LIBSEL4_IDRIS_RTS
9− bool
rts/seL4/Makefiledeleted−33
@@ -1,33 +0,0 @@
1−# Target
2−TARGETS := libsel4-idris-rts.a
3−
4−# Source files required to build the target
5−FILES := \
6− idris_rts.c \
7− idris_heap.c \
8− idris_gc.c \
9− idris_gmp.c \
10− idris_bitstring.c \
11− idris_opts.c \
12− idris_stats.c \
13− idris_utf8.c \
14− idris_stdfgn.c \
15− mini-gmp.c \
16− idris_buffer.c \
17− getline.c \
18− idris_net.c \
19− seL4/idris_main.c
20−CFILES := $(addprefix rts/,$(FILES))
21−
22−# Header file directory this library provides
23−HDRFILES := $(wildcard ${SOURCE_DIR}/rts/*)
24−
25−CFLAGS += -W -Wall
26−# Don't use the host machines' environment when cross compiling
27−CFLAGS += -undef
28−CFLAGS += -DIDRIS_TARGET_OS=\"seL4\"
29−CFLAGS += -DSEL4
30−MACHINE := $(shell $(CC) -dumpmachine)
31−CFLAGS += -DIDRIS_TARGET_TRIPLE=\"$(MACHINE)\"
32−
33−include $(SEL4_COMMON)/common.mk
rts/seL4/README.mdnew file+5
@@ -0,0 +1,5 @@
1+# libsel4-idris-rts - Idris RTS library for the seL4 microkernel
2+The Idris RTS compiled to the seL4 microkernel.
3+
4+## How to use this library?
5+See the instructions in the project repository, [mokshasoft/sel4-idris-manifest](https://github.com/mokshasoft/sel4-idris-manifest).
rts/seL4/idris_main.c+2−3
@@ -6,8 +6,8 @@
6void _idris__123_runMain_95_0_125_(VM* vm, VAL* oldbase);
6void _idris__123_runMain_95_0_125_(VM* vm, VAL* oldbase);
7
7
8RTSOpts opts = {
8RTSOpts opts = {
9− .init_heap_size = 16384000,
9+ .init_heap_size = 100000,
10− .max_stack_size = 4096000,
10+ .max_stack_size = 5000,
11 .show_summary = 0
11 .show_summary = 0
12};
12};
13
13
@@ -24,7 +24,6 @@ int main() {
24 }
24 }
25#endif
25#endif
26
26
27− free_nullaries();
28 // Remove call to terminate since it crashes the application during a free
27 // Remove call to terminate since it crashes the application during a free
29 //Stats stats = terminate(vm);
28 //Stats stats = terminate(vm);
30
29