diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index 48203bd..0885cd4 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -13,18 +13,25 @@ # Useful options for compiling set(compile_opts -Wall -Wextra -Wpedantic -Werror -fwrapv -fno-strict-aliasing -fsigned-char) +# Find and build modules +file(GLOB SRC_MODULES "${PROJECT_SOURCE_DIR}/modules/*.txt") +set(MODULE_COMPILER ${CMAKE_CURRENT_SOURCE_DIR}/compile.py) +set(MODULE_C_FILES "") +foreach(MODULE ${SRC_MODULES}) + get_filename_component(NAME ${MODULE} NAME_WLE) + set(MODULE_OUT modules/${NAME}.c) + add_custom_command( + OUTPUT ${MODULE_OUT} + COMMAND python ${MODULE_COMPILER} ${MODULE} ${MODULE_OUT} + DEPENDS ${MODULE} ${MODULE_COMPILER} + ) + list(APPEND MODULE_C_FILES ${MODULE_OUT}) +endforeach() + # Create TardisLang library project(TardisLang) -add_custom_command( - OUTPUT module_main.c - COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/compile.py - ${CMAKE_CURRENT_SOURCE_DIR}/modules/main.txt - module_main.c - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/modules/main.txt - ${CMAKE_CURRENT_SOURCE_DIR}/compile.py -) file(GLOB SRC_FILES "${PROJECT_SOURCE_DIR}/*.c") -add_library(TardisLang ${SRC_FILES} "module_main.c") +add_library(TardisLang ${SRC_FILES} ${MODULE_C_FILES}) target_include_directories(TardisLang PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") set_property(TARGET TardisLang PROPERTY C_STANDARD 11) target_compile_options(TardisLang PRIVATE ${compile_opts})