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/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__)) 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") 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")