Skip to content
This repository was archived by the owner on Oct 12, 2026. It is now read-only.

Commit c64e7cc

Browse files
committed
build: fix CMakeLists
1 parent f693677 commit c64e7cc

1 file changed

Lines changed: 46 additions & 11 deletions

File tree

‎CMakeLists.txt‎

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,57 @@ cmake_minimum_required(VERSION 3.20)
22
project(lambda-discipline)
33

44
set(CMAKE_CXX_STANDARD 20)
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
set(CMAKE_CXX_EXTENSIONS OFF)
57

6-
include_directories(
8+
####### FRONTEND #######
9+
file(GLOB_RECURSE FRONTEND_SOURCE_FILES CONFIGURE_DEPENDS
10+
${PROJECT_SOURCE_DIR}/src/frontend/*.cpp
11+
)
12+
add_library(lbdFrontend STATIC)
13+
target_sources(lbdFrontend PRIVATE ${FRONTEND_SOURCE_FILES})
14+
target_include_directories(lbdFrontend PUBLIC
715
${PROJECT_SOURCE_DIR}/include
816
)
917

10-
file(GLOB_RECURSE FRONTEND_SOURCE_FILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/src/frontend/*.cpp)
11-
add_library(frontend STATIC ${FRONTEND_SOURCE_FILES})
18+
####### RUNTIME #######
19+
file(GLOB_RECURSE RUNTIME_SOURCE_FILES CONFIGURE_DEPENDS
20+
${PROJECT_SOURCE_DIR}/src/runtime/*.cpp
21+
)
22+
add_library(lbdRuntime STATIC)
23+
target_sources(lbdRuntime PRIVATE ${RUNTIME_SOURCE_FILES})
24+
target_include_directories(lbdRuntime PUBLIC
25+
${PROJECT_SOURCE_DIR}/include
26+
)
27+
28+
###### MAIN EXECUTABLE ######
29+
file(GLOB LBD_SOURCE_FILES CONFIGURE_DEPENDS
30+
${PROJECT_SOURCE_DIR}/src/*.cpp
31+
)
32+
add_executable(lbd)
33+
target_sources(lbd PRIVATE ${LBD_SOURCE_FILES})
34+
target_link_libraries(lbd PRIVATE
35+
lbdFrontend
36+
lbdRuntime
37+
)
1238

13-
file(GLOB_RECURSE RUNTIME_SOURCE_FILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/src/runtime/*.cpp)
14-
add_library(runtime STATIC ${RUNTIME_SOURCE_FILES})
39+
# Fully static build (platform dependent).
40+
option(LBD_STATIC_BUILD "Build fully static binary" OFF)
41+
if(LBD_STATIC_BUILD)
42+
target_link_options(lbd PRIVATE -static)
43+
endif()
1544

16-
file(GLOB LBD_SOURCE_FILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/src/*.cpp)
17-
add_executable(lbd ${LBD_SOURCE_FILES})
45+
# Warnings.
46+
if(MSVC)
47+
target_compile_options(lbd PRIVATE /W4)
48+
else()
49+
target_compile_options(lbd PRIVATE -Wall -Wextra -Wpedantic)
50+
endif()
1851

19-
target_link_libraries(lbd PRIVATE frontend runtime -static)
52+
# Tests.
53+
enable_testing()
2054

21-
# TODO: Add build tests
22-
# EXAMPLE: add_executable(lexer_test ../tests/lexer_test.cc)
23-
# target_link_libraries(lexer_test PRIVATE frontend)
55+
# Example test
56+
# add_executable(lexer_test tests/lexer_test.cc)
57+
# target_link_libraries(lexer_test PRIVATE lbdFrontend)
58+
# add_test(NAME lexer_test COMMAND lexer_test)

0 commit comments

Comments
 (0)