aboutsummaryrefslogtreecommitdiff
path: root/ports/gdk-pixbuf/CMakeLists.txt
blob: 04524cb4fe1821846ea5767654c94609427711e6 (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
131
132
133
134
135
136
137
138
139
140
141
142
143
cmake_minimum_required(VERSION 3.0)
project(gdk-pixbuf C)

set(GDK_PIXBUF_LIB_SUFFIX 2.0)
set(GDK_PIXBUF_DLL_SUFFIX 2)
set(GDK_PIXBUF_BINARY_VERSION 2.10.0)
set(GLIB_LIB_VERSION 2.0)

find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)

find_package(unofficial-glib CONFIG REQUIRED)
find_path(GLIB_INCLUDE_DIR glib.h)

if(WIN32)
    find_package(unofficial-gettext CONFIG REQUIRED)
    find_path(LIBINTL_INCLUDE_DIR libintl.h)
    configure_file(${CMAKE_SOURCE_DIR}/config.h.win32 ${CMAKE_SOURCE_DIR}/config.h COPYONLY)
else()
    configure_file(${CMAKE_SOURCE_DIR}/config.h.linux ${CMAKE_SOURCE_DIR}/config.h COPYONLY)
endif()
include_directories(. ./gdk-pixbuf)

set(SOURCES
    gdk-pixbuf/gdk-pixbuf.c
    gdk-pixbuf/gdk-pixbuf-animation.c
    gdk-pixbuf/gdk-pixbuf-data.c
    gdk-pixbuf/gdk-pixbuf-io.c
    gdk-pixbuf/gdk-pixbuf-loader.c
    gdk-pixbuf/gdk-pixbuf-scale.c
    gdk-pixbuf/gdk-pixbuf-simple-anim.c
    gdk-pixbuf/gdk-pixbuf-scaled-anim.c
    gdk-pixbuf/gdk-pixbuf-util.c
    gdk-pixbuf/gdk-pixdata.c
    gdk-pixbuf/gdk-pixbuf-enum-types.c
    gdk-pixbuf/gdk-pixbuf-marshal.c
    gdk-pixbuf/io-ani.c
    gdk-pixbuf/io-ani-animation.c
    gdk-pixbuf/io-icns.c
    gdk-pixbuf/io-pnm.c
    gdk-pixbuf/io-png.c
    gdk-pixbuf/io-qtif.c
    gdk-pixbuf/io-tga.c
    gdk-pixbuf/gdk-pixbuf-buffer-queue.c
    gdk-pixbuf/io-xpm.c
    gdk-pixbuf/io-xbm.c
    gdk-pixbuf/pixops/pixops.c
)
if(WIN32)
    list(APPEND SOURCES
    gdk-pixbuf/io-gdip-animation.c
    gdk-pixbuf/io-gdip-bmp.c
    gdk-pixbuf/io-gdip-emf.c
    gdk-pixbuf/io-gdip-gif.c
    gdk-pixbuf/io-gdip-ico.c
    gdk-pixbuf/io-gdip-jpeg.c
    gdk-pixbuf/io-gdip-tiff.c
    gdk-pixbuf/io-gdip-utils.c
    gdk-pixbuf/io-gdip-wmf.c
)
endif()
add_library(gdk-pixbuf ${SOURCES})

target_include_directories(gdk-pixbuf PRIVATE 
    ${GLIB_INCLUDE_DIR} 
    ${PNG_INCLUDE_DIRS}
    ${ZLIB_INCLUDE_DIRS}
    ${LIBINTL_INCLUDE_DIR})

set(LIBS 
    unofficial::glib::gio unofficial::glib::glib unofficial::glib::gmodule unofficial::glib::gobject 
    ${ZLIB_LIBRARIES} 
    ${PNG_LIBRARIES} 
)
if(WIN32)
    list(APPEND LIBS Gdiplus unofficial::gettext::libintl)
else()
    list(APPEND LIBS m)
endif()

target_link_libraries(gdk-pixbuf ${LIBS})

set(DEFS
    HAVE_CONFIG_H
    GDK_PIXBUF_COMPILATION
    GDK_PIXBUF_ENABLE_BACKEND
    DLL_EXPORT
    GDK_PIXBUF_RELOCATABLE
    GDK_PIXBUF_PREFIX="/dummy"
    GDK_PIXBUF_BINARY_VERSION="${GDK_PIXBUF_BINARY_VERSION}"
    INCLUDE_ani
    INCLUDE_tga
    INCLUDE_xbm
    INCLUDE_png
    INCLUDE_qtif
    INCLUDE_pnm
    INCLUDE_icns
    INCLUDE_xpm
    G_DISABLE_SINGLE_INCLUDES
    GDK_PIXBUF_DISABLE_SINGLE_INCLUDES)
if(WIN32)
    list(APPEND DEFS INCLUDE_gdiplus)
endif()
target_compile_definitions(gdk-pixbuf PRIVATE ${DEFS})

set_target_properties(gdk-pixbuf PROPERTIES 
    OUTPUT_NAME gdk_pixbuf-${GDK_PIXBUF_DLL_SUFFIX}
    ARCHIVE_OUTPUT_NAME gdk_pixbuf-${GDK_PIXBUF_LIB_SUFFIX})

install(TARGETS gdk-pixbuf
    RUNTIME DESTINATION bin 
    ARCHIVE DESTINATION lib 
    LIBRARY DESTINATION lib)

macro(gdk_add_tool TOOL_NAME)
    add_executable(${TOOL_NAME} ${ARGN})
    target_include_directories(${TOOL_NAME} PRIVATE ${GLIB_INCLUDE_DIR})
    target_link_libraries(${TOOL_NAME} gdk-pixbuf ${GLIB_LIBRARIES})
    install(TARGETS ${TOOL_NAME} RUNTIME DESTINATION tools/gdk-pixbuf)
endmacro()  

if(NOT GDK_SKIP_TOOLS)
    gdk_add_tool(gdk-pixbuf-csource gdk-pixbuf/gdk-pixbuf-csource.c)
    gdk_add_tool(gdk-pixbuf-pixdata gdk-pixbuf/gdk-pixbuf-pixdata.c)
endif()

if(NOT GDK_SKIP_HEADERS)
    INSTALL(FILES
        gdk-pixbuf/gdk-pixbuf.h
        gdk-pixbuf/gdk-pixbuf-autocleanups.h
        gdk-pixbuf/gdk-pixbuf-core.h 
        gdk-pixbuf/gdk-pixbuf-transform.h 
        gdk-pixbuf/gdk-pixbuf-io.h 
        gdk-pixbuf/gdk-pixbuf-animation.h 
        gdk-pixbuf/gdk-pixbuf-simple-anim.h
        gdk-pixbuf/gdk-pixbuf-loader.h 
        gdk-pixbuf/gdk-pixbuf-enum-types.h 
        gdk-pixbuf/gdk-pixbuf-marshal.h 
        gdk-pixbuf/gdk-pixbuf-features.h 
        gdk-pixbuf/gdk-pixdata.h
        gdk-pixbuf/gdk-pixbuf-macros.h
        DESTINATION include/gdk-pixbuf)
endif()