@@ -52,6 +52,11 @@ if(${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME})
52
52
set (GODOT_CPP_BUILDING_SELF ON )
53
53
endif ()
54
54
55
+ # Set some helper variables for readability
56
+ set ( compiler_is_clang "$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:Clang>>" )
57
+ set ( compiler_is_gnu "$<CXX_COMPILER_ID:GNU>" )
58
+ set ( compiler_is_msvc "$<CXX_COMPILER_ID:MSVC>" )
59
+
55
60
# Default build type is Debug in the SConstruct
56
61
if ("${CMAKE_BUILD_TYPE} " STREQUAL "" )
57
62
set (CMAKE_BUILD_TYPE Debug)
@@ -78,7 +83,6 @@ if (NOT "${GODOT_CUSTOM_API_FILE}" STREQUAL "") # User-defined override.
78
83
endif ()
79
84
80
85
set (GODOT_COMPILE_FLAGS )
81
- set (GODOT_LINKER_FLAGS )
82
86
83
87
if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" )
84
88
# using Visual Studio C++
@@ -94,11 +98,6 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
94
98
95
99
add_definitions (-DNOMINMAX)
96
100
else () # GCC/Clang
97
- set (GODOT_LINKER_FLAGS "-static-libgcc -static-libstdc++ -Wl,-R,'$$ORIGIN'" )
98
-
99
- if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
100
- set (GODOT_COMPILE_FLAGS "-fPIC" )
101
- endif ()
102
101
set (GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -g" )
103
102
104
103
if (CMAKE_BUILD_TYPE MATCHES Debug)
@@ -135,7 +134,7 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.c**)
135
134
file (GLOB_RECURSE HEADERS CONFIGURE_DEPENDS include /*.h**)
136
135
137
136
# Define our godot-cpp library
138
- add_library (${PROJECT_NAME}
137
+ add_library (${PROJECT_NAME} STATIC
139
138
${SOURCES}
140
139
${HEADERS}
141
140
${GENERATED_FILES_LIST}
@@ -160,11 +159,18 @@ target_compile_definitions(${PROJECT_NAME} PUBLIC
160
159
DEBUG_ENABLED
161
160
DEBUG_METHODS_ENABLED
162
161
>
162
+ $<${compiler_is_msvc} :
163
+ TYPED_METHOD_BIND
164
+ >
163
165
)
164
166
165
- if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" )
166
- target_compile_definitions (${PROJECT_NAME} PUBLIC TYPED_METHOD_BIND)
167
- endif ()
167
+ target_link_options (${PROJECT_NAME} PRIVATE
168
+ $<$<NOT :${compiler_is_msvc} >:
169
+ -static -libgcc
170
+ -static -libstdc++
171
+ -Wl,-R,'$$ORIGIN'
172
+ >
173
+ )
168
174
169
175
# Optionally mark headers as SYSTEM
170
176
set (GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE "" )
@@ -180,7 +186,6 @@ target_include_directories(${PROJECT_NAME} ${GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE}
180
186
181
187
# Add the compile flags
182
188
set_property (TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT_COMPILE_FLAGS} )
183
- set_property (TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS} )
184
189
185
190
# Create the correct name (godot.os.build_type.system_bits)
186
191
string (TOLOWER "${CMAKE_SYSTEM_NAME} " SYSTEM_NAME )
@@ -199,6 +204,7 @@ endif()
199
204
set_target_properties (${PROJECT_NAME}
200
205
PROPERTIES
201
206
CXX_EXTENSIONS OFF
207
+ POSITION_INDEPENDENT_CODE ON
202
208
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /bin"
203
209
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /bin"
204
210
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /bin"
0 commit comments