aboutsummaryrefslogtreecommitdiff
path: root/ports/pixman/CMakeLists.txt
blob: 48e01ec665bb16ba637af834df3f193e587da4bb (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
cmake_minimum_required(VERSION 3.0)
project(pixman VERSION 0.34.0 LANGUAGES C)

set(CMAKE_DEBUG_POSTFIX "d")

if(UNIX)
    add_definitions(-DHAVE_PTHREADS)
endif()

include_directories(".")

file(GLOB SOURCES
"pixman.c"
"pixman-access.c"
"pixman-access-accessors.c"
"pixman-bits-image.c"
"pixman-combine32.c"
"pixman-combine-float.c"
"pixman-conical-gradient.c"
"pixman-filter.c"
"pixman-x86.c"
"pixman-mips.c"
"pixman-arm.c"
"pixman-ppc.c"
"pixman-edge.c"
"pixman-edge-accessors.c"
"pixman-fast-path.c"
"pixman-glyph.c"
"pixman-general.c"
"pixman-gradient-walker.c"
"pixman-image.c"
"pixman-implementation.c"
"pixman-linear-gradient.c"
"pixman-matrix.c"
"pixman-noop.c"
"pixman-radial-gradient.c"
"pixman-region16.c"
"pixman-region32.c"
"pixman-solid-fill.c"
"pixman-timer.c"
"pixman-trap.c"
"pixman-utils.c"
)

# pixman requires the three PACKAGE* definitions in order to compile.
set(PIXMAN_DEFS 
    PRIVATE
    PACKAGE="pixman-1"
    PACKAGE_VERSION="0.34.0"
    PACKAGE_BUGREPORT=""
)

if(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64 OR VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
    # don't enable SSE2 for arm64-windows and arm-windows
else()
    # The USE_SSE2 definition lets it use SSE2 instructions for speed. Every x86/64 target machine should have SSE2 these days.
    set(PIXMAN_DEFS ${PIXMAN_DEFS} USE_SSE2)
    file(GLOB SSE2_SOURCES "pixman-sse2.c")
    set(SOURCES ${SOURCES} ${SSE2_SOURCES})
endif()

add_library(pixman-1 ${SOURCES})
target_include_directories(pixman-1 PUBLIC $<INSTALL_INTERFACE:include>)
target_compile_definitions(pixman-1 ${PIXMAN_DEFS})

if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4)
    target_compile_options(pixman-1 PRIVATE -msse2)
endif()

# pixman produces a lot of warnings which are disabled here because they otherwise fill up the log files
if(MSVC)
    target_compile_options(pixman-1 PRIVATE "/wd4244" "/wd4146" "/wd4996") #  PUBLIC "/D_CRT_SECURE_NO_WARNINGS"
endif()

install(TARGETS pixman-1
  EXPORT pixman-targets
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)

install(
    EXPORT pixman-targets
    NAMESPACE unofficial::pixman::
    FILE unofficial-pixman-config.cmake
    DESTINATION share/unofficial-pixman
)