summaryrefslogtreecommitdiff
path: root/CMake/macros.cmake
blob: caa295eec889823074b9aa4685837f96f552a5ab (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
#
# "$Id: CMakeLists.txt 10092 2014-02-02 00:49:50Z AlbrechtS $"
#
# macros.cmake defines macros used by the build system
# Written by Michael Surette
#
# Copyright 1998-2010 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file.  If this
# file is missing or damaged, see the license at:
#
#     http://www.fltk.org/COPYING.php
#
# Please report all bugs and problems on the following page:
#
#     http://www.fltk.org/str.php
#

#######################################################################
# macros used by the build system
#######################################################################
macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)

    if(${LIBTYPE} STREQUAL "SHARED")
        set(LIBRARY_NAME ${LIBNAME}_SHARED)
    else()
        set(LIBRARY_NAME ${LIBNAME})
    endif(${LIBTYPE} STREQUAL "SHARED")

    add_library(${LIBRARY_NAME} ${LIBTYPE} ${LIBFILES})

    set_target_properties(${LIBRARY_NAME}
        PROPERTIES
        OUTPUT_NAME ${LIBNAME}
        DEBUG_OUTPUT_NAME "${LIBNAME}d"
        CLEAN_DIRECT_OUTPUT TRUE
        COMPILE_DEFINITIONS "FL_LIBRARY"
        )

    if(${LIBTYPE} STREQUAL "SHARED")
    set_target_properties(${LIBRARY_NAME}
        PROPERTIES
        VERSION ${FLTK_VERSION_FULL}
        SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
        PREFIX "lib"    # for MSVC static/shared coexistence
        )
    endif(${LIBTYPE} STREQUAL "SHARED")

    if(MSVC)
        if(OPTION_LARGE_FILE)
            set_target_properties(${LIBNAME}
                PROPERTIES
                LINK_FLAGS /LARGEADDRESSAWARE
                )
        endif(OPTION_LARGE_FILE)

        if(${LIBTYPE} STREQUAL "SHARED")
            set_target_properties(${LIBRARY_NAME}
                PROPERTIES
                COMPILE_DEFINITIONS "FL_DLL"
                )
            endif(${LIBTYPE} STREQUAL "SHARED")
    endif(MSVC)

    install(TARGETS ${LIBRARY_NAME}
        EXPORT FLTK-Targets
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
        )

    list(APPEND FLTK_LIBRARIES "${LIBRARY_NAME}")
    set(FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)

endmacro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)

#######################################################################
macro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)

    set(srcs)
    set(flsrcs)
    foreach(src ${SOURCES})
        if("${src}" MATCHES ".fl$")
            list(APPEND flsrcs ${src})
        else()
            list(APPEND srcs ${src})
        endif("${src}" MATCHES ".fl$")
    endforeach(src)

    if(flsrcs)
        set(FLTK_WRAP_UI TRUE)
        fltk_wrap_ui(${NAME} ${flsrcs})
    endif(flsrcs)

    add_executable(${NAME} WIN32 ${srcs} ${${NAME}_FLTK_UI_SRCS})

    target_link_libraries(${NAME} ${LIBRARIES})

    # link in optional libraries
    if(USE_XFT)
        target_link_libraries(${NAME} ${X11_Xft_LIB})
    endif(USE_XFT)

    if(HAVE_XINERAMA)
        target_link_libraries(${NAME} ${X11_Xinerama_LIB})
    endif(HAVE_XINERAMA)

    # install the example
    install(TARGETS ${NAME}
        DESTINATION ${FLTK_EXAMPLES_PATH}
        )

endmacro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)

#######################################################################