Fixed bug 3301 - IBus support on Linux with CMake joe.gsoc16 I recently looked into Unicode support in SDL2 and realized that SDL_TEXTEDITING doesn't get triggered at all (Japanese IME). According to others on IRC it works fine on Windows/Mac but not for me on (arch)Linux. When compiling SDL with autotools, IBus support is enabled by default but not so with CMake. I never used CMake before but got it working and also included that pkg-config determines flags for dbus (FIXME in CMakeLists).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e413198..ba2755c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -899,8 +899,22 @@ elseif(UNIX AND NOT APPLE)
check_include_file("libudev.h" HAVE_LIBUDEV_H)
- # !!! FIXME: this needs pkg-config to find the include path, I think.
- check_include_file("dbus/dbus.h" HAVE_DBUS_DBUS_H)
+ if(PKG_CONFIG_FOUND)
+ pkg_search_module(DBUS dbus-1 dbus)
+ if(DBUS_FOUND)
+ set(HAVE_DBUS_DBUS_H TRUE)
+ include_directories(${DBUS_INCLUDE_DIRS})
+ list(APPEND EXTRA_LIBS ${DBUS_LIBRARIES})
+ endif()
+
+ pkg_search_module(IBUS ibus-1.0 ibus)
+ if(IBUS_FOUND)
+ set(HAVE_IBUS_IBUS_H TRUE)
+ include_directories(${IBUS_INCLUDE_DIRS})
+ list(APPEND EXTRA_LIBS ${IBUS_LIBRARIES})
+ endif()
+ endif()
+
endif()
if(INPUT_TSLIB)
diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake
index 44173a0..57a44b9 100644
--- a/include/SDL_config.h.cmake
+++ b/include/SDL_config.h.cmake
@@ -81,6 +81,7 @@
#cmakedefine HAVE_PTHREAD_NP_H 1
#cmakedefine HAVE_LIBUDEV_H 1
#cmakedefine HAVE_DBUS_DBUS_H 1
+#cmakedefine HAVE_IBUS_IBUS_H 1
/* C library functions */
#cmakedefine HAVE_MALLOC 1