cmake: mark WinMain as an undefined symbol, when building with mingw
This commit is contained in:
parent
0b98ee91ab
commit
81beca3975
@ -4,4 +4,17 @@ set(GLFW3_STATIC_INIT ON)
|
||||
set(LIBRW_STATIC_RUNTIME_DEFAULT ON)
|
||||
|
||||
function(librw_platform_target TARGET)
|
||||
cmake_parse_arguments(LPT "PROVIDES_WINMAIN" "" "" ${ARGN})
|
||||
get_target_property(TARGET_TYPE "${TARGET}" TYPE)
|
||||
|
||||
if(MINGW)
|
||||
if(LPT_PROVIDES_WINMAIN AND TARGET_TYPE MATCHES "^(INTERFACE|SHARED|STATIC)_LIBRARY$")
|
||||
# Start with the WinMain symbol marked as undefined.
|
||||
# This will prevent the linker ignoring a WinMain symbol.
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
target_link_options(${TARGET} INTERFACE -Wl,--undefined,_WinMain@16)
|
||||
endif()
|
||||
target_link_options(${TARGET} INTERFACE -Wl,--undefined,WinMain)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -31,17 +31,19 @@ set_target_properties(librw_skeleton
|
||||
EXPORT_NAME skeleton
|
||||
)
|
||||
|
||||
target_link_libraries(librw_skeleton
|
||||
PRIVATE
|
||||
librw
|
||||
)
|
||||
|
||||
target_include_directories(librw_skeleton
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<INSTALL_INTERFACE:${LIBRW_INSTALL_INCLUDEDIR}/skeleton>
|
||||
)
|
||||
|
||||
target_link_libraries(librw_skeleton
|
||||
PRIVATE
|
||||
librw
|
||||
)
|
||||
|
||||
librw_platform_target(librw_skeleton PROVIDES_WINMAIN INSTALL)
|
||||
|
||||
if(LIBRW_INSTALL)
|
||||
install(
|
||||
FILES
|
||||
|
@ -192,6 +192,8 @@ elseif(LIBRW_PLATFORM_D3D9)
|
||||
)
|
||||
endif()
|
||||
|
||||
librw_platform_target(librw INSTALL)
|
||||
|
||||
if(LIBRW_INSTALL)
|
||||
install(
|
||||
FILES
|
||||
|
Loading…
x
Reference in New Issue
Block a user