cmake: add ecore_x
authorMarcel Hollerbach <marcel-hollerbach@t-online.de>
Fri, 3 Feb 2017 18:23:47 +0000 (19:23 +0100)
committerMarcel Hollerbach <marcel-hollerbach@t-online.de>
Tue, 7 Feb 2017 08:24:52 +0000 (09:24 +0100)
CMakeLists.txt
cmake/config/ecore_x.cmake [new file with mode: 0644]
src/lib/ecore_x/CMakeLists.txt [new file with mode: 0644]

index f57dfc7..48c890e 100644 (file)
@@ -53,6 +53,7 @@ EFL_LIB(embryo)
 EFL_LIB(ector)
 EFL_LIB(eeze)
 EFL_LIB(ecore_input)
+EFL_LIB(ecore_x)
 
 EFL_OPTIONS_SUMMARY()
 
diff --git a/cmake/config/ecore_x.cmake b/cmake/config/ecore_x.cmake
new file mode 100644 (file)
index 0000000..e95e6b2
--- /dev/null
@@ -0,0 +1,110 @@
+include(FindX11)
+
+EFL_OPTION(XGESTURE "Whenever you want ecore_x to use gesture" OFF)
+EFL_OPTION(XPRESENT "Whenever you want ecore_x to use xpresent" OFF)
+EFL_OPTION(XINPUT2 "Whenever you want ecore_x to use xinput2" ON)
+EFL_OPTION(XINPUT22 "Whenever you want ecore_x to use xinput22" OFF)
+
+#the rest is just statically enabled
+CHECK_APPEND_DEFINE(HAVE_ECORE_X_XLIB ON)
+CHECK_APPEND_DEFINE(ECORE_XKB ON)
+CHECK_APPEND_DEFINE(ECORE_XCOMPOSITE ON)
+CHECK_APPEND_DEFINE(ECORE_XDAMAGE ON)
+CHECK_APPEND_DEFINE(ECORE_XDPMS ON)
+CHECK_APPEND_DEFINE(ECORE_XFIXES ON)
+CHECK_APPEND_DEFINE(ECORE_XINERAMA ON)
+CHECK_APPEND_DEFINE(ECORE_XRANDR ON)
+CHECK_APPEND_DEFINE(ECORE_XSS ON)
+CHECK_APPEND_DEFINE(ECORE_XTEST ON)
+
+#FindX11 does not cover all parts we need so here are the 4 extensions we need to check
+
+#copied from https://github.com/Kitware/CMake/blob/master/Modules/FindX11.cmake#L65
+set(X11_INC_SEARCH_PATH
+  /usr/pkg/xorg/include
+  /usr/X11R6/include
+  /usr/X11R7/include
+  /usr/include/X11
+  /usr/openwin/include
+  /usr/openwin/share/include
+  /opt/graphics/OpenGL/include
+  /opt/X11/include
+)
+
+set(X11_LIB_SEARCH_PATH
+  /usr/pkg/xorg/lib
+  /usr/X11R6/lib
+  /usr/X11R7/lib
+  /usr/openwin/lib
+  /opt/X11/lib
+)
+
+macro(find_lib_and_include name path lib)
+  string(TOUPPER ${name} ecore_name)
+  set(X11_${name}_FOUND OFF)
+  find_library(X11_${name}_LIB ${lib} ${X11_LIB_SEARCH_PATH})
+  find_path(X11_${name}_INCLUDE_PATH X11/extensions/${path} ${X11_INC_SEARCH_PATH})
+  if (X11_${name}_LIB AND X11_${name}_INCLUDE_PATH)
+    set(X11_${name}_FOUND ON)
+  endif()
+
+  CHECK_APPEND_DEFINE(ECORE_${ecore_name} ON)
+endmacro()
+
+if (${XGESTURE})
+  find_lib_and_include(XGesture gesture.h Xgesture)
+endif()
+
+if(${XPRESENT})
+  find_lib_and_include(Xpresent Xpresent.h Xpresent)
+endif()
+
+if(${XINPUT2})
+  find_lib_and_include(Xi2 XInput2.h Xi)
+endif()
+
+if(${XINPUT22})
+  find_lib_and_include(Xi2_2 Xpresent2.h Xi)
+endif()
+
+#build a list of all components we use
+set(_X_EXTENSIONS
+  X11
+  X11_Xkb
+  X11_Xcomposite
+  X11_Xdamage
+  X11_dpms
+  X11_Xfixes
+  X11_Xinerama
+  X11_Xrandr
+  X11_Xrender
+  X11_XTest
+  X11_Xscreensaver
+)
+
+if(${XGESTURE})
+  list(APPEND _X_EXTENSIONS X11_Xgesture)
+endif()
+
+if(${XPRESENT})
+  list(APPEND _X_EXTENSIONS X11_Xpresent)
+endif()
+
+if(${XINPUT2})
+  list(APPEND _X_EXTENSIONS X11_Xi2)
+endif()
+
+if(${XINPUT22})
+  list(APPEND _X_EXTENSIONS X11_Xi2_2)
+endif()
+
+foreach(ext ${_X_EXTENSIONS})
+  if (NOT ${ext}_FOUND)
+    message(FATAL_ERROR "Xserver extension ${ext} not found")
+  endif()
+  list(APPEND X_EXTENSIONS find-${ext})
+endforeach()
+
+configure_file(
+  ${PROJECT_SOURCE_DIR}/src/lib/ecore_x/ecore_x_version.h.cmake
+  ${PROJECT_BINARY_DIR}/src/lib/ecore_x/ecore_x_version.h)
diff --git a/src/lib/ecore_x/CMakeLists.txt b/src/lib/ecore_x/CMakeLists.txt
new file mode 100644 (file)
index 0000000..fec2eae
--- /dev/null
@@ -0,0 +1,61 @@
+set(PUBLIC_LIBRARIES
+  eina
+  ecore
+)
+
+set(LIBRARIES
+  ecore
+  ecore_input
+  efl
+  eo
+  ${X_EXTENSIONS}
+)
+
+message("${LIBRARIES}")
+
+#todo XRANDR_GOOD
+
+set(PUBLIC_HEADERS
+  Ecore_X.h
+ # ecore_x_version.h
+  Ecore_X_Atoms.h
+  Ecore_X_Cursor.h
+)
+
+set(SOURCES
+  ecore_x_atoms_decl.h
+  ecore_x.c
+  ecore_x_dnd.c
+  ecore_x_sync.c
+  ecore_x_randr.c
+  ecore_x_fixes.c
+  ecore_x_damage.c
+  ecore_x_composite.c
+  ecore_x_error.c
+  ecore_x_events.c
+  ecore_x_icccm.c
+  ecore_x_keygrab.c
+  ecore_x_netwm.c
+  ecore_x_mwm.c
+  ecore_x_e.c
+  ecore_x_selection.c
+  ecore_x_window.c
+  ecore_x_window_prop.c
+  ecore_x_window_shape.c
+  ecore_x_pixmap.c
+  ecore_x_present.c
+  ecore_x_gc.c
+  ecore_x_xinerama.c
+  ecore_x_screensaver.c
+  ecore_x_dpms.c
+  ecore_x_drawable.c
+  ecore_x_cursor.c
+  ecore_x_test.c
+  ecore_x_atoms.c
+  ecore_x_region.c
+  ecore_x_image.c
+  ecore_x_xi2.c
+  ecore_x_vsync.c
+  ecore_x_gesture.c
+  ecore_x_private.h
+)