A minimalistic programming language written in C89.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

53 lignes
1.5 KiB

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)