From f9c28f00c68e650821de0d496b9a912a7e8bd7b5 Mon Sep 17 00:00:00 2001 From: verditelabs <156155735+SuperOptimizer@users.noreply.github.com> Date: Sat, 28 Dec 2024 09:14:36 -0600 Subject: [PATCH 1/2] add FindCairo.cmake --- CMakeLists.txt | 2 ++ cmake/FindCairo.cmake | 32 +++++++++++++++++++++ examples/cairo-pdf-rendering/CMakeLists.txt | 15 ++++++---- 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 cmake/FindCairo.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 27397fa..cd272e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 3.27) project(clay) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + add_subdirectory("examples/cpp-project-example") # Don't try to compile C99 projects using MSVC diff --git a/cmake/FindCairo.cmake b/cmake/FindCairo.cmake new file mode 100644 index 0000000..fadfd72 --- /dev/null +++ b/cmake/FindCairo.cmake @@ -0,0 +1,32 @@ +# Defines: +# CAIRO_FOUND - System has Cairo +# CAIRO_INCLUDE_DIRS - Cairo include directories +# CAIRO_LIBRARY - Cairo library +# Cairo::Cairo - Imported target + +find_path(CAIRO_INCLUDE_DIRS + NAMES cairo/cairo.h + PATHS ${CAIRO_ROOT_DIR} + PATH_SUFFIXES include +) + +find_library(CAIRO_LIBRARY + NAMES cairo + PATHS ${CAIRO_ROOT_DIR} + PATH_SUFFIXES lib lib64 +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Cairo + REQUIRED_VARS CAIRO_LIBRARY CAIRO_INCLUDE_DIRS +) + +if(Cairo_FOUND AND NOT TARGET Cairo::Cairo) + add_library(Cairo::Cairo UNKNOWN IMPORTED) + set_target_properties(Cairo::Cairo PROPERTIES + IMPORTED_LOCATION "${CAIRO_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${CAIRO_INCLUDE_DIRS}" + ) +endif() + +mark_as_advanced(CAIRO_INCLUDE_DIRS CAIRO_LIBRARY) \ No newline at end of file diff --git a/examples/cairo-pdf-rendering/CMakeLists.txt b/examples/cairo-pdf-rendering/CMakeLists.txt index b40d1ad..87ad43b 100644 --- a/examples/cairo-pdf-rendering/CMakeLists.txt +++ b/examples/cairo-pdf-rendering/CMakeLists.txt @@ -2,14 +2,19 @@ cmake_minimum_required(VERSION 3.27) project(clay_examples_cairo_pdf_rendering C) set(CMAKE_C_STANDARD 99) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake") + + add_executable(clay_examples_cairo_pdf_rendering main.c) -target_compile_options(clay_examples_cairo_pdf_rendering PUBLIC) -target_include_directories(clay_examples_cairo_pdf_rendering PUBLIC .) +find_package(Cairo REQUIRED) -target_link_libraries(clay_examples_cairo_pdf_rendering PUBLIC cairo) -set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Werror") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") +target_compile_options(clay_examples_cairo_pdf_rendering PUBLIC) +target_include_directories(clay_examples_cairo_pdf_rendering PUBLIC . ${CAIRO_INCLUDE_DIRS}) + +target_link_libraries(clay_examples_cairo_pdf_rendering PUBLIC Cairo::Cairo) +set(CMAKE_C_FLAGS_DEBUG "-Wall -Werror") +set(CMAKE_C_FLAGS_RELEASE "-O3") add_custom_command( TARGET clay_examples_cairo_pdf_rendering POST_BUILD From 5a3dbb95a6acc48496502a677b72e2ef660c627f Mon Sep 17 00:00:00 2001 From: verditelabs <156155735+SuperOptimizer@users.noreply.github.com> Date: Sat, 28 Dec 2024 09:18:17 -0600 Subject: [PATCH 2/2] undo change to CXX flags --- examples/cairo-pdf-rendering/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/cairo-pdf-rendering/CMakeLists.txt b/examples/cairo-pdf-rendering/CMakeLists.txt index 87ad43b..49cde3b 100644 --- a/examples/cairo-pdf-rendering/CMakeLists.txt +++ b/examples/cairo-pdf-rendering/CMakeLists.txt @@ -13,8 +13,8 @@ target_compile_options(clay_examples_cairo_pdf_rendering PUBLIC) target_include_directories(clay_examples_cairo_pdf_rendering PUBLIC . ${CAIRO_INCLUDE_DIRS}) target_link_libraries(clay_examples_cairo_pdf_rendering PUBLIC Cairo::Cairo) -set(CMAKE_C_FLAGS_DEBUG "-Wall -Werror") -set(CMAKE_C_FLAGS_RELEASE "-O3") +set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Werror") +set(CMAKE_CXX_FLAGS_RELEASE "-O3") add_custom_command( TARGET clay_examples_cairo_pdf_rendering POST_BUILD