Skip to content

Commit 8c0ff3d

Browse files
committed
Fix MinGW-w64 compatibility
1 parent b0c4a30 commit 8c0ff3d

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

CMakeLists.txt

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
add_library(d3d8lib INTERFACE)
2-
target_link_libraries(d3d8lib INTERFACE d3d8 d3dx8 dinput8 dxguid)
32

4-
if(MSVC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "12.0.8804")
5-
target_link_libraries(d3d8lib INTERFACE legacy_stdio_definitions)
6-
target_link_options(d3d8lib INTERFACE /SAFESEH:NO)
7-
else()
8-
# ddraw.h header is part of current windows SDK, so can't include it in modern builds
9-
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/extra)
3+
# Common libraries for all compilers
4+
target_link_libraries(d3d8lib INTERFACE d3d8 dinput8 dxguid)
5+
6+
# MSVC-specific configuration
7+
if(MSVC)
8+
# Use bundled MSVC-compiled .lib files
9+
target_link_libraries(d3d8lib INTERFACE d3dx8)
10+
target_link_directories(d3d8lib BEFORE INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
11+
target_link_options(d3d8lib INTERFACE /NODEFAULTLIB:libci.lib)
12+
13+
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "12.0.8804")
14+
target_link_libraries(d3d8lib INTERFACE legacy_stdio_definitions)
15+
target_link_options(d3d8lib INTERFACE /SAFESEH:NO)
16+
endif()
1017
endif()
1118

12-
target_compile_definitions(d3d8lib INTERFACE -DBUILD_WITH_D3D8)
19+
# MinGW-specific configuration
20+
if(MINGW)
21+
# MinGW-w64 DirectX 8 support varies by architecture:
22+
# i686 (32-bit): libd3d8.a + libd3dx8d.a (debug only, no release version)
23+
# x86_64 (64-bit): libd3d8thk.a only (no libd3dx8 libraries at all)
24+
target_link_libraries(d3d8lib INTERFACE d3dx8d)
25+
# ddraw.h header is part of current windows SDK, so can't include it in modern builds
26+
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/extra)
27+
endif()
1328

14-
target_link_directories(d3d8lib BEFORE INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
15-
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
16-
target_link_options(d3d8lib INTERFACE /NODEFAULTLIB:libci.lib)
29+
target_compile_definitions(d3d8lib INTERFACE -DBUILD_WITH_D3D8)
30+
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

0 commit comments

Comments
 (0)