Commit d154e6c6e358286baf6050be4a7e32a8e4afed4a

Alex Szpakowski 2015-08-28T19:05:24

Fixed bug 3098: CMake project never enables xinput support on Windows. Thanks to EntranceJew for debugging the issue.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f1cf7aa..9050079 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -906,13 +906,23 @@ elseif(WINDOWS)
       endif()
       set(CMAKE_REQUIRED_FLAGS "/I\"$ENV{DXSDK_DIR}\\Include\"")
     endif()
+
+    if(HAVE_WIN32_CC)
+      # xinput.h may need windows.h, but doesn't include it itself.
+      check_c_source_compiles("
+        #include <windows.h>
+        #include <xinput.h>
+        int main(int argc, char **argv) { }" HAVE_XINPUT_H)
+    else()
+      check_include_file(xinput.h HAVE_XINPUT_H)
+    endif()
+
     check_include_file(d3d9.h HAVE_D3D_H)
     check_include_file(d3d11_1.h HAVE_D3D11_H)
     check_include_file(ddraw.h HAVE_DDRAW_H)
     check_include_file(dsound.h HAVE_DSOUND_H)
     check_include_file(dinput.h HAVE_DINPUT_H)
     check_include_file(xaudio2.h HAVE_XAUDIO2_H)
-    check_include_file(xinput.h HAVE_XINPUT_H)
     check_include_file(dxgi.h HAVE_DXGI_H)
     if(HAVE_D3D_H OR HAVE_D3D11_H OR HAVE_DDRAW_H OR HAVE_DSOUND_H OR HAVE_DINPUT_H OR HAVE_XAUDIO2_H)
       set(HAVE_DIRECTX TRUE)