Skip to content

Commit 73aa144

Browse files
koubaakoubaa
andauthored
[goldy] Add new port (microsoft#49461)
Co-authored-by: koubaa <koubaa@github.com>
1 parent b4dd6f8 commit 73aa144

File tree

6 files changed

+145
-0
lines changed

6 files changed

+145
-0
lines changed

ports/goldy/goldy-config.cmake

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
include(CMakeFindDependencyMacro)
2+
3+
if(NOT TARGET goldy::goldy)
4+
add_library(goldy::goldy INTERFACE IMPORTED)
5+
6+
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
7+
8+
set_target_properties(goldy::goldy PROPERTIES
9+
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
10+
)
11+
12+
if(WIN32)
13+
set_target_properties(goldy::goldy PROPERTIES
14+
INTERFACE_LINK_LIBRARIES "${_IMPORT_PREFIX}/lib/goldy_ffi.lib"
15+
)
16+
else()
17+
find_library(_GOLDY_FFI_LIB goldy_ffi PATHS "${_IMPORT_PREFIX}/lib" NO_DEFAULT_PATH)
18+
set_target_properties(goldy::goldy PROPERTIES
19+
INTERFACE_LINK_LIBRARIES "${_GOLDY_FFI_LIB}"
20+
)
21+
endif()
22+
endif()

ports/goldy/portfile.cmake

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
2+
3+
vcpkg_from_github(
4+
OUT_SOURCE_PATH SOURCE_PATH
5+
REPO koubaa/goldy
6+
REF "v${VERSION}"
7+
SHA512 8ff9ac74d796cc5ac4660232cf55edda9f848aca4fd565e59d4e6a90c3d2c1ced444b96aa4f2ab4cfe300049eda5aaa275238ba4e7c341771ef3c8b723df79a0
8+
HEAD_REF main
9+
)
10+
11+
# Download pre-built native library for target platform
12+
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
13+
vcpkg_download_distfile(GOLDY_FFI_ARCHIVE
14+
URLS "https://github.com/koubaa/goldy/releases/download/v${VERSION}/goldy_ffi-windows-x64.zip"
15+
FILENAME "goldy_ffi-${VERSION}-windows-x64.zip"
16+
SHA512 15142e06536046d4f2768c95256471efb8c0cb1b52a905f34aaab9636d5f98139b7a038afeace680879298695dfe952061a404eb7da5ef6999f65b8317455ef9
17+
)
18+
elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
19+
vcpkg_download_distfile(GOLDY_FFI_ARCHIVE
20+
URLS "https://github.com/koubaa/goldy/releases/download/v${VERSION}/goldy_ffi-linux-x64.tar.gz"
21+
FILENAME "goldy_ffi-${VERSION}-linux-x64.tar.gz"
22+
SHA512 ebc70ffdc0895ed8755a5e475d0e06e91114998e0dab1a6a2db4f909a1b606a3b6c150e9325a23ff498a3d82c67ff7e433fe5524399bbbb4e4308f2969ac527f
23+
)
24+
elseif(VCPKG_TARGET_IS_OSX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
25+
vcpkg_download_distfile(GOLDY_FFI_ARCHIVE
26+
URLS "https://github.com/koubaa/goldy/releases/download/v${VERSION}/goldy_ffi-macos-x64.tar.gz"
27+
FILENAME "goldy_ffi-${VERSION}-macos-x64.tar.gz"
28+
SHA512 416ad1957f96fb7a9e6a5a0711ae58e75c0658f8f84014797b041b482698b4780fd422ffcd515e46796395a69400ece2487ff2225b7df729959c87b05da826e1
29+
)
30+
elseif(VCPKG_TARGET_IS_OSX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
31+
vcpkg_download_distfile(GOLDY_FFI_ARCHIVE
32+
URLS "https://github.com/koubaa/goldy/releases/download/v${VERSION}/goldy_ffi-macos-arm64.tar.gz"
33+
FILENAME "goldy_ffi-${VERSION}-macos-arm64.tar.gz"
34+
SHA512 7451fb6cbec47f869c295db480a2d9f32a064e0602e40cc8b9742543e78fccf35fae542e24d883b0ea632d803cc2789a120dfe880ca84e806b5f0091edf5007a
35+
)
36+
else()
37+
message(FATAL_ERROR "Unsupported platform: ${VCPKG_TARGET_TRIPLET}")
38+
endif()
39+
40+
vcpkg_extract_source_archive(
41+
BINARY_PATH
42+
ARCHIVE "${GOLDY_FFI_ARCHIVE}"
43+
NO_REMOVE_ONE_LEVEL
44+
)
45+
46+
# Install headers
47+
file(INSTALL "${SOURCE_PATH}/cpp/include/goldy.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
48+
file(INSTALL "${SOURCE_PATH}/cpp/include/goldy.hpp" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
49+
50+
# Install native library
51+
if(VCPKG_TARGET_IS_WINDOWS)
52+
file(INSTALL "${BINARY_PATH}/lib/goldy_ffi.dll"
53+
DESTINATION "${CURRENT_PACKAGES_DIR}/bin")
54+
file(INSTALL "${BINARY_PATH}/lib/goldy_ffi.dll.lib"
55+
DESTINATION "${CURRENT_PACKAGES_DIR}/lib"
56+
RENAME "goldy_ffi.lib")
57+
58+
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin")
59+
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib")
60+
file(INSTALL "${BINARY_PATH}/lib/goldy_ffi.dll"
61+
DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin")
62+
file(INSTALL "${BINARY_PATH}/lib/goldy_ffi.dll.lib"
63+
DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib"
64+
RENAME "goldy_ffi.lib")
65+
elseif(VCPKG_TARGET_IS_LINUX)
66+
file(INSTALL "${BINARY_PATH}/lib/libgoldy_ffi.so"
67+
DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
68+
69+
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib")
70+
file(INSTALL "${BINARY_PATH}/lib/libgoldy_ffi.so"
71+
DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
72+
elseif(VCPKG_TARGET_IS_OSX)
73+
file(INSTALL "${BINARY_PATH}/lib/libgoldy_ffi.dylib"
74+
DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
75+
76+
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib")
77+
file(INSTALL "${BINARY_PATH}/lib/libgoldy_ffi.dylib"
78+
DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
79+
endif()
80+
81+
# Install CMake config and usage
82+
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/goldy-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
83+
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
84+
85+
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

ports/goldy/usage

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
The package goldy provides CMake targets:
2+
3+
find_package(goldy CONFIG REQUIRED)
4+
target_link_libraries(main PRIVATE goldy::goldy)
5+
6+
Include the headers:
7+
#include <goldy.hpp> // C++ RAII wrapper
8+
#include <goldy.h> // C API
9+
10+
Note: goldy_ffi.dll must be in your PATH or next to your executable at runtime.
11+
The Slang compiler (slang.dll) is also required at runtime (from Vulkan SDK).

ports/goldy/vcpkg.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
3+
"name": "goldy",
4+
"version": "0.1.0",
5+
"description": "Modern GPU library with Slang shader support",
6+
"homepage": "https://github.com/koubaa/goldy",
7+
"license": "MIT",
8+
"supports": "!(static & staticcrt) & !uwp & ((x64 & (windows | linux)) | osx)",
9+
"features": {
10+
"examples": {
11+
"description": "Build example programs"
12+
}
13+
}
14+
}

versions/baseline.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3452,6 +3452,10 @@
34523452
"baseline": "4.4",
34533453
"port-version": 0
34543454
},
3455+
"goldy": {
3456+
"baseline": "0.1.0",
3457+
"port-version": 0
3458+
},
34553459
"google-cloud-cpp": {
34563460
"baseline": "2.37.0",
34573461
"port-version": 0

versions/g-/goldy.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"versions": [
3+
{
4+
"git-tree": "e79add5844a325c6d5173a02a2e8c05dc5f5691a",
5+
"version": "0.1.0",
6+
"port-version": 0
7+
}
8+
]
9+
}

0 commit comments

Comments
 (0)