###################################################################################################
# Builds the pixman library.
#
# This is a way easier way to build that library than mucking about with the god forsaken configure
# scripts and autotools.
###################################################################################################

add_library(pixman SHARED
    source/pixman/pixman.c
    source/pixman/pixman-access-accessors.c
    source/pixman/pixman-access.c
    source/pixman/pixman-bits-image.c
    source/pixman/pixman-combine-float.c
    source/pixman/pixman-combine32.c
    source/pixman/pixman-conical-gradient.c
    source/pixman/pixman-edge-accessors.c
    source/pixman/pixman-edge.c
    source/pixman/pixman-fast-path.c
    source/pixman/pixman-filter.c
    source/pixman/pixman-general.c
    source/pixman/pixman-glyph.c
    source/pixman/pixman-gradient-walker.c
    source/pixman/pixman-image.c
    source/pixman/pixman-implementation.c
    source/pixman/pixman-linear-gradient.c
    source/pixman/pixman-matrix.c
    source/pixman/pixman-noop.c
    source/pixman/pixman-radial-gradient.c
    source/pixman/pixman-region16.c
    source/pixman/pixman-region32.c
    source/pixman/pixman-solid-fill.c
    source/pixman/pixman-trap.c
    source/pixman/pixman-utils.c

    # include architecture support code for all archs
    source/pixman/pixman-arm.c
    source/pixman/pixman-mips.c
    source/pixman/pixman-ppc.c
    source/pixman/pixman-x86.c
)

target_include_directories(pixman PRIVATE source/pixman)
target_link_options(pixman PRIVATE -flto)
target_compile_options(pixman PRIVATE -flto -O2)

# architecture specific stuff
if(${KERNEL_ARCH} STREQUAL "x86_64")
        target_sources(pixman PRIVATE
        source/pixman/pixman-mmx.c
        source/pixman/pixman-sse2.c
        source/pixman/pixman-ssse3.c
    )
endif()

# turn off some warnings
target_compile_options(pixman PRIVATE -Wno-unused-local-typedef -Wno-cast-qual
    -Wno-unused-const-variable -Wno-incompatible-function-pointer-types -Wno-implicit-fallthrough
    -Wno-unused-function)

# emulate the includes generated by autoconf
target_compile_definitions(pixman PRIVATE HAVE_CONFIG_H)
target_include_directories(pixman PRIVATE extra/includes)

# define public interface and install locations
target_include_directories(pixman PUBLIC include/pixman-1)

install(TARGETS pixman LIBRARY)
set_target_properties(pixman PROPERTIES OUTPUT_NAME "pixman-1")

