summaryrefslogtreecommitdiffstats
path: root/cmake/tuklib_common.cmake
blob: 088a3cb1cb35436712e16b71a2b1559f48083de8 (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
#
# tuklib_common.cmake - common functions and macros for tuklib_*.cmake files
#
# Author: Lasse Collin
#
# This file has been put into the public domain.
# You can do whatever you want with this file.
#

function(tuklib_add_definitions TARGET_OR_ALL DEFINITIONS)
    # DEFINITIONS may be an empty string/list but it's fine here. There is
    # no need to quote ${DEFINITIONS} as empty arguments are fine here.
    if(TARGET_OR_ALL STREQUAL "ALL")
        add_compile_definitions(${DEFINITIONS})
    else()
        target_compile_definitions("${TARGET_OR_ALL}" PRIVATE ${DEFINITIONS})
    endif()
endfunction()

function(tuklib_add_definition_if TARGET_OR_ALL VAR)
    if(${VAR})
        tuklib_add_definitions("${TARGET_OR_ALL}" "${VAR}")
    endif()
endfunction()

# This is an over-simplified version of AC_USE_SYSTEM_EXTENSIONS in Autoconf
# or gl_USE_SYSTEM_EXTENSIONS in gnulib.
macro(tuklib_use_system_extensions TARGET_OR_ALL)
    if(NOT WIN32)
        # FIXME? The Solaris-specific __EXTENSIONS__ should be conditional
        #        even on Solaris. See gnulib: git log m4/extensions.m4.
        # FIXME? gnulib and autoconf.git has lots of new stuff.
        tuklib_add_definitions("${TARGET_OR_ALL}"
            _GNU_SOURCE
            __EXTENSIONS__
            _POSIX_PTHREAD_SEMANTICS
            _TANDEM_SOURCE
            _ALL_SOURCE
        )

        list(APPEND CMAKE_REQUIRED_DEFINITIONS
            -D_GNU_SOURCE
            -D__EXTENSIONS__
            -D_POSIX_PTHREAD_SEMANTICS
            -D_TANDEM_SOURCE
            -D_ALL_SOURCE
        )
    endif()
endmacro()