From 53c5b35aa98e2700cda4e4d3d47a6c79c26ed145 Mon Sep 17 00:00:00 2001 From: Bart Zaalberg Date: Sat, 22 Sep 2018 09:41:15 +0200 Subject: [PATCH] Migrated to meson --- CMakeLists.txt | 92 --------- README.md | 8 +- cmake/FindGirCompiler.cmake | 56 ------ cmake/FindVala.cmake | 65 ------- cmake/GObjectIntrospectionMacros.cmake | 34 ---- cmake/GResource.cmake | 67 ------- cmake/GSettings.cmake | 42 ----- cmake/ParseArguments.cmake | 36 ---- cmake/README | 10 - cmake/README.Vala.rst | 173 ----------------- cmake/Tests.cmake | 5 - cmake/Translations.cmake | 223 ---------------------- cmake/ValaPrecompile.cmake | 251 ------------------------- cmake/ValaVersion.cmake | 96 ---------- data/CMakeLists.txt | 12 -- data/meson.build | 12 ++ debian/control | 7 +- meson.build | 48 +++++ po/CMakeLists.txt | 8 - po/LINGUAS | 0 po/meson.build | 3 + 21 files changed, 69 insertions(+), 1179 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 cmake/FindGirCompiler.cmake delete mode 100644 cmake/FindVala.cmake delete mode 100644 cmake/GObjectIntrospectionMacros.cmake delete mode 100644 cmake/GResource.cmake delete mode 100644 cmake/GSettings.cmake delete mode 100644 cmake/ParseArguments.cmake delete mode 100644 cmake/README delete mode 100644 cmake/README.Vala.rst delete mode 100644 cmake/Tests.cmake delete mode 100644 cmake/Translations.cmake delete mode 100644 cmake/ValaPrecompile.cmake delete mode 100644 cmake/ValaVersion.cmake delete mode 100755 data/CMakeLists.txt create mode 100644 data/meson.build create mode 100644 meson.build delete mode 100644 po/CMakeLists.txt create mode 100644 po/LINGUAS create mode 100644 po/meson.build diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 72595ae..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,92 +0,0 @@ - # project name - project (com.github.bartzaalberg.php-tester) - - # the oldest stable cmake version we support - cmake_minimum_required (VERSION 2.6) - - # tell cmake where its modules can be found in our project directory - list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) - list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/src) - - # where we install data directory (if we have any) - set (DATADIR "${CMAKE_INSTALL_PREFIX}/share") - - # what to call that directory where we install data too - set (PKGDATADIR "${DATADIR}/com.github.bartzaalberg.php-tester") - - set (EXEC_NAME "com.github.bartzaalberg.php-tester") - set (VERSION "1.5.5") - set (VERSION_INFO "whats up world") - - set (DEPS_PACKAGES - gtk+-3.0 - granite - gtksourceview-3.0 - ) - - find_package (PkgConfig) - pkg_check_modules (DEPS REQUIRED ${DEPS_PACKAGES}) - - add_definitions(${DEPS_CFLAGS}) - link_libraries(${DEPS_LIBRARIES}) - link_directories(${DEPS_LIBRARY_DIRS}) - - # make sure we have vala - find_package(Vala REQUIRED) - # make sure we use vala - include(ValaVersion) - # make sure it's the desired version of vala - ensure_vala_version("0.16" MINIMUM) - - #------------------------------------------------------------------------------------------ - - # Translation files - set (GETTEXT_PACKAGE "${CMAKE_PROJECT_NAME}") - add_definitions (-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\") - add_subdirectory (po) - - #------------------------------------------------------------------------------------------ - - # files we want to compile - include(ValaPrecompile) - vala_precompile(VALA_C ${EXEC_NAME} - src/Application.vala - src/MainWindow.vala - src/Constants.vala - src/SourceViewManager.vala - src/StackManager.vala - src/PhpVersionManager.vala - src/FileManager.vala - src/Dialogs/Alert.vala - src/Dialogs/Cheatsheet.vala - src/Dialogs/Preferences.vala - src/Components/HeaderBar.vala - src/Components/HeaderLabel.vala - src/Views/StandardView.vala - src/Views/NoPhpFoundView.vala - - # tell what libraries to use when compiling - PACKAGES - gtk+-3.0 - gtksourceview-3.0 - granite - ) - - pkg_check_modules (GTKSOURCEVIEW_3_18 QUIET gtksourceview-3.0>=3.18) - if (GTKSOURCEVIEW_3_18_FOUND) - set(GTKSOURCEVIEW_FLAGS "--define=GTKSOURCEVIEW_3_18") - message ("-- Found gtksourceview >=3.18 GtkSourceMap available") - endif () - - # tell cmake what to call the executable we just made - add_executable(${EXEC_NAME} ${VALA_C}) - - # install the binaries we just made - install (TARGETS ${EXEC_NAME} RUNTIME DESTINATION bin) - - #add the data directory and activated the cmakelists in that folder - add_subdirectory (data) - - # add settings schema to pc and recomple all schemas - include (GSettings) - add_schema (data/com.github.bartzaalberg.php-tester.gschema.xml) diff --git a/README.md b/README.md index 06eadf5..9fc6521 100644 --- a/README.md +++ b/README.md @@ -37,12 +37,10 @@ These dependencies must be present before building ### Building ``` -mkdir build +meson build --prefix=/usr cd build -cmake -DCMAKE_INSTALL_PREFIX=/usr ../ -make pot -make +ninja ``` ### Installing -`sudo make install` +`sudo ninja install` diff --git a/cmake/FindGirCompiler.cmake b/cmake/FindGirCompiler.cmake deleted file mode 100644 index ccec563..0000000 --- a/cmake/FindGirCompiler.cmake +++ /dev/null @@ -1,56 +0,0 @@ -## -# 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 -## - -## -# Find module for the Gir compiler (g-ir-compiler) -# -# This module determines wheter a Gir compiler is installed on the current -# system and where its executable is. -# -# Call the module using "find_package(GirCompiler) from within your CMakeLists.txt. -# -# The following variables will be set after an invocation: -# -# G_IR_COMPILER_FOUND Whether the g-ir-compiler compiler has been found or not -# G_IR_COMPILER_EXECUTABLE Full path to the g-ir-compiler executable if it has been found -## - - -# Search for the g-ir-compiler executable in the usual system paths. -find_program (G_IR_COMPILER_EXECUTABLE - NAMES g-ir-compiler) - -# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call. -# Furthermore set G_IR_COMPILER_FOUND to TRUE if the g-ir-compiler has been found (aka. -# G_IR_COMPILER_EXECUTABLE is set) - -include (FindPackageHandleStandardArgs) -find_package_handle_standard_args (GirCompiler DEFAULT_MSG G_IR_COMPILER_EXECUTABLE) - -mark_as_advanced (G_IR_COMPILER_EXECUTABLE) diff --git a/cmake/FindVala.cmake b/cmake/FindVala.cmake deleted file mode 100644 index aa3a6e7..0000000 --- a/cmake/FindVala.cmake +++ /dev/null @@ -1,65 +0,0 @@ -## -# 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 -## - -## -# 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) - -# 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) diff --git a/cmake/GObjectIntrospectionMacros.cmake b/cmake/GObjectIntrospectionMacros.cmake deleted file mode 100644 index 6a0dc0b..0000000 --- a/cmake/GObjectIntrospectionMacros.cmake +++ /dev/null @@ -1,34 +0,0 @@ -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() diff --git a/cmake/GResource.cmake b/cmake/GResource.cmake deleted file mode 100644 index eff49cc..0000000 --- a/cmake/GResource.cmake +++ /dev/null @@ -1,67 +0,0 @@ -# -# Copyright (C) 2013 Venom authors and contributors -# -# This file is part of Venom. -# -# Venom 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. -# -# Venom 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 Venom. If not, see . -# - -FIND_PROGRAM(GLIB_COMPILE_RESOURCES_EXECUTABLE NAMES glib-compile-resources) -MARK_AS_ADVANCED(GLIB_COMPILE_RESOURCES_EXECUTABLE) - -INCLUDE(CMakeParseArguments) - -FUNCTION(GLIB_COMPILE_RESOURCES output) - CMAKE_PARSE_ARGUMENTS(ARGS "" "SOURCE" ${ARGN}) - SET(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - SET(out_files "") - - FOREACH(src ${ARGS_SOURCE} ${ARGS_UNPARSED_ARGUMENTS}) - SET(in_file "${CMAKE_CURRENT_SOURCE_DIR}/${src}") - GET_FILENAME_COMPONENT(WORKING_DIR ${in_file} PATH) - STRING(REPLACE ".xml" ".c" src ${src}) - SET(out_file "${DIRECTORY}/${src}") - GET_FILENAME_COMPONENT(OUPUT_DIR ${out_file} PATH) - FILE(MAKE_DIRECTORY ${OUPUT_DIR}) - LIST(APPEND out_files "${DIRECTORY}/${src}") - - #FIXME implicit depends currently not working - EXECUTE_PROCESS( - COMMAND - ${GLIB_COMPILE_RESOURCES_EXECUTABLE} - "--generate-dependencies" - ${in_file} - WORKING_DIRECTORY ${WORKING_DIR} - OUTPUT_VARIABLE in_file_dep - ) - STRING(REGEX REPLACE "(\r?\n)" ";" in_file_dep "${in_file_dep}") - SET(in_file_dep_path "") - FOREACH(dep ${in_file_dep}) - LIST(APPEND in_file_dep_path "${WORKING_DIR}/${dep}") - ENDFOREACH(dep ${in_file_dep}) - ADD_CUSTOM_COMMAND( - OUTPUT ${out_file} - WORKING_DIRECTORY ${WORKING_DIR} - COMMAND - ${GLIB_COMPILE_RESOURCES_EXECUTABLE} - ARGS - "--generate-source" - "--target=${out_file}" - ${in_file} - DEPENDS - ${in_file};${in_file_dep_path} - ) - ENDFOREACH(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS}) - SET(${output} ${out_files} PARENT_SCOPE) -ENDFUNCTION(GLIB_COMPILE_RESOURCES) diff --git a/cmake/GSettings.cmake b/cmake/GSettings.cmake deleted file mode 100644 index 8fd745c..0000000 --- a/cmake/GSettings.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# 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() diff --git a/cmake/ParseArguments.cmake b/cmake/ParseArguments.cmake deleted file mode 100644 index 717c0f5..0000000 --- a/cmake/ParseArguments.cmake +++ /dev/null @@ -1,36 +0,0 @@ -## -# 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) diff --git a/cmake/README b/cmake/README deleted file mode 100644 index 9d45b32..0000000 --- a/cmake/README +++ /dev/null @@ -1,10 +0,0 @@ - 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 - diff --git a/cmake/README.Vala.rst b/cmake/README.Vala.rst deleted file mode 100644 index bcc59b7..0000000 --- a/cmake/README.Vala.rst +++ /dev/null @@ -1,173 +0,0 @@ -========== -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 - .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 - .h and _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 diff --git a/cmake/Tests.cmake b/cmake/Tests.cmake deleted file mode 100644 index 76ba0b7..0000000 --- a/cmake/Tests.cmake +++ /dev/null @@ -1,5 +0,0 @@ -# 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() diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake deleted file mode 100644 index 6d5be40..0000000 --- a/cmake/Translations.cmake +++ /dev/null @@ -1,223 +0,0 @@ -# Translations.cmake, CMake macros written for Marlin, feel free to re-use them -include(CMakeParseArguments) -# be sure that all languages are present -# Using all usual languages code from https://www.gnu.org/software/gettext/manual/html_node/Language-Codes.html#Language-Codes -# Rare language codes should be added on-demand. -set (LANGUAGES_NEEDED aa ab ae af ak am an ar as ast av ay az ba be bg bh bi bm bn bo br bs ca ce ch ckb co cr cs cu cv cy da de dv dz ee el en_AU en_CA en_GB eo es et eu fa ff fi fj fo fr fr_CA fy ga gd gl gn gu gv ha he hi ho hr ht hu hy hz ia id ie ig ii ik io is it iu ja jv ka kg ki kj kk kl km kn ko kr ks ku kv kw ky la lb lg li ln lo lt lu lv mg mh mi mk ml mn mo mr ms mt my na nb_NO nd ne ng nl nn nr nv ny oc oj om or os pa pi pl ps pt pt_BR qu rm rn ro ru rue rw sa sc sd se sg si sk sl sm sma sn so sq sr ss st su sv sw ta te tg th ti tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa wo xh yi yo za zh zh_CN zh_HK zh_TW zu) - -macro (add_translations_directory NLS_PACKAGE) - add_custom_target (i18n ALL COMMENT “Building i18n messages.”) - find_program (MSGFMT_EXECUTABLE msgfmt) - foreach (LANGUAGE_NEEDED ${LANGUAGES_NEEDED}) - create_po_file (${LANGUAGE_NEEDED} ${CMAKE_CURRENT_SOURCE_DIR}) - endforeach (LANGUAGE_NEEDED ${LANGUAGES_NEEDED}) - # generate .mo from .po - 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) - -# Apply the right default template. -macro (create_po_file LANGUAGE_NEEDED DIRECTORY) - set (FILE ${DIRECTORY}/${LANGUAGE_NEEDED}.po) - if (NOT EXISTS ${DIRECTORY}/${LANGUAGE_NEEDED}.po) - file (APPEND ${FILE} "msgid \"\"\n") - file (APPEND ${FILE} "msgstr \"\"\n") - file (APPEND ${FILE} "\"MIME-Version: 1.0\\n\"\n") - file (APPEND ${FILE} "\"Content-Type: text/plain; charset=UTF-8\\n\"\n") - - if ("${LANGUAGE_NEEDED}" STREQUAL "ja" - OR "${LANGUAGE_NEEDED}" STREQUAL "vi" - OR "${LANGUAGE_NEEDED}" STREQUAL "ko") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "en" - OR "${LANGUAGE_NEEDED}" STREQUAL "de" - OR "${LANGUAGE_NEEDED}" STREQUAL "nl" - OR "${LANGUAGE_NEEDED}" STREQUAL "sv" - OR "${LANGUAGE_NEEDED}" STREQUAL "nb_NO" - OR "${LANGUAGE_NEEDED}" STREQUAL "nn" - OR "${LANGUAGE_NEEDED}" STREQUAL "fo" - OR "${LANGUAGE_NEEDED}" STREQUAL "es" - OR "${LANGUAGE_NEEDED}" STREQUAL "pt" - OR "${LANGUAGE_NEEDED}" STREQUAL "it" - OR "${LANGUAGE_NEEDED}" STREQUAL "bg" - OR "${LANGUAGE_NEEDED}" STREQUAL "he" - OR "${LANGUAGE_NEEDED}" STREQUAL "fi" - OR "${LANGUAGE_NEEDED}" STREQUAL "et" - OR "${LANGUAGE_NEEDED}" STREQUAL "eo" - OR "${LANGUAGE_NEEDED}" STREQUAL "hu" - OR "${LANGUAGE_NEEDED}" STREQUAL "tr" - OR "${LANGUAGE_NEEDED}" STREQUAL "es") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "fr" - OR "${LANGUAGE_NEEDED}" STREQUAL "fr_CA" - OR "${LANGUAGE_NEEDED}" STREQUAL "pt_BR") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=2; plural=n>1;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "lv") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "ro") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "lt") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "ru" - OR "${LANGUAGE_NEEDED}" STREQUAL "uk" - OR "${LANGUAGE_NEEDED}" STREQUAL "be" - OR "${LANGUAGE_NEEDED}" STREQUAL "sr" - OR "${LANGUAGE_NEEDED}" STREQUAL "hr") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "cs" - OR "${LANGUAGE_NEEDED}" STREQUAL "sk") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "pl") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n") - elseif ("${LANGUAGE_NEEDED}" STREQUAL "sl") - file (APPEND ${FILE} "\"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\\n\"\n") - endif () - - endif () -endmacro (create_po_file) - -macro (configure_file_translation SOURCE RESULT PO_DIR) - find_program (INTLTOOL_MERGE_EXECUTABLE intltool-merge) - set(EXTRA_PO_DIR ${PO_DIR}/extra/) - get_filename_component(EXTRA_PO_DIR ${EXTRA_PO_DIR} ABSOLUTE) - - # Intltool can't create a new directory. - get_filename_component(RESULT_DIRECTORY ${RESULT} DIRECTORY) - file(MAKE_DIRECTORY ${RESULT_DIRECTORY}) - - set (INTLTOOL_FLAG "") - if (${SOURCE} MATCHES ".desktop") - set (INTLTOOL_FLAG "--desktop-style") - elseif (${SOURCE} MATCHES ".gschema") - set (INTLTOOL_FLAG "--schemas-style") - elseif (${SOURCE} MATCHES ".xml") - set (INTLTOOL_FLAG "--xml-style") - endif () - execute_process (WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${INTLTOOL_MERGE_EXECUTABLE} --quiet ${INTLTOOL_FLAG} ${EXTRA_PO_DIR} ${SOURCE} ${RESULT}) -endmacro () - -macro (add_translations_catalog NLS_PACKAGE) - cmake_parse_arguments (ARGS "" "" "DESKTOP_FILES;APPDATA_FILES;SCHEMA_FILES" ${ARGN}) - add_custom_target (pot COMMENT “Building translation catalog.”) - find_program (XGETTEXT_EXECUTABLE xgettext) - find_program (INTLTOOL_EXTRACT_EXECUTABLE intltool-extract) - find_program (MSG_MERGE msgmerge) - - set(EXTRA_PO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extra) - - set(TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_PACKAGE}.pot) - set(EXTRA_TEMPLATE ${EXTRA_PO_DIR}/extra.pot) - - set(C_SOURCE "") - set(VALA_SOURCE "") - set(GLADE_SOURCE "") - - foreach(FILES_INPUT ${ARGN}) - if((${FILES_INPUT} MATCHES ${CMAKE_SOURCE_DIR}) OR (${FILES_INPUT} MATCHES ${CMAKE_BINARY_DIR})) - set(BASE_DIRECTORY ${FILES_INPUT}) - else () - set(BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${FILES_INPUT}) - endif () - - file (GLOB_RECURSE SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${BASE_DIRECTORY}/*.c) - foreach(C_FILE ${SOURCE_FILES}) - set(C_SOURCE ${C_SOURCE} ${C_FILE}) - endforeach() - - file (GLOB_RECURSE SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${BASE_DIRECTORY}/*.vala) - foreach(VALA_FILE ${SOURCE_FILES}) - set(VALA_SOURCE ${VALA_SOURCE} ${VALA_FILE}) - endforeach() - - file (GLOB_RECURSE SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${BASE_DIRECTORY}/*.ui) - foreach(GLADE_FILE ${SOURCE_FILES}) - set(GLADE_SOURCE ${GLADE_SOURCE} ${GLADE_FILE}) - endforeach() - endforeach() - - set (XGETTEXT_C_ARGS --add-comments="/" --keyword="_" --keyword="N_" --keyword="C_:1c,2" --keyword="NC_:1c,2" --keyword="ngettext:1,2" --keyword="Q_:1g") - set(BASE_XGETTEXT_COMMAND - ${XGETTEXT_EXECUTABLE} -d ${NLS_PACKAGE} - -o ${TEMPLATE} - ${XGETTEXT_C_ARGS} --from-code=UTF-8) - - set(EXTRA_XGETTEXT_COMMAND - ${XGETTEXT_EXECUTABLE} -d extra - -o ${EXTRA_TEMPLATE} --no-location --from-code=UTF-8) - - set (INTLTOOL_EXTRACT_COMMAND - ${INTLTOOL_EXTRACT_EXECUTABLE} --local --srcdir=/) - - set(CONTINUE_FLAG "") - - IF(NOT "${C_SOURCE}" STREQUAL "") - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${BASE_XGETTEXT_COMMAND} ${C_SOURCE}) - set(CONTINUE_FLAG "-j") - ENDIF() - - IF(NOT "${VALA_SOURCE}" STREQUAL "") - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${BASE_XGETTEXT_COMMAND} ${CONTINUE_FLAG} -LC\# ${VALA_SOURCE}) - set(CONTINUE_FLAG "-j") - ENDIF() - - IF(NOT "${GLADE_SOURCE}" STREQUAL "") - add_custom_command (TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${BASE_XGETTEXT_COMMAND} ${CONTINUE_FLAG} -LGlade ${GLADE_SOURCE}) - ENDIF() - # Then we have to update all the .po files - add_custom_target (po COMMENT “Syncing translation files.”) - add_dependencies (po pot) - file (GLOB PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.po) - foreach (PO_INPUT ${PO_FILES}) - get_filename_component (PO_INPUT_BASE ${PO_INPUT} NAME) - add_custom_command (TARGET po WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${MSG_MERGE} --update ${PO_INPUT_BASE} ${TEMPLATE} --force-po) - endforeach (PO_INPUT ${PO_FILES}) - - - # We need to create the directory if one extra content exists. - IF((NOT "${ARGS_DESKTOP_FILES}" STREQUAL "") OR (NOT "${ARGS_APPDATA_SOURCE}" STREQUAL "") OR (NOT "${ARGS_SCHEMA_SOURCE}" STREQUAL "")) - file(MAKE_DIRECTORY ${EXTRA_PO_DIR}) - foreach (LANGUAGE_NEEDED ${LANGUAGES_NEEDED}) - create_po_file (${LANGUAGE_NEEDED} ${EXTRA_PO_DIR}) - endforeach (LANGUAGE_NEEDED ${LANGUAGES_NEEDED}) - ENDIF() - - set(CONTINUE_FLAG "") - - foreach(DESKTOP_SOURCE ${ARGS_DESKTOP_FILES}) - get_filename_component(DESKTOP_SOURCE ${DESKTOP_SOURCE} ABSOLUTE) - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${INTLTOOL_EXTRACT_COMMAND} --type=gettext/keys ${DESKTOP_SOURCE}) - get_filename_component(DESKTOP_SOURCE_NAME ${DESKTOP_SOURCE} NAME) - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${EXTRA_XGETTEXT_COMMAND} ${CONTINUE_FLAG} ${XGETTEXT_C_ARGS} ${CMAKE_CURRENT_BINARY_DIR}/tmp/${DESKTOP_SOURCE_NAME}.h) - set(CONTINUE_FLAG "-j") - endforeach() - - foreach(APPDATA_SOURCE ${ARGS_APPDATA_FILES}) - get_filename_component(APPDATA_SOURCE ${APPDATA_SOURCE} ABSOLUTE) - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${INTLTOOL_EXTRACT_COMMAND} --type=gettext/xml ${APPDATA_SOURCE}) - get_filename_component(APPDATA_SOURCE_NAME ${APPDATA_SOURCE} NAME) - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${EXTRA_XGETTEXT_COMMAND} ${CONTINUE_FLAG} ${XGETTEXT_C_ARGS} ${CMAKE_CURRENT_BINARY_DIR}/tmp/${APPDATA_SOURCE_NAME}.h) - set(CONTINUE_FLAG "-j") - endforeach() - - foreach(SCHEMA_SOURCE ${ARGS_SCHEMA_FILES}) - get_filename_component(SCHEMA_SOURCE ${SCHEMA_SOURCE} ABSOLUTE) - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${INTLTOOL_EXTRACT_COMMAND} --type=gettext/schemas ${SCHEMA_SOURCE}) - get_filename_component(SCHEMA_SOURCE_NAME ${SCHEMA_SOURCE} NAME) - add_custom_command(TARGET pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${EXTRA_XGETTEXT_COMMAND} ${CONTINUE_FLAG} ${XGETTEXT_C_ARGS} ${CMAKE_CURRENT_BINARY_DIR}/tmp/${SCHEMA_SOURCE_NAME}.h) - set(CONTINUE_FLAG "-j") - endforeach() - - file (GLOB PO_FILES ${EXTRA_PO_DIR}/*.po) - foreach (PO_INPUT ${PO_FILES}) - get_filename_component (PO_INPUT_BASE ${PO_INPUT} NAME) - add_custom_command (TARGET po COMMAND WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ${MSG_MERGE} --update ${PO_INPUT_BASE} ${EXTRA_TEMPLATE}) - endforeach (PO_INPUT ${PO_FILES}) -endmacro () diff --git a/cmake/ValaPrecompile.cmake b/cmake/ValaPrecompile.cmake deleted file mode 100644 index f0248d6..0000000 --- a/cmake/ValaPrecompile.cmake +++ /dev/null @@ -1,251 +0,0 @@ -## -# 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 -# .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 -# .h and _internal.h -# -# GENERATE_GIR -# Have the compiler generate a GObject-Introspection repository file with -# name: .gir. This can be later used to create a binary typelib -# using the GI compiler. -# -# GENERATE_SYMBOLS -# Output a .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 ${CMAKE_CURRENT_SOURCE_DIR}/${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 "^/" 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 "${CMAKE_CURRENT_BINARY_DIR}/${VALA_FILE_NAME}") - list(APPEND out_files "${CMAKE_CURRENT_BINARY_DIR}/${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) - # Check for relative and absolute paths - foreach(vapi ${ARGS_CUSTOM_VAPIS}) - string(REGEX MATCH "^/" IS_MATCHED ${vapi}) - if(${IS_MATCHED} MATCHES "/") - list(APPEND custom_vapi_arguments ${vapi}) - else() - list(APPEND custom_vapi_arguments ${CMAKE_CURRENT_SOURCE_DIR}/${vapi}) - endif() - 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 "") - set(gircomp_command "") - 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") - - include (FindGirCompiler) - find_package(GirCompiler REQUIRED) - - set(gircomp_command - COMMAND - ${G_IR_COMPILER_EXECUTABLE} - ARGS - "${DIRECTORY}/${ARGS_GENERATE_GIR}.gir" - -o "${DIRECTORY}/${ARGS_GENERATE_GIR}.typelib") - 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) - - # Workaround for a bug that would make valac run twice. This file is written - # after the vala compiler generates C source code. - set(OUTPUT_STAMP ${CMAKE_CURRENT_BINARY_DIR}/${target_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} - ${vala_pkg_opts} - ${ARGS_OPTIONS} - "-g" - ${in_files} - ${custom_vapi_arguments} - COMMAND - touch - ARGS - ${OUTPUT_STAMP} - DEPENDS - ${in_files} - ${ARGS_CUSTOM_VAPIS} - COMMENT - "Generating ${out_files_display}" - ${gircomp_command} - ) - - # 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) diff --git a/cmake/ValaVersion.cmake b/cmake/ValaVersion.cmake deleted file mode 100644 index 3fff193..0000000 --- a/cmake/ValaVersion.cmake +++ /dev/null @@ -1,96 +0,0 @@ -## -# 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 version) - 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 ${version}" - ) - - unset(version_accepted) - - # MINIMUM is the default if no option is specified - if(ARGS_EXACT) - if(${VALA_VERSION} VERSION_EQUAL ${version} ) - set(version_accepted TRUE) - endif(${VALA_VERSION} VERSION_EQUAL ${version}) - elseif(ARGS_MAXIMUM) - if(${VALA_VERSION} VERSION_LESS ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) - set(version_accepted TRUE) - endif(${VALA_VERSION} VERSION_LESS ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) - else(ARGS_MAXIMUM) - if(${VALA_VERSION} VERSION_GREATER ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) - set(version_accepted TRUE) - endif(${VALA_VERSION} VERSION_GREATER ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) - endif(ARGS_EXACT) - - if (NOT version_accepted) - message(FATAL_ERROR - "Vala version ${version} ${error_message}is required." - ) - endif(NOT version_accepted) - - message(STATUS - " found Vala, version ${VALA_VERSION}" - ) -endmacro(ensure_vala_version) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt deleted file mode 100755 index 07785e9..0000000 --- a/data/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -install (FILES com.github.bartzaalberg.php-tester.desktop DESTINATION share/applications) -install (FILES com.github.bartzaalberg.php-tester.appdata.xml DESTINATION share/metainfo/) - -install (FILES icons/16/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/16x16/apps) -install (FILES icons/24/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/24x24/apps) -install (FILES icons/32/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/32x32/apps) -install (FILES icons/48/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/48x48/apps) -install (FILES icons/32/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/32x32/apps) -install (FILES icons/64/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/64x64/apps) -install (FILES icons/128/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/128x128/apps) - -install (FILES icons/64/com.github.bartzaalberg.php-tester.svg DESTINATION share/icons/hicolor/scalable/apps) diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..c085530 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,12 @@ +icon_sizes = ['16', '24', '32', '48', '64', '128'] + +foreach i : icon_sizes + install_data( + join_paths('icons', i, meson.project_name() + '.svg'), + install_dir: join_paths(get_option('datadir'), 'icons', 'hicolor', i + 'x' + i, 'apps') + ) + install_data( + join_paths('icons', i, meson.project_name() + '.svg'), + install_dir: join_paths(get_option('datadir'), 'icons', 'hicolor', i + 'x' + i + '@2', 'apps') + ) +endforeach diff --git a/debian/control b/debian/control index 0203cb0..c90b22f 100755 --- a/debian/control +++ b/debian/control @@ -2,12 +2,11 @@ Source: com.github.bartzaalberg.php-tester Section: utils Priority: optional Maintainer: Bart Zaalberg -Build-Depends: cmake (>= 2.6), - cmake-elementary, - debhelper (>= 9), +Build-Depends: meson, + debhelper (>= 10.5.1), libgranite-dev, libgtk-3-dev, - valac (>= 0.26), + valac, libgtksourceview-3.0-dev Package: com.github.bartzaalberg.php-tester diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..219b605 --- /dev/null +++ b/meson.build @@ -0,0 +1,48 @@ +project('com.github.bartzaalberg.php-tester', 'vala', 'c') + +gnome = import('gnome') +i18n = import('i18n') + +add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format (meson.project_name()), language:'c') + +executable( + meson.project_name(), + 'src/Application.vala', + 'src/MainWindow.vala', + 'src/Constants.vala', + 'src/SourceViewManager.vala', + 'src/StackManager.vala', + 'src/PhpVersionManager.vala', + 'src/FileManager.vala', + 'src/Dialogs/Alert.vala', + 'src/Dialogs/Cheatsheet.vala', + 'src/Dialogs/Preferences.vala', + 'src/Components/HeaderBar.vala', + 'src/Components/HeaderLabel.vala', + 'src/Views/StandardView.vala', + 'src/Views/NoPhpFoundView.vala', + dependencies: [ + dependency('gtk+-3.0'), + dependency('gtksourceview-3.0'), + dependency('granite') + ], + install: true +) + +subdir('data') +subdir('po') + +install_data( + join_paths('data',meson.project_name() + '.gschema.xml'), + install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas') +) + +install_data( + join_paths('data', meson.project_name() + '.desktop'), + install_dir: join_paths(get_option('datadir'), 'applications') +) + +install_data( + join_paths('data', meson.project_name() + '.appdata.xml'), + install_dir: join_paths(get_option('datadir'), 'metainfo') +) diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt deleted file mode 100644 index 04b9655..0000000 --- a/po/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -include (Translations) - add_translations_directory(${GETTEXT_PACKAGE}) - add_translations_catalog(${GETTEXT_PACKAGE} - ../src/ - ../src/Components - ../src/Dialogs - ../src/Views -) diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..e69de29 diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000..4567cae --- /dev/null +++ b/po/meson.build @@ -0,0 +1,3 @@ +i18n.gettext(meson.project_name(), + args: '--directory=' + meson.source_root() +)