Skip to content

Commit

Permalink
vcpkgize
Browse files Browse the repository at this point in the history
  • Loading branch information
igagis committed Nov 26, 2024
1 parent a80dfc4 commit 64f8cc3
Show file tree
Hide file tree
Showing 9 changed files with 256 additions and 0 deletions.
52 changes: 52 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,58 @@ jobs:
filename: '.\nuget\*.nupkg'
api-key: ${{ secrets.NUGET_DOT_ORG_API_KEY }}
if: startsWith(github.ref, 'refs/tags/')
##### vcpkg #####
vcpkg:
strategy:
fail-fast: false
matrix:
include:
- {os: debian, codename: bookworm, image_owner: }
# - {os: debian, codename: bookworm, image_owner: i386/, labels: [i386,docker]}
# - {os: debian, codename: bookworm, image_owner: , labels: [arm32,docker]}
# - {os: debian, codename: bookworm, image_owner: , labels: [arm64,docker]}
runs-on: ${{ (matrix.labels == '' && 'ubuntu-latest') || matrix.labels }}
container: ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }}
name: vcpkg - linux | ${{ matrix.labels[0] }}
steps:
- name: add cppfw deb repo
uses: myci-actions/add-deb-repo@main
with:
repo: deb https://gagis.hopto.org/repo/cppfw/${{ matrix.os }} ${{ matrix.codename }} main
repo-name: cppfw
keys-asc: https://gagis.hopto.org/repo/cppfw/pubkey.gpg
install: myci cmake git curl zip unzip tar nodejs pkg-config
- name: git clone
uses: myci-actions/checkout@main
- name: install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg.git vcpkg-installation
(cd vcpkg-installation; ./bootstrap-vcpkg.sh)
- name: set VCPKG_ROOT
uses: myci-actions/export-env-var@main
with: {name: VCPKG_ROOT, value: "$(pwd)/vcpkg-installation"}
- name: add VCPKG_ROOT to PATH
uses: myci-actions/export-env-var@main
with: {name: PATH, value: "$PATH:$VCPKG_ROOT"}
- name: prepare vcpkg port
run: |
myci-vcpkg-prepare.sh --git-ref ${{ github.sha }}
- name: test vcpkg port
run: |
cd vcpkg/test
cmake .
make
./test
- name: upload vcpkg logs to artifacts
if: always() # even if previous steps fail, this one needs to be run
uses: actions/upload-artifact@v4
with:
name: vcpkg_logs
path: vcpkg-installation/buildtrees/${{ env.PACKAGE_NAME }}/
- name: deploy vcpkg port
run: |
myci-deploy-vcpkg.sh --repo cppfw/vcpkg-repo --port-dir vcpkg/overlay/${PACKAGE_NAME}
if: startsWith(github.ref, 'refs/tags/')
##### conan - linux #####
conan-linux:
strategy:
Expand Down
78 changes: 78 additions & 0 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
cmake_minimum_required(VERSION 3.10)

include(GNUInstallDirs)

set(name svgren)

project(${name})

find_package(utki CONFIG REQUIRED)
find_package(papki CONFIG REQUIRED)
find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)
find_package(JPEG REQUIRED)
find_package(r4 CONFIG REQUIRED)
find_package(rasterimage CONFIG REQUIRED)
find_package(agg CONFIG REQUIRED)
find_package(veg CONFIG REQUIRED)
find_package(svgdom CONFIG REQUIRED)
find_package(mikroxml CONFIG REQUIRED)
find_package(cssom CONFIG REQUIRED)

file(GLOB_RECURSE srcs "../src/${name}/*.cpp")

add_library(
${name}
STATIC
${srcs}
)

target_compile_features(${name} PUBLIC cxx_std_17)
set_target_properties(${name} PROPERTIES CXX_STANDARD_REQUIRED ON)
set_target_properties(${name} PROPERTIES CXX_EXTENSIONS OFF)

target_include_directories(
${name}
INTERFACE
$<BUILD_INTERFACE:>
$<INSTALL_INTERFACE:include>
)

target_link_libraries(
${name}
PUBLIC
utki::utki
veg::veg
svgdom::svgdom
r4::r4
papki::papki
)

# install library header files preserving directory hierarchy
install(
DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/../src/${name}"
DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN
"*.hpp"
)

install(
TARGETS
${name}
EXPORT # generate cmake configs
${name}-config
)

# install cmake configs
install(
EXPORT
${name}-config
FILE
${name}-config.cmake
DESTINATION
${CMAKE_INSTALL_DATAROOTDIR}/${name}
NAMESPACE
${name}::
)
26 changes: 26 additions & 0 deletions vcpkg/portfile.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO cppfw/${PORT}
REF $(git_ref)
SHA512 $(archive_hash)
HEAD_REF main
)

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}/cmake"
)

vcpkg_cmake_install()

vcpkg_cmake_config_fixup()

# Delete the include directory from the debug installation to prevent overlap.
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")

# Install the LICENSE file to the package's share directory and rename it to copyright.
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

# Copy the usage instruction file to the package's share directory.
configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY)
23 changes: 23 additions & 0 deletions vcpkg/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.10)

set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)

project(test)

find_package(utki CONFIG REQUIRED)
find_package(papki CONFIG REQUIRED)
find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)
find_package(JPEG REQUIRED)
find_package(r4 CONFIG REQUIRED)
find_package(rasterimage CONFIG REQUIRED)
find_package(agg CONFIG REQUIRED)
find_package(veg CONFIG REQUIRED)
find_package(svgdom CONFIG REQUIRED)
find_package(mikroxml CONFIG REQUIRED)
find_package(cssom CONFIG REQUIRED)
find_package(svgren CONFIG REQUIRED)

add_executable(test main.cpp)

target_link_libraries(test PRIVATE svgren::svgren)
16 changes: 16 additions & 0 deletions vcpkg/test/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#include <svgren/render.hpp>

int main(int argc, const char** argv){
auto dom = svgdom::load(R"qwertyuiop(
<svg xmlns="http://www.w3.org/2000/svg" width="57.126" height="57.126">
<path d="M28.563 0a28.563 28.563 0 100 57.126 28.563 28.563 0 100-57.126z" fill="#010101"/>
<path d="M32.7 21.183c-.16-1.6-1.2-2.72-3.28-2.72-3.64 0-4.48 4.16-4.68 7.84l.08.08c.76-1.04 2.16-2.36 5.32-2.36 5.88 0 8.681 4.52 8.681 8.76 0 6.199-3.801 10.359-9.28 10.359-8.6 0-10.28-7.2-10.28-14.279 0-5.4.72-14.88 10.56-14.88 1.161 0 4.4.44 5.8 1.84 1.56 1.52 2.12 2.36 2.64 5.36h32.7zm-3.56 7.32c-2.12 0-4.28 1.32-4.28 4.88 0 3.08 1.76 5.28 4.44 5.28 2.04 0 3.92-1.561 3.92-5.4-.001-3.6-2.32-4.76-4.08-4.76z" fill="#fff"/>
</svg>
)qwertyuiop"sv);

auto im = svgren::rasterize(*dom);

std::cout << "im.dims() = " << im.dims() << std::endl;

return 0;
}
19 changes: 19 additions & 0 deletions vcpkg/test/vcpkg-configuration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"default-registry": {
"kind": "git",
"baseline": "5e5d0e1cd7785623065e77eff011afdeec1a3574",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/cppfw/vcpkg-repo/",
"baseline": "",
"reference": "main",
"packages": [ "utki", "papki", "mikroxml", "cssom", "svgdom", "r4", "rasterimage", "agg", "veg" ]
}
],
"overlay-ports": [
"../overlay"
]
}
5 changes: 5 additions & 0 deletions vcpkg/test/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"dependencies": [
"svgren"
]
}
17 changes: 17 additions & 0 deletions vcpkg/usage
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
svgren provides CMake targets:

find_package(utki CONFIG REQUIRED)
find_package(papki CONFIG REQUIRED)
find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)
find_package(JPEG REQUIRED)
find_package(r4 CONFIG REQUIRED)
find_package(rasterimage CONFIG REQUIRED)
find_package(agg CONFIG REQUIRED)
find_package(veg CONFIG REQUIRED)
find_package(svgdom CONFIG REQUIRED)
find_package(mikroxml CONFIG REQUIRED)
find_package(cssom CONFIG REQUIRED)
find_package(svgren CONFIG REQUIRED)

target_link_libraries(main PRIVATE svgren::svgren)
20 changes: 20 additions & 0 deletions vcpkg/vcpkg.json.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "svgren",
"version": "$(version)",
"homepage": "https://github.com/cppfw/svgren",
"description": "SVG resterization library in C++",
"license": "MIT",
"dependencies": [
{
"name" : "vcpkg-cmake",
"host" : true
},
{
"name" : "vcpkg-cmake-config",
"host" : true
},
"utki",
"svgdom",
"veg"
]
}

0 comments on commit 64f8cc3

Please sign in to comment.