File: FindGLib2.cmake

package info (click to toggle)
maliit-framework 2.3.0-3.2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,488 kB
  • sloc: cpp: 13,098; ansic: 2,506; xml: 299; sh: 34; makefile: 23; sed: 4
file content (57 lines) | stat: -rw-r--r-- 2,423 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
include(FeatureSummary)
set_package_properties(GLib2 PROPERTIES
        URL "https://wiki.gnome.org/Projects/GLib"
        DESCRIPTION "GLib provides the core application building blocks for libraries and applications written in C")

find_package(PkgConfig)
pkg_check_modules(PC_GLib2 glib-2.0>=2.38 QUIET)

set(GLib2_INCLUDE_DIRS ${PC_GLib2_INCLUDE_DIRS})

foreach(COMP ${PC_GLib2_LIBRARIES})
    find_library(GLib2_${COMP} NAMES ${COMP} HINTS ${PC_GLib2_LIBRARY_DIRS})
    list(APPEND GLib2_LIBRARIES ${GLib2_${COMP}})
endforeach()

execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable glib_genmarshal glib-2.0
        OUTPUT_VARIABLE GLib2_GENMARHSAL_EXECUTABLE)

string(REGEX REPLACE "[\r\n]" " " GLib2_GENMARHSAL_EXECUTABLE "${GLib2_GENMARHSAL_EXECUTABLE}")
string(REGEX REPLACE " +$" "" GLib2_GENMARHSAL_EXECUTABLE "${GLib2_GENMARHSAL_EXECUTABLE}")

# handle the QUIETLY and REQUIRED arguments and set GLib2_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLib2 DEFAULT_MSG GLib2_LIBRARIES GLib2_INCLUDE_DIRS)

mark_as_advanced(GLib2_INCLUDE_DIRS GLib2_LIBRARIES)

if(PC_GLib2_FOUND AND NOT TARGET GLib2::GLib)
    add_library(GLib2::GLib INTERFACE IMPORTED)

    set_property(TARGET GLib2::GLib PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GLib2_INCLUDE_DIRS})
    set_property(TARGET GLib2::GLib PROPERTY INTERFACE_LINK_LIBRARIES ${GLib2_LIBRARIES})
endif()

function(GLib2_ADD_MARSHAL _sources _marshallist)
    get_filename_component(_infile ${_marshallist} ABSOLUTE)
    get_filename_component(_basename ${_marshallist} NAME_WE)
    set(_header "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h")
    set(_body   "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c")

    get_source_file_property(_prefix ${_marshallist} PREFIX)
    if(_prefix)
        set(_params ${_params} --prefix ${_prefix})
    endif()

    add_custom_command(OUTPUT "${_header}"
            COMMAND ${GLib2_GENMARHSAL_EXECUTABLE} --header ${_params} ${_infile} > ${_header}
            DEPENDS ${_infile} VERBATIM)
    add_custom_command(OUTPUT "${_body}"
            COMMAND ${GLib2_GENMARHSAL_EXECUTABLE} --body ${_params} ${_infile} > ${_body}
            DEPENDS ${_infile} VERBATIM)

    set_property(SOURCE ${_body} ${_header} PROPERTY SKIP_AUTOMOC ON)
    list(APPEND ${_sources} "${_body}" "${_header}")
    set(${_sources} ${${_sources}} PARENT_SCOPE)
endfunction()