set(CMAKE_C_STANDARD 11) set(CMAKE_C_EXTENSIONS OFF) add_library(apfl alloc.c bytecode.c compile.c context.c error.c eval.c expr.c format.c gc.c hashmap.c globals.c messages.c parser.c position.c resizable.c source_readers.c scope.c strings.c token.c tokenizer.c value.c ) add_executable(apfl-bin main.c) target_link_libraries(apfl-bin PUBLIC apfl) add_executable(functional-test-runner functional-test-runner.c) target_link_libraries(functional-test-runner PUBLIC apfl) set_target_properties(apfl-bin PROPERTIES RUNTIME_OUTPUT_NAME apfl ) function(unittest name moresources) add_executable(${name} test.h ${name}.c ${moresources}) target_link_libraries(${name} PUBLIC apfl) add_test(NAME ${name} COMMAND ${name}) endfunction() unittest(tokenizer_test "") unittest(parser_test "") unittest(resizable_test "resizable.h") unittest(hashmap_test "hashmap.h") unittest(strings_test "") function(functionaltest name) add_test(NAME "functionaltest_${name}" COMMAND functional-test-runner ${CMAKE_SOURCE_DIR}/src/functional-tests/${name}.at) endfunction() functionaltest("hello-world") functionaltest("factorial") functionaltest("function-const-capture") functionaltest("function-mutable-capture") functionaltest("map") functionaltest("deconstruct") functionaltest("shadowing") functionaltest("mathops") functionaltest("len") functionaltest("not") functionaltest("type") functionaltest("if") functionaltest("while") functionaltest("eq") functionaltest("chained-assignments") functionaltest("dictionary-assignments") functionaltest("variadic-functions") functionaltest("predicate") functionaltest("compare") functionaltest("concat") functionaltest("join") install(TARGETS apfl DESTINATION lib) install(TARGETS apfl-bin DESTINATION bin) install(FILES apfl.h DESTINATION include)