From ba78b356047892a091729f501854ff47f0feeecc Mon Sep 17 00:00:00 2001 From: SuperOpt <156155735+SuperOptimizer@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:29:49 -0600 Subject: [PATCH 1/3] C++ projects should use CXX flags (#136) --- examples/cpp-project-example/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/cpp-project-example/CMakeLists.txt b/examples/cpp-project-example/CMakeLists.txt index 7687051..dac9b89 100644 --- a/examples/cpp-project-example/CMakeLists.txt +++ b/examples/cpp-project-example/CMakeLists.txt @@ -8,5 +8,5 @@ add_executable(clay_examples_cpp_project_example main.cpp) target_include_directories(clay_examples_cpp_project_example PUBLIC .) -set(CMAKE_C_FLAGS_DEBUG "-Werror -Wall -Wno-error=missing-braces") -set(CMAKE_C_FLAGS_RELEASE "-O3") +set(CMAKE_CXX_FLAGS_DEBUG "-Werror -Wall -Wno-error=missing-braces") +set(CMAKE_CXX_FLAGS_RELEASE "-O3") From 2938c00dc8a7a206e10ac202b8bd5cdf943025e6 Mon Sep 17 00:00:00 2001 From: SuperOpt <156155735+SuperOptimizer@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:32:56 -0600 Subject: [PATCH 2/3] [Renderers/Cairo] Add FindCairo.cmake (#122) --- CMakeLists.txt | 2 ++ cmake/FindCairo.cmake | 32 +++++++++++++++++++++ examples/cairo-pdf-rendering/CMakeLists.txt | 10 +++++-- 3 files changed, 41 insertions(+), 3 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 5880586..1f321dd 100644 --- a/examples/cairo-pdf-rendering/CMakeLists.txt +++ b/examples/cairo-pdf-rendering/CMakeLists.txt @@ -2,13 +2,17 @@ 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) +find_package(Cairo REQUIRED) + target_compile_options(clay_examples_cairo_pdf_rendering PUBLIC) -target_include_directories(clay_examples_cairo_pdf_rendering PUBLIC .) - -target_link_libraries(clay_examples_cairo_pdf_rendering PUBLIC cairo) +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 -Wno-error=missing-braces") set(CMAKE_C_FLAGS_RELEASE "-O3") From 902ff3b0a913bfab26129a23c68fd2d38927ea70 Mon Sep 17 00:00:00 2001 From: Stowy Date: Tue, 31 Dec 2024 05:51:18 +0100 Subject: [PATCH 3/3] Fixed compilation using clang on windows (#134) --- clay.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clay.h b/clay.h index 02b84aa..8d25889 100644 --- a/clay.h +++ b/clay.h @@ -134,7 +134,7 @@ CLAY__ALIGNMENT_STRUCT(bool); CLAY__ALIGNMENT_STRUCT(uint8_t); CLAY__ALIGNMENT_STRUCT(int32_t); -#ifdef _MSC_VER +#if defined(_MSC_VER) && !defined(__clang__) #define CLAY_PACKED_ENUM __pragma(pack(push, 1)) enum __pragma(pack(pop)) #else #define CLAY_PACKED_ENUM enum __attribute__((__packed__))