summaryrefslogtreecommitdiffstats
path: root/CMakeScripts/HelperMacros.cmake
blob: 0f7d755fd71ff2fe973de6a13e0ccc038a03fa53 (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# A macro to replace slashes and spaces in a string with underscores
macro(SANITIZE_PATH _string_var)
    string(REGEX REPLACE "[\\/ ]+" "_" ${_string_var} ${${_string_var}})
endmacro()


macro(inkscape_source_group
	sources)

    # Group by location on disk
    source_group("Source Files" FILES CMakeLists.txt)

    foreach(_SRC ${sources})
	get_filename_component(_SRC_EXT ${_SRC} EXT)
	if((${_SRC_EXT} MATCHES ".h") OR (${_SRC_EXT} MATCHES ".hpp"))
	    source_group("Header Files" FILES ${_SRC})
	else()
	    source_group("Source Files" FILES ${_SRC})
	endif()
    endforeach()

    unset(_SRC)
    unset(_SRC_EXT)
endmacro()


# only MSVC uses SOURCE_GROUP
macro(add_inkscape_lib
	name
	sources)

    add_library(${name} STATIC ${sources})

    # works fine without having the includes
    # listed is helpful for IDE's (QtCreator/MSVC)
    inkscape_source_group("${sources}")
endmacro()


# A macro to append to the global source property
set_property(GLOBAL PROPERTY inkscape_global_SRC "")

macro (add_inkscape_source
	sources)

    foreach(_SRC ${ARGV})
	get_filename_component(_ABS_SRC ${_SRC} ABSOLUTE)
	set_property(GLOBAL APPEND PROPERTY inkscape_global_SRC ${_ABS_SRC})
    endforeach()
    unset(_SRC)
    unset(_ABS_SRC)
endmacro()

# A macro to append to the global source property
macro (add_inkscape_library
	sources)

    foreach(_SRC ${ARGV})
	get_filename_component(_ABS_SRC ${_SRC} ABSOLUTE)
	set_property(GLOBAL APPEND PROPERTY inkscape_global_SRC ${_ABS_SRC})
    endforeach()
    unset(_SRC)
    unset(_ABS_SRC)
endmacro()

macro(INKSCAPE_PKG_CONFIG_FIND PREFIX MODNAME VERSION PATH_NAME PATH_SUFFIXE LIB_NAME)
    if(VERSION)
	pkg_check_modules(_${PREFIX} ${MODNAME}${VERSION})
    else(VERSION)
	pkg_check_modules(_${PREFIX} ${MODNAME})
    endif(VERSION)

    find_path(${PREFIX}_INCLUDE_DIR
	NAMES
	    ${PATH_NAME}
	PATHS
	    ${_${PREFIX}_INCLUDEDIR}
	    /usr/include
	    /usr/local/include
	    /opt/local/include
	    /sw/include
	    $ENV{DEVLIBS_PATH}//include//
	PATH_SUFFIXES
	    ${PATH_SUFFIXE}
	)

    find_library(${PREFIX}_LIBRARY
	NAMES
	    ${LIB_NAME}
	PATHS
	    ${_${PREFIX}_LIBDIR}
	    /usr/lib
	    /usr/local/lib
	    /opt/local/lib
	    /sw/lib
	)

    if (${PREFIX}_LIBRARY)
	set(${PREFIX}_FOUND TRUE)
	set(${PREFIX}_VERSION ${_${PREFIX}_VERSION})
    endif (${PREFIX}_LIBRARY)

    set(${PREFIX}_INCLUDE_DIRS
	${${PREFIX}_INCLUDE_DIR}
	)

    if (${PREFIX}_FOUND)
	set(${PREFIX}_LIBRARIES
	    ${${PREFIX}_LIBRARIES}
	    ${${PREFIX}_LIBRARY}
	    )
    endif (${PREFIX}_FOUND)

    if (${PREFIX}_INCLUDE_DIRS AND ${PREFIX}_LIBRARIES)
	set(${PREFIX}_FOUND TRUE)
    endif (${PREFIX}_INCLUDE_DIRS AND ${PREFIX}_LIBRARIES)

    if (${PREFIX}_FOUND)
	if (NOT ${PREFIX}_FIND_QUIETLY)
	    message(STATUS "Found ${MODNAME}: ${${PREFIX}_LIBRARIES}")
	endif (NOT ${PREFIX}_FIND_QUIETLY)
    else (${PREFIX}_FOUND)
	if (${PREFIX}_FIND_REQUIRED)
	    message(FATAL_ERROR "Could not find ${MODNAME}")
	endif (${PREFIX}_FIND_REQUIRED)
    endif (${PREFIX}_FOUND)

    # show the <PREFIX>_INCLUDE_DIRS and <PREFIX>_LIBRARIES variables only in the advanced view
    mark_as_advanced(${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARIES)
endmacro()