add flag back in
[roojspacker] / cmake / FindGObjectIntrospection.cmake
1 # FindGObjectIntrospection.cmake
2 # © 2016 Evan Nemerson <evan@nemerson.com>
3
4 find_program(GI_COMPILER_EXECUTABLE g-ir-compiler)
5 find_program(GI_SCANNER_EXECUTABLE g-ir-scanner)
6
7 if(CMAKE_INSTALL_FULL_DATADIR)
8   set(GI_REPOSITORY_DIR "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0")
9 else()
10   set(GI_REPOSITORY_DIR "${CMAKE_INSTALL_PREFIX}/share/gir-1.0")
11 endif()
12
13 if(CMAKE_INSTALL_FULL_LIBDIR)
14   set(GI_TYPELIB_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0")
15 else()
16   set(GI_TYPELIB_DIR "${CMAKE_INSTALL_LIBDIR}/girepository-1.0")
17 endif()
18
19 include(FindPackageHandleStandardArgs)
20 find_package_handle_standard_args(GObjectIntrospection
21   REQUIRED_VARS
22     GI_COMPILER_EXECUTABLE
23     GI_SCANNER_EXECUTABLE)
24
25 function(gobject_introspection_compile TYPELIB)
26   set (options DEBUG VERBOSE)
27   set (oneValueArgs MODULE SHARED_LIBRARY)
28   set (multiValueArgs FLAGS INCLUDE_DIRS)
29   cmake_parse_arguments(GI_COMPILER "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
30   unset (options)
31   unset (oneValueArgs)
32   unset (multiValueArgs)
33
34   get_filename_component(TYPELIB "${TYPELIB}" ABSOLUTE
35     BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
36
37   if(GI_COMPILER_DEBUG)
38     list(APPEND GI_COMPILER_FLAGS "--debug")
39   endif()
40
41   if(GI_COMPILER_VERBOSE)
42     list(APPEND GI_COMPILER_FLAGS "--verbose")
43   endif()
44
45   if(GI_SHARED_LIBRARY)
46     list(APPEND GI_COMPILER_FLAGS "--shared-library" "${GI_SHARED_LIBRARY}")
47   endif()
48
49   foreach(include_dir ${GI_COMPILER_INCLUDE_DIRS})
50     list(APPEND GI_COMPILER_FLAGS "--includedir" "${include_dir}")
51   endforeach()
52
53   add_custom_command(
54     OUTPUT "${TYPELIB}"
55     COMMAND "${GI_COMPILER_EXECUTABLE}"
56     ARGS
57       "-o" "${TYPELIB}"
58       ${GI_COMPILER_FLAGS}
59       ${GI_COMPILER_UNPARSED_ARGUMENTS}
60     DEPENDS
61       ${GI_COMPILER_UNPARSED_ARGUMENTS})
62 endfunction()