From 928e5d4912f44c0af9c240939cbcbbde9fb66f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Mon, 25 Feb 2013 12:05:36 +0100 Subject: [PATCH] Split the libs we link to into multiple variables Using a lib variable for: * own libs * qt libs * kde libs * xlib libs * xcb libs and link those groups together in target_link_libraries. This should make the code easier to read and easier to support in future for some time both Qt4 and Qt5. --- CMakeLists.txt | 58 ++++++++++++++++++++++++++++++++--- effects/CMakeLists.txt | 52 ++++++++++++++++++++----------- libkwineffects/CMakeLists.txt | 24 +++++++++++++-- 3 files changed, 108 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 492721df5d..ba729438ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,27 +189,75 @@ qt4_add_dbus_interface( kwin_KDEINIT_SRCS qt4_add_resources( kwin_KDEINIT_SRCS resources.qrc ) -set(kwinLibs ${KDE4_KDEUI_LIBS} ${KDE4_PLASMA_LIBS} ${QT_QTDECLARATIVE_LIBRARY} ${KDECLARATIVE_LIBRARIES} kdecorations kwineffects ${X11_LIBRARIES} ${X11_Xcursor_LIB} ${X11_Xrandr_LIB} ${X11_Xdamage_LIB} ${X11_Xrender_LIB} ${X11_Xfixes_LIB} ${XCB_XCB_LIBRARIES} ${X11_XCB_LIBRARIES} ${XCB_XFIXES_LIBRARIES} ${XCB_DAMAGE_LIBRARIES} ${XCB_COMPOSITE_LIBRARIES} ${XCB_SHAPE_LIBRARIES} ${XCB_SYNC_LIBRARIES} ${XCB_RENDER_LIBRARIES} ${XCB_RANDR_LIBRARIES} ${XCB_KEYSYMS_LIBRARIES}) +########### target link libraries ############### + +set(kwin_OWN_LIBS + kdecorations + kwineffects +) + +set(kwin_QT_LIBS + ${QT_QTDECLARATIVE_LIBRARY} +) + +set(kwin_KDE_LIBS + ${KDE4_KDEUI_LIBS} + ${KDE4_PLASMA_LIBS} + ${KDECLARATIVE_LIBRARIES} +) + +set(kwin_XLIB_LIBS + ${X11_LIBRARIES} + ${X11_Xcursor_LIB} + ${X11_Xrandr_LIB} + ${X11_Xdamage_LIB} + ${X11_Xrender_LIB} + ${X11_Xfixes_LIB} +) + +set(kwin_XCB_LIBS + ${XCB_XCB_LIBRARIES} + ${X11_XCB_LIBRARIES} + ${XCB_XFIXES_LIBRARIES} + ${XCB_DAMAGE_LIBRARIES} + ${XCB_COMPOSITE_LIBRARIES} + ${XCB_SHAPE_LIBRARIES} + ${XCB_SYNC_LIBRARIES} + ${XCB_RENDER_LIBRARIES} + ${XCB_RANDR_LIBRARIES} + ${XCB_KEYSYMS_LIBRARIES} +) + +set(kwin_OPENGL_LIBS ) find_library(XF86VM_LIBRARY Xxf86vm) if (XF86VM_LIBRARY) - set(kwinLibs ${kwinLibs} ${XF86VM_LIBRARY}) + set(kwin_XLIB_LIBS ${kwin_XLIB_LIBS} ${XF86VM_LIBRARY}) else(XF86VM_LIBRARY) add_definitions(-DKWIN_NO_XF86VM) endif() if(KWIN_BUILD_SCRIPTING) - set(kwinLibs ${kwinLibs} ${QT_QTSCRIPT_LIBRARY}) + set(kwin_QT_LIBS ${kwin_QT_LIBS} ${QT_QTSCRIPT_LIBRARY}) endif() if(KWIN_BUILD_ACTIVITIES) - set(kwinLibs ${kwinLibs} ${KACTIVITIES_LIBRARY}) + set(kwin_KDE_LIBS ${kwin_KDE_LIBS} ${KACTIVITIES_LIBRARY}) endif() if(OPENGL_EGL_FOUND) - set(kwinLibs ${kwinLibs} ${OPENGLES_EGL_LIBRARY}) + set(kwin_OPENGL_LIBS ${kwin_OPENGL_LIBS} ${OPENGLES_EGL_LIBRARY}) endif() +set(kwinLibs + ${kwin_OWN_LIBS} + ${kwin_QT_LIBS} + ${kwin_KDE_LIBS} + ${kwin_XLIB_LIBS} + ${kwin_XCB_LIBS} + ${kwin_OPENGL_LIBS} +) + kde4_add_kdeinit_executable( kwin ${kwin_KDEINIT_SRCS}) target_link_libraries(kdeinit_kwin ${kwinLibs}) diff --git a/effects/CMakeLists.txt b/effects/CMakeLists.txt index 0d6c0e41d7..5f6c4b1a40 100644 --- a/effects/CMakeLists.txt +++ b/effects/CMakeLists.txt @@ -1,10 +1,42 @@ # the factory macros cause errors kde4_no_enable_final(kwineffects) +set(kwin_effect_OWN_LIBS + kwineffects +) + +set(kwin_effect_KDE_LIBS + ${KDE4_KDEUI_LIBS} + ${KDE4_PLASMA_LIBS} +) + +set(kwin_effect_XLIB_LIBS + ${X11_LIBRARIES} + ${X11_Xcursor_LIB} + ${X11_Xfixes_LIB} +) + +set(kwin_effect_XCB_LIBS + ${XCB_XCB_LIBRARIES} + ${X11_XCB_LIBRARIES} + ${XCB_IMAGE_LIBRARIES} + ${XCB_XFIXES_LIBRARIES} +) + +if( KWIN_HAVE_XRENDER_COMPOSITING ) + set(kwin_effect_XLIB_LIBS ${kwin_effect_XLIB_LIBS} ${X11_Xrender_LIB}) + set(kwin_effect_XCB_LIBS ${kwin_effect_XCB_LIBS} ${XCB_RENDER_LIBRARIES}) +endif() + +if(OPENGL_FOUND) + set(kwin_effect_OWN_LIBS ${kwin_effect_OWN_LIBS} kwinglutils) +elseif(OPENGLES_FOUND) + set(kwin_effect_OWN_LIBS ${kwin_effect_OWN_LIBS} kwinglesutils) +endif() + macro( KWIN4_ADD_EFFECT_BACKEND name ) kde4_add_plugin( ${name} ${ARGN} ) - target_link_libraries( ${name} kwineffects ${KDE4_KDEUI_LIBS} ${KDE4_PLASMA_LIBS} ${X11_Xfixes_LIB} ${X11_Xcursor_LIB} ${X11_LIBRARIES} ${XCB_XCB_LIBRARIES} ${XCB_IMAGE_LIBRARIES} ${X11_XCB_LIBRARIES} - ${XCB_XFIXES_LIBRARIES}) + target_link_libraries( ${name} ${kwin_effect_OWN_LIBS} ${kwin_effect_KDE_LIBS} ${kwin_effect_XLIB_LIBS} ${kwin_effect_XCB_LIBS}) endmacro() # Adds effect plugin with given name. Sources are given after the name @@ -13,12 +45,10 @@ macro( KWIN4_ADD_EFFECT name ) # OpenGL or neither OpenGL nor OpenGL ES - default set KWIN4_ADD_EFFECT_BACKEND(kwin4_effect_${name} ${ARGN}) if(OPENGL_FOUND) - target_link_libraries(kwin4_effect_${name} kwinglutils) if( KWIN_BUILD_OPENGL_1_COMPOSITING ) set_target_properties(kwin4_effect_${name} PROPERTIES COMPILE_FLAGS -DKWIN_HAVE_OPENGL_1) endif() elseif(OPENGLES_FOUND) - target_link_libraries(kwin4_effect_${name} kwinglesutils) set_target_properties(kwin4_effect_${name} PROPERTIES COMPILE_FLAGS "-DKWIN_HAVE_OPENGLES") endif() set_target_properties(kwin4_effect_${name} PROPERTIES OUTPUT_NAME ${KWIN_NAME}4_effect_${name}) @@ -29,7 +59,6 @@ macro( KWIN4_ADD_EFFECT name ) if(OPENGLES_FOUND) KWIN4_ADD_EFFECT_BACKEND(kwin4_effect_gles_${name} ${ARGN}) # OpenGL ES gets into a different library - target_link_libraries(kwin4_effect_gles_${name} kwinglesutils) set_target_properties(kwin4_effect_gles_${name} PROPERTIES COMPILE_FLAGS "-DKWIN_HAVE_OPENGLES") set_target_properties(kwin4_effect_gles_${name} PROPERTIES OUTPUT_NAME ${KWIN_NAME}4_effect_gles_${name}) install( TARGETS kwin4_effect_gles_${name} DESTINATION ${PLUGIN_INSTALL_DIR} ) @@ -57,18 +86,6 @@ macro( KWIN4_ADD_EFFECT_CONFIG name ) install( TARGETS kcm_kwin4_effect_${name} DESTINATION ${PLUGIN_INSTALL_DIR} ) endmacro() -macro( KWIN4_EFFECT_LINK_XRENDER name ) - if( KWIN_HAVE_XRENDER_COMPOSITING ) - target_link_libraries( kwin4_effect_${name} ${X11_Xrender_LIB} ${XCB_RENDER_LIBRARIES}) - - # if building for OpenGL and OpenGL ES we have two targets - # TODO: if building for OpenGL ES we should not build XRender support - if(OPENGLES_FOUND) - target_link_libraries( kwin4_effect_gles_${name} ${X11_Xrender_LIB} ${XCB_RENDER_LIBRARIES}) - endif() - endif() -endmacro() - # Install the KWin/Effect service type install( FILES kwineffect.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} ) @@ -153,4 +170,3 @@ KWIN4_ADD_EFFECT( builtins ${kwin4_effect_builtins_sources} ) if( NOT KWIN_MOBILE_EFFECTS ) KWIN4_ADD_EFFECT_CONFIG( builtins ${kwin4_effect_builtins_config_sources} ) endif() -KWIN4_EFFECT_LINK_XRENDER( builtins ) diff --git a/libkwineffects/CMakeLists.txt b/libkwineffects/CMakeLists.txt index 96445ef242..e823cf84e8 100644 --- a/libkwineffects/CMakeLists.txt +++ b/libkwineffects/CMakeLists.txt @@ -9,16 +9,34 @@ set(kwin_EFFECTSLIB_SRCS kwinxrenderutils.cpp ) -kde4_add_library(kwineffects SHARED ${kwin_EFFECTSLIB_SRCS}) -target_link_libraries(kwineffects ${KDE4_KDEUI_LIBS} ${QT_QTGUI_LIBRARY} +set(kwineffects_QT_LIBS + ${QT_QTGUI_LIBRARY} +) + +set(kwineffects_KDE_LIBS + ${KDE4_KDEUI_LIBS} +) + +set(kwineffects_XLIB_LIBS ${X11_LIBRARIES} ${X11_Xrandr_LIB} ${X11_Xdamage_LIB} +) + +set(kwineffects_XCB_LIBS ${XCB_XCB_LIBRARIES} ${X11_XCB_LIBRARIES} ${XCB_XFIXES_LIBRARIES} ${XCB_RENDER_LIBRARIES} ) + +kde4_add_library(kwineffects SHARED ${kwin_EFFECTSLIB_SRCS}) +target_link_libraries(kwineffects + ${kwineffects_QT_LIBS} + ${kwineffects_KDE_LIBS} + ${kwineffects_XLIB_LIBS} + ${kwineffects_XCB_LIBS} +) set_target_properties(kwineffects PROPERTIES VERSION 1.0.0 SOVERSION 1 ) set_target_properties(kwineffects PROPERTIES OUTPUT_NAME ${KWIN_NAME}effects) @@ -39,7 +57,7 @@ macro( KWIN4_ADD_GLUTILS_BACKEND name glinclude ) include_directories(${OPENGLES_EGL_INCLUDE_DIR}) endif() kde4_add_library(${name} SHARED ${kwin_GLUTILSLIB_SRCS}) - target_link_libraries(${name} ${KDE4_KDEUI_LIBS} ${QT_QTGUI_LIBRARY} ${X11_LIBRARIES} ${XCB_XCB_LIBRARIES} ${X11_XCB_LIBRARIES} kwineffects) + target_link_libraries(${name} ${KDE4_KDEUI_LIBS} ${QT_QTGUI_LIBRARY} ${kwineffects_XLIB_LIBS} ${kwineffects_XCB_LIBS} kwineffects) if(OPENGL_EGL_FOUND) target_link_libraries(${name} ${OPENGLES_EGL_LIBRARY}) endif()