Newer
Older
Tardis / lang / CMakeLists.txt
# SPDX-License-Identifier: MIT
# Copyright (c) 2023 John Watts and the LuminaSensum contributors

cmake_minimum_required(VERSION 3.25)

# Create mini-gmp library
project(mini-gmp)
file(GLOB GMP_SRC_FILES "${PROJECT_SOURCE_DIR}/mini-gmp/*.c")
add_library(mini-gmp ${GMP_SRC_FILES})
target_include_directories(mini-gmp PUBLIC "${PROJECT_SOURCE_DIR}/mini-gmp/")
set_property(TARGET mini-gmp PROPERTY C_STANDARD 11)

# Useful options for compiling
set(compile_opts -Wall -Wextra -Wpedantic -Werror -fwrapv -fno-strict-aliasing -fsigned-char)

# 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")
target_include_directories(TardisLang PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
set_property(TARGET TardisLang PROPERTY C_STANDARD 11)
target_compile_options(TardisLang PRIVATE ${compile_opts})
target_link_libraries(TardisLang PUBLIC mini-gmp)

# Create test app program
option(BUILD_TARDISLANG_APP "Build the TardisLang test app" ON)
if(BUILD_TARDISLANG_APP)
	project(TardisLangApp)
	file(GLOB SRC_FILES "${PROJECT_SOURCE_DIR}/app/*.c")
	add_executable(TardisLangApp ${SRC_FILES})
	set_property(TARGET TardisLangApp PROPERTY C_STANDARD 11)
	target_compile_options(TardisLangApp PRIVATE ${compile_opts})
	target_link_libraries(TardisLangApp PRIVATE TardisLang)
endif()