@@ -0,0 +1,6 @@ | |||
#!/bin/bash | |||
ENABLE_VARS="kde-tray|ON|KDE_TRAY" | |||
ENABLE_KDE_TRAY_DOC="build with kde tray and appindicator instead of gtk3 tray" | |||
DISABLE_VARS="aur|ON|DISABLE_AUR" | |||
DISABLE_DISABLE_AUR_DOC="disable the AUR in pamac" |
@@ -1,20 +1,8 @@ | |||
pkgbuild | |||
resources/*~ | |||
resources/*.c | |||
src/*.c | |||
src/pamac.h | |||
src/pamac.vapi | |||
src/libpamac.so | |||
src/pamac-user-daemon | |||
src/pamac-system-daemon | |||
src/pamac-tray | |||
src/pamac-tray-appindicator | |||
src/pamac-manager | |||
src/pamac-install | |||
src/pamac-updater | |||
src/pamac-refresh | |||
data/polkit/org.manjaro.pamac.policy | |||
po/*.mo | |||
po/*~ | |||
po/locale | |||
*.swp | |||
PKGBUILD | |||
*.pkg.tar.xz | |||
*.pkg.tar.xz.sig | |||
data/polkit/org.pamac.policy | |||
/build |
@@ -1,2 +1,5 @@ | |||
Main developers: | |||
Pamac classic devleopers: | |||
Chris Cromer <cromer@cromnix.org> | |||
Pamac developers: | |||
Guillaume Benoit <guillaume@manjaro.org> |
@@ -0,0 +1,82 @@ | |||
### CMakeLists automatically created with AutoVala | |||
### Do not edit | |||
project (pamac) | |||
cmake_minimum_required (VERSION 2.6) | |||
cmake_policy (VERSION 2.8) | |||
list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) | |||
enable_testing () | |||
option(ICON_UPDATE "Update the icon cache after installing" ON) | |||
option(BUILD_VALADOC "Build API documentation if Valadoc is available" OFF) | |||
option(DISABLE_AUR "DISABLE_AUR" OFF) | |||
option(KDE_TRAY "KDE_TRAY" OFF) | |||
if( NOT CMAKE_BUILD_TYPE ) | |||
set(CMAKE_BUILD_TYPE Release) | |||
endif() | |||
include(GNUInstallDirs) | |||
if( ( ${CMAKE_INSTALL_PREFIX} MATCHES "^/usr/local" ) ) | |||
# A workaround to ensure that works 'out of the box' in Debian-based systems | |||
set(CMAKE_INSTALL_LIBDIR lib) | |||
endif() | |||
set(HAVE_VALADOC OFF) | |||
if(BUILD_VALADOC) | |||
find_package(Valadoc) | |||
if(VALADOC_FOUND) | |||
set(HAVE_VALADOC ON) | |||
include(Valadoc) | |||
else() | |||
message("Valadoc not found, will not build documentation") | |||
endif() | |||
endif() | |||
find_package(PkgConfig) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} gdk-3.0) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} gtk+-3.0) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} json-glib-1.0) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} libalpm) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} libcurl) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} libnotify) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} libsoup-2.4) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} polkit-gobject-1) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} vte-2.91) | |||
if (KDE_TRAY) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} appindicator3-0.1) | |||
endif () | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} gio-2.0) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} glib-2.0) | |||
set(MODULES_TO_CHECK ${MODULES_TO_CHECK} gobject-2.0) | |||
pkg_check_modules(DEPS REQUIRED ${MODULES_TO_CHECK}) | |||
find_program ( WHERE_GRESOURCE glib-compile-resources ) | |||
if ( NOT WHERE_GRESOURCE ) | |||
MESSAGE(FATAL_ERROR "Error! GLIB-COMPILE-RESOURCES is not installed.") | |||
endif() | |||
add_subdirectory(src/vapis) | |||
add_subdirectory(po) | |||
add_subdirectory(data/pixmaps) | |||
add_subdirectory(data/mime) | |||
add_subdirectory(data/polkit) | |||
add_subdirectory(data/systemd) | |||
add_subdirectory(data/dbus) | |||
add_subdirectory(data/config) | |||
add_subdirectory(data) | |||
add_subdirectory(data/icons/24x24/status) | |||
add_subdirectory(data/icons/16x16/apps) | |||
add_subdirectory(data/config/noaur) | |||
add_subdirectory(data/icons/32x32/apps) | |||
add_subdirectory(data/interface) | |||
add_subdirectory(src) | |||
add_subdirectory(src/aur) | |||
add_subdirectory(src/pamac-user-daemon) | |||
add_subdirectory(src/pamac-tray) | |||
add_subdirectory(src/pamac-install) | |||
add_subdirectory(src/pamac-manager) | |||
add_subdirectory(src/pamac-system-daemon) | |||
@@ -1,92 +0,0 @@ | |||
prefix ?= /usr | |||
bindir := $(prefix)/bin | |||
libdir := $(prefix)/lib | |||
includedir := $(prefix)/include | |||
datadir := $(prefix)/share | |||
localedir := $(datadir)/locale | |||
sysconfdir ?= /etc | |||
use_appindicator ?= false | |||
all: | |||
cd resources && make resources | |||
cd src && make binaries | |||
[ $(use_appindicator) = true ] && cd src && make pamac-tray-appindicator || echo "no appindicator support" | |||
cd po && make gettext | |||
clean: | |||
cd resources && make clean | |||
cd src && make clean | |||
cd po && make clean | |||
install: install_pamac-tray-appindicator | |||
mkdir -p $(prefix)/share/icons/hicolor | |||
cp -r data/icons/* $(prefix)/share/icons/hicolor | |||
mkdir -p $(localedir) | |||
cp -r po/locale/* $(localedir) | |||
install -Dm644 src/pamac.h $(includedir)/pamac.h | |||
install -Dm644 src/pamac.vapi $(datadir)/vala/vapi/pamac.vapi | |||
install -Dm755 src/libpamac.so $(libdir)/libpamac.so | |||
install -Dm755 src/pamac-user-daemon $(bindir)/pamac-user-daemon | |||
install -Dm744 src/pamac-system-daemon $(bindir)/pamac-system-daemon | |||
install -Dm755 src/pamac-tray $(bindir)/pamac-tray | |||
install -Dm755 src/pamac-manager $(bindir)/pamac-manager | |||
ln -srf $(bindir)/pamac-manager $(bindir)/pamac-updater | |||
install -Dm755 src/pamac-install $(bindir)/pamac-install | |||
install -Dm644 data/applications/pamac-tray.desktop $(sysconfdir)/xdg/autostart/pamac-tray.desktop | |||
install -Dm644 data/applications/pamac-manager.desktop $(datadir)/applications/pamac-manager.desktop | |||
install -Dm644 data/applications/pamac-updater.desktop $(datadir)/applications/pamac-updater.desktop | |||
install -Dm644 data/applications/pamac-install.desktop $(datadir)/applications/pamac-install.desktop | |||
install -Dm644 data/config/pamac.conf $(sysconfdir)/pamac.conf | |||
install -Dm644 data/dbus/org.manjaro.pamac.system.conf $(sysconfdir)/dbus-1/system.d/org.manjaro.pamac.system.conf | |||
install -Dm644 data/dbus/org.manjaro.pamac.user.service $(datadir)/dbus-1/services/org.manjaro.pamac.user.service | |||
install -Dm644 data/dbus/org.manjaro.pamac.system.service $(datadir)/dbus-1/system-services/org.manjaro.pamac.system.service | |||
install -Dm644 data/systemd/pamac-system.service $(libdir)/systemd/system/pamac-system.service | |||
install -Dm644 data/systemd/pamac-cleancache.service $(libdir)/systemd/system/pamac-cleancache.service | |||
install -Dm644 data/systemd/pamac-cleancache.timer $(libdir)/systemd/system/pamac-cleancache.timer | |||
install -Dm644 data/systemd/pamac-mirrorlist.service $(libdir)/systemd/system/pamac-mirrorlist.service | |||
install -Dm644 data/systemd/pamac-mirrorlist.timer $(libdir)/systemd/system/pamac-mirrorlist.timer | |||
mkdir -p $(sysconfdir)/systemd/system/multi-user.target.wants | |||
ln -srf $(libdir)/systemd/system/pamac-cleancache.timer $(sysconfdir)/systemd/system/multi-user.target.wants | |||
ln -srf $(libdir)/systemd/system/pamac-mirrorlist.timer $(sysconfdir)/systemd/system/multi-user.target.wants | |||
install -Dm644 data/polkit/org.manjaro.pamac.policy $(datadir)/polkit-1/actions/org.manjaro.pamac.policy | |||
install -Dm644 data/mime/x-alpm-package.xml $(datadir)/mime/packages/x-alpm-package.xml | |||
install_pamac-tray-appindicator: | |||
install -Dm755 src/pamac-tray-appindicator $(bindir)/pamac-tray-appindicator &> /dev/null && \ | |||
install -Dm644 data/applications/pamac-tray-appindicator.desktop $(sysconfdir)/xdg/autostart/pamac-tray-appindicator.desktop &> /dev/null || echo no appindicator support | |||
uninstall: | |||
rm -f $(datadir)/icons/hicolor/16x16/apps/system-software-install.png | |||
rm -f $(datadir)/icons/hicolor/24x24/status/pamac-tray-no-update.png | |||
rm -f $(datadir)/icons/hicolor/24x24/status/pamac-tray-update.png | |||
rm -f $(datadir)/icons/hicolor/32x32/apps/system-software-install.png | |||
rm -f $(datadir)/locale/*/LC_MESSAGES/pamac.mo | |||
rm -f $(includedir)/pamac.h | |||
rm -f $(datadir)/vala/vapi/pamac.vapi | |||
rm -f $(libdir)/libpamac.so | |||
rm -f $(bindir)/pamac-user-daemon | |||
rm -f $(bindir)/pamac-system-daemon | |||
rm -f $(bindir)/pamac-tray | |||
rm -f $(bindir)/pamac-tray-appindicator | |||
rm -f $(bindir)/pamac-manager | |||
rm -f $(bindir)/pamac-updater | |||
rm -f $(bindir)/pamac-install | |||
rm -f $(sysconfdir)/xdg/autostart/pamac-tray.desktop | |||
rm -f $(sysconfdir)/xdg/autostart/pamac-tray-appindicator.desktop | |||
rm -f $(datadir)/applications/pamac-manager.desktop | |||
rm -f $(datadir)/applications/pamac-updater.desktop | |||
rm -f $(datadir)/applications/pamac-install.desktop | |||
rm -f $(sysconfdir)/pamac.conf | |||
rm -f $(sysconfdir)/dbus-1/system.d/org.manjaro.pamac.system.conf | |||
rm -f $(datadir)/dbus-1/services/org.manjaro.pamac.user.service | |||
rm -f $(datadir)/dbus-1/system-services/org.manjaro.pamac.system.service | |||
rm -f $(libdir)/systemd/system/pamac-system.service | |||
rm -f $(libdir)/systemd/system/pamac-cleancache.service | |||
rm -f $(sysconfdir)/systemd/system/pamac-cleancache.timer | |||
rm -f $(libdir)/systemd/system/pamac-mirrorlist.service | |||
rm -f $(sysconfdir)/systemd/system/pamac-mirrorlist.timer | |||
rm -f $(libdir)/systemd/system/multi-user.target.wants/pamac-cleancache.timer | |||
rm -f $(datadir)/polkit-1/actions/org.manjaro.pamac.policy | |||
rm -f $(datadir)/mime/packages/x-alpm-package.xml |
@@ -1,12 +0,0 @@ | |||
A DBus daemon and Gtk3 frontend for libalpm written in Vala | |||
Features: | |||
- Alpm bindings for Vala | |||
- a DBus daemon to perform every tasks with root access using polkit to check authorizations | |||
- a Gtk3 Package Manager | |||
- a Gtk3 Updates Manager | |||
- a Tray icon with configurable periodic refresh and updates notifications | |||
- a complete AUR support: | |||
* multiple words search capability | |||
* Enable/Disable check updates from AUR | |||
* Build and update AUR packages |
@@ -0,0 +1,67 @@ | |||
# Pamac-classic | |||
A graphical package manager for pacman | |||
# Features: | |||
- Alpm bindings for Vala | |||
- A DBus daemon to perform every tasks with root access using polkit to check authorizations | |||
- A Gtk3 Package Manager | |||
- A Gtk3 Updates Manager | |||
- A Tray icon with configurable periodic refresh and updates notifications | |||
- Complete AUR support: | |||
* Multiple words search capability | |||
* Enable/Disable check updates from AUR | |||
* Build and update AUR packages | |||
# How to build | |||
## Requirements | |||
- GTK+: 3.0 | |||
- GIO: 2.0 | |||
- GLib: 2.0 | |||
- GObject: 2.0 | |||
- Json-Glib: 1.0 | |||
- libalpm | |||
- libcurl | |||
- LibSoup: 2.4 | |||
- polkit-gobject-1 | |||
- libnotify | |||
- vte: 2.91 | |||
- appindicator-gtk3 (optional to build KDE tray icon) | |||
- CMake | |||
- Vala | |||
- AutoVala (optional to regenerate CMake files) | |||
## Using CMake | |||
``` | |||
mkdir build | |||
cd build | |||
cmake .. \ | |||
-DCMAKE_INSTALL_PREFIX=/usr \ | |||
-DCMAKE_INSTALL_LIBDIR=/usr/lib \ | |||
-DCMAKE_INSTALL_SYSCONFDIR=/etc | |||
make | |||
``` | |||
### Extra build flags | |||
- -DDISABLE_AUR=ON (to disable AUR in Pamac) | |||
- -DKDE_TRAY=true (to build kde tray icon instead of gtk tray icon) | |||
## Using configure | |||
The configure script is just a wrapper for CMake, in the background the build process is the same. | |||
``` | |||
./configure --prefix=/usr \ | |||
--libdir=/usr/lib \ | |||
--sysconfdir=/etc | |||
make | |||
``` | |||
### Extra configure options | |||
- --disable-aur (to disable Aur in Pamac) | |||
- --enable-kde-tray (to build kde tray icon instead of gtk tray icon) |
@@ -1 +0,0 @@ | |||
@@ -0,0 +1,14 @@ | |||
#!/bin/bash | |||
# Generate translations for certain files such as polkit | |||
pushd "${PWD}"/po | |||
make | |||
make clean | |||
popd | |||
# Update the autovala environment | |||
export AUTOVALA_CMAKE_SCRIPT="${PWD}"/autovala/cmake | |||
autovala refresh | |||
autovala cmake | |||
cp "${PWD}"/autovala/configure "${PWD}"/configure | |||
cp "${PWD}"/autovala/configure-custom.sh "${PWD}"/.configure-custom.sh |
@@ -0,0 +1,17 @@ | |||
### CMakeLists automatically created with AutoVala | |||
### Do not edit | |||
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/) | |||
install(DIRECTORY | |||
${CMAKE_CURRENT_SOURCE_DIR}/ | |||
DESTINATION | |||
share/autovala/cmake | |||
) | |||
ELSE() | |||
install(FILES | |||
${CMAKE_CURRENT_SOURCE_DIR}/ | |||
DESTINATION | |||
share/autovala/cmake | |||
) | |||
ENDIF() | |||
@@ -0,0 +1,80 @@ | |||
## | |||
# Copyright 2009-2010 Jakob Westhoff, 2014 Raster Software Vigo | |||
# All rights reserved. | |||
# | |||
# Redistribution and use in source and binary forms, with or without | |||
# modification, are permitted provided that the following conditions are met: | |||
# | |||
# 1. Redistributions of source code must retain the above copyright notice, | |||
# this list of conditions and the following disclaimer. | |||
# | |||
# 2. Redistributions in binary form must reproduce the above copyright notice, | |||
# this list of conditions and the following disclaimer in the documentation | |||
# and/or other materials provided with the distribution. | |||
# | |||
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR | |||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
# | |||
# The views and conclusions contained in the software and documentation are those | |||
# of the authors and should not be interpreted as representing official policies, | |||
# either expressed or implied, of Jakob Westhoff | |||
## | |||
## | |||
# Find module for the Vala compiler (valac) | |||
# | |||
# This module determines wheter a Vala compiler is installed on the current | |||
# system and where its executable is. | |||
# | |||
# Call the module using "find_package(Vala) from within your CMakeLists.txt. | |||
# | |||
# The following variables will be set after an invocation: | |||
# | |||
# VALA_FOUND Whether the vala compiler has been found or not | |||
# VALA_EXECUTABLE Full path to the valac executable if it has been found | |||
# VALA_VERSION Version number of the available valac | |||
## | |||
# Search for the valac executable in the usual system paths. | |||
find_program(VALA_EXECUTABLE NAMES valac) | |||
if (VALA_EXECUTABLE STREQUAL "VALA_EXECUTABLE-NOTFOUND") | |||
# if valac executable is not found, it can be that valac is not installed, or | |||
# that the OS is source-based (like gentoo), and doesn't do a link from | |||
# valac-X.YY to valac. In that case, search for the specific valac binary after | |||
if (NOT VALA_DEFERRING_COMPILER_SEARCH) | |||
message (STATUS "VALAC not found. Deferring compiler search") | |||
endif(NOT VALA_DEFERRING_COMPILER_SEARCH) | |||
set(VALA_DEFERRING_COMPILER_SEARCH TRUE) | |||
unset(VALA_EXECUTABLE) | |||
unset(VALA_VERSION) | |||
else(VALA_EXECUTABLE STREQUAL "VALA_EXECUTABLE-NOTFOUND") | |||
# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call. | |||
# Furthermore set VALA_FOUND to TRUE if Vala has been found (aka. | |||
# VALA_EXECUTABLE is set) | |||
include(FindPackageHandleStandardArgs) | |||
find_package_handle_standard_args(Vala DEFAULT_MSG VALA_EXECUTABLE) | |||
mark_as_advanced(VALA_EXECUTABLE) | |||
# Determine the valac version | |||
if(VALA_FOUND) | |||
execute_process(COMMAND ${VALA_EXECUTABLE} "--version" OUTPUT_VARIABLE "VALA_VERSION") | |||
string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION}) | |||
string(STRIP ${VALA_VERSION} "VALA_VERSION") | |||
endif(VALA_FOUND) | |||
endif(VALA_EXECUTABLE STREQUAL "VALA_EXECUTABLE-NOTFOUND") |
@@ -0,0 +1,20 @@ | |||
# Search for the valadocc executable in the usual system paths. | |||
find_program(VALADOC_EXECUTABLE NAMES valadoc) | |||
# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call. | |||
# Furthermore set VALA_FOUND to TRUE if Vala has been found (aka. | |||
# VALA_EXECUTABLE is set) | |||
include(FindPackageHandleStandardArgs) | |||
find_package_handle_standard_args(Valadoc DEFAULT_MSG VALADOC_EXECUTABLE) | |||
mark_as_advanced(VALADOC_EXECUTABLE) | |||
# Determine the valac version | |||
if(VALA_FOUND) | |||
execute_process(COMMAND ${VALA_EXECUTABLE} "--version" | |||
OUTPUT_VARIABLE "VALA_VERSION") | |||
string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION}) | |||
string(STRIP ${VALA_VERSION} "VALA_VERSION") | |||
endif(VALA_FOUND) |
@@ -0,0 +1,34 @@ | |||
macro(add_target_gir TARGET_NAME GIR_NAME HEADER CFLAGS GRANITE_VERSION) | |||
set(PACKAGES "") | |||
foreach(PKG ${ARGN}) | |||
set(PACKAGES ${PACKAGES} --include=${PKG}) | |||
endforeach() | |||
install(CODE "set(ENV{LD_LIBRARY_PATH} \"${CMAKE_CURRENT_BINARY_DIR}:\$ENV{LD_LIBRARY_PATH}\") | |||
execute_process(COMMAND g-ir-scanner ${CFLAGS} -n ${GIR_NAME} | |||
--quiet | |||
--library ${TARGET_NAME} ${PACKAGES} | |||
-o ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.gir | |||
-L${CMAKE_CURRENT_BINARY_DIR} | |||
--nsversion=${GRANITE_VERSION} ${HEADER})") | |||
install(CODE "execute_process(COMMAND g-ir-compiler ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.gir -o ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.typelib)") | |||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.gir DESTINATION share/gir-1.0/) | |||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.typelib DESTINATION lib/girepository-1.0/) | |||
endmacro() | |||
macro(add_target_gir_with_executable TARGET_NAME EXE_NAME GIR_NAME HEADER EXE_HEADER CFLAGS GRANITE_VERSION) | |||
set(PACKAGES "") | |||
foreach(PKG ${ARGN}) | |||
set(PACKAGES ${PACKAGES} --include=${PKG}) | |||
endforeach() | |||
install(CODE "set(ENV{LD_LIBRARY_PATH} \"${CMAKE_CURRENT_BINARY_DIR}:\$ENV{LD_LIBRARY_PATH}\") | |||
execute_process(COMMAND g-ir-scanner ${CFLAGS} -n ${GIR_NAME} | |||
--quiet | |||
--library ${TARGET_NAME} --program ${EXE_NAME} ${PACKAGES} | |||
-o ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.gir | |||
-L${CMAKE_CURRENT_BINARY_DIR} | |||
-I${CMAKE_CURRENT_BINARY_DIR} | |||
--nsversion=${GRANITE_VERSION} ${HEADER} ${EXE_HEADER})") | |||
install(CODE "execute_process(COMMAND g-ir-compiler ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.gir -o ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.typelib)") | |||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.gir DESTINATION share/gir-1.0/) | |||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GRANITE_VERSION}.typelib DESTINATION lib/girepository-1.0/) | |||
endmacro() |
@@ -0,0 +1,42 @@ | |||
# GSettings.cmake, CMake macros written for Marlin, feel free to re-use them. | |||
option (GSETTINGS_LOCALINSTALL "Install GSettings Schemas locally instead of to the GLib prefix" ON) | |||
option (GSETTINGS_COMPILE "Compile GSettings Schemas after installation" ${GSETTINGS_LOCALINSTALL}) | |||
if(GSETTINGS_LOCALINSTALL) | |||
message(STATUS "GSettings schemas will be installed locally.") | |||
endif() | |||
if(GSETTINGS_COMPILE) | |||
message(STATUS "GSettings shemas will be compiled.") | |||
endif() | |||
macro(add_schema SCHEMA_NAME) | |||
set(PKG_CONFIG_EXECUTABLE pkg-config) | |||
# Have an option to not install the schema into where GLib is | |||
if (GSETTINGS_LOCALINSTALL) | |||
SET (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas/") | |||
else (GSETTINGS_LOCALINSTALL) | |||
execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
SET (GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/") | |||
endif (GSETTINGS_LOCALINSTALL) | |||
# Run the validator and error if it fails | |||
execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _glib_comple_schemas OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
execute_process (COMMAND ${_glib_comple_schemas} --dry-run --schema-file=${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME} ERROR_VARIABLE _schemas_invalid OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
if (_schemas_invalid) | |||
message (SEND_ERROR "Schema validation error: ${_schemas_invalid}") | |||
endif (_schemas_invalid) | |||
# Actually install and recomple schemas | |||
message (STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") | |||
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR} OPTIONAL) | |||
if (GSETTINGS_COMPILE) | |||
install (CODE "message (STATUS \"Compiling GSettings schemas\")") | |||
install (CODE "execute_process (COMMAND ${_glib_comple_schemas} ${GSETTINGS_DIR})") | |||
endif () | |||
endmacro() |
@@ -0,0 +1,28 @@ | |||
## | |||
# This module with create symlinks during install | |||
## | |||
macro(install_symlink _filepath _sympath) | |||
get_filename_component(_symname ${_sympath} NAME) | |||
get_filename_component(_installdir ${_sympath} PATH) | |||
if (BINARY_PACKAGING_MODE) | |||
execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink | |||
${_filepath} | |||
${CMAKE_CURRENT_BINARY_DIR}/${_symname}) | |||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_symname} | |||
DESTINATION ${_installdir}) | |||
else () | |||
install(CODE " | |||
if (\"\$ENV{DESTDIR}\" STREQUAL \"\") | |||
execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink | |||
${_filepath} | |||
${_installdir}/${_symname}) | |||
else () | |||
execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink | |||
${_filepath} | |||
\$ENV{DESTDIR}/${_installdir}/${_symname}) | |||
endif () | |||
") | |||
endif () | |||
endmacro(install_symlink) |
@@ -0,0 +1,286 @@ | |||
# CMAKE generated file: DO NOT EDIT! | |||
# Generated by "Unix Makefiles" Generator, CMake Version 2.8 | |||
# Default target executed when no arguments are given to make. | |||
default_target: all | |||
.PHONY : default_target | |||
#============================================================================= | |||
# Special targets provided by cmake. | |||
# Disable implicit rules so canoncical targets will work. | |||
.SUFFIXES: | |||
# Remove some rules from gmake that .SUFFIXES does not remove. | |||
SUFFIXES = | |||
.SUFFIXES: .hpux_make_needs_suffix_list | |||
# Suppress display of executed commands. | |||
$(VERBOSE).SILENT: | |||
# A target that is always out of date. | |||
cmake_force: | |||
.PHONY : cmake_force | |||
#============================================================================= | |||
# Set environment variables for the build. | |||
# The shell in which to execute make rules. | |||
SHELL = /bin/sh | |||
# The CMake executable. | |||
CMAKE_COMMAND = /usr/bin/cmake | |||
# The command to remove a file. | |||
RM = /usr/bin/cmake -E remove -f | |||
# The top-level source directory on which CMake was run. | |||
CMAKE_SOURCE_DIR = /home/mefrio/Scrivania/cmake | |||
# The top-level build directory on which CMake was run. | |||
CMAKE_BINARY_DIR = /home/mefrio/Scrivania/cmake/cmake | |||
#============================================================================= | |||
# Targets provided globally by CMake. | |||
# Special rule for the target edit_cache | |||
edit_cache: | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running interactive CMake command-line interface..." | |||
/usr/bin/cmake -i . | |||
.PHONY : edit_cache | |||
# Special rule for the target edit_cache | |||
edit_cache/fast: edit_cache | |||
.PHONY : edit_cache/fast | |||
# Special rule for the target install | |||
install: preinstall | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." | |||
/usr/bin/cmake -P cmake_install.cmake | |||
.PHONY : install | |||
# Special rule for the target install | |||
install/fast: preinstall/fast | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." | |||
/usr/bin/cmake -P cmake_install.cmake | |||
.PHONY : install/fast | |||
# Special rule for the target install/local | |||
install/local: preinstall | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." | |||
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake | |||
.PHONY : install/local | |||
# Special rule for the target install/local | |||
install/local/fast: install/local | |||
.PHONY : install/local/fast | |||
# Special rule for the target install/strip | |||
install/strip: preinstall | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." | |||
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake | |||
.PHONY : install/strip | |||
# Special rule for the target install/strip | |||
install/strip/fast: install/strip | |||
.PHONY : install/strip/fast | |||
# Special rule for the target list_install_components | |||
list_install_components: | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" | |||
.PHONY : list_install_components | |||
# Special rule for the target list_install_components | |||
list_install_components/fast: list_install_components | |||
.PHONY : list_install_components/fast | |||
# Special rule for the target rebuild_cache | |||
rebuild_cache: | |||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." | |||
/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) | |||
.PHONY : rebuild_cache | |||
# Special rule for the target rebuild_cache | |||
rebuild_cache/fast: rebuild_cache | |||
.PHONY : rebuild_cache/fast | |||
# The main all target | |||
all: cmake_check_build_system | |||
$(CMAKE_COMMAND) -E cmake_progress_start /home/mefrio/Scrivania/cmake/cmake/CMakeFiles /home/mefrio/Scrivania/cmake/cmake/CMakeFiles/progress.marks | |||
$(MAKE) -f CMakeFiles/Makefile2 all | |||
$(CMAKE_COMMAND) -E cmake_progress_start /home/mefrio/Scrivania/cmake/cmake/CMakeFiles 0 | |||
.PHONY : all | |||
# The main clean target | |||
clean: | |||
$(MAKE) -f CMakeFiles/Makefile2 clean | |||
.PHONY : clean | |||
# The main clean target | |||
clean/fast: clean | |||
.PHONY : clean/fast | |||
# Prepare targets for installation. | |||
preinstall: all | |||
$(MAKE) -f CMakeFiles/Makefile2 preinstall | |||
.PHONY : preinstall | |||
# Prepare targets for installation. | |||
preinstall/fast: | |||
$(MAKE) -f CMakeFiles/Makefile2 preinstall | |||
.PHONY : preinstall/fast | |||
# clear depends | |||
depend: | |||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 | |||
.PHONY : depend | |||
#============================================================================= | |||
# Target rules for targets named scratch | |||
# Build rule for target. | |||
scratch: cmake_check_build_system | |||
$(MAKE) -f CMakeFiles/Makefile2 scratch | |||
.PHONY : scratch | |||
# fast build rule for target. | |||
scratch/fast: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/build | |||
.PHONY : scratch/fast | |||
src/entry.o: src/entry.c.o | |||
.PHONY : src/entry.o | |||
# target to build an object file | |||
src/entry.c.o: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/entry.c.o | |||
.PHONY : src/entry.c.o | |||
src/entry.i: src/entry.c.i | |||
.PHONY : src/entry.i | |||
# target to preprocess a source file | |||
src/entry.c.i: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/entry.c.i | |||
.PHONY : src/entry.c.i | |||
src/entry.s: src/entry.c.s | |||
.PHONY : src/entry.s | |||
# target to generate assembly for a file | |||
src/entry.c.s: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/entry.c.s | |||
.PHONY : src/entry.c.s | |||
src/main_window.o: src/main_window.c.o | |||
.PHONY : src/main_window.o | |||
# target to build an object file | |||
src/main_window.c.o: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/main_window.c.o | |||
.PHONY : src/main_window.c.o | |||
src/main_window.i: src/main_window.c.i | |||
.PHONY : src/main_window.i | |||
# target to preprocess a source file | |||
src/main_window.c.i: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/main_window.c.i | |||
.PHONY : src/main_window.c.i | |||
src/main_window.s: src/main_window.c.s | |||
.PHONY : src/main_window.s | |||
# target to generate assembly for a file | |||
src/main_window.c.s: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/main_window.c.s | |||
.PHONY : src/main_window.c.s | |||
src/menu.o: src/menu.c.o | |||
.PHONY : src/menu.o | |||
# target to build an object file | |||
src/menu.c.o: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/menu.c.o | |||
.PHONY : src/menu.c.o | |||
src/menu.i: src/menu.c.i | |||
.PHONY : src/menu.i | |||
# target to preprocess a source file | |||
src/menu.c.i: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/menu.c.i | |||
.PHONY : src/menu.c.i | |||
src/menu.s: src/menu.c.s | |||
.PHONY : src/menu.s | |||
# target to generate assembly for a file | |||
src/menu.c.s: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/menu.c.s | |||
.PHONY : src/menu.c.s | |||
src/notebook.o: src/notebook.c.o | |||
.PHONY : src/notebook.o | |||
# target to build an object file | |||
src/notebook.c.o: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/notebook.c.o | |||
.PHONY : src/notebook.c.o | |||
src/notebook.i: src/notebook.c.i | |||
.PHONY : src/notebook.i | |||
# target to preprocess a source file | |||
src/notebook.c.i: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/notebook.c.i | |||
.PHONY : src/notebook.c.i | |||
src/notebook.s: src/notebook.c.s | |||
.PHONY : src/notebook.s | |||
# target to generate assembly for a file | |||
src/notebook.c.s: | |||
$(MAKE) -f CMakeFiles/scratch.dir/build.make CMakeFiles/scratch.dir/src/notebook.c.s | |||
.PHONY : src/notebook.c.s | |||
# Help Target | |||
help: | |||
@echo "The following are some of the valid targets for this Makefile:" | |||
@echo "... all (the default if no target is provided)" | |||
@echo "... clean" | |||
@echo "... depend" | |||
@echo "... edit_cache" | |||
@echo "... install" | |||
@echo "... install/local" | |||
@echo "... install/strip" | |||
@echo "... list_install_components" | |||
@echo "... rebuild_cache" | |||
@echo "... scratch" | |||
@echo "... src/entry.o" | |||
@echo "... src/entry.i" | |||
@echo "... src/entry.s" | |||
@echo "... src/main_window.o" | |||
@echo "... src/main_window.i" | |||
@echo "... src/main_window.s" | |||
@echo "... src/menu.o" | |||
@echo "... src/menu.i" | |||
@echo "... src/menu.s" | |||
@echo "... src/notebook.o" | |||
@echo "... src/notebook.i" | |||
@echo "... src/notebook.s" | |||
.PHONY : help | |||
#============================================================================= | |||
# Special targets to cleanup operation of make. | |||
# Special rule to run CMake to check the build system integrity. | |||
# No rule that depends on this can have commands that come from listfiles | |||
# because they might be regenerated. | |||
cmake_check_build_system: | |||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 | |||
.PHONY : cmake_check_build_system | |||
@@ -0,0 +1,36 @@ | |||
## | |||
# This is a helper Macro to parse optional arguments in Macros/Functions | |||
# It has been taken from the public CMake wiki. | |||
# See http://www.cmake.org/Wiki/CMakeMacroParseArguments for documentation and | |||
# licensing. | |||
## | |||
macro(parse_arguments prefix arg_names option_names) | |||
set(DEFAULT_ARGS) | |||
foreach(arg_name ${arg_names}) | |||
set(${prefix}_${arg_name}) | |||
endforeach(arg_name) | |||
foreach(option ${option_names}) | |||
set(${prefix}_${option} FALSE) | |||
endforeach(option) | |||
set(current_arg_name DEFAULT_ARGS) | |||
set(current_arg_list) | |||
foreach(arg ${ARGN}) | |||
set(larg_names ${arg_names}) | |||
list(FIND larg_names "${arg}" is_arg_name) | |||
if(is_arg_name GREATER -1) | |||
set(${prefix}_${current_arg_name} ${current_arg_list}) | |||
set(current_arg_name ${arg}) | |||
set(current_arg_list) | |||
else(is_arg_name GREATER -1) | |||
set(loption_names ${option_names}) | |||
list(FIND loption_names "${arg}" is_option) | |||
if(is_option GREATER -1) | |||
set(${prefix}_${arg} TRUE) | |||
else(is_option GREATER -1) | |||
set(current_arg_list ${current_arg_list} ${arg}) | |||
endif(is_option GREATER -1) | |||
endif(is_arg_name GREATER -1) | |||
endforeach(arg) | |||
set(${prefix}_${current_arg_name} ${current_arg_list}) | |||
endmacro(parse_arguments) |
@@ -0,0 +1,10 @@ | |||
Elementary CMake modules | |||
This is a set of CMake modules: Translations, GSettings, and Vala modules. | |||
For all the Vala related modules see README.Vala.rst: | |||
- ParseArguments.cmake | |||
- ValaPrecompile.cmake | |||
- ValaVersion.cmake | |||
- FindVala.cmake | |||
@@ -0,0 +1,173 @@ | |||
========== | |||
Vala CMake | |||
========== | |||
:Author: | |||
Jakob Westhoff | |||
:Version: | |||
Draft | |||
Overview | |||
======== | |||
Vala CMake is a collection of macros for the CMake_ build system to allow the | |||
creation and management of projects developed using the Vala_ programming | |||
language or its "Genie" flavor (less tested). | |||
Installation | |||
============ | |||
To use the Vala macros in your own project you need to copy the macro files to | |||
an arbitrary folder in your projects directory and reference them in your | |||
``CMakeLists.txt`` file. | |||
Assuming the macros are stored under ``cmake/vala`` in your projects folder you | |||
need to add the following information to your base ``CMakeLists.txt``:: | |||
list(APPEND CMAKE_MODULE_PATH | |||
${CMAKE_SOURCE_DIR}/cmake/vala | |||
) | |||
After the new module path as been added you can simply include the provided | |||
modules or use the provided find routines. | |||
Finding Vala | |||
============ | |||
The find module for vala works like any other Find module in CMake. | |||
You can use it by simply calling the usual ``find_package`` function. Default | |||
parameters like ``REQUIRED`` and ``QUIETLY`` are supported. | |||
:: | |||
find_package(Vala REQUIRED) | |||
After a successful call to the find_package function the following variables | |||
will be set: | |||
VALA_FOUND | |||
Whether the vala compiler has been found or not | |||
VALA_EXECUTABLE | |||
Full path to the valac executable if it has been found | |||
VALA_VERSION | |||
Version number of the available valac | |||
Precompiling Vala sources | |||
========================= | |||
CMake is mainly supposed to handle c or c++ based projects. Luckily every vala | |||
program is translated into plain c code using the vala compiler, followed by | |||
normal compilation of the generated c program using gcc. | |||
The macro ``vala_precompile`` uses that fact to create c files from your .vala | |||
sources for further CMake processing. | |||
The first parameter provided is a variable, which will be filled with a list of | |||
c files outputted by the vala compiler. This list can than be used in | |||
conjunction with functions like ``add_executable`` or others to create the | |||
necessary compile rules with CMake. | |||
The initial variable is followed by a list of .vala files to be compiled. | |||
Please take care to add every vala file belonging to the currently compiled | |||
project or library as Vala will otherwise not be able to resolve all | |||
dependencies. | |||
The following sections may be specified afterwards to provide certain options | |||
to the vala compiler: | |||
PACKAGES | |||
A list of vala packages/libraries to be used during the compile cycle. The | |||
package names are exactly the same, as they would be passed to the valac | |||
"--pkg=" option. | |||
OPTIONS | |||
A list of optional options to be passed to the valac executable. This can be | |||
used to pass "--thread" for example to enable multi-threading support. | |||
DIRECTORY | |||
Specify the directory where the output source files will be stored. If | |||
ommitted, the source files will be stored in CMAKE_CURRENT_BINARY_DIR. | |||
CUSTOM_VAPIS | |||
A list of custom vapi files to be included for compilation. This can be | |||
useful to include freshly created vala libraries without having to install | |||
them in the system. | |||
GENERATE_VAPI | |||
Pass all the needed flags to the compiler to create an internal vapi for | |||
the compiled library. The provided name will be used for this and a | |||
<provided_name>.vapi file will be created. | |||
GENERATE_HEADER | |||
Let the compiler generate a header file for the compiled code. There will | |||
be a header file as well as an internal header file being generated called | |||
<provided_name>.h and <provided_name>_internal.h | |||
The following call is a simple example to the vala_precompile macro showing an | |||
example to every of the optional sections:: | |||
vala_precompile(VALA_C | |||
source1.vala | |||
source2.vala | |||
source3.vala | |||
PACKAGES | |||
gtk+-2.0 | |||
gio-1.0 | |||
posix | |||
OPTIONS | |||
--thread | |||
CUSTOM_VAPIS | |||
some_vapi.vapi | |||
GENERATE_VAPI | |||
myvapi | |||
GENERATE_HEADER | |||
myheader | |||
) | |||
Most important is the variable VALA_C which will contain all the generated c | |||
file names after the call. The easiest way to use this information is to tell | |||
CMake to create an executable out of it. | |||
:: | |||
add_executable(myexecutable ${VALA_C}) | |||
Further reading | |||
=============== | |||
The `Pdf Presenter Console`__ , which is a vala based project of mine, makes | |||
heavy usage of the here described macros. To look at a real world example of | |||
these macros the mentioned project is the right place to take a look. The svn | |||
trunk of it can be found at:: | |||
svn://pureenergy.cc/pdf_presenter_console/trunk | |||
__ http://westhoffswelt.de/projects/pdf_presenter_console.html | |||
Acknowledgments | |||
=============== | |||
Thanks go out to Florian Sowade, a fellow local PHP-Usergroupie, who helped me | |||
a lot with the initial version of this macros and always answered my mostly | |||
dumb CMake questions. | |||
.. _CMake: http://cmake.org | |||
.. _Vala: http://live.gnome.org/Vala | |||
.. _Genie: http://live.gnome.org/Genie | |||
.. | |||
Local Variables: | |||
mode: rst | |||
fill-column: 79 | |||
End: | |||
vim: et syn=rst tw=79 |
@@ -0,0 +1,5 @@ | |||
# Test macros for Marlin, feel free to re-use them. | |||
macro(add_test_executable EXE_NAME) | |||
add_test(${EXE_NAME} gtester ${CMAKE_CURRENT_BINARY_DIR}/${EXE_NAME}) | |||
endmacro() |
@@ -0,0 +1,66 @@ | |||
# Translations.cmake, CMake macros written for Marlin, feel free to re-use them | |||
macro(add_translations_directory NLS_PACKAGE) | |||
add_custom_target (i18n ALL COMMENT โBuilding i18n messages.โ) | |||
find_program (MSGFMT_EXECUTABLE msgfmt) | |||
file (GLOB PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.po) | |||
foreach (PO_INPUT ${PO_FILES}) | |||
get_filename_component (PO_INPUT_BASE ${PO_INPUT} NAME_WE) | |||
set (MO_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PO_INPUT_BASE}.mo) | |||
add_custom_command (TARGET i18n COMMAND ${MSGFMT_EXECUTABLE} -o ${MO_OUTPUT} ${PO_INPUT}) | |||
install (FILES ${MO_OUTPUT} DESTINATION | |||
share/locale/${PO_INPUT_BASE}/LC_MESSAGES | |||
RENAME ${NLS_PACKAGE}.mo) | |||
endforeach (PO_INPUT ${PO_FILES}) | |||
endmacro(add_translations_directory) | |||
macro(add_translations_catalog NLS_PACKAGE) | |||
add_custom_target (pot COMMENT โBuilding translation catalog.โ) | |||
find_program (XGETTEXT_EXECUTABLE xgettext) | |||
set(C_SOURCE "") | |||
set(VALA_SOURCE "") | |||
set(GLADE_SOURCE "") | |||
foreach(FILES_INPUT ${ARGN}) | |||
set(BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${FILES_INPUT}) | |||
file (GLOB_RECURSE SOURCE_FILES ${BASE_DIRECTORY}/*.c) | |||
foreach(C_FILE ${SOURCE_FILES}) | |||
set(C_SOURCE ${C_SOURCE} ${C_FILE}) | |||
endforeach() | |||
file (GLOB_RECURSE SOURCE_FILES ${BASE_DIRECTORY}/*.vala) | |||
foreach(VALA_C_FILE ${SOURCE_FILES}) | |||
set(VALA_SOURCE ${VALA_SOURCE} ${VALA_C_FILE}) | |||
endforeach() | |||
file (GLOB_RECURSE SOURCE_FILES ${BASE_DIRECTORY}/*.ui) | |||
foreach(GLADE_C_FILE ${SOURCE_FILES}) | |||
set(GLADE_SOURCE ${GLADE_SOURCE} ${GLADE_C_FILE}) | |||
endforeach() | |||
endforeach() | |||
set(BASE_XGETTEXT_COMMAND | |||
${XGETTEXT_EXECUTABLE} -d ${NLS_PACKAGE} | |||
-o ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_PACKAGE}.pot | |||
--keyword="_" --keyword="N_" --from-code=UTF-8) | |||
set(CONTINUE_FLAG "") | |||
IF(NOT "${C_SOURCE}" STREQUAL "") | |||
add_custom_command(TARGET pot COMMAND ${BASE_XGETTEXT_COMMAND} ${C_SOURCE}) | |||
set(CONTINUE_FLAG "-j") | |||
ENDIF() | |||
IF(NOT "${VALA_SOURCE}" STREQUAL "") | |||
add_custom_command(TARGET pot COMMAND ${BASE_XGETTEXT_COMMAND} ${CONTINUE_FLAG} -LC\# ${VALA_SOURCE}) | |||
set(CONTINUE_FLAG "-j") | |||
ENDIF() | |||
IF(NOT "${GLADE_SOURCE}" STREQUAL "") | |||
add_custom_command (TARGET pot COMMAND ${BASE_XGETTEXT_COMMAND} ${CONTINUE_FLAG} -LGlade ${GLADE_SOURCE}) | |||
ENDIF() | |||
endmacro() |
@@ -0,0 +1,243 @@ | |||
## | |||
# Copyright 2009-2010 Jakob Westhoff. All rights reserved. | |||
# Copyright 2012 elementary. | |||
# | |||
# Redistribution and use in source and binary forms, with or without | |||
# modification, are permitted provided that the following conditions are met: | |||
# | |||
# 1. Redistributions of source code must retain the above copyright notice, | |||
# this list of conditions and the following disclaimer. | |||
# | |||
# 2. Redistributions in binary form must reproduce the above copyright notice, | |||
# this list of conditions and the following disclaimer in the documentation | |||
# and/or other materials provided with the distribution. | |||
# | |||
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR | |||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
# | |||
# The views and conclusions contained in the software and documentation are those | |||
# of the authors and should not be interpreted as representing official policies, | |||
# either expressed or implied, of Jakob Westhoff | |||
## | |||
include(ParseArguments) | |||
find_package(Vala REQUIRED) | |||
## | |||
# Compile vala files to their c equivalents for further processing. | |||
# | |||
# The "vala_precompile" macro takes care of calling the valac executable on the | |||
# given source to produce c files which can then be processed further using | |||
# default cmake functions. | |||
# | |||
# The first parameter provided is a variable, which will be filled with a list | |||
# of c files outputted by the vala compiler. This list can than be used in | |||
# conjuction with functions like "add_executable" or others to create the | |||
# neccessary compile rules with CMake. | |||
# | |||
# The initial variable is followed by a list of .vala files to be compiled. | |||
# Please take care to add every vala file belonging to the currently compiled | |||
# project or library as Vala will otherwise not be able to resolve all | |||
# dependencies. | |||
# | |||
# The following sections may be specified afterwards to provide certain options | |||
# to the vala compiler: | |||
# | |||
# PACKAGES | |||
# A list of vala packages/libraries to be used during the compile cycle. The | |||
# package names are exactly the same, as they would be passed to the valac | |||
# "--pkg=" option. | |||
# | |||
# OPTIONS | |||
# A list of optional options to be passed to the valac executable. This can be | |||
# used to pass "--thread" for example to enable multi-threading support. | |||
# | |||
# CUSTOM_VAPIS | |||
# A list of custom vapi files to be included for compilation. This can be | |||
# useful to include freshly created vala libraries without having to install | |||
# them in the system. | |||
# | |||
# GENERATE_VAPI | |||
# Pass all the needed flags to the compiler to create an internal vapi for | |||
# the compiled library. The provided name will be used for this and a | |||
# <provided_name>.vapi file will be created. | |||
# | |||
# GENERATE_HEADER | |||
# Let the compiler generate a header file for the compiled code. There will | |||
# be a header file as well as an internal header file being generated called | |||
# <provided_name>.h and <provided_name>_internal.h | |||
# | |||
# GENERATE_GIR | |||
# Have the compiler generate a GObject-Introspection repository file with | |||
# name: <provided_name>.gir. This can be later used to create a binary typelib | |||
# using the GI compiler. | |||
# | |||
# GENERATE_SYMBOLS | |||
# Output a <provided_name>.symbols file containing all the exported symbols. | |||
# | |||
# The following call is a simple example to the vala_precompile macro showing | |||
# an example to every of the optional sections: | |||
# | |||
# vala_precompile(VALA_C mytargetname | |||
# source1.vala | |||
# source2.vala | |||
# source3.vala | |||
# PACKAGES | |||
# gtk+-2.0 | |||
# gio-1.0 | |||
# posix | |||
# DIRECTORY | |||
# gen | |||
# OPTIONS | |||
# --thread | |||
# CUSTOM_VAPIS | |||
# some_vapi.vapi | |||
# GENERATE_VAPI | |||
# myvapi | |||
# GENERATE_HEADER | |||
# myheader | |||
# GENERATE_GIR | |||
# mygir | |||
# GENERATE_SYMBOLS | |||
# mysymbols | |||
# ) | |||
# | |||
# Most important is the variable VALA_C which will contain all the generated c | |||
# file names after the call. | |||
## | |||
macro(vala_precompile output target_name) | |||
parse_arguments(ARGS "TARGET;PACKAGES;OPTIONS;DIRECTORY;GENERATE_GIR;GENERATE_SYMBOLS;GENERATE_HEADER;GENERATE_VAPI;CUSTOM_VAPIS" "" ${ARGN}) | |||
if(ARGS_DIRECTORY) | |||
set(DIRECTORY ${ARGS_DIRECTORY}) | |||
else(ARGS_DIRECTORY) | |||
set(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | |||
endif(ARGS_DIRECTORY) | |||
include_directories(${DIRECTORY}) | |||
set(vala_pkg_opts "") | |||
foreach(pkg ${ARGS_PACKAGES}) | |||
list(APPEND vala_pkg_opts "--pkg=${pkg}") | |||
endforeach(pkg ${ARGS_PACKAGES}) | |||
set(in_files "") | |||
set(out_files "") | |||
set(out_files_display "") | |||
set(${output} "") | |||
foreach(src ${ARGS_DEFAULT_ARGS}) | |||
string(REGEX MATCH "^([a-zA-Z]:)?/" IS_MATCHED ${src}) | |||
if(${IS_MATCHED} MATCHES "/") | |||
set(src_file_path ${src}) | |||
else() | |||
set(src_file_path ${CMAKE_CURRENT_SOURCE_DIR}/${src}) | |||
endif() | |||
list(APPEND in_files ${src_file_path}) | |||
string(REPLACE ".vala" ".c" src ${src}) | |||
string(REPLACE ".gs" ".c" src ${src}) | |||
if(${IS_MATCHED} MATCHES "/") | |||
get_filename_component(VALA_FILE_NAME ${src} NAME) | |||
set(out_file "${DIRECTORY}/${VALA_FILE_NAME}") | |||
list(APPEND out_files "${DIRECTORY}/${VALA_FILE_NAME}") | |||
else() | |||
set(out_file "${DIRECTORY}/${src}") | |||
list(APPEND out_files "${DIRECTORY}/${src}") | |||
endif() | |||
list(APPEND ${output} ${out_file}) | |||
list(APPEND out_files_display "${src}") | |||
endforeach(src ${ARGS_DEFAULT_ARGS}) | |||
set(custom_vapi_arguments "") | |||
if(ARGS_CUSTOM_VAPIS) | |||
foreach(vapi ${ARGS_CUSTOM_VAPIS}) | |||
if(${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR}) | |||
list(APPEND custom_vapi_arguments ${vapi}) | |||
else (${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR}) | |||
list(APPEND custom_vapi_arguments ${CMAKE_CURRENT_SOURCE_DIR}/${vapi}) | |||
endif(${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR}) | |||
endforeach(vapi ${ARGS_CUSTOM_VAPIS}) | |||
endif(ARGS_CUSTOM_VAPIS) | |||
set(vapi_arguments "") | |||
if(ARGS_GENERATE_VAPI) | |||
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_VAPI}.vapi") | |||
list(APPEND out_files_display "${ARGS_GENERATE_VAPI}.vapi") | |||
set(vapi_arguments "--library=${ARGS_GENERATE_VAPI}" "--vapi=${ARGS_GENERATE_VAPI}.vapi") | |||
# Header and internal header is needed to generate internal vapi | |||
if (NOT ARGS_GENERATE_HEADER) | |||
set(ARGS_GENERATE_HEADER ${ARGS_GENERATE_VAPI}) | |||
endif(NOT ARGS_GENERATE_HEADER) | |||
endif(ARGS_GENERATE_VAPI) | |||
set(header_arguments "") | |||
if(ARGS_GENERATE_HEADER) | |||
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_HEADER}.h") | |||
list(APPEND out_files_display "${ARGS_GENERATE_HEADER}.h") | |||
list(APPEND header_arguments "--header=${ARGS_GENERATE_HEADER}.h") | |||
endif(ARGS_GENERATE_HEADER) | |||
set(gir_arguments "") | |||
if(ARGS_GENERATE_GIR) | |||
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_GIR}.gir") | |||
list(APPEND out_files_display "${ARGS_GENERATE_GIR}.gir") | |||
set(gir_arguments "--gir=${ARGS_GENERATE_GIR}.gir") | |||
endif(ARGS_GENERATE_GIR) | |||
set(symbols_arguments "") | |||
if(ARGS_GENERATE_SYMBOLS) | |||
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_SYMBOLS}.symbols") | |||
list(APPEND out_files_display "${ARGS_GENERATE_SYMBOLS}.symbols") | |||
set(symbols_arguments "--symbols=${ARGS_GENERATE_SYMBOLS}.symbols") | |||
endif(ARGS_GENERATE_SYMBOLS) | |||
set(os_defines "") | |||
if(WIN32) | |||
list(APPEND os_defines "-D" "\"G_OS_WIN32\"") | |||
endif(WIN32) | |||
# Workaround for a bug that would make valac run twice. This file is written | |||
# after the vala compiler generates C source code. | |||
set (extra_name ${extra_name}_ ) | |||
set(OUTPUT_STAMP ${CMAKE_CURRENT_BINARY_DIR}/${target_name}${extra_name}valac.stamp) | |||
add_custom_command( | |||
OUTPUT | |||
${OUTPUT_STAMP} | |||
COMMAND | |||
${VALA_EXECUTABLE} | |||
ARGS | |||
"-C" | |||
${header_arguments} | |||
${vapi_arguments} | |||
${gir_arguments} | |||
${symbols_arguments} | |||
"-b" ${CMAKE_CURRENT_SOURCE_DIR} | |||
"-d" ${DIRECTORY} | |||
${os_defines} | |||
${vala_pkg_opts} | |||
${ARGS_OPTIONS} | |||
${in_files} | |||
${custom_vapi_arguments} | |||
COMMAND | |||
touch | |||
ARGS | |||
${OUTPUT_STAMP} | |||
DEPENDS | |||
${in_files} | |||
${ARGS_CUSTOM_VAPIS} | |||
COMMENT | |||
"Generating ${out_files_display}" | |||
) | |||
# This command will be run twice for some reason (pass a non-empty string to COMMENT | |||
# in order to see it). Since valac is not executed from here, this won't be a problem. | |||
add_custom_command(OUTPUT ${out_files} DEPENDS ${OUTPUT_STAMP} COMMENT "") | |||
endmacro(vala_precompile) |
@@ -0,0 +1,153 @@ | |||
## | |||
# Copyright (C) 2014 Raster Software Vigo | |||
# Autovala is free software: you can redistribute it and/or modify it | |||
# under the terms of the GNU General Public License as published by the | |||
# Free Software Foundation, either version 3 of the License, or | |||
# (at your option) any later version. | |||
# | |||
# Autovala is distributed in the hope that it will be useful, but | |||
# WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |||
# See the GNU General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU General Public License along | |||
# with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# | |||
# Copyright (C) 2013, Valama development team | |||
# | |||
# Copyright 2009-2010 Jakob Westhoff All rights reserved. | |||
# | |||
# Redistribution and use in source and binary forms, with or without | |||
# modification, are permitted provided that the following conditions are met: | |||
# | |||
# 1. Redistributions of source code must retain the above copyright notice, | |||
# this list of conditions and the following disclaimer. | |||
# | |||
# 2. Redistributions in binary form must reproduce the above copyright notice, | |||
# this list of conditions and the following disclaimer in the documentation | |||
# and/or other materials provided with the distribution. | |||
# | |||
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR | |||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
# | |||
# The views and conclusions contained in the software and documentation are those | |||
# of the authors and should not be interpreted as representing official policies, | |||
# either expressed or implied, of Jakob Westhoff | |||
## | |||
include(ParseArguments) | |||
find_package(Vala REQUIRED) | |||
## | |||
# Ensure a certain valac version is available | |||
# | |||
# The initial argument is the version to check for | |||
# | |||
# It may be followed by a optional parameter to specifiy a version range. The | |||
# following options are valid: | |||
# | |||
# EXACT | |||
# Vala needs to be available in the exact version given | |||
# | |||
# MINIMUM | |||
# The provided version is the minimum version. Therefore Vala needs to be | |||
# available in the given version or any higher version | |||
# | |||
# MAXIMUM | |||
# The provided version is the maximum. Therefore Vala needs to be available | |||
# in the given version or any version older than this | |||
# | |||
# If no option is specified the version will be treated as a minimal version. | |||
## | |||
macro(ensure_vala_version ensure_version) | |||
if (USE_VALA_BINARY) | |||
message(STATUS "Forced use of vala binary ${USE_VALA_BINARY}") | |||
set(VALA_EXECUTABLE ${USE_VALA_BINARY}) | |||
else (USE_VALA_BINARY) | |||
message(STATUS "checking for Vala version of valac-${ensure_version}") | |||
unset(version_accepted) | |||
execute_process(COMMAND "valac-${ensure_version}" "--version" | |||
OUTPUT_VARIABLE "VALA_VERSION" OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
if (NOT VALA_VERSION) | |||
find_program(VALA_EXECUTABLE "valac") | |||
# If the specific version asked for this project is not found, | |||
# try to use the one pointed by the valac link | |||
parse_arguments(ARGS "" "MINIMUM;MAXIMUM;EXACT" ${ARGN}) | |||
set(compare_message "") | |||
set(error_message "") | |||
if(ARGS_MINIMUM) | |||
set(compare_message "a minimum ") | |||
set(error_message "or greater ") | |||
elseif(ARGS_MAXIMUM) | |||
set(compare_message "a maximum ") | |||
set(error_message "or less ") | |||
endif(ARGS_MINIMUM) | |||
message(STATUS "checking for ${compare_message}Vala version of ${ensure_version}" ) | |||
execute_process(COMMAND ${VALA_EXECUTABLE} "--version" | |||
OUTPUT_VARIABLE "VALA_VERSION" OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
else(NOT VALA_VERSION) | |||
set(VALA_EXECUTABLE "valac-${ensure_version}") | |||
endif(NOT VALA_VERSION) | |||
# this code allows to identify development versions as the right version | |||
# e.g. 0.19.1 -> 0.20 ; 0.20.1 -> 0.20 ; | |||
# But this code seems to not be fine 0.24.0.2-2235 -> 0.26 | |||
# Thanks to Yannick Inizan | |||
string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION}) | |||
string(STRIP ${VALA_VERSION} "VALA_VERSION") | |||
string(REPLACE "." ";" VALA_LIST "${VALA_VERSION}") | |||
list(GET VALA_LIST 0 maj_ver) | |||
list(GET VALA_LIST 1 min_ver) | |||
list(GET VALA_LIST 2 rev_ver) | |||
math(EXPR is_odd "${min_ver} % 2") | |||
list(LENGTH VALA_LIST len) | |||
#if((${is_odd} EQUAL 1)) | |||
# math(EXPR min_ver "${min_ver} + 1") | |||
#elseif(len GREATER 3) | |||
# math(EXPR min_ver "${min_ver} + 2") | |||
#endif() | |||
set(VALA_SVERSION "${maj_ver}.${min_ver}" CACHE INTERNAL "") | |||
# MINIMUM is the default if no option is specified | |||
if(ARGS_EXACT) | |||
if(${VALA_SVERSION} VERSION_EQUAL ${ensure_version} ) | |||
set(version_accepted TRUE) | |||
endif(${VALA_SVERSION} VERSION_EQUAL ${ensure_version}) | |||
elseif(ARGS_MAXIMUM) | |||
if(${VALA_SVERSION} VERSION_LESS ${ensure_version} OR ${VALA_SVERSION} VERSION_EQUAL ${ensure_version}) | |||
set(version_accepted TRUE) | |||
endif(${VALA_SVERSION} VERSION_LESS ${ensure_version} OR ${VALA_SVERSION} VERSION_EQUAL ${ensure_version}) | |||
else(ARGS_MAXIMUM) | |||
if(${VALA_SVERSION} VERSION_GREATER ${ensure_version} OR ${VALA_SVERSION} VERSION_EQUAL ${ensure_version}) | |||
set(version_accepted TRUE) | |||
endif(${VALA_SVERSION} VERSION_GREATER ${ensure_version} OR ${VALA_SVERSION} VERSION_EQUAL ${ensure_version}) | |||
endif(ARGS_EXACT) | |||
if (NOT version_accepted) | |||
message(FATAL_ERROR | |||
"Vala version ${ensure_version} ${error_message}is required." | |||
) | |||
endif(NOT version_accepted) | |||
message(STATUS | |||
" found Vala, version ${VALA_SVERSION}" | |||
) | |||
endif(USE_VALA_BINARY) | |||
endmacro(ensure_vala_version) |
@@ -0,0 +1,38 @@ | |||
include(ParseArguments) | |||
find_package(Valadoc REQUIRED) | |||
macro(valadoc target outdir) | |||
parse_arguments(ARGS "PACKAGES;OPTIONS;CUSTOM_VAPIS" "" ${ARGN}) | |||
set(vala_pkg_opts "") | |||
foreach(pkg ${ARGS_PACKAGES}) | |||
list(APPEND vala_pkg_opts "--pkg=${pkg}") | |||
endforeach(pkg ${ARGS_PACKAGES}) | |||
set(vapi_dir_opts "") | |||
foreach(src ${ARGS_CUSTOM_VAPIS}) | |||
get_filename_component(pkg ${src} NAME_WE) | |||
list(APPEND vala_pkg_opts "--pkg=${pkg}") | |||
get_filename_component(path ${src} PATH) | |||
list(APPEND vapi_dir_opts "--vapidir=${path}") | |||
endforeach(src ${ARGS_DEFAULT_ARGS}) | |||
list(REMOVE_DUPLICATES vapi_dir_opts) | |||
add_custom_command(TARGET ${target} | |||
COMMAND | |||
${VALADOC_EXECUTABLE} | |||
ARGS | |||
"--force" | |||
"-b" ${CMAKE_CURRENT_SOURCE_DIR} | |||
"-o" ${outdir} | |||
"--package-name=${CMAKE_PROJECT_NAME}" | |||
"--package-version=${PROJECT_VERSION}" | |||
${vala_pkg_opts} | |||
${vapi_dir_opts} | |||
${ARGS_OPTIONS} | |||
${in_files} | |||
DEPENDS | |||
${in_files} | |||
${ARGS_CUSTOM_VAPIS} | |||
) | |||
endmacro(valadoc) |
@@ -0,0 +1,314 @@ | |||
#!/bin/sh | |||
# Autotools-style (./configure) wrapper for CMake | |||
# <https://github.com/nemequ/configure-cmake> | |||
# | |||
# *** IMPORTANT *** | |||
# | |||
# You must include the GNUInstallDirs module (which comes with | |||
# CMake) in your project. Just put "include (GNUInstallDirs)" in | |||
# you CMakeLists.txt and you should be good. | |||
# | |||
# This script was originally written for Squash | |||
# <https://quixdb.github.io/squash/> by Evan Nemerson | |||
# <evan@nemerson.com>, but has been spun off into a separate | |||
# repository. Please feel free to copy it into your own repository, | |||
# though I would appreciate it if you would post improvements, bugs, | |||
# feature requests, etc. to the issue tracker at | |||
# <https://github.com/nemequ/configure-cmake/issues>. | |||
# | |||
# To the extent possible under law, the author(s) hereby waive all | |||
# copyright and related or neighboring rights to this work. For | |||
# details, see <https://creativecommons.org/publicdomain/zero/1.0/> | |||
TOP_SRCDIR="$(dirname $0)" | |||
CMAKE_CMD="cmake ${TOP_SRCDIR}" | |||
BUILD_TYPE="Debug" | |||
PREFIX=/usr/local | |||
LIBDIR= | |||
CMAKE_ARGS= | |||
if [ -e "${TOP_SRCDIR}/.configure-custom.sh" ]; then | |||
. "${TOP_SRCDIR}/.configure-custom.sh" | |||
fi | |||
quote() { | |||
echo "$1" | sed -e "s|'|'\\\\''|g; 1s/^/'/; \$s/\$/'/" | |||
} | |||
extract_var_string() { | |||
VAR_NAME=$1 | |||
VAR_NAME=$(echo $1 | sed -e 's/[ \t]*$//') | |||
if [ "x$2" != "x" ]; then | |||
VAR_VALUE=$2 | |||
else | |||
VAR_VALUE=yes | |||
fi | |||
if [ "x$3" != "x" ]; then | |||
VAR_UC_NAME=$3 | |||
else | |||
VAR_UC_NAME=$(echo "$1" | tr '[:lower:]' '[:upper:]' | tr -c '[:alnum:]' '_' | sed 's/_$//g') | |||
fi | |||
} | |||
set_config_var() { | |||
is_with=n | |||
case "$1" in | |||
"--enable-"*) | |||
name="${1#--enable-}" | |||
cfg="${ENABLE_VARS}" | |||
;; | |||
"--disable-"*) | |||
name="${1#--disable-}"; | |||
cfg="${DISABLE_VARS}"; | |||
;; | |||
"--with-"*) | |||
# IFS="=" read -ra WITHARGS <<< "${1}" | |||
name="${1#--with-}" | |||
cfg="${WITH_VARS}" | |||
is_with=y | |||
;; | |||
esac | |||
found=n | |||
for varstring in $cfg; do | |||
extract_var_string $(echo "${varstring}" | tr '|' ' ') | |||
if [ "x$VAR_NAME" = "x$name" ]; then | |||
found=y | |||
break; | |||
fi | |||
done | |||
if [ "$found" = "y" ]; then | |||
if [ "x$is_with" = "xy" ]; then | |||
CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "$2")" | |||
else | |||
CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "${VAR_VALUE}")" | |||
fi | |||
else | |||
echo "Unknown parameter: ${1}" | |||
exit 1 | |||
fi | |||
} | |||
prefix_to_offset() { | |||
expr $(echo "${1}" | awk '{ print length }') + 1 | |||
} | |||
print_help() { | |||
cat <<EOF >&2 | |||
-h, --help display this help and exit | |||
--disable-debug disable debugging mode | |||
--pass-thru pass remaining arguments through to CMake | |||
--prefix=PREFIX install architecture-independent files in PREFIX | |||
[$PREFIX] | |||
--bindir=DIR user executables [PREFIX/bin] | |||
--sbindir=DIR system admin executables [PREFIX/sbin] | |||
--libexecdir=DIR program executables [PREFIX/libexec] | |||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] | |||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] | |||
--localstatedir=DIR modifiable single-machine data [PREFIX/var] | |||
--libdir=DIR object code libraries [PREFIX/lib] | |||
--includedir=DIR C header files [PREFIX/include] | |||
--oldincludedir=DIR C header files for non-gcc [/usr/include] | |||
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share] | |||
--datadir=DIR read-only architecture-independent data [DATAROOTDIR] | |||
--infodir=DIR info documentation [DATAROOTDIR/info] | |||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale] | |||
--mandir=DIR man documentation [DATAROOTDIR/man] | |||
--docdir=DIR documentation root [DATAROOTDIR/doc/PROJECT_NAME] | |||
EOF | |||
first=y | |||
for varstring in ${ENABLE_VARS}; do | |||
if [ $first = 'y' ]; then | |||
echo "" | |||
first=n | |||
fi | |||
extract_var_string $(echo "${varstring}" | tr '|' ' ') | |||
var_doc_name="ENABLE_${VAR_UC_NAME}_DOC" | |||
eval "docstring=\$$var_doc_name" | |||
if [ "x${docstring}" = "x" ]; then | |||
printf " --enable-%-14s enable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')" | |||
else | |||
printf " --enable-%-14s %s\n" "${VAR_NAME}" "$docstring" | |||
fi | |||
done | |||
first=y | |||
for varstring in ${DISABLE_VARS}; do | |||
if [ $first = 'y' ]; then | |||
echo "" | |||
first=n | |||
fi | |||
extract_var_string $(echo "${varstring}" | tr '|' ' ') | |||
var_doc_name="DISABLE_${VAR_UC_NAME}_DOC" | |||
eval "docstring=\$$var_doc_name" | |||
if [ "x${docstring}" = "x" ]; then | |||
printf " --disable-%-13s disable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')" | |||
else | |||
printf " --disable-%-13s %s\n" "${VAR_NAME}" "$docstring" | |||
fi | |||
done | |||
first=y | |||
for varstring in ${WITH_VARS}; do | |||
if [ $first = 'y' ]; then | |||
echo "" | |||
first=n | |||
fi | |||
extract_var_string $(echo "${varstring}" | tr '|' ' ') | |||
var_doc_name="WITH_${VAR_UC_NAME}_DOC" | |||
eval "docstring=\$$var_doc_name" | |||
paraminfo="${VAR_NAME}=${VAR_VALUE}" | |||
if [ "x${docstring}" = "x" ]; then | |||
printf " --with-%-16s enable %s support\n" "$paraminfo" "$(echo -n "${VAR_NAME}" | tr '-' ' ')" | |||
else | |||
printf " --with-%-16s %s\n" "$paraminfo" "$docstring" | |||
fi | |||
done | |||
exit 0 | |||
} | |||
while [ $# != 0 ]; do | |||
case "$1" in | |||
"--prefix="*) | |||
PREFIX="${1#*=}";; | |||
"--prefix") | |||
PREFIX="${2}"; shift;; | |||
"--bindir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "${1#*=}")";; | |||
"--bindir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "$2")"; shift;; | |||
"--sbindir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "${1#*=}")";; | |||
"--sbindir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "$2")"; shift;; | |||
"--libexecdir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "${1#*=}")";; | |||
"--libexecdir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "$2")"; shift;; | |||
"--sysconfdir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "${1#*=}")";; | |||
"--sysconfdir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "$2")"; shift;; | |||
"--sharedstatedir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "${1#*=}")";; | |||
"--sharedstatedir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "$2")"; shift;; | |||
"--localstatedir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "${1#*=}")";; | |||
"--localstatedir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "$2")"; shift;; | |||
"--libdir="*) | |||
LIBDIR="${1#*=}";; | |||
"--libdir") | |||
LIBDIR="${2}"; shift;; | |||
"--includedir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "${1#*=}")";; | |||
"--includedir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "$2")"; shift;; | |||
"--oldincludedir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "${1#*=}")";; | |||
"--oldincludedir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "$2")"; shift;; | |||
"--datarootdir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "${1#*=}")";; | |||
"--datarootdir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "$2")"; shift;; | |||
"--datadir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "${1#*=}")";; | |||
"--datadir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "$2")"; shift;; | |||
"--infodir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "${1#*=}")";; | |||
"--infodir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "$2")"; shift;; | |||
"--localedir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "${1#*=}")";; | |||
"--localedir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "$2")"; shift;; | |||
"--mandir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "${1#*=}")";; | |||
"--mandir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "$2")"; shift;; | |||
"--docdir="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "${1#*=}")";; | |||
"--docdir") | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "$2")"; shift;; | |||
"CC="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER=$(quote "${1#*=}")";; | |||
"CXX="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_COMPILER=$(quote "${1#*=}")";; | |||
"CFLAGS="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_FLAGS=$(quote "${1#*=}")";; | |||
"CXXFLAGS="*) | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_FLAGS=$(quote "${1#*=}")";; | |||
"LDFLAGS="*) | |||
LDFLAGS="$LDFLAGS ${1#*=}";; | |||
"--help") | |||
print_help;; | |||
"-h") | |||
print_help;; | |||
# This flag is the only one which may be a bit surprising to | |||
# people. Autotools always builds with debugging symbols enabled | |||
# (AFAIK), but for cmake you have to do -DCMAKE_BUILD_TYPE=Debug. | |||
# Unfortunately this can change other things as well, so although | |||
# I realize there is no --disable-debug flag I thought it would be | |||
# prudent to support one here. | |||
"--disable-debug") | |||
BUILD_TYPE="Release";; | |||
"--pass-thru") | |||
shift; | |||
while [ $# != 0 ]; do | |||
CMAKE_ARGS="$CMAKE_ARGS $(quote "${1}")"; | |||
shift; | |||
done;; | |||
"--enable-"*) | |||
set_config_var "$1" | |||
;; | |||
"--disable-"*) | |||
set_config_var "$1" | |||
;; | |||
"--with-"*) | |||
name=$(echo "${1#--with-}" | awk '{split($1,v,"="); print v[1]}') | |||
case "${1}" in | |||
"--with-${name}="*) | |||
set_config_var "--with-${name}" "${1#--with-${name}=}";; | |||
"--with-${name}") | |||
set_config_var "$1" "$2"; | |||
shift;; | |||
esac | |||
;; | |||
*) | |||
echo "$0: error: unrecognized option: \`$1'" >&2 | |||
echo "Try \`$0 --help' for more information" >&2 | |||
exit -1 | |||
esac; | |||
shift | |||
done | |||
if [ "x${LIBDIR}" = "x" ]; then | |||
LIBDIR="${PREFIX}/lib" | |||
fi | |||
# Unlike CFLAGS/CXXFLAGS/CC/CXX, LDFLAGS isn't handled by CMake, so we | |||
# need to parse it here. | |||
if [ "x${LDFLAGS}" != "x" ]; then | |||
for varname in EXE MODULE SHARED STATIC; do | |||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_${varname}_LINKER_FLAGS=$(quote "$LDFLAGS")" | |||
done | |||
fi | |||
eval "cmake ${TOP_SRCDIR} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_INSTALL_LIBDIR=${LIBDIR} ${CMAKE_ARGS}" |
@@ -0,0 +1,6 @@ | |||
#!/bin/bash | |||
ENABLE_VARS="kde-tray|ON|KDE_TRAY" | |||
ENABLE_KDE_TRAY_DOC="build with kde tray and appindicator instead of gtk3 tray" | |||
DISABLE_VARS="aur|ON|DISABLE_AUR" | |||
DISABLE_DISABLE_AUR_DOC="disable the AUR in pamac" |
@@ -0,0 +1,17 @@ | |||
### CMakeLists automatically created with AutoVala | |||
### Do not edit | |||
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/) | |||
install(DIRECTORY | |||
${CMAKE_CURRENT_SOURCE_DIR}/ | |||
DESTINATION | |||
share/autovala/cmake | |||
) | |||
ELSE() | |||
install(FILES | |||
${CMAKE_CURRENT_SOURCE_DIR}/ | |||
DESTINATION | |||
share/autovala/cmake | |||
) | |||
ENDIF() | |||
@@ -0,0 +1,80 @@ | |||
## | |||
# Copyright 2009-2010 Jakob Westhoff, 2014 Raster Software Vigo | |||
# All rights reserved. | |||
# | |||
# Redistribution and use in source and binary forms, with or without | |||
# modification, are permitted provided that the following conditions are met: | |||
# | |||
# 1. Redistributions of source code must retain the above copyright notice, | |||
# this list of conditions and the following disclaimer. | |||
# | |||
# 2. Redistributions in binary form must reproduce the above copyright notice, | |||
# this list of conditions and the following disclaimer in the documentation | |||
# and/or other materials provided with the distribution. | |||
# | |||
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR | |||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
# | |||
# The views and conclusions contained in the software and documentation are those | |||
# of the authors and should not be interpreted as representing official policies, | |||
# either expressed or implied, of Jakob Westhoff | |||
## | |||
## | |||
# Find module for the Vala compiler (valac) | |||
# | |||
# This module determines wheter a Vala compiler is installed on the current | |||
# system and where its executable is. | |||
# | |||
# Call the module using "find_package(Vala) from within your CMakeLists.txt. | |||
# | |||
# The following variables will be set after an invocation: | |||
# | |||
# VALA_FOUND Whether the vala compiler has been found or not | |||
# VALA_EXECUTABLE Full path to the valac executable if it has been found | |||
# VALA_VERSION Version number of the available valac | |||
## | |||
# Search for the valac executable in the usual system paths. | |||
find_program(VALA_EXECUTABLE NAMES valac) | |||
if (VALA_EXECUTABLE STREQUAL "VALA_EXECUTABLE-NOTFOUND") | |||
# if valac executable is not found, it can be that valac is not installed, or | |||
# that the OS is source-based (like gentoo), and doesn't do a link from | |||
# valac-X.YY to valac. In that case, search for the specific valac binary after | |||
if (NOT VALA_DEFERRING_COMPILER_SEARCH) | |||
message (STATUS "VALAC not found. Deferring compiler search") | |||
endif(NOT VALA_DEFERRING_COMPILER_SEARCH) | |||
set(VALA_DEFERRING_COMPILER_SEARCH TRUE) | |||
unset(VALA_EXECUTABLE) | |||
unset(VALA_VERSION) | |||
else(VALA_EXECUTABLE STREQUAL "VALA_EXECUTABLE-NOTFOUND") | |||
# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call. | |||
# Furthermore set VALA_FOUND to TRUE if Vala has been found (aka. | |||
# VALA_EXECUTABLE is set) | |||
include(FindPackageHandleStandardArgs) | |||
find_package_handle_standard_args(Vala DEFAULT_MSG VALA_EXECUTABLE) | |||
mark_as_advanced(VALA_EXECUTABLE) | |||
# Determine the valac version | |||
if(VALA_FOUND) | |||
execute_process(COMMAND ${VALA_EXECUTABLE} "--version" OUTPUT_VARIABLE "VALA_VERSION") | |||
string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION}) | |||
string(STRIP ${VALA_VERSION} "VALA_VERSION") | |||
endif(VALA_FOUND) | |||
endif(VALA_EXECUTABLE STREQUAL "VALA_EXECUTABLE-NOTFOUND") |
@@ -0,0 +1,20 @@ | |||
# Search for the valadocc executable in the usual system paths. | |||
find_program(VALADOC_EXECUTABLE NAMES valadoc) | |||
# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call. | |||
# Furthermore set VALA_FOUND to TRUE if Vala has been found (aka. | |||
# VALA_EXECUTABLE is set) | |||
include(FindPackageHandleStandardArgs) | |||
find_package_handle_standard_args(Valadoc DEFAULT_MSG VALADOC_EXECUTABLE) | |||
mark_as_advanced(VALADOC_EXECUTABLE) | |||
# Determine the valac version | |||
if(VALA_FOUND) | |||
execute_process(COMMAND ${VALA_EXECUTABLE} "--version" | |||
OUTPUT_VARIABLE "VALA_VERSION") | |||
string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION}) | |||
string(STRIP ${VALA_VERSION} "VALA_VERSION") | |||
endif(VALA_FOUND) |
@@ -0,0 +1,34 @@ | |||
macro(add_target_gir TARGET_NAME GIR_NAME HEADER CFLAGS GRANITE_VERSION) | |||
set(PACKAGES "") | |||
foreach(PKG ${ARGN}) | |||
set(PACKAGES ${PACKAGES} --include=${PKG}) | |||
endforeach() | |||
install(CODE "set(ENV{LD_LIBRARY_PATH} \"${CMAKE_CURRENT_BINARY_DIR}:\$ENV{LD_LIBRARY_PATH}\") | |||
execute_process(COMMAND g-ir-scanner ${CFLAGS} -n ${GIR_NAME} | |||