Skip to content

Commit 1f0370b

Browse files
committed
single target test
1 parent e4e8e55 commit 1f0370b

File tree

10 files changed

+131
-158
lines changed

10 files changed

+131
-158
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,8 @@ jobs:
202202
run: |
203203
mkdir cmake-build
204204
cd cmake-build
205-
cmake ../ -DGODOTCPP_ENABLE_TESTING=YES
206-
cmake --build . --verbose -j $(nproc) -t godot-cpp.test.template_release --config Release
205+
cmake ../ -DGODOTCPP_ENABLE_TESTING=YES -DGODOTCPP_TARGET=template_release
206+
cmake --build . --verbose -j $(nproc) --config Release
207207
208208
windows-msvc-cmake:
209209
name: 🏁 Build (Windows, MSVC, CMake)
@@ -218,5 +218,5 @@ jobs:
218218
run: |
219219
mkdir cmake-build
220220
cd cmake-build
221-
cmake ../ -DGODOTCPP_ENABLE_TESTING=YES
222-
cmake --build . --verbose -t godot-cpp.test.template_release --config Release
221+
cmake ../ -DGODOTCPP_ENABLE_TESTING=YES -DGODOTCPP_TARGET=template_release
222+
cmake --build . --verbose --config Release

cmake/android.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ endfunction()
4343

4444
#[===========================[ Target Generation ]===========================]
4545
function(android_generate)
46-
target_compile_definitions(${TARGET_NAME} PUBLIC ANDROID_ENABLED UNIX_ENABLED)
46+
target_compile_definitions(godot-cpp PUBLIC ANDROID_ENABLED UNIX_ENABLED)
4747

4848
common_compiler_flags()
4949
endfunction()

cmake/common_compiler_flags.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ function(common_compiler_flags)
6262
# gersemi: off
6363
# These compiler options reflect what is in godot/SConstruct.
6464
target_compile_options(
65-
${TARGET_NAME}
65+
godot-cpp
6666
PUBLIC
6767
# Disable exception handling. Godot doesn't use exceptions anywhere, and this
6868
# saves around 20% of binary size and very significant build time.
@@ -146,7 +146,7 @@ function(common_compiler_flags)
146146
)
147147

148148
target_compile_definitions(
149-
${TARGET_NAME}
149+
godot-cpp
150150
PUBLIC
151151
GDEXTENSION
152152

@@ -165,7 +165,7 @@ function(common_compiler_flags)
165165
)
166166

167167
target_link_options(
168-
${TARGET_NAME}
168+
godot-cpp
169169
PUBLIC
170170
$<${IS_MSVC}:
171171
/WX # treat link warnings as errors.

cmake/godotcpp.cmake

Lines changed: 67 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -106,17 +106,12 @@ function(godotcpp_options)
106106
#NOTE: arch is managed by using toolchain files.
107107
# To create a universal build for macos, set CMAKE_OSX_ARCHITECTURES
108108

109-
set(GODOTCPP_VALID_TARGETS "template_debug;template_release;editor")
110-
set(GODOTCPP_TARGETS
111-
${GODOTCPP_VALID_TARGETS}
109+
set(GODOTCPP_TARGET
110+
"template_debug"
112111
CACHE STRING
113-
"Which targets to generate, must be a semicolon separated list. valid values are: template_debug, template_release, and editor"
112+
"Which target to generate. valid values are: template_debug, template_release, and editor"
114113
)
115-
foreach(TARGET ${GODOTCPP_TARGETS})
116-
if(NOT ${TARGET} IN_LIST GODOTCPP_VALID_TARGETS)
117-
message(FATAL_ERROR "invalid GODOTCPP_TARGETS valid values are ${GODOTCPP_VALID_TARGETS} ")
118-
endif()
119-
endforeach()
114+
set_property(CACHE GODOTCPP_TARGET PROPERTY STRINGS "template_debug;template_release;editor")
120115

121116
# Input from user for GDExtension interface header and the API JSON file
122117
set(GODOTCPP_GDEXTENSION_DIR
@@ -314,94 +309,79 @@ function(godotcpp_generate)
314309
set(IS_DEV_BUILD "$<BOOL:${GODOTCPP_DEV_BUILD}>")
315310

316311
### Define our godot-cpp library targets
317-
foreach(TARGET_ALIAS ${GODOTCPP_TARGETS})
318-
set(TARGET_NAME "godot-cpp.${TARGET_ALIAS}")
319-
320-
# Generator Expressions that rely on the target
321-
set(DEBUG_FEATURES "$<NOT:$<STREQUAL:${TARGET_ALIAS},template_release>>")
322-
set(HOT_RELOAD "$<IF:${HOT_RELOAD-UNSET},${DEBUG_FEATURES},$<BOOL:${GODOTCPP_USE_HOT_RELOAD}>>")
323-
324-
# Suffix
325-
string(
326-
CONCAT
327-
GODOTCPP_SUFFIX
328-
"$<1:.${SYSTEM_NAME}>"
329-
"$<1:.${TARGET_ALIAS}>"
330-
"$<${IS_DEV_BUILD}:.dev>"
331-
"$<$<STREQUAL:${GODOTCPP_PRECISION},double>:.double>"
332-
"$<1:.${ARCH_NAME}>"
333-
# TODO IOS_SIMULATOR
334-
"$<$<NOT:${THREADS_ENABLED}>:.nothreads>"
335-
)
312+
# Generator Expressions that rely on the target
313+
set(DEBUG_FEATURES "$<NOT:$<STREQUAL:${GODOTCPP_TARGET},template_release>>")
314+
set(HOT_RELOAD "$<IF:${HOT_RELOAD-UNSET},${DEBUG_FEATURES},$<BOOL:${GODOTCPP_USE_HOT_RELOAD}>>")
336315

337-
# People are compiling godot by itself.
338-
set(EXCLUDE EXCLUDE_FROM_ALL)
339-
if(GODOTCPP_IS_TOP_LEVEL)
340-
if(TARGET_ALIAS STREQUAL template_debug)
341-
set(EXCLUDE "")
342-
endif()
343-
endif()
316+
# Suffix
317+
string(
318+
CONCAT
319+
GODOTCPP_SUFFIX
320+
"$<1:.${SYSTEM_NAME}>"
321+
"$<1:.${GODOTCPP_TARGET}>"
322+
"$<${IS_DEV_BUILD}:.dev>"
323+
"$<$<STREQUAL:${GODOTCPP_PRECISION},double>:.double>"
324+
"$<1:.${ARCH_NAME}>"
325+
# TODO IOS_SIMULATOR
326+
"$<$<NOT:${THREADS_ENABLED}>:.nothreads>"
327+
)
344328

345-
# the godot-cpp.* library targets
346-
add_library(${TARGET_NAME} STATIC ${EXCLUDE})
329+
# the godot-cpp.* library targets
330+
add_library(godot-cpp STATIC)
347331

348-
add_library(godot-cpp::${TARGET_ALIAS} ALIAS ${TARGET_NAME})
332+
# Added for backwards compatibility with prior cmake solution so that builds dont immediately break
333+
# from a missing target.
334+
add_library(godot::cpp ALIAS godot-cpp)
349335

350-
file(GLOB_RECURSE GODOTCPP_SOURCES LIST_DIRECTORIES NO CONFIGURE_DEPENDS src/*.cpp)
336+
file(GLOB_RECURSE GODOTCPP_SOURCES LIST_DIRECTORIES NO CONFIGURE_DEPENDS src/*.cpp)
351337

352-
target_sources(${TARGET_NAME} PRIVATE ${GODOTCPP_SOURCES} ${GENERATED_FILES_LIST})
338+
target_sources(godot-cpp PRIVATE ${GODOTCPP_SOURCES} ${GENERATED_FILES_LIST})
353339

354-
target_include_directories(
355-
${TARGET_NAME}
356-
${GODOTCPP_SYSTEM_HEADERS_ATTRIBUTE}
357-
PUBLIC include ${CMAKE_CURRENT_BINARY_DIR}/gen/include ${GODOTCPP_GDEXTENSION_DIR}
358-
)
359-
360-
# gersemi: off
361-
set_target_properties(
362-
${TARGET_NAME}
363-
PROPERTIES
364-
CXX_STANDARD 17
365-
CXX_EXTENSIONS OFF
366-
CXX_VISIBILITY_PRESET ${GODOTCPP_SYMBOL_VISIBILITY}
340+
target_include_directories(
341+
godot-cpp
342+
${GODOTCPP_SYSTEM_HEADERS_ATTRIBUTE}
343+
PUBLIC include ${CMAKE_CURRENT_BINARY_DIR}/gen/include ${GODOTCPP_GDEXTENSION_DIR}
344+
)
367345

368-
COMPILE_WARNING_AS_ERROR ${GODOTCPP_WARNING_AS_ERROR}
369-
POSITION_INDEPENDENT_CODE ON
370-
BUILD_RPATH_USE_ORIGIN ON
346+
# gersemi: off
347+
set_target_properties(
348+
godot-cpp
349+
PROPERTIES
350+
CXX_STANDARD 17
351+
CXX_EXTENSIONS OFF
352+
CXX_VISIBILITY_PRESET ${GODOTCPP_SYMBOL_VISIBILITY}
371353

372-
PREFIX "lib"
373-
OUTPUT_NAME "${PROJECT_NAME}${GODOTCPP_SUFFIX}"
354+
COMPILE_WARNING_AS_ERROR ${GODOTCPP_WARNING_AS_ERROR}
355+
POSITION_INDEPENDENT_CODE ON
356+
BUILD_RPATH_USE_ORIGIN ON
374357

375-
ARCHIVE_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR}/bin>"
358+
PREFIX "lib"
359+
OUTPUT_NAME "${PROJECT_NAME}${GODOTCPP_SUFFIX}"
376360

377-
# Things that are handy to know for dependent targets
378-
GODOTCPP_PLATFORM "${SYSTEM_NAME}"
379-
GODOTCPP_TARGET "${TARGET_ALIAS}"
380-
GODOTCPP_ARCH "${ARCH_NAME}"
381-
GODOTCPP_PRECISION "${GODOTCPP_PRECISION}"
382-
GODOTCPP_SUFFIX "${GODOTCPP_SUFFIX}"
361+
ARCHIVE_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR}/bin>"
383362

384-
# Some IDE's respect this property to logically group targets
385-
FOLDER "godot-cpp"
386-
)
387-
# gersemi: on
388-
389-
if(CMAKE_SYSTEM_NAME STREQUAL Android)
390-
android_generate()
391-
elseif(CMAKE_SYSTEM_NAME STREQUAL iOS)
392-
ios_generate()
393-
elseif(CMAKE_SYSTEM_NAME STREQUAL Linux)
394-
linux_generate()
395-
elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
396-
macos_generate()
397-
elseif(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
398-
web_generate()
399-
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows)
400-
windows_generate()
401-
endif()
402-
endforeach()
363+
# Things that are handy to know for dependent targets
364+
GODOTCPP_PLATFORM "${SYSTEM_NAME}"
365+
GODOTCPP_TARGET "${GODOTCPP_TARGET}"
366+
GODOTCPP_ARCH "${ARCH_NAME}"
367+
GODOTCPP_PRECISION "${GODOTCPP_PRECISION}"
368+
GODOTCPP_SUFFIX "${GODOTCPP_SUFFIX}"
403369

404-
# Added for backwards compatibility with prior cmake solution so that builds dont immediately break
405-
# from a missing target.
406-
add_library(godot::cpp ALIAS godot-cpp.template_debug)
370+
# Some IDE's respect this property to logically group targets
371+
FOLDER "godot-cpp"
372+
)
373+
# gersemi: on
374+
if(CMAKE_SYSTEM_NAME STREQUAL Android)
375+
android_generate()
376+
elseif(CMAKE_SYSTEM_NAME STREQUAL iOS)
377+
ios_generate()
378+
elseif(CMAKE_SYSTEM_NAME STREQUAL Linux)
379+
linux_generate()
380+
elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
381+
macos_generate()
382+
elseif(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
383+
web_generate()
384+
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows)
385+
windows_generate()
386+
endif()
407387
endfunction()

cmake/ios.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ endfunction()
3030

3131
#[===========================[ Target Generation ]===========================]
3232
function(ios_generate)
33-
target_compile_definitions(${TARGET_NAME} PUBLIC IOS_ENABLED UNIX_ENABLED)
33+
target_compile_definitions(godot-cpp PUBLIC IOS_ENABLED UNIX_ENABLED)
3434

3535
common_compiler_flags()
3636
endfunction()

cmake/linux.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ endfunction()
1818

1919
#[===========================[ Target Generation ]===========================]
2020
function(linux_generate)
21-
target_compile_definitions(${TARGET_NAME} PUBLIC LINUX_ENABLED UNIX_ENABLED)
21+
target_compile_definitions(godot-cpp PUBLIC LINUX_ENABLED UNIX_ENABLED)
2222

2323
common_compiler_flags()
2424
endfunction()

cmake/macos.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ endfunction()
4343

4444
#[===========================[ Target Generation ]===========================]
4545
function(macos_generate)
46-
target_compile_definitions(${TARGET_NAME} PUBLIC MACOS_ENABLED UNIX_ENABLED)
46+
target_compile_definitions(godot-cpp PUBLIC MACOS_ENABLED UNIX_ENABLED)
4747

48-
target_link_options(${TARGET_NAME} PUBLIC -Wl,-undefined,dynamic_lookup)
48+
target_link_options(godot-cpp PUBLIC -Wl,-undefined,dynamic_lookup)
4949

50-
target_link_libraries(${TARGET_NAME} INTERFACE ${COCOA_LIBRARY})
50+
target_link_libraries(godot-cpp INTERFACE ${COCOA_LIBRARY})
5151

5252
common_compiler_flags()
5353
endfunction()

cmake/web.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ endfunction()
1616

1717
#[===========================[ Target Generation ]===========================]
1818
function(web_generate)
19-
target_compile_definitions(${TARGET_NAME} PUBLIC WEB_ENABLED UNIX_ENABLED)
19+
target_compile_definitions(godot-cpp PUBLIC WEB_ENABLED UNIX_ENABLED)
2020

2121
target_compile_options(
22-
${TARGET_NAME}
22+
godot-cpp
2323
PUBLIC #
2424
-sSIDE_MODULE
2525
-sSUPPORT_LONGJMP=wasm
@@ -28,7 +28,7 @@ function(web_generate)
2828
)
2929

3030
target_link_options(
31-
${TARGET_NAME}
31+
godot-cpp
3232
INTERFACE #
3333
-sWASM_BIGINT
3434
-sSUPPORT_LONGJMP=wasm

cmake/windows.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,16 @@ endfunction()
8888
function(windows_generate)
8989
set(STATIC_CPP "$<BOOL:${GODOTCPP_USE_STATIC_CPP}>")
9090

91-
set_target_properties(${TARGET_NAME} PROPERTIES PDB_OUTPUT_DIRECTORY "$<1:${CMAKE_SOURCE_DIR}/bin>")
91+
set_target_properties(godot-cpp PROPERTIES PDB_OUTPUT_DIRECTORY "$<1:${CMAKE_SOURCE_DIR}/bin>")
9292

9393
target_compile_definitions(
94-
${TARGET_NAME}
94+
godot-cpp
9595
PUBLIC WINDOWS_ENABLED $<${IS_MSVC}: TYPED_METHOD_BIND NOMINMAX >
9696
)
9797

9898
# gersemi: off
9999
target_link_options(
100-
${TARGET_NAME}
100+
godot-cpp
101101
PUBLIC
102102
$<${NOT_MSVC}:
103103
-Wl,--no-undefined

0 commit comments

Comments
 (0)