[Xfce4-commits] [panel-plugins/xfce4-whiskermenu-plugin] 204/473: Improve build system.
noreply at xfce.org
noreply at xfce.org
Mon Feb 16 23:56:14 CET 2015
This is an automated email from the git hooks/post-receive script.
gottcode pushed a commit to branch master
in repository panel-plugins/xfce4-whiskermenu-plugin.
commit c6d46ff834f2d5336c15bd52ce20bebd6e658e52
Author: Graeme Gott <graeme at gottcode.org>
Date: Thu Oct 31 08:42:55 2013 -0400
Improve build system.
---
CMakeLists.txt | 33 ++++++++---
INSTALL | 17 +++++-
src/CMakeLists.txt | 140 ++++++++++++++++++++++----------------------
src/panel_plugin.cpp | 2 +-
xfce4-popup-whiskermenu.in | 2 +-
5 files changed, 111 insertions(+), 83 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 989fb26..055101d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,13 +1,30 @@
cmake_minimum_required(VERSION 2.8)
if(${CMAKE_VERSION} VERSION_LESS "2.8.8")
- cmake_policy(SET CMP0002 OLD)
+ cmake_policy(SET CMP0002 OLD)
endif()
project(whiskermenu)
+# version number
+set(whiskermenu_version_major "1")
+set(whiskermenu_version_minor "2")
+set(whiskermenu_version_micro "0")
+set(whiskermenu_version_tag "git")
+set(whiskermenu_version "${whiskermenu_version_major}.${whiskermenu_version_minor}.${whiskermenu_version_micro}")
+if(${whiskermenu_version_tag} MATCHES "git")
+ if(NOT DEFINED whiskermenu_version_build)
+ execute_process(COMMAND git describe
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE whiskermenu_version_build)
+ string(REGEX REPLACE "^.*-g" "" whiskermenu_version_build "${whiskermenu_version_build}")
+ endif()
+ set(whiskermenu_version "${whiskermenu_version}.${whiskermenu_version_tag}-${whiskermenu_version_build}")
+endif()
+
# options
option(ENABLE_WERROR "Enable -Werror flag for development" OFF)
option(ENABLE_AS_NEEDED "Enable -Wl,--as-needed for the linker" ON)
+option(ENABLE_LINKER_OPTIMIZED_HASH_TABLES "Enable -Wl,-O1 for the linker" ON)
include(GNUInstallDirs)
@@ -17,16 +34,16 @@ add_subdirectory(icons)
# popup script
configure_file(${PROJECT_SOURCE_DIR}/xfce4-popup-whiskermenu.in
- ${PROJECT_BINARY_DIR}/xfce4-popup-whiskermenu ESCAPE_QUOTES @ONLY)
+ ${PROJECT_BINARY_DIR}/xfce4-popup-whiskermenu ESCAPE_QUOTES @ONLY)
install(PROGRAMS ${PROJECT_BINARY_DIR}/xfce4-popup-whiskermenu
- DESTINATION ${CMAKE_INSTALL_BINDIR})
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES ${PROJECT_SOURCE_DIR}/xfce4-popup-whiskermenu.1
- DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT doc)
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT doc)
# uninstall target
configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake
- IMMEDIATE @ONLY)
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake
+ IMMEDIATE @ONLY)
add_custom_target(uninstall
- ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake)
+ ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake)
diff --git a/INSTALL b/INSTALL
index 66c1a15..569d691 100644
--- a/INSTALL
+++ b/INSTALL
@@ -37,7 +37,7 @@ You should create different directories for each type of build:
1. `mkdir debug && cd debug' to create a location for building.
- 2. `cmake -DCMAKE_BUILD_TYPE=Debugfull ..' to configure the sources.
+ 2. `cmake -DCMAKE_BUILD_TYPE=Debug ..' to configure the sources.
3. `make' to compile the plugin.
@@ -46,7 +46,7 @@ More CMake Options
-DCMAKE_BUILD_TYPE=<type>
Choose the type of build. Possible values are:
- 'Release' 'RelWithDebInfo' 'Debug' 'Debugfull' 'Profile'
+ 'None' 'Debug' 'Release' 'RelWithDebInfo' 'MinSizeRel'
-DCMAKE_INSTALL_PREFIX=<path>
Choose the base location where the plugin is installed
@@ -67,3 +67,16 @@ More CMake Options
-DCMAKE_INSTALL_LOCALEDIR=<path>
Choose where the localization files are installed
(defaults to $CMAKE_INSTALL_DATADIR/locale).
+
+-DCMAKE_INSTALL_MANDIR=<path>
+ Choose where manual pages are installed
+ (defaults to $CMAKE_INSTALL_DATADIR/man).
+
+-ENABLE_WERROR=[OFF]
+ Make compiler treat warnings as errors for development.
+
+-ENABLE_AS_NEEDED=[ON]
+ Pass -Wl,--as-needed to the linker to reduce symbols in plugin.
+
+-ENABLE_LINKER_OPTIMIZED_HASH_TABLES=[ON]
+ Pass -Wl,-O1 to the linker to optimize hash tables in plugin.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c1bfc8d..0f4c9f8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,99 +1,97 @@
set(WHISKERMENU_FLAGS "-Wall -Wextra")
if(ENABLE_WERROR)
- set(WHISKERMENU_FLAGS "${WHISKERMENU_FLAGS} -Werror")
+ set(WHISKERMENU_FLAGS "${WHISKERMENU_FLAGS} -Werror")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WHISKERMENU_FLAGS}")
-set(CMAKE_CXX_FLAGS "-fvisibility=hidden ${WHISKERMENU_FLAGS} ${CMAKE_CXX_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden ${WHISKERMENU_FLAGS}")
+
if(ENABLE_AS_NEEDED)
- set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed ${CMAKE_SHARED_LINKER_FLAGS}")
+ 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(GTK2 REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(exo REQUIRED exo-1)
pkg_check_modules(garcon REQUIRED garcon-1)
-pkg_check_modules(libxfce4panel REQUIRED libxfce4panel-1.0>=4.8)
-pkg_check_modules(libxfce4ui REQUIRED libxfce4ui-1>=4.8)
-pkg_check_modules(libxfce4util REQUIRED libxfce4util-1.0>=4.8)
-
-if (NOT DEFINED DISABLE_DEPRECATED)
- if(${libxfce4panel_VERSION} VERSION_LESS "4.10")
- set(DISABLE_DEPRECATED OFF)
- else()
- set(DISABLE_DEPRECATED ON)
- endif()
-endif()
+pkg_check_modules(libxfce4panel REQUIRED libxfce4panel-1.0>=4.7)
+pkg_check_modules(libxfce4ui REQUIRED libxfce4ui-1>=4.7)
+pkg_check_modules(libxfce4util REQUIRED libxfce4util-1.0>=4.7)
include_directories(
- ${exo_INCLUDE_DIRS}
- ${garcon_INCLUDE_DIRS}
- ${libxfce4panel_INCLUDE_DIRS}
- ${libxfce4ui_INCLUDE_DIRS}
- ${libxfce4util_INCLUDE_DIRS}
- ${GTK2_INCLUDE_DIRS})
+ ${exo_INCLUDE_DIRS}
+ ${garcon_INCLUDE_DIRS}
+ ${libxfce4panel_INCLUDE_DIRS}
+ ${libxfce4ui_INCLUDE_DIRS}
+ ${libxfce4util_INCLUDE_DIRS}
+ ${GTK2_INCLUDE_DIRS})
link_directories(
- ${exo_LIBRARY_DIRS}
- ${garcon_LIBRARY_DIRS}
- ${libxfce4panel_LIBRARY_DIRS}
- ${libxfce4ui_LIBRARY_DIRS}
- ${libxfce4util_LIBRARY_DIRS})
+ ${exo_LIBRARY_DIRS}
+ ${garcon_LIBRARY_DIRS}
+ ${libxfce4panel_LIBRARY_DIRS}
+ ${libxfce4ui_LIBRARY_DIRS}
+ ${libxfce4util_LIBRARY_DIRS})
add_definitions(
- -DGETTEXT_PACKAGE="xfce4-whiskermenu-plugin"
- -DLOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}"
- -DGSEAL_ENABLE=1
- -DGDK_DISABLE_SINGLE_INCLUDES=1
- -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES=1
- -DGTK_DISABLE_SINGLE_INCLUDES=1
- -DGTK_MULTIHEAD_SAFE=1
- ${exo_CFLAGS_OTHER}
- ${garcon_CFLAGS_OTHER}
- ${libxfce4panel_CFLAGS_OTHER}
- ${libxfce4ui_CFLAGS_OTHER}
- ${libxfce4util_CFLAGS_OTHER})
+ -DGETTEXT_PACKAGE="xfce4-whiskermenu-plugin"
+ -DPACKAGE_LOCALE_DIR="${CMAKE_INSTALL_FULL_LOCALEDIR}"
+ -DG_LOG_DOMAIN="whiskermenu"
+ -DGSEAL_ENABLE
+ -DGDK_DISABLE_SINGLE_INCLUDES
+ -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES
+ -DGTK_DISABLE_SINGLE_INCLUDES
+ -DGTK_MULTIHEAD_SAFE
+ ${exo_CFLAGS_OTHER}
+ ${garcon_CFLAGS_OTHER}
+ ${libxfce4panel_CFLAGS_OTHER}
+ ${libxfce4ui_CFLAGS_OTHER}
+ ${libxfce4util_CFLAGS_OTHER})
-if(${DISABLE_DEPRECATED})
- add_definitions(
- -DG_DISABLE_DEPRECATED=1
- -DGDK_DISABLE_DEPRECATED=1
- -DGDK_PIXBUF_DISABLE_DEPRECATED=1
- -DGTK_DISABLE_DEPRECATED=1)
+if(${libxfce4panel_VERSION} VERSION_GREATER "4.9")
+ add_definitions(
+ -DG_DISABLE_DEPRECATED
+ -DGDK_DISABLE_DEPRECATED
+ -DGDK_PIXBUF_DISABLE_DEPRECATED
+ -DGTK_DISABLE_DEPRECATED)
endif()
add_library(whiskermenu MODULE
- applications_page.cpp
- category.cpp
- command_button.cpp
- configuration_dialog.cpp
- favorites_page.cpp
- icon_size.cpp
- launcher.cpp
- launcher_model.cpp
- launcher_view.cpp
- list_page.cpp
- menu.cpp
- page.cpp
- panel_plugin.cpp
- query.cpp
- recent_page.cpp
- register_plugin.c
- resizer_widget.cpp
- search_page.cpp
- section_button.cpp)
+ applications_page.cpp
+ category.cpp
+ command_button.cpp
+ configuration_dialog.cpp
+ favorites_page.cpp
+ icon_size.cpp
+ launcher.cpp
+ launcher_model.cpp
+ launcher_view.cpp
+ list_page.cpp
+ menu.cpp
+ page.cpp
+ panel_plugin.cpp
+ query.cpp
+ recent_page.cpp
+ register_plugin.c
+ resizer_widget.cpp
+ search_page.cpp
+ section_button.cpp)
target_link_libraries(whiskermenu
- ${exo_LIBRARIES}
- ${garcon_LIBRARIES}
- ${libxfce4panel_LIBRARIES}
- ${libxfce4ui_LIBRARIES}
- ${libxfce4util_LIBRARIES}
- ${GTK2_LIBRARIES})
+ ${exo_LIBRARIES}
+ ${garcon_LIBRARIES}
+ ${libxfce4panel_LIBRARIES}
+ ${libxfce4ui_LIBRARIES}
+ ${libxfce4util_LIBRARIES}
+ ${GTK2_LIBRARIES})
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER)
-if(CMAKE_BUILD_TYPE_TOLOWER MATCHES release)
- add_definitions(-DG_DISABLE_ASSERT=1)
- add_custom_command(TARGET whiskermenu POST_BUILD COMMAND ${CMAKE_STRIP} $<TARGET_FILE:whiskermenu>)
+if(CMAKE_BUILD_TYPE_TOLOWER MATCHES "release|minsizerel")
+ add_definitions(-DG_DISABLE_ASSERT)
+ add_custom_command(TARGET whiskermenu
+ POST_BUILD COMMAND ${CMAKE_STRIP} $<TARGET_FILE:whiskermenu>)
endif()
install(TARGETS whiskermenu LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/xfce4/panel/plugins)
diff --git a/src/panel_plugin.cpp b/src/panel_plugin.cpp
index af4e4ec..fbe12c1 100644
--- a/src/panel_plugin.cpp
+++ b/src/panel_plugin.cpp
@@ -31,7 +31,7 @@ using namespace WhiskerMenu;
extern "C" void whiskermenu_construct(XfcePanelPlugin* plugin)
{
- xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
+ xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
new PanelPlugin(plugin);
}
diff --git a/xfce4-popup-whiskermenu.in b/xfce4-popup-whiskermenu.in
index 90cbf11..1d81213 100644
--- a/xfce4-popup-whiskermenu.in
+++ b/xfce4-popup-whiskermenu.in
@@ -35,7 +35,7 @@ case "$1" in
exit 0
;;
-V|--version)
- echo "$(basename $0) 1.2.0"
+ echo "$(basename $0) @whiskermenu_version@"
echo "Copyright (C) 2013 Graeme Gott"
exit 0
;;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list