aboutsummaryrefslogtreecommitdiff
path: root/src/platform/graphics/cairo/CMakeLists.txt
blob: 48339f7c1176e1afee81fc42bc42e3f71bb9b826 (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
add_library(CruPlatformGraphicsCairo
	Base.cpp
	CairoBrush.cpp
	CairoGeometry.cpp
	CairoGraphicsFactory.cpp
	CairoImage.cpp
	CairoImageFactory.cpp
	CairoPainter.cpp
	CairoResource.cpp
	PangoFont.cpp
	PangoTextLayout.cpp
)

if (UNIX AND NOT EMSCRIPTEN) # It's so great to see emscripten is somewhat UNIX!
	foreach(PP IN LISTS CMAKE_SYSTEM_PREFIX_PATH)
		cmake_path(APPEND PP "lib" ${CMAKE_LIBRARY_ARCHITECTURE})
		list(APPEND LIB_ARCH_DIR ${PP})
	endforeach()

	find_library(LIB_CAIRO cairo REQUIRED)
	find_library(LIB_GOBJECT NAMES gobject gobject-2.0 REQUIRED)
	find_library(LIB_PANGO NAMES pango pango-1.0 REQUIRED)
	find_library(LIB_PANGOCAIRO NAMES pangocairo pangocairo-1.0 REQUIRED)
	find_path(CAIRO_HEADER_DIR NAMES cairo.h PATH_SUFFIXES cairo REQUIRED)
	find_path(GLIB_HEADER_DIR NAMES glib.h PATH_SUFFIXES glib glib-2.0 REQUIRED)
	find_path(GLIBCONFIG_HEADER_DIR NAMES glibconfig.h HINTS ${LIB_ARCH_DIR} PATH_SUFFIXES glib glib/include glib-2.0 glib-2.0/include REQUIRED)
	find_path(HARFBUZZ_HEADER_DIR NAMES hb.h PATH_SUFFIXES harfbuzz REQUIRED)
	find_path(PANGO_HEADER_DIR NAMES pango PATH_SUFFIXES pango pango-1.0 REQUIRED)

	find_library(LIB_PNG png REQUIRED)
	
	target_compile_definitions(CruPlatformGraphicsCairo PRIVATE CRU_PLATFORM_GRAPHICS_CAIRO_EXPORT_API)
	target_link_libraries(CruPlatformGraphicsCairo PUBLIC CruPlatformGraphics PUBLIC ${LIB_GOBJECT} ${LIB_CAIRO} ${LIB_PANGO} ${LIB_PANGOCAIRO} ${LIB_PNG})
	target_include_directories(CruPlatformGraphicsCairo PUBLIC ${CAIRO_HEADER_DIR} ${GLIB_HEADER_DIR} ${GLIBCONFIG_HEADER_DIR} ${HARFBUZZ_HEADER_DIR} ${PANGO_HEADER_DIR})
endif()

if (EMSCRIPTEN)
	add_dependencies(CruPlatformGraphicsCairo build-meson-projects)
	target_link_libraries(CruPlatformGraphicsCairo PUBLIC CruPlatformGraphics PUBLIC ${MESON_PROJECTS_INSTALL_DIR}/lib/libcairo.a)
	target_include_directories(CruPlatformGraphicsCairo PUBLIC ${MESON_PROJECTS_INSTALL_DIR}/include)
endif()