Browse Source

customized builds

tags/v6.0.0
Chris Cromer 2 years ago
parent
commit
235c95aa2b
100 changed files with 5603 additions and 168 deletions
  1. +6
    -0
      .configure-custom.sh
  2. +5
    -17
      .gitignore
  3. +4
    -1
      AUTHORS
  4. +82
    -0
      CMakeLists.txt
  5. +0
    -92
      Makefile
  6. +0
    -12
      README
  7. +67
    -0
      README.md
  8. +0
    -1
      TODO
  9. +14
    -0
      autogen.sh
  10. +17
    -0
      autovala/cmake/CMakeLists.txt
  11. +80
    -0
      autovala/cmake/FindVala.cmake
  12. +20
    -0
      autovala/cmake/FindValadoc.cmake
  13. +34
    -0
      autovala/cmake/GObjectIntrospectionMacros.cmake
  14. +42
    -0
      autovala/cmake/GSettings.cmake
  15. +28
    -0
      autovala/cmake/InstallSymlink.cmake
  16. +286
    -0
      autovala/cmake/Makefile
  17. +36
    -0
      autovala/cmake/ParseArguments.cmake
  18. +10
    -0
      autovala/cmake/README
  19. +173
    -0
      autovala/cmake/README.Vala.rst
  20. +5
    -0
      autovala/cmake/Tests.cmake
  21. +66
    -0
      autovala/cmake/Translations.cmake
  22. +243
    -0
      autovala/cmake/ValaPrecompile.cmake
  23. +153
    -0
      autovala/cmake/ValaVersion.cmake
  24. +38
    -0
      autovala/cmake/Valadoc.cmake
  25. +314
    -0
      autovala/configure
  26. +6
    -0
      autovala/configure-custom.sh
  27. +17
    -0
      cmake/CMakeLists.txt
  28. +80
    -0
      cmake/FindVala.cmake
  29. +20
    -0
      cmake/FindValadoc.cmake
  30. +34
    -0
      cmake/GObjectIntrospectionMacros.cmake
  31. +42
    -0
      cmake/GSettings.cmake
  32. +28
    -0
      cmake/InstallSymlink.cmake
  33. +286
    -0
      cmake/Makefile
  34. +36
    -0
      cmake/ParseArguments.cmake
  35. +10
    -0
      cmake/README
  36. +173
    -0
      cmake/README.Vala.rst
  37. +5
    -0
      cmake/Tests.cmake
  38. +66
    -0
      cmake/Translations.cmake
  39. +243
    -0
      cmake/ValaPrecompile.cmake
  40. +153
    -0
      cmake/ValaVersion.cmake
  41. +38
    -0
      cmake/Valadoc.cmake
  42. +314
    -0
      configure
  43. +87
    -0
      data/CMakeLists.txt
  44. +19
    -0
      data/config/CMakeLists.txt
  45. +19
    -0
      data/config/noaur/CMakeLists.txt
  46. +11
    -0
      data/config/noaur/pamac.conf
  47. +45
    -0
      data/dbus/CMakeLists.txt
  48. +6
    -6
      data/dbus/org.pamac.system.conf
  49. +1
    -1
      data/dbus/org.pamac.system.service
  50. +1
    -1
      data/dbus/org.pamac.user.service
  51. +8
    -0
      data/icons/16x16/apps/CMakeLists.txt
  52. +9
    -0
      data/icons/24x24/status/CMakeLists.txt
  53. +8
    -0
      data/icons/32x32/apps/CMakeLists.txt
  54. +18
    -0
      data/interface/CMakeLists.txt
  55. +0
    -0
      data/interface/choose_ignorepkgs_dialog.ui
  56. +0
    -0
      data/interface/choose_provider_dialog.ui
  57. +0
    -0
      data/interface/history_dialog.ui
  58. +0
    -0
      data/interface/manager_window.ui
  59. +935
    -0
      data/interface/manager_window_no_aur.ui
  60. +0
    -0
      data/interface/preferences_dialog.ui
  61. +617
    -0
      data/interface/preferences_dialog_no_aur.ui
  62. +0
    -0
      data/interface/progress_box.ui
  63. +0
    -0
      data/interface/progress_dialog.ui
  64. +0
    -0
      data/interface/transaction_sum_dialog.ui
  65. +17
    -0
      data/mime/CMakeLists.txt
  66. +0
    -0
      data/pamac-install.desktop
  67. +0
    -0
      data/pamac-manager.desktop
  68. +1
    -0
      data/pamac-tray-appindicator.desktop
  69. +1
    -0
      data/pamac-tray.desktop
  70. +0
    -0
      data/pamac-updater.desktop
  71. +6
    -0
      data/pamac.installer.gresource.xml
  72. +15
    -0
      data/pamac.manager.gresource.xml
  73. +15
    -0
      data/pamac.manager_no_aur.gresource.xml
  74. +13
    -0
      data/pamac.transaction.gresource.xml
  75. +13
    -0
      data/pamac.transaction_no_aur.gresource.xml
  76. +12
    -0
      data/pixmaps/CMakeLists.txt
  77. +0
    -0
      data/pixmaps/package-available-locked.png
  78. +0
    -0
      data/pixmaps/package-available.png
  79. +0
    -0
      data/pixmaps/package-generic.png
  80. +0
    -0
      data/pixmaps/package-install.png
  81. +0
    -0
      data/pixmaps/package-installed-locked.png
  82. +0
    -0
      data/pixmaps/package-installed-updated.png
  83. +0
    -0
      data/pixmaps/package-reinstall.png
  84. +0
    -0
      data/pixmaps/package-remove.png
  85. +0
    -0
      data/pixmaps/package-upgrade.png
  86. +17
    -0
      data/polkit/CMakeLists.txt
  87. +3
    -3
      data/polkit/org.pamac.policy.in
  88. +73
    -0
      data/systemd/CMakeLists.txt
  89. +1
    -1
      data/systemd/pamac-system.service
  90. +20
    -0
      doc/CMakeLists.txt
  91. +249
    -0
      pamac.avprj
  92. +6
    -0
      po/CMakeLists.txt
  93. +1
    -0
      po/LINGUAS
  94. +2
    -3
      po/Makefile
  95. +38
    -0
      po/POTFILES.in
  96. +9
    -7
      po/af.po
  97. +12
    -8
      po/ar.po
  98. +12
    -8
      po/ast.po
  99. +9
    -7
      po/az_AZ.po
  100. +0
    -0
      po/be.po

+ 6
- 0
.configure-custom.sh View File

@@ -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"

+ 5
- 17
.gitignore View File

@@ -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

+ 4
- 1
AUTHORS View File

@@ -1,2 +1,5 @@
Main developers:
Pamac classic devleopers:
Chris Cromer <cromer@cromnix.org>

Pamac developers:
Guillaume Benoit <guillaume@manjaro.org>

+ 82
- 0
CMakeLists.txt View File

@@ -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)


+ 0
- 92
Makefile View File

@@ -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

+ 0
- 12
README View File

@@ -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

+ 67
- 0
README.md View File

@@ -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)

+ 0
- 1
TODO View File

@@ -1 +0,0 @@


+ 14
- 0
autogen.sh View File

@@ -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

+ 17
- 0
autovala/cmake/CMakeLists.txt View File

@@ -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()


+ 80
- 0
autovala/cmake/FindVala.cmake View File

@@ -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")

+ 20
- 0
autovala/cmake/FindValadoc.cmake View File

@@ -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)

+ 34
- 0
autovala/cmake/GObjectIntrospectionMacros.cmake View File

@@ -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()

+ 42
- 0
autovala/cmake/GSettings.cmake View File

@@ -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()

+ 28
- 0
autovala/cmake/InstallSymlink.cmake View File

@@ -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)

+ 286
- 0
autovala/cmake/Makefile View File

@@ -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


+ 36
- 0
autovala/cmake/ParseArguments.cmake View File

@@ -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)

+ 10
- 0
autovala/cmake/README View File

@@ -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


+ 173
- 0
autovala/cmake/README.Vala.rst View File

@@ -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

+ 5
- 0
autovala/cmake/Tests.cmake View File

@@ -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()

+ 66
- 0
autovala/cmake/Translations.cmake View File

@@ -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()

+ 243
- 0
autovala/cmake/ValaPrecompile.cmake View File

@@ -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)

+ 153
- 0
autovala/cmake/ValaVersion.cmake View File

@@ -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)

+ 38
- 0
autovala/cmake/Valadoc.cmake View File

@@ -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)

+ 314
- 0
autovala/configure View File

@@ -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}"

+ 6
- 0
autovala/configure-custom.sh View File

@@ -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"

+ 17
- 0
cmake/CMakeLists.txt View File

@@ -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()


+ 80
- 0
cmake/FindVala.cmake View File

@@ -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")

+ 20
- 0
cmake/FindValadoc.cmake View File

@@ -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)

+ 34
- 0
cmake/GObjectIntrospectionMacros.cmake View File

@@ -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}