summaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindGIO.cmake
blob: 14d38045b8922051a6f64ec57e47bea0fe14e93b (plain)
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
58
59
60
61
62
63
64
65
66
# - Try to find the GIO libraries
# Once done this will define
#
#  GIO_FOUND - system has GIO
#  GIO_INCLUDE_DIR - the GIO include directory
#  GIO_LIBRARIES - GIO library

if(GIO_INCLUDE_DIR AND GIO_LIBRARIES)
    # Already in cache, be silent
    set(GIO_FIND_QUIETLY TRUE)
endif(GIO_INCLUDE_DIR AND GIO_LIBRARIES)

if (NOT WIN32)
   include(UsePkgConfig)
   pkgconfig(gio-2.0 _LibGIOIncDir _LibGIOLinkDir _LibGIOLinkFlags _LibGIOCflags)
endif(NOT WIN32)

MESSAGE(STATUS "gio include dir: ${_LibGIOIncDir}")

# first try without default paths to respect PKG_CONFIG_PATH

find_path(GIO_MAIN_INCLUDE_DIR glib.h
          PATH_SUFFIXES glib-2.0
          PATHS ${_LibGIOIncDir} 
          NO_DEFAULT_PATH)

find_path(GIO_MAIN_INCLUDE_DIR glib.h
          PATH_SUFFIXES glib-2.0
          PATHS ${_LibGIOIncDir} )
          
MESSAGE(STATUS "found gio main include dir: ${GIO_MAIN_INCLUDE_DIR}")

# search the glibconfig.h include dir under the same root where the library is found
find_library(GIO_LIBRARIES 
             NAMES gio-2.0 
             PATHS ${_LibGIOLinkDir} 
             NO_DEFAULT_PATH)

find_library(GIO_LIBRARIES 
             NAMES gio-2.0 
             PATHS ${_LibGIOLinkDir})


get_filename_component(GIOLibDir "${GIO_LIBRARIES}" PATH)

find_path(GIO_INTERNAL_INCLUDE_DIR glibconfig.h
          PATH_SUFFIXES glib-2.0/include
          PATHS ${_LibGIOIncDir} "${GIOLibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH}
          NO_DEFAULT_PATH)

find_path(GIO_INTERNAL_INCLUDE_DIR glibconfig.h
          PATH_SUFFIXES glib-2.0/include
          PATHS ${_LibGIOIncDir} "${GIOLibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH})

set(GIO_INCLUDE_DIR "${GIO_MAIN_INCLUDE_DIR}")

# not sure if this include dir is optional or required
# for now it is optional
if(GIO_INTERNAL_INCLUDE_DIR)
  set(GIO_INCLUDE_DIR ${GIO_INCLUDE_DIR} "${GIO_INTERNAL_INCLUDE_DIR}")
endif(GIO_INTERNAL_INCLUDE_DIR)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GIO  DEFAULT_MSG  GIO_LIBRARIES GIO_MAIN_INCLUDE_DIR)

mark_as_advanced(GIO_INCLUDE_DIR GIO_LIBRARIES)