[Xfce4-commits] [panel-plugins/xfce4-whiskermenu-plugin] 20/20: Improve CMake build script.

noreply at xfce.org noreply at xfce.org
Thu Feb 6 12:03:37 CET 2020


This is an automated email from the git hooks/post-receive script.

g   o   t   t   c   o   d   e       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository panel-plugins/xfce4-whiskermenu-plugin.

commit 7562926bf47c52436d564a0f913460bf42169523
Author: Graeme Gott <graeme at gottcode.org>
Date:   Wed Feb 5 21:05:32 2020 -0500

    Improve CMake build script.
---
 panel-plugin/CMakeLists.txt | 130 ++++++++++++++++++--------------------------
 1 file changed, 54 insertions(+), 76 deletions(-)

diff --git a/panel-plugin/CMakeLists.txt b/panel-plugin/CMakeLists.txt
index 18cef1a..d696f78 100644
--- a/panel-plugin/CMakeLists.txt
+++ b/panel-plugin/CMakeLists.txt
@@ -1,72 +1,10 @@
-set(WHISKERMENU_FLAGS "-Wall -Wextra")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WHISKERMENU_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WHISKERMENU_FLAGS}")
-if(ENABLE_VISIBILITY)
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
-endif()
-
-if(ENABLE_AS_NEEDED)
-	set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
-endif()
-if(ENABLE_LINKER_OPTIMIZED_HASH_TABLES)
-	set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-O1")
-endif()
-
 find_package(PkgConfig REQUIRED)
-pkg_check_modules(GTK3 REQUIRED gtk+-3.0>=3.22)
-pkg_check_modules(exo REQUIRED exo-2>=0.11)
-pkg_check_modules(garcon REQUIRED garcon-1)
-pkg_check_modules(libxfce4panel REQUIRED libxfce4panel-2.0>=4.11)
-pkg_check_modules(libxfce4ui REQUIRED libxfce4ui-2>=4.11)
-pkg_check_modules(libxfce4util REQUIRED libxfce4util-1.0>=4.11)
-
-include_directories(
-	${GTK3_INCLUDE_DIRS}
-	${exo_INCLUDE_DIRS}
-	${garcon_INCLUDE_DIRS}
-	${libxfce4panel_INCLUDE_DIRS}
-	${libxfce4ui_INCLUDE_DIRS}
-	${libxfce4util_INCLUDE_DIRS})
-
-link_directories(
-	${GTK3_LIBRARY_DIRS}
-	${exo_LIBRARY_DIRS}
-	${garcon_LIBRARY_DIRS}
-	${libxfce4panel_LIBRARY_DIRS}
-	${libxfce4ui_LIBRARY_DIRS}
-	${libxfce4util_LIBRARY_DIRS})
-
-add_definitions(
-	-DGETTEXT_PACKAGE="xfce4-whiskermenu-plugin"
-	-DPACKAGE_LOCALE_DIR="${CMAKE_INSTALL_FULL_LOCALEDIR}"
-	-DPACKAGE_NAME="xfce4-whiskermenu-plugin"
-	-DPACKAGE_VERSION="${whiskermenu_version}"
-	-DBINDIR="${CMAKE_INSTALL_FULL_BINDIR}"
-	-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}"
-	-DSETTINGS_MENUFILE="${CMAKE_INSTALL_FULL_SYSCONFDIR}/xdg/menus/xfce-settings-manager.menu"
-	-DG_LOG_DOMAIN="whiskermenu"
-	-DGSEAL_ENABLE
-	-DGTK_MULTIHEAD_SAFE
-	${GTK3_CFLAGS_OTHER}
-	${exo_CFLAGS_OTHER}
-	${garcon_CFLAGS_OTHER}
-	${libxfce4panel_CFLAGS_OTHER}
-	${libxfce4ui_CFLAGS_OTHER}
-	${libxfce4util_CFLAGS_OTHER})
-
-if(ENABLE_DEVELOPER_MODE)
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
-	set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,defs")
-
-	add_definitions(
-		-DXFCE_DISABLE_DEPRECATED
-		-DG_DISABLE_DEPRECATED
-		-DGDK_DISABLE_DEPRECATED
-		-DGDK_PIXBUF_DISABLE_DEPRECATED
-		-DGDK_DISABLE_SINGLE_INCLUDES
-		-DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES
-		-DGTK_DISABLE_SINGLE_INCLUDES)
-endif()
+pkg_check_modules(GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0>=3.22)
+pkg_check_modules(exo REQUIRED IMPORTED_TARGET exo-2>=0.11)
+pkg_check_modules(garcon REQUIRED IMPORTED_TARGET garcon-1)
+pkg_check_modules(libxfce4panel REQUIRED IMPORTED_TARGET libxfce4panel-2.0>=4.11)
+pkg_check_modules(libxfce4ui REQUIRED IMPORTED_TARGET libxfce4ui-2>=4.11)
+pkg_check_modules(libxfce4util REQUIRED IMPORTED_TARGET libxfce4util-1.0>=4.11)
 
 add_library(whiskermenu MODULE
 	applications-page.cpp
@@ -98,26 +36,66 @@ add_library(whiskermenu MODULE
 	window.cpp)
 
 target_link_libraries(whiskermenu
-	${GTK3_LIBRARIES}
-	${exo_LIBRARIES}
-	${garcon_LIBRARIES}
-	${libxfce4panel_LIBRARIES}
-	${libxfce4ui_LIBRARIES}
-	${libxfce4util_LIBRARIES})
+	PkgConfig::GTK3
+	PkgConfig::exo
+	PkgConfig::garcon
+	PkgConfig::libxfce4panel
+	PkgConfig::libxfce4ui
+	PkgConfig::libxfce4util)
+
+target_compile_options(whiskermenu PRIVATE -Wall -Wextra)
+
+target_compile_definitions(whiskermenu PRIVATE
+	GETTEXT_PACKAGE="xfce4-whiskermenu-plugin"
+	PACKAGE_LOCALE_DIR="${CMAKE_INSTALL_FULL_LOCALEDIR}"
+	PACKAGE_NAME="xfce4-whiskermenu-plugin"
+	PACKAGE_VERSION="${whiskermenu_version}"
+	BINDIR="${CMAKE_INSTALL_FULL_BINDIR}"
+	DATADIR="${CMAKE_INSTALL_FULL_DATADIR}"
+	SETTINGS_MENUFILE="${CMAKE_INSTALL_FULL_SYSCONFDIR}/xdg/menus/xfce-settings-manager.menu"
+	G_LOG_DOMAIN="whiskermenu"
+	GSEAL_ENABLE
+	GTK_MULTIHEAD_SAFE)
 
 target_compile_features(whiskermenu PRIVATE cxx_std_11)
 
+if(ENABLE_VISIBILITY)
+	set_target_properties(whiskermenu PROPERTIES CXX_VISIBILITY_PRESET hidden)
+endif()
+
+if(ENABLE_AS_NEEDED)
+	target_link_options(whiskermenu PRIVATE "LINKER:--as-needed")
+endif()
+
+if(ENABLE_LINKER_OPTIMIZED_HASH_TABLES)
+	target_link_options(whiskermenu PRIVATE "LINKER:-O1")
+endif()
+
+if(ENABLE_DEVELOPER_MODE)
+	target_link_options(whiskermenu PRIVATE "LINKER:-z,defs")
+	target_compile_options(whiskermenu PRIVATE -Werror)
+	target_compile_definitions(whiskermenu PRIVATE
+		XFCE_DISABLE_DEPRECATED
+		G_DISABLE_DEPRECATED
+		GDK_DISABLE_DEPRECATED
+		GDK_PIXBUF_DISABLE_DEPRECATED
+		GDK_DISABLE_SINGLE_INCLUDES
+		GDK_PIXBUF_DISABLE_SINGLE_INCLUDES
+		GTK_DISABLE_SINGLE_INCLUDES)
+endif()
+
 string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER)
 if(CMAKE_BUILD_TYPE_TOLOWER MATCHES "release|minsizerel|relwithdebinfo")
 	if(ENABLE_LINK_TIME_OPTIMIZATION)
 		include(CheckIPOSupported)
 		check_ipo_supported(RESULT result)
 		if(result)
-			set_property(TARGET whiskermenu PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+			set_target_properties(whiskermenu PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
 		endif()
 	endif()
 
-	add_definitions(-DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT)
+	target_compile_definitions(whiskermenu PRIVATE G_DISABLE_CAST_CHECKS G_DISABLE_ASSERT)
+
 	add_custom_command(TARGET whiskermenu
 		POST_BUILD COMMAND ${CMAKE_STRIP} $<TARGET_FILE:whiskermenu>)
 endif()

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list