Skip to content

Commit

Permalink
Add cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
sammycage committed Aug 28, 2024
1 parent 246dd3e commit 280cfe5
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 9 deletions.
33 changes: 24 additions & 9 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,57 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install build dependencies
with:
submodules: true
- name: Build with meson
run: |
pip install meson
pip install ninja
- name: Setup and Build
run: |
meson setup build
meson compile -C build
- name: Build with cmake
run: |
cmake .
cmake --build .
macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install build dependencies
with:
submodules: true
- name: Build with meson
run: |
pip install meson
pip install ninja
- name: Setup and Build
run: |
meson setup build
meson compile -C build
- name: Build with cmake
run: |
cmake .
cmake --build .
windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install build dependencies
with:
submodules: true
- name: Build with meson
run: |
pip install meson
pip install ninja
- name: Setup and Build
run: |
meson setup build
meson compile -C build
- name: Build with cmake
run: |
cmake .
cmake --build .
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "plutovg"]
path = plutovg
url = https:/sammycage/plutovg.git
89 changes: 89 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
cmake_minimum_required(VERSION 3.15)

set(PLUTOSVG_VERSION_MAJOR 0)
set(PLUTOSVG_VERSION_MINOR 0)
set(PLUTOSVG_VERSION_MICRO 1)

project(plutosvg LANGUAGES C VERSION ${PLUTOSVG_VERSION_MAJOR}.${PLUTOSVG_VERSION_MINOR}.${PLUTOSVG_VERSION_MICRO})

find_package(plutovg 0.0.1 QUIET)
if(NOT plutovg_FOUND)
add_subdirectory(plutovg)
endif()

set(plutosvg_sources
source/plutosvg.c
)

set(plutosvg_headers
source/plutosvg.h
)

add_library(plutosvg ${plutosvg_sources} ${plutosvg_headers})
add_library(plutosvg::plutosvg ALIAS plutosvg)

set_target_properties(plutosvg PROPERTIES
SOVERSION ${PLUTOSVG_VERSION_MAJOR}
C_VISIBILITY_PRESET hidden
C_STANDARD_REQUIRED ON
C_STANDARD 99
)

target_include_directories(plutosvg PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
)

target_include_directories(plutosvg PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/source>
$<INSTALL_INTERFACE:include/plutosvg>
)

target_link_libraries(plutosvg PUBLIC plutovg::plutovg)
target_compile_definitions(plutosvg PRIVATE PLUTOSVG_BUILD)
if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(plutosvg PUBLIC PLUTOSVG_BUILD_STATIC)
endif()

include(GNUInstallDirs)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/source/plutosvg.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/plutosvg)

include(CMakePackageConfigHelpers)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plutosvgConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/plutosvgConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/plutosvg
)

write_basic_package_version_file(plutosvgConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

install(TARGETS plutosvg
EXPORT plutosvgTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

install(EXPORT plutosvgTargets
FILE plutosvgTargets.cmake
NAMESPACE plutosvg::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/plutosvg
)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/plutosvgConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/plutosvgConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/plutosvg
)

export(EXPORT plutosvgTargets
FILE ${CMAKE_CURRENT_BINARY_DIR}/plutosvgTargets.cmake
NAMESPACE plutosvg::
)

option(PLUTOSVG_BUILD_EXAMPLES "Build examples" ON)
if(PLUTOSVG_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
3 changes: 3 additions & 0 deletions cmake/plutosvgConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/plutosvgTargets.cmake")
10 changes: 10 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)

FILE(COPY camera.svg DESTINATION "${CMAKE_BINARY_DIR}/examples")

add_executable(camera2png camera2png.c)
target_link_libraries(camera2png plutosvg)

add_executable(svg2png svg2png.c)
target_link_libraries(svg2png plutosvg)
1 change: 1 addition & 0 deletions plutovg
Submodule plutovg added at c5cda1

0 comments on commit 280cfe5

Please sign in to comment.