diff -Naur granite-20110805/cmake/gobject-introspection/COPYING-CMAKE-SCRIPTS granite-20110805.patched/cmake/gobject-introspection/COPYING-CMAKE-SCRIPTS --- granite-20110805/cmake/gobject-introspection/COPYING-CMAKE-SCRIPTS 1970-01-01 01:00:00.000000000 +0100 +++ granite-20110805.patched/cmake/gobject-introspection/COPYING-CMAKE-SCRIPTS 2011-08-05 22:22:40.000000000 +0200 @@ -0,0 +1,22 @@ +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 copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. diff -Naur granite-20110805/cmake/gobject-introspection/FindGObjectIntrospection.cmake granite-20110805.patched/cmake/gobject-introspection/FindGObjectIntrospection.cmake --- granite-20110805/cmake/gobject-introspection/FindGObjectIntrospection.cmake 1970-01-01 01:00:00.000000000 +0100 +++ granite-20110805.patched/cmake/gobject-introspection/FindGObjectIntrospection.cmake 2011-08-05 22:21:39.000000000 +0200 @@ -0,0 +1,61 @@ +# - try to find gobject-introspection +# +# Once done this will define +# +# INTROSPECTION_FOUND - system has gobject-introspection +# INTROSPECTION_SCANNER - the gobject-introspection scanner, g-ir-scanner +# INTROSPECTION_COMPILER - the gobject-introspection compiler, g-ir-compiler +# INTROSPECTION_GENERATE - the gobject-introspection generate, g-ir-generate +# INTROSPECTION_GIRDIR +# INTROSPECTION_TYPELIBDIR +# INTROSPECTION_CFLAGS +# INTROSPECTION_LIBS +# +# Copyright (C) 2010, Pino Toscano, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname) + execute_process( + COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_varname} gobject-introspection-1.0 + OUTPUT_VARIABLE _result + RESULT_VARIABLE _null + ) + + if (_null) + else() + string(REGEX REPLACE "[\r\n]" " " _result "${_result}") + string(REGEX REPLACE " +$" "" _result "${_result}") + separate_arguments(_result) + set(${_outvar} ${_result} CACHE INTERNAL "") + endif() +endmacro(_GIR_GET_PKGCONFIG_VAR) + +find_package(PkgConfig) +if(PKG_CONFIG_FOUND) + if(PACKAGE_FIND_VERSION_COUNT GREATER 0) + set(_gir_version_cmp ">=${PACKAGE_FIND_VERSION}") + endif() + pkg_check_modules(_pc_gir gobject-introspection-1.0${_gir_version_cmp}) + if(_pc_gir_FOUND) + set(INTROSPECTION_FOUND TRUE) + _gir_get_pkgconfig_var(INTROSPECTION_SCANNER "g_ir_scanner") + _gir_get_pkgconfig_var(INTROSPECTION_COMPILER "g_ir_compiler") + _gir_get_pkgconfig_var(INTROSPECTION_GENERATE "g_ir_generate") + _gir_get_pkgconfig_var(INTROSPECTION_GIRDIR "girdir") + _gir_get_pkgconfig_var(INTROSPECTION_TYPELIBDIR "typelibdir") + set(INTROSPECTION_CFLAGS "${_pc_gir_CFLAGS}") + set(INTROSPECTION_LIBS "${_pc_gir_LIBS}") + endif() +endif() + +mark_as_advanced( + INTROSPECTION_SCANNER + INTROSPECTION_COMPILER + INTROSPECTION_GENERATE + INTROSPECTION_GIRDIR + INTROSPECTION_TYPELIBDIR + INTROSPECTION_CFLAGS + INTROSPECTION_LIBS +) diff -Naur granite-20110805/cmake/gobject-introspection/GObjectIntrospectionMacros.cmake granite-20110805.patched/cmake/gobject-introspection/GObjectIntrospectionMacros.cmake --- granite-20110805/cmake/gobject-introspection/GObjectIntrospectionMacros.cmake 1970-01-01 01:00:00.000000000 +0100 +++ granite-20110805.patched/cmake/gobject-introspection/GObjectIntrospectionMacros.cmake 2011-08-05 22:21:47.000000000 +0200 @@ -0,0 +1,94 @@ +# Copyright (C) 2010, Pino Toscano, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +macro(_gir_list_prefix _outvar _listvar _prefix) + set(${_outvar}) + foreach(_item IN LISTS ${_listvar}) + list(APPEND ${_outvar} ${_prefix}${_item}) + endforeach() +endmacro(_gir_list_prefix) + +macro(gir_add_introspections introspections_girs) + + set(_gir_girs) + set(_gir_typelibs) + + foreach(gir IN LISTS ${introspections_girs}) + + set(_gir_name "${gir}") + + ## Transform the gir filename to something which can reference through a variable + ## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir + string(REPLACE "-" "_" _gir_name "${_gir_name}") + string(REPLACE "." "_" _gir_name "${_gir_name}") + + # Namespace and Version is either fetched from the gir filename + # or the _NAMESPACE/_VERSION variable combo + set(_gir_namespace "${${_gir_name}_NAMESPACE}") + if (_gir_namespace STREQUAL "") + string(REGEX REPLACE "([^-]+)-.*" "\\1" _gir_namespace "${gir}") + endif () + set(_gir_version "${${_gir_name}_VERSION}") + if (_gir_version STREQUAL "") + string(REGEX REPLACE ".*-([^-]+).gir" "\\1" _gir_version "${gir}") + endif () + + # _PROGRAM is an optional variable which needs it's own --program argument + set(_gir_program "${${_gir_name}_PROGRAM}") + if (NOT _gir_program STREQUAL "") + set(_gir_program "--program=${_gir_program}") + endif () + + # Variables which provides a list of things + _gir_list_prefix(_gir_libraries ${_gir_name}_LIBS "--library=") + _gir_list_prefix(_gir_packages ${_gir_name}_PACKAGES "--pkg=") + _gir_list_prefix(_gir_includes ${_gir_name}_INCLUDES "--include=") + + # Reuse the LIBTOOL variable from by automake if it's set + set(_gir_libtool "--no-libtool") + + add_custom_command( + COMMAND ${INTROSPECTION_SCANNER} + ${INTROSPECTION_SCANNER_ARGS} + --namespace=${_gir_namespace} + --nsversion=${_gir_version} + ${_gir_libtool} + ${_gir_program} + ${_gir_libraries} + ${_gir_packages} + ${_gir_includes} + ${${_gir_name}_SCANNERFLAGS} + ${${_gir_name}_CFLAGS} + ${${_gir_name}_FILES} + --output ${CMAKE_CURRENT_BINARY_DIR}/${gir} + DEPENDS ${${_gir_name}_FILES} + ${${_gir_name}_LIBS} + OUTPUT ${gir} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + VERBATIM + ) + list(APPEND _gir_girs ${CMAKE_CURRENT_BINARY_DIR}/${gir}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${gir} DESTINATION share/gir-1.0) + + string(REPLACE ".gir" ".typelib" _typelib "${gir}") + add_custom_command( + COMMAND ${INTROSPECTION_COMPILER} + ${INTROSPECTION_COMPILER_ARGS} + --includedir=. + ${CMAKE_CURRENT_BINARY_DIR}/${gir} + -o ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir} + OUTPUT ${_typelib} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + list(APPEND _gir_typelibs ${CMAKE_CURRENT_BINARY_DIR}/${_typelib}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} DESTINATION lib${LIB_SUFFIX}/girepository-1.0) + + endforeach() + + add_custom_target(gir-girs ALL DEPENDS ${_gir_girs}) + add_custom_target(gir-typelibs ALL DEPENDS ${_gir_typelibs}) + +endmacro(gir_add_introspections) diff -Naur granite-20110805/CMakeLists.txt granite-20110805.patched/CMakeLists.txt --- granite-20110805/CMakeLists.txt 2011-08-05 15:49:11.000000000 +0200 +++ granite-20110805.patched/CMakeLists.txt 2011-08-05 22:36:50.000000000 +0200 @@ -6,6 +6,7 @@ project(granite) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/vala ) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/gobject-introspection ) set(RESOURCES_DIR ${CMAKE_INSTALL_PREFIX}/share/granite/) set(GETTEXT_PACKAGE GRANITE) configure_file (${CMAKE_SOURCE_DIR}/lib/config.h.cmake ${CMAKE_BINARY_DIR}/lib/config.h) diff -Naur granite-20110805/lib/CMakeLists.txt granite-20110805.patched/lib/CMakeLists.txt --- granite-20110805/lib/CMakeLists.txt 2011-08-05 15:49:11.000000000 +0200 +++ granite-20110805.patched/lib/CMakeLists.txt 2011-08-06 12:02:46.000000000 +0200 @@ -12,6 +12,8 @@ # Check for the deps find_package(PkgConfig) +find_package(GObjectIntrospection 0.9.12) +include(GObjectIntrospectionMacros) set(PKG_DEPS gtk+-3.0 gio-unix-2.0) pkg_check_modules(DEPS REQUIRED ${PKG_DEPS}) @@ -89,9 +91,40 @@ SOVERSION ${GRANITE_SOVERSION} ) - install (TARGETS ${PKGNAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/) +macro(_list_prefix _outvar _listvar _prefix) + set(${_outvar}) + foreach(_item IN LISTS ${_listvar}) + list(APPEND ${_outvar} ${_prefix}${_item}) + endforeach() +endmacro(_list_prefix) + +# GObject Introspection +if (INTROSPECTION_FOUND) + include(GObjectIntrospectionMacros) + set(INTROSPECTION_GIRS) + set(INTROSPECTION_SCANNER_ARGS "--add-include-path=${CMAKE_CURRENT_SOURCE_DIR}") + set(INTROSPECTION_COMPILER_ARGS "--includedir=${CMAKE_CURRENT_SOURCE_DIR}") + + set(introspection_files ${VALA_C} ${CMAKE_CURRENT_BINARY_DIR}/granite.h) + set(Granite_0_1_gir "granite") + set(Granite_0_1_gir_PACKAGES gtk+-3.0 gdk-3.0) + set(Granite_0_1_gir_INCLUDES Gtk-3.0 Gdk-3.0) + get_directory_property(_tmp_includes INCLUDE_DIRECTORIES) + _list_prefix(_includes _tmp_includes "-I") + set(Granite_0_1_gir_CFLAGS ${_includes}) + set(Granite_0_1_gir_LIBS granite) + # _list_prefix(_abs_introspection_files introspection_files "${CMAKE_CURRENT_SOURCE_DIR}/") + # set(Granite_0_1_gir_FILES ${_abs_introspection_files}) + set(Granite_0_1_gir_FILES ${introspection_files}) + + list(APPEND INTROSPECTION_GIRS Granite-0.1.gir) + + gir_add_introspections(INTROSPECTION_GIRS) +endif () + + add_custom_target(docs) add_custom_command (TARGET docs COMMAND rm ${CMAKE_CURRENT_BINARY_DIR}/docs -R -f) add_custom_command (TARGET docs COMMAND valadoc -o docs --doclet-arg=${CMAKE_CURRENT_BINARY_DIR}/granite.h ${CMAKE_CURRENT_SOURCE_DIR}/*/*.vala ${CMAKE_CURRENT_SOURCE_DIR}/*.vapi ${CMAKE_CURRENT_SOURCE_DIR}/*.vala --pkg=posix --pkg=gtk+-3.0 --pkg=gio-unix-2.0 --package-name=granite --package-version=0.1.1 --doclet=gtkdoc) @@ -100,12 +133,3 @@ add_custom_command (TARGET valadocs COMMAND rm ${CMAKE_CURRENT_BINARY_DIR}/docs_vala -R -f) add_custom_command (TARGET valadocs COMMAND VALADOC_HEADER=${CMAKE_CURRENT_SOURCE_DIR}/docs/header.html valadoc -o docs_vala ${CMAKE_CURRENT_SOURCE_DIR}/*/*.vala ${CMAKE_CURRENT_SOURCE_DIR}/*.vapi ${CMAKE_CURRENT_SOURCE_DIR}/*.vala --pkg=posix --pkg=gtk+-3.0 --pkg=gio-unix-2.0 --package-name=Granite --package-version=0.1.1 --force) -install( CODE "message(\"-- Generating gir...\")") -install( CODE "execute_process(COMMAND g-ir-scanner -I.. --quiet --namespace=Granite -L${CMAKE_CURRENT_BINARY_DIR} --nsversion=${GRANITE_VERSION} --pkg=gtk+-3.0 --pkg=gdk-3.0 --include=Gtk-3.0 --include=Gdk-3.0 --pkg-export=granite-${GRANITE_VERSION} --library=granite ${VALA_C} ${CMAKE_CURRENT_BINARY_DIR}/granite.h --output ${CMAKE_CURRENT_BINARY_DIR}/Granite-${GRANITE_VERSION}.gir)" -) -install( CODE "message(\"-- Generating typelib...\")") -install(CODE - "execute_process(COMMAND g-ir-compiler ${CMAKE_CURRENT_BINARY_DIR}/Granite-${GRANITE_VERSION}.gir -o ${CMAKE_CURRENT_BINARY_DIR}/Granite-1.0.typelib)" -) -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Granite-${GRANITE_VERSION}.gir DESTINATION /usr/share/gir-1.0/) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Granite-1.0.typelib DESTINATION /usr/lib/girepository-1.0/)