|
|
- cmake_minimum_required(VERSION 3.0)
- project(ink C)
-
- include(CTest)
-
- set(CMAKE_C_STANDARD 90)
-
- add_library(ink lib.c include/ink.h)
-
- # Uncomment to disable the redundant arithmetic
- # add_definitions(-DNOEXTRAARITHMETIC)
-
- # Uncomment to disable array types
- # add_definitions(-DNOARRAYLIB)
-
- # Uncomment to disable string literal
- # add_definitions(-DNOSTRINGLITERALS)
-
- # Ensures the interpreter doesn't use the standard C library functions
- # add_definitions(-DNOSTDLIB)
-
- # Removes several checks to improve performance in cases where ink is used as a bytecode
- # add_definitions(-DNOEXTRACHECKS)
-
- add_definitions(-DINK_STEP_BATCH_COUNT=20)
-
- add_executable(ink_exe main.c)
- target_link_libraries(ink_exe PUBLIC ink)
- target_include_directories(ink PUBLIC include)
-
- # Functional tests
-
- function(add_success_compiled_test cfile success_regex)
- add_executable(${cfile} test/${cfile}.c)
- target_link_libraries(${cfile} PUBLIC ink)
- add_test(NAME ${cfile} COMMAND ${cfile})
- set_property (TEST ${cfile}
- PROPERTY PASS_REGULAR_EXPRESSION "${success_regex}")
- endfunction()
-
- add_success_compiled_test(sequence_of_20s "[20]+")
- add_success_compiled_test(macro_optimized "1000")
- add_success_compiled_test(array_shenanigans "Hello World\n\\[ 104 2 9 9 12 64 119 12 15 9 1 42 \\]\n")
-
- if(MSVC)
- target_compile_options(ink PRIVATE /W4 /WX)
- else()
- target_compile_options(ink PRIVATE -Wall -Wextra -Wpedantic -Werror)
- endif()
-
- # Benchmark is broken since the addition to coroutines
- # add_executable(ink_bench bench.c)
- # target_link_libraries(ink_bench PUBLIC ink)
|