From 196cda69f2080058593861f92176a4ac56e6a67e Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Mon, 12 Oct 2020 01:02:28 +0300 Subject: [PATCH] build: fix / update sensors (windows) configuration - SDL_config.h.in: add missing defines SDL_SENSOR_COREMOTION and SDL_SENSOR_WINDOWS (configure did set SDL_SENSOR_WINDOWS but it never went in SDL_config.h or Makefile.) - SDL_config.h.cmake: remove duplicated SDL_SENSOR_XXX cmake defines. - autofoo, cmake: check for sensorsapi.h header before enabling windows sensors. --- CMakeLists.txt | 3 ++- configure | 15 ++++++++++++++- configure.ac | 6 +++++- include/SDL_config.h.cmake | 8 ++------ include/SDL_config.h.in | 5 +++++ include/SDL_config_windows.h | 1 + 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f3cc7a4e..227fb7e7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1431,6 +1431,7 @@ elseif(WINDOWS) # headers needed elsewhere check_include_file(mmdeviceapi.h HAVE_MMDEVICEAPI_H) check_include_file(audioclient.h HAVE_AUDIOCLIENT_H) + check_include_file(sensorsapi.h HAVE_SENSORSAPI_H) if(SDL_AUDIO) set(SDL_AUDIO_DRIVER_WINMM 1) @@ -1482,7 +1483,7 @@ elseif(WINDOWS) set(HAVE_SDL_THREADS TRUE) endif() - if(SDL_SENSOR) + if(SDL_SENSOR AND HAVE_SENSORSAPI_H) set(SDL_SENSOR_WINDOWS 1) set(HAVE_SDL_SENSORS TRUE) file(GLOB WINDOWS_SENSOR_SOURCES ${SDL2_SOURCE_DIR}/src/sensor/windows/*.c) diff --git a/configure b/configure index 971d05d14..5ad03f2ec 100755 --- a/configure +++ b/configure @@ -24965,7 +24965,20 @@ $as_echo "#define SDL_HAPTIC_DINPUT 1" >>confdefs.h fi fi # Set up files for the sensor library - if test x$enable_sensor = xyes; then + ac_fn_c_check_header_mongrel "$LINENO" "sensorsapi.h" "ac_cv_header_sensorsapi_h" "$ac_includes_default" +if test "x$ac_cv_header_sensorsapi_h" = xyes; then : + have_winsensors=yes +else + have_winsensors=no +fi + + + if test x$have_winsensors = xyes; then + +$as_echo "#define HAVE_SENSORSAPI_H 1" >>confdefs.h + + fi + if test x$enable_sensor = xyes -a x$have_winsensors = xyes; then $as_echo "#define SDL_SENSOR_WINDOWS 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index 9452d5438..52a5dc340 100644 --- a/configure.ac +++ b/configure.ac @@ -3759,7 +3759,11 @@ AS_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau fi fi # Set up files for the sensor library - if test x$enable_sensor = xyes; then + AC_CHECK_HEADER(sensorsapi.h,have_winsensors=yes,have_winsensors=no) + if test x$have_winsensors = xyes; then + AC_DEFINE(HAVE_SENSORSAPI_H, 1, [ ]) + fi + if test x$enable_sensor = xyes -a x$have_winsensors = xyes; then AC_DEFINE(SDL_SENSOR_WINDOWS, 1, [ ]) SOURCES="$SOURCES $srcdir/src/sensor/windows/*.c" have_sensor=yes diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 22c845df4..29e43d37b 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -219,6 +219,7 @@ #cmakedefine HAVE_MMDEVICEAPI_H @HAVE_MMDEVICEAPI_H@ #cmakedefine HAVE_AUDIOCLIENT_H @HAVE_AUDIOCLIENT_H@ +#cmakedefine HAVE_SENSORSAPI_H @HAVE_SENSORSAPI_H@ #cmakedefine HAVE_XINPUT_GAMEPAD_EX @HAVE_XINPUT_GAMEPAD_EX@ #cmakedefine HAVE_XINPUT_STATE_EX @HAVE_XINPUT_STATE_EX@ @@ -305,6 +306,7 @@ /* Enable various sensor drivers */ #cmakedefine SDL_SENSOR_ANDROID @SDL_SENSOR_ANDROID@ #cmakedefine SDL_SENSOR_COREMOTION @SDL_SENSOR_COREMOTION@ +#cmakedefine SDL_SENSOR_WINDOWS @SDL_SENSOR_WINDOWS@ #cmakedefine SDL_SENSOR_DUMMY @SDL_SENSOR_DUMMY@ /* Enable various shared object loading systems */ @@ -410,12 +412,6 @@ #cmakedefine SDL_POWER_EMSCRIPTEN @SDL_POWER_EMSCRIPTEN@ #cmakedefine SDL_POWER_HARDWIRED @SDL_POWER_HARDWIRED@ -/* Enable sensor support */ -#cmakedefine SDL_SENSOR_ANDROID @SDL_SENSOR_ANDROID@ -#cmakedefine SDL_SENSOR_WINDOWS @SDL_SENSOR_WINDOWS@ -#cmakedefine SDL_SENSOR_COREMOTION @SDL_SENSOR_COREMOTION@ -#cmakedefine SDL_SENSOR_DUMMY @SDL_SENSOR_DUMMY@ - /* Enable system filesystem support */ #cmakedefine SDL_FILESYSTEM_ANDROID @SDL_FILESYSTEM_ANDROID@ #cmakedefine SDL_FILESYSTEM_HAIKU @SDL_FILESYSTEM_HAIKU@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 92052fc78..bc0750aed 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -215,8 +215,11 @@ #undef HAVE_DSOUND_H #undef HAVE_DXGI_H #undef HAVE_XINPUT_H + #undef HAVE_MMDEVICEAPI_H #undef HAVE_AUDIOCLIENT_H +#undef HAVE_SENSORSAPI_H + #undef HAVE_XINPUT_GAMEPAD_EX #undef HAVE_XINPUT_STATE_EX @@ -301,6 +304,8 @@ /* Enable various sensor drivers */ #undef SDL_SENSOR_ANDROID +#undef SDL_SENSOR_COREMOTION +#undef SDL_SENSOR_WINDOWS #undef SDL_SENSOR_DUMMY /* Enable various shared object loading systems */ diff --git a/include/SDL_config_windows.h b/include/SDL_config_windows.h index 6e5c2d131..b0ba558c0 100644 --- a/include/SDL_config_windows.h +++ b/include/SDL_config_windows.h @@ -84,6 +84,7 @@ typedef unsigned int uintptr_t; #define HAVE_XINPUT_H 1 #define HAVE_MMDEVICEAPI_H 1 #define HAVE_AUDIOCLIENT_H 1 +#define HAVE_SENSORSAPI_H /* This is disabled by default to avoid C runtime dependencies and manifest requirements */ #ifdef HAVE_LIBC