Skip to content

Commit e7dac87

Browse files
feat(cmake): add support for precompiled headers, module definitions
1 parent 3fe5e20 commit e7dac87

16 files changed

Lines changed: 51 additions & 27 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.25 FATAL_ERROR)
1+
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
22

33

44
# Set defaults before project call
@@ -92,7 +92,7 @@ add_sourcepp_library(kvpp)
9292
add_sourcepp_library(mdlpp)
9393
add_sourcepp_library(steampp C)
9494
add_sourcepp_library(vicepp C CSHARP)
95-
add_sourcepp_library(vpkpp C CSHARP)
95+
add_sourcepp_library(vpkpp C CSHARP NO_TEST)
9696
add_sourcepp_library(vtfpp)
9797

9898

cmake/AddPrettyParser.cmake

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
# Add a new parser library
22
function(add_pretty_parser TARGET)
3-
cmake_parse_arguments(PARSE_ARGV 1 OPTIONS "C" "" "DEPS;SOURCES")
3+
cmake_parse_arguments(PARSE_ARGV 1 OPTIONS "C" "" "DEPS;PRECOMPILED_HEADERS;SOURCES;MODULES")
44

55
if(OPTIONS_C)
6-
add_library(${TARGET}c SHARED ${${PROJECT_NAME}c_SOURCES} ${OPTIONS_SOURCES})
6+
add_library(${TARGET}c SHARED ${${PROJECT_NAME}c_SOURCES} ${OPTIONS_PRECOMPILED_HEADERS} ${OPTIONS_SOURCES})
77
set_target_properties(${TARGET}c PROPERTIES PREFIX "")
88
target_link_libraries(${TARGET}c PRIVATE ${TARGET})
99
target_include_directories(${TARGET}c PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include")
1010
set(TARGET "${TARGET}c")
1111
else()
12-
add_library(${TARGET} STATIC ${OPTIONS_SOURCES})
12+
add_library(${TARGET} STATIC ${OPTIONS_PRECOMPILED_HEADERS} ${OPTIONS_SOURCES})
13+
if(NOT ("MODULES" IN_LIST OPTIONS_UNPARSED_ARGUMENTS))
14+
target_sources(${TARGET} PUBLIC FILE_SET CXX_MODULES FILES ${OPTIONS_MODULES})
15+
endif()
16+
endif()
17+
if(NOT ("PRECOMPILED_HEADERS" IN_LIST OPTIONS_UNPARSED_ARGUMENTS))
18+
target_precompile_headers(${TARGET} PUBLIC ${OPTIONS_HEADERS})
1319
endif()
1420
target_link_libraries(${TARGET} PUBLIC ${PROJECT_NAME})
1521
target_link_libraries(${TARGET} PRIVATE ${OPTIONS_DEPS})

lang/c/src/steamppc/_steamppc.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
add_pretty_parser(steampp C SOURCES
1+
add_pretty_parser(steampp C
2+
SOURCES
23
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/steamppc/Convert.hpp"
34
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/steamppc/steampp.h"
45
"${CMAKE_CURRENT_LIST_DIR}/Convert.cpp"

lang/c/src/viceppc/_viceppc.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
add_pretty_parser(vicepp C SOURCES
1+
add_pretty_parser(vicepp C
2+
SOURCES
23
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/viceppc/vicepp.h"
34
"${CMAKE_CURRENT_LIST_DIR}/vicepp.cpp")

lang/c/src/vpkppc/_vpkppc.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
add_pretty_parser(vpkpp C SOURCES
1+
add_pretty_parser(vpkpp C
2+
PRECOMPILED_HEADERS
23
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/format/BSP.h"
34
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/format/FPX.h"
45
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/format/GCF.h"
@@ -9,12 +10,13 @@ add_pretty_parser(vpkpp C SOURCES
910
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/format/VPK.h"
1011
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/format/ZIP.h"
1112
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/Attribute.h"
12-
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/Convert.hpp"
1313
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/Entry.h"
1414
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/Options.h"
1515
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/PackFile.h"
1616
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/PackFileType.h"
1717
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/vpkpp.h"
18+
SOURCES
19+
"${CMAKE_CURRENT_SOURCE_DIR}/lang/c/include/vpkppc/Convert.hpp"
1820
"${CMAKE_CURRENT_LIST_DIR}/format/BSP.cpp"
1921
"${CMAKE_CURRENT_LIST_DIR}/format/FPX.cpp"
2022
"${CMAKE_CURRENT_LIST_DIR}/format/GCF.cpp"

src/bsppp/_bsppp.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
add_pretty_parser(bsppp DEPS vpkpp SOURCES
1+
add_pretty_parser(bsppp
2+
SOURCES
23
"${CMAKE_CURRENT_SOURCE_DIR}/include/bsppp/bsppp.h"
34
"${CMAKE_CURRENT_LIST_DIR}/bsppp.cpp")

src/dmxpp/_dmxpp.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
add_pretty_parser(dmxpp SOURCES
1+
add_pretty_parser(dmxpp
2+
SOURCES
23
"${CMAKE_CURRENT_SOURCE_DIR}/include/dmxpp/structs/Value.h"
34
"${CMAKE_CURRENT_SOURCE_DIR}/include/dmxpp/dmxpp.h"
45
"${CMAKE_CURRENT_LIST_DIR}/structs/Value.cpp"

src/fgdpp/_fgdpp.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
add_pretty_parser(fgdpp SOURCES
1+
add_pretty_parser(fgdpp
2+
SOURCES
23
"${CMAKE_CURRENT_SOURCE_DIR}/include/fgdpp/fgdpp.h"
34
"${CMAKE_CURRENT_LIST_DIR}/fgdpp.cpp")

src/kvpp/_kvpp.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
add_pretty_parser(kvpp SOURCES
1+
add_pretty_parser(kvpp
2+
SOURCES
23
"${CMAKE_CURRENT_SOURCE_DIR}/include/kvpp/kvpp.h"
34
"${CMAKE_CURRENT_LIST_DIR}/kvpp.cpp")

src/mdlpp/_mdlpp.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
add_pretty_parser(mdlpp SOURCES
1+
add_pretty_parser(mdlpp
2+
PRECOMPILED_HEADERS
23
"${CMAKE_CURRENT_SOURCE_DIR}/include/mdlpp/structs/Generic.h"
34
"${CMAKE_CURRENT_SOURCE_DIR}/include/mdlpp/structs/MDL.h"
45
"${CMAKE_CURRENT_SOURCE_DIR}/include/mdlpp/structs/VTX.h"
56
"${CMAKE_CURRENT_SOURCE_DIR}/include/mdlpp/structs/VVD.h"
67
"${CMAKE_CURRENT_SOURCE_DIR}/include/mdlpp/mdlpp.h"
8+
SOURCES
79
"${CMAKE_CURRENT_LIST_DIR}/structs/MDL.cpp"
810
"${CMAKE_CURRENT_LIST_DIR}/structs/VTX.cpp"
911
"${CMAKE_CURRENT_LIST_DIR}/structs/VVD.cpp"

0 commit comments

Comments
 (0)