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)
|
set(LIBRW_STATIC_RUNTIME_DEFAULT ON)
|
||||||
|
|
||||||
function(librw_platform_target TARGET)
|
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()
|
endfunction()
|
||||||
|
@ -31,17 +31,19 @@ set_target_properties(librw_skeleton
|
|||||||
EXPORT_NAME skeleton
|
EXPORT_NAME skeleton
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(librw_skeleton
|
|
||||||
PRIVATE
|
|
||||||
librw
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(librw_skeleton
|
target_include_directories(librw_skeleton
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
$<INSTALL_INTERFACE:${LIBRW_INSTALL_INCLUDEDIR}/skeleton>
|
$<INSTALL_INTERFACE:${LIBRW_INSTALL_INCLUDEDIR}/skeleton>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_link_libraries(librw_skeleton
|
||||||
|
PRIVATE
|
||||||
|
librw
|
||||||
|
)
|
||||||
|
|
||||||
|
librw_platform_target(librw_skeleton PROVIDES_WINMAIN INSTALL)
|
||||||
|
|
||||||
if(LIBRW_INSTALL)
|
if(LIBRW_INSTALL)
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES
|
||||||
|
@ -192,6 +192,8 @@ elseif(LIBRW_PLATFORM_D3D9)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
librw_platform_target(librw INSTALL)
|
||||||
|
|
||||||
if(LIBRW_INSTALL)
|
if(LIBRW_INSTALL)
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES
|
||||||
|
Loading…
x
Reference in New Issue
Block a user