cmake: mark WinMain as an undefined symbol, when building with mingw

This commit is contained in:
Anonymous Maarten 2021-07-08 17:59:59 +02:00
parent 0b98ee91ab
commit 81beca3975
3 changed files with 22 additions and 5 deletions

View File

@ -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()

View File

@ -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

View File

@ -192,6 +192,8 @@ elseif(LIBRW_PLATFORM_D3D9)
)
endif()
librw_platform_target(librw INSTALL)
if(LIBRW_INSTALL)
install(
FILES