Skip to content

Commit 154dc3d

Browse files
committed
Fix MinGW-w64 compatibility: add compiler-specific library handling
1 parent b0c4a30 commit 154dc3d

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

CMakeLists.txt

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
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)
3+
if(MSVC)
4+
# Use bundled MSVC-compiled .lib files
5+
target_link_libraries(d3d8lib INTERFACE d3d8 d3dx8 dinput8 dxguid)
6+
target_link_directories(d3d8lib BEFORE INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
7+
target_link_options(d3d8lib INTERFACE /NODEFAULTLIB:libci.lib)
8+
9+
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "12.0.8804")
10+
target_link_libraries(d3d8lib INTERFACE legacy_stdio_definitions)
11+
target_link_options(d3d8lib INTERFACE /SAFESEH:NO)
12+
endif()
13+
elseif(MINGW)
14+
# MinGW-w64 DirectX 8 support varies by architecture:
15+
# i686 (32-bit): libd3d8.a + libd3dx8d.a (debug only, no release version)
16+
# x86_64 (64-bit): libd3d8thk.a only (no libd3dx8 libraries at all)
17+
target_link_libraries(d3d8lib INTERFACE d3d8 d3dx8d dinput8 dxguid)
18+
# ddraw.h header is part of current windows SDK, so can't include it in modern builds
19+
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/extra)
720
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)
21+
# Other compilers - use system libraries
22+
target_link_libraries(d3d8lib INTERFACE d3d8 d3dx8 dinput8 dxguid)
23+
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/extra)
1024
endif()
1125

1226
target_compile_definitions(d3d8lib INTERFACE -DBUILD_WITH_D3D8)
13-
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)
27+
target_include_directories(d3d8lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

0 commit comments

Comments
 (0)