[aui]: add new port (#53508)

This commit is contained in:
Saikari 2026-08-31 07:10:42 +03:00 committed by GitHub
parent 6aed839547
commit a804accb28
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
31 changed files with 1991 additions and 42 deletions

View File

@ -0,0 +1,193 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6902d56..d1d37e1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,9 +64,7 @@ function(define_aui_component AUI_COMPONENT_NAME)
add_subdirectory("aui.${AUI_COMPONENT_NAME}")
endfunction()
-auib_import(ZLIB https://github.com/aui-framework/zlib
- VERSION 448a9c76a97202a21f68bd82e453dd743e944a3a
- CMAKE_ARGS -DZLIB_BUILD_EXAMPLES=OFF)
+find_package(ZLIB REQUIRED)
# define all components
define_aui_component(core)
@@ -86,7 +84,7 @@ define_aui_component(json)
define_aui_component(audio)
define_aui_component(updater)
-if (NOT ANDROID AND NOT IOS)
+if (0)
define_aui_component(uitests)
endif()
@@ -195,7 +193,6 @@ auib_precompiled_binary()
# [auib_precompiled_binary]
# test aui.boot on ci/cd
-add_subdirectory(test/)
# [configure file example]
configure_file(cmake/aui-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/aui-config.cmake @ONLY)
diff --git a/aui.core/CMakeLists.txt b/aui.core/CMakeLists.txt
index 6aa1b07..0eaa67f 100644
--- a/aui.core/CMakeLists.txt
+++ b/aui.core/CMakeLists.txt
@@ -11,9 +11,8 @@ aui_enable_benchmarks(aui.core)
get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-if (GLM_INCLUDE_DIR)
- message(STATUS "Using custom GLM_INCLUDE_DIR: ${GLM_INCLUDE_DIR}")
-else()
+find_package(glm REQUIRED)
+if (0) # vendored glm replaced by vcpkg's glm
set(GLM_INCLUDE_DIR "${SELF_DIR}/3rdparty/glm")
install(
@@ -21,7 +20,8 @@ else()
DESTINATION "aui.core/include/"
)
endif()
-target_include_directories(aui.core PUBLIC $<BUILD_INTERFACE:${GLM_INCLUDE_DIR}>)
+target_link_libraries(aui.core PUBLIC glm::glm-header-only)
+target_compile_definitions(aui.core PUBLIC GLM_ENABLE_EXPERIMENTAL=1)
target_compile_definitions(aui.core PRIVATE UNICODE=1)
target_compile_definitions(aui.core PUBLIC NOMINMAX=1)
@@ -49,8 +49,7 @@ if (NOT WIN32)
endif()
if (AUI_PLATFORM_LINUX)
- auib_import(backtrace https://github.com/aui-framework/libbacktrace
- VERSION a5a32e3cc8e22a9fc40689a884b032c52ee3f88e)
+ find_package(unofficial-libbacktrace CONFIG REQUIRED)
set(_use_backtrace TRUE)
else()
@@ -84,7 +83,7 @@ endif()
if(_use_backtrace)
message(STATUS "Stacktrace backend: backtrace")
- aui_link(aui.core PRIVATE backtrace)
+ aui_link(aui.core PRIVATE unofficial::libbacktrace::libbacktrace)
target_compile_definitions(aui.core PRIVATE AUI_USE_BACKTRACE=1)
elseif(_use_unwind)
message(STATUS "Stacktrace backend: unwind")
@@ -111,7 +110,12 @@ if (ANDROID)
endif()
aui_link(aui.core PRIVATE ZLIB::ZLIB)
-add_subdirectory(3rdparty/minizip)
+find_package(minizip CONFIG REQUIRED)
+if(TARGET MINIZIP::minizip)
+ aui_link(aui.core PRIVATE MINIZIP::minizip)
+else()
+ aui_link(aui.core PRIVATE MINIZIP::minizipstatic)
+endif()
# forward platform info
foreach(_var AUI_PLATFORM_WIN
@@ -147,13 +151,9 @@ endif()
# [auib_import examples]
-auib_import(fmt https://github.com/fmtlib/fmt
- VERSION 9.1.0
- CMAKE_ARGS -DFMT_TEST=FALSE -DFMT_DOC=FALSE)
+find_package(fmt CONFIG REQUIRED)
-auib_import(range-v3 https://github.com/ericniebler/range-v3
- VERSION 0.12.0
- CMAKE_ARGS -DRANGE_V3_DOCS=OFF -DRANGE_V3_TESTS=OFF -DRANGE_V3_EXAMPLES=OFF -DRANGE_V3_PERF=OFF -DRANGE_V3_HEADER_CHECKS=OFF)
+find_package(range-v3 CONFIG REQUIRED)
# [auib_import examples]
aui_link(aui.core PUBLIC fmt::fmt-header-only range-v3::range-v3)
diff --git a/aui.crypt/CMakeLists.txt b/aui.crypt/CMakeLists.txt
index c5354f2..778d45e 100644
--- a/aui.crypt/CMakeLists.txt
+++ b/aui.crypt/CMakeLists.txt
@@ -1,9 +1,7 @@
cmake_minimum_required(VERSION 3.10)
-unset(OPENSSL_CRYPTO_LIBRARY CACHE)
-unset(OPENSSL_SSL_LIBRARY CACHE)
-auib_import(OpenSSL https://github.com/aui-framework/openssl-cmake/archive/56ee19b7e11b418e0f29825414abdca96ff6b83e.zip ARCHIVE)
+find_package(OpenSSL REQUIRED)
aui_module(aui.crypt EXPORT aui)
aui_enable_tests(aui.crypt)
diff --git a/aui.image/CMakeLists.txt b/aui.image/CMakeLists.txt
index 033e7ad..a6f292c 100644
--- a/aui.image/CMakeLists.txt
+++ b/aui.image/CMakeLists.txt
@@ -1,18 +1,13 @@
cmake_minimum_required(VERSION 3.10)
-auib_import(lunasvg https://github.com/aui-framework/lunasvg
- VERSION 272ceee)
+find_package(lunasvg CONFIG REQUIRED)
-set(WEBP_COMPONENTS_TO_DISABLE ANIM_UTILS CWEBP DWEBP GIF2WEBP IMG2WEBP VWEBP WEBPINFO LIBWEBPMUX WEBPMUX EXTRAS)
-
-foreach(_component ${WEBP_COMPONENTS_TO_DISABLE})
- list(APPEND WEBP_CMAKE_ARGS "-DWEBP_BUILD_${_component}=OFF")
-endforeach()
-
-auib_import(WebP https://github.com/webmproject/libwebp VERSION 1.3.1 CMAKE_ARGS ${WEBP_CMAKE_ARGS})
+find_package(WebP CONFIG REQUIRED)
aui_module(aui.image WHOLEARCHIVE EXPORT aui)
-add_subdirectory(3rdparty)
-aui_link(aui.image PRIVATE aui::core lunasvg::lunasvg WebP::webp WebP::webpdemux)
+find_package(unofficial-libnsgif CONFIG REQUIRED)
+find_package(Stb REQUIRED)
+aui_link(aui.image PRIVATE aui::core lunasvg::lunasvg WebP::webp WebP::webpdemux unofficial::libnsgif::nsgif)
+target_include_directories(aui.image PRIVATE ${Stb_INCLUDE_DIR})
aui_enable_tests(aui.image)
diff --git a/aui.image/src/AUI/Image/gif/GifImageFactory.cpp b/aui.image/src/AUI/Image/gif/GifImageFactory.cpp
index e9ca38f..4597d68 100644
--- a/aui.image/src/AUI/Image/gif/GifImageFactory.cpp
+++ b/aui.image/src/AUI/Image/gif/GifImageFactory.cpp
@@ -17,7 +17,9 @@
#include "AUI/Image/AImage.h"
#include "AUI/Util/ARaiiHelper.h"
#include "AUI/Logging/ALogger.h"
-#include "nsgif.h"
+extern "C" {
+#include <nsgif.h>
+}
static nsgif_bitmap_t* create_callback(int width, int height) {
return new char[4 * width * height];
diff --git a/cmake/aui.build.cmake b/cmake/aui.build.cmake
index 90c53d4..7a8e8e8 100644
--- a/cmake/aui.build.cmake
+++ b/cmake/aui.build.cmake
@@ -1072,18 +1072,18 @@ function(aui_module AUI_MODULE_NAME)
ARCHIVE DESTINATION "lib"
LIBRARY DESTINATION "lib"
RUNTIME DESTINATION "bin"
- PUBLIC_HEADER DESTINATION "${AUI_MODULE_NAME}/include"
- INCLUDES DESTINATION "${AUI_MODULE_NAME}/include"
+ PUBLIC_HEADER DESTINATION "include"
+ INCLUDES DESTINATION "include"
)
install(
DIRECTORY src/
- DESTINATION "${AUI_MODULE_NAME}/include/"
+ DESTINATION "include/"
FILES_MATCHING PATTERN "*.h"
PATTERN "*.hpp"
)
- target_include_directories(${AUI_MODULE_NAME} INTERFACE $<INSTALL_INTERFACE:${AUI_MODULE_NAME}/include/>)
+ target_include_directories(${AUI_MODULE_NAME} INTERFACE $<INSTALL_INTERFACE:include>)
endif()
if (NOT BUILD_AS_IMPORTED_NAME STREQUAL ${AUI_MODULE_NAME})
add_library(${BUILD_AS_IMPORTED_NAME} ALIAS ${AUI_MODULE_NAME})

View File

@ -0,0 +1,21 @@
diff --git a/aui.boot.cmake b/aui.boot.cmake
index 6baab15..72a838b 100644
--- a/aui.boot.cmake
+++ b/aui.boot.cmake
@@ -204,13 +204,13 @@ endif()
# create all required dirs
-if (NOT EXISTS ${AUIB_CACHE_DIR})
+if (0)
file(MAKE_DIRECTORY ${AUIB_CACHE_DIR})
endif()
-if (NOT EXISTS ${AUIB_CACHE_DIR}/prefix)
+if (0)
file(MAKE_DIRECTORY ${AUIB_CACHE_DIR}/prefix)
endif()
-if (NOT EXISTS ${AUIB_CACHE_DIR}/repo)
+if (0)
file(MAKE_DIRECTORY ${AUIB_CACHE_DIR}/repo)
endif()

View File

@ -0,0 +1,22 @@
diff --git a/cmake/aui.build.cmake b/cmake/aui.build.cmake
index 90c53d45..c741359d 100644
--- a/cmake/aui.build.cmake
+++ b/cmake/aui.build.cmake
@@ -230,7 +230,7 @@ macro(_aui_import_gtest)
endmacro()
macro(aui_enable_tests AUI_MODULE_NAME)
- if (NOT CMAKE_CROSSCOMPILING)
+ if (0)
_aui_import_gtest()
if (NOT TARGET GTest::gtest)
message(FATAL_ERROR "GTest::gtest not found!")
@@ -328,7 +328,7 @@ macro(_aui_import_google_benchmark)
endmacro()
macro(aui_enable_benchmarks AUI_MODULE_NAME)
- if (NOT CMAKE_CROSSCOMPILING)
+ if (0)
_aui_import_gtest()
_aui_import_google_benchmark()
if (NOT TARGET benchmark::benchmark)

View File

@ -0,0 +1,13 @@
diff --git a/cmake/aui.build.cmake b/cmake/aui.build.cmake
index 90c53d4..780c872 100644
--- a/cmake/aui.build.cmake
+++ b/cmake/aui.build.cmake
@@ -140,7 +140,7 @@ else()
set(AUI_COMPILER_MSVC 0 CACHE INTERNAL "Compiler")
endif()
-if (CMAKE_GENERATOR_PLATFORM MATCHES "(arm64)|(ARM64)" OR CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64)")
+if (CMAKE_GENERATOR_PLATFORM MATCHES "(aarch64|arm64|AARCH64|ARM64)" OR CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|AARCH64|ARM64)")
set(AUI_ARCH_X86_64 0 CACHE INTERNAL "Arch")
set(AUI_ARCH_X86 0 CACHE INTERNAL "Arch")
set(AUI_ARCH_ARM_64 1 CACHE INTERNAL "Arch")

View File

@ -0,0 +1,196 @@
diff --git a/aui.core/src/AUI/Common/AByteBufferView.h b/aui.core/src/AUI/Common/AByteBufferView.h
index 0f82653..176170c 100644
--- a/aui.core/src/AUI/Common/AByteBufferView.h
+++ b/aui.core/src/AUI/Common/AByteBufferView.h
@@ -116,8 +116,13 @@ public:
inline std::ostream& operator<<(std::ostream& lhs, const AByteBufferView& rhs) {
lhs << "[";
for (const auto b : rhs) {
- char buf[8];
+ char buf[16];
+ #if defined(FMT_VERSION) && (FMT_VERSION < 100000)
lhs.write(buf, std::distance(std::begin(buf), fmt::format_to(buf, " {:02x}", b)));
+ #else
+ auto end = fmt::format_to(buf, " {:02x}", static_cast<uint8_t>(b));
+ lhs.write(buf, end - buf);
+ #endif
}
lhs << " ]";
diff --git a/aui.core/src/AUI/Common/AString.h b/aui.core/src/AUI/Common/AString.h
index cbf9d12..2623866 100644
--- a/aui.core/src/AUI/Common/AString.h
+++ b/aui.core/src/AUI/Common/AString.h
@@ -14,6 +14,7 @@
#include <algorithm>
#include <string>
#include <iostream>
+#include <cstring>
#include "AUI/Core.h"
#include "AUI/Traits/values.h"
#include <AUI/Common/ASet.h>
@@ -839,7 +840,9 @@ namespace aui::win32 {
}
#endif
+#if defined(FMT_VERSION) && (FMT_VERSION < 100000)
template <> struct fmt::detail::is_string<AString>: std::false_type {};
+#endif
template <> struct fmt::formatter<AString>: fmt::formatter<std::string> {
auto format(const AString& s, format_context& ctx) const {
diff --git a/aui.core/src/AUI/Traits/strings.h b/aui.core/src/AUI/Traits/strings.h
index ef92c34..7d5d5d7 100644
--- a/aui.core/src/AUI/Traits/strings.h
+++ b/aui.core/src/AUI/Traits/strings.h
@@ -17,6 +17,7 @@
#include "types.h"
#include <fmt/format.h>
+#include <fmt/ranges.h>
namespace aui {
diff --git a/aui.curl/src/AUI/Curl/ACurlMulti.cpp b/aui.curl/src/AUI/Curl/ACurlMulti.cpp
index f6faf9b..b6774cc 100644
--- a/aui.curl/src/AUI/Curl/ACurlMulti.cpp
+++ b/aui.curl/src/AUI/Curl/ACurlMulti.cpp
@@ -53,7 +53,11 @@ void ACurlMulti::run(bool infinite) {
AThread::interruptionPoint();
if (status) {
+ #if defined(FMT_VERSION) && (FMT_VERSION < 100000)
throw ACurl::Exception("curl poll failed: {}"_format(status));
+ #else
+ throw ACurl::Exception(fmt::format("curl poll failed: {}", static_cast<int>(status)));
+ #endif
}
int messagesLeft;
diff --git a/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp b/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp
index 0847241..58f6e0f 100644
--- a/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp
+++ b/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp
@@ -95,7 +95,11 @@ _<AST> Parser::parseShader() {
break;
default:
+ #if defined(FMT_VERSION) && (FMT_VERSION < 100000)
reportUnexpectedErrorAndSkip("expected using, class, struct, input, output, inter, uniform, entry keywords"_format(keywordType));
+ #else
+ reportUnexpectedErrorAndSkip(fmt::format("expected using, class, struct, input, output, inter, uniform, entry keywords {}", keywordType));
+ #endif
}
break;
}
diff --git a/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h b/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h
index c75dc8b..bdebaae 100644
--- a/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h
+++ b/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h
@@ -101,4 +101,10 @@ public:
static Type fromName(const AString& name);
};
-
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <> struct fmt::formatter<KeywordToken::Type> : fmt::formatter<const char*> {
+ auto format(KeywordToken::Type type, fmt::format_context& ctx) const {
+ return fmt::formatter<const char*>::format(KeywordToken(type).getName(), ctx);
+ }
+};
+#endif
diff --git a/aui.views/src/AUI/ASS/Property/Opacity.h b/aui.views/src/AUI/ASS/Property/Opacity.h
index 53d4786..dfde6ce 100644
--- a/aui.views/src/AUI/ASS/Property/Opacity.h
+++ b/aui.views/src/AUI/ASS/Property/Opacity.h
@@ -19,6 +19,15 @@
#include <AUI/Common/IStringable.h>
#include "IProperty.h"
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <> struct fmt::formatter<aui::float_within_0_1> : fmt::formatter<float> {
+ auto format(const aui::float_within_0_1& v, fmt::format_context& ctx) const {
+ return fmt::formatter<float>::format(static_cast<float>(v), ctx);
+ }
+};
+#endif
+
+
namespace ass {
/**
diff --git a/aui.views/src/AUI/ASS/unset.h b/aui.views/src/AUI/ASS/unset.h
index 62a2fb8..fa5780c 100644
--- a/aui.views/src/AUI/ASS/unset.h
+++ b/aui.views/src/AUI/ASS/unset.h
@@ -182,4 +182,28 @@ std::ostream& operator<<(std::ostream& o, const ass::unset_wrap<T>& wrap) {
o << "<unset>";
}
return o;
-}
\ No newline at end of file
+}
+
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <typename T, typename Char>
+struct fmt::formatter<ass::unset_wrap<T>, Char> {
+ fmt::formatter<T, Char> inner;
+
+ // Parse format specs like {:>10}, {:.2f}, etc.
+ template<typename ParseContext>
+ constexpr auto parse(ParseContext& ctx) {
+ return inner.parse(ctx);
+ }
+
+ // Format either the value (if set) or the "<unset>" fallback
+ template<typename FormatContext>
+ auto format(const ass::unset_wrap<T>& value, FormatContext& ctx) const {
+ if (value) {
+ return inner.format(*value, ctx);
+ } else {
+ static constexpr auto fallback = std::basic_string_view<Char>(FMT_STRING("<unset>"));
+ return fmt::format_to(ctx.out(), "{}", fallback);
+ }
+ }
+};
+#endif
diff --git a/aui.views/src/AUI/Util/AMetric.h b/aui.views/src/AUI/Util/AMetric.h
index 84a5ec1..f58e160 100644
--- a/aui.views/src/AUI/Util/AMetric.h
+++ b/aui.views/src/AUI/Util/AMetric.h
@@ -16,6 +16,7 @@
#include <ostream>
#include <tuple>
#include "AUI/Util/Assert.h"
+#include <fmt/format.h>
class AString;
@@ -259,4 +260,25 @@ inline std::ostream& operator<<(std::ostream& o, const AMetric& value) {
break;
}
return o;
-}
\ No newline at end of file
+}
+
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <> struct fmt::formatter<AMetric> {
+ constexpr auto parse(format_parse_context& ctx) {
+ return ctx.begin(); // No custom formatting options needed
+ }
+
+ template <typename FormatContext>
+ auto format(const AMetric& metric, FormatContext& ctx) const {
+ std::string_view suffix;
+ switch (metric.getUnit()) {
+ case AMetric::T_PX: suffix = "px"; break;
+ case AMetric::T_DP: suffix = "dp"; break;
+ case AMetric::T_PT: suffix = "pt"; break;
+ default: suffix = ""; break;
+ }
+
+ return fmt::format_to(ctx.out(), "{}{}", metric.getRawValue(), suffix);
+ }
+};
+#endif

View File

@ -0,0 +1,58 @@
set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO aui-framework/aui
REF "v${VERSION}"
SHA512 decac6cebb6003791896e8d7a9fd7334351aa30205eac787cdbb51d1da657cda140178e0b8f5d236b42a4c1f37633141fb869784e5fc5c9718b5396e077afe7d
HEAD_REF master
PATCHES
debundle.patch
disable-tests.patch
disable-auib.patch
fix-fmt12.patch
fix-arm64.patch
)
file(REMOVE_RECURSE "${SOURCE_PATH}/aui.audio/3rdparty" "${SOURCE_PATH}/aui.core/3rdparty" "${SOURCE_PATH}/aui.image/3rdparty" "${SOURCE_PATH}/aui.sqlite/3rdparty")
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DAUIB_COMPONENTS=toolbox
-DAUI_INSTALL_RUNTIME_DEPENDENCIES=OFF
-DAUIB_NO_PRECOMPILED=TRUE
-DAUIB_DISABLE=ON
)
vcpkg_cmake_install()
if(EXISTS "${CURRENT_PACKAGES_DIR}/bin/aui.toolbox${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
vcpkg_copy_tools(TOOL_NAMES aui.toolbox AUTO_CLEAN)
endif()
file(GLOB _aui_toolbox_leftovers "${CURRENT_PACKAGES_DIR}/*")
foreach(_entry IN LISTS _aui_toolbox_leftovers)
if(NOT _entry STREQUAL "${CURRENT_PACKAGES_DIR}/tools" AND NOT _entry STREQUAL "${CURRENT_PACKAGES_DIR}/share")
file(REMOVE_RECURSE "${_entry}")
endif()
endforeach()
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/aui-toolbox")
file(WRITE "${CURRENT_PACKAGES_DIR}/share/aui-toolbox/aui-toolbox-config.cmake"
[=[
get_filename_component(_aui_toolbox_root "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE)
find_program(AUI_TOOLBOX_EXE NAMES aui.toolbox
HINTS
"${_aui_toolbox_root}/tools/aui-toolbox"
"${_aui_toolbox_root}/tools/aui"
"${_aui_toolbox_root}/bin"
NO_DEFAULT_PATH
)
if(AUI_TOOLBOX_EXE)
set(aui-toolbox_FOUND TRUE)
else()
set(aui-toolbox_FOUND FALSE)
endif()
]=])
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

View File

@ -0,0 +1,28 @@
{
"name": "aui-toolbox",
"version": "7.1.2",
"description": "Host-side asset and shader compiler (aui.toolbox) for the AUI declarative UI toolkit",
"homepage": "https://github.com/aui-framework/aui",
"license": "MPL-2.0",
"supports": "native & !(linux & arm64)",
"dependencies": [
"fmt",
"glm",
{
"name": "libbacktrace",
"platform": "linux"
},
"libnsgif",
"libwebp",
"lunasvg",
"minizip",
"openssl",
"range-v3",
"stb",
{
"name": "vcpkg-cmake",
"host": true
},
"zlib"
]
}

View File

@ -0,0 +1,322 @@
get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(AUI_ROOT_DIR "${SELF_DIR}/../.." ABSOLUTE)
@AUI_CONFIG_VARS@
@AUIB_DEPS@
include(CMakeFindDependencyMacro)
if (NOT AUI_FIND_COMPONENTS)
set(AUI_FIND_COMPONENTS ${aui_FIND_COMPONENTS})
endif()
if (NOT AUI_FIND_COMPONENTS)
set(AUI_FIND_COMPONENTS ${AUI_AVAILABLE_COMPONENTS})
set(_all TRUE)
else()
if (views IN_LIST AUI_FIND_COMPONENTS)
list(APPEND AUI_FIND_COMPONENTS xml image)
endif()
list(REMOVE_DUPLICATES AUI_FIND_COMPONENTS)
endif()
set(_aui_needed_targets "")
foreach(_module ${AUI_FIND_COMPONENTS})
if(NOT DEFINED AUI_COMPONENT_${_module}_LINK_LIBS)
continue()
endif()
foreach(_dep IN LISTS AUI_COMPONENT_${_module}_LINK_LIBS)
string(REGEX REPLACE "^\\\$<LINK_ONLY:(.*)>$" "\\1" _dep_target "${_dep}")
if(_dep_target MATCHES "::" AND NOT _dep_target MATCHES "^aui::")
list(APPEND _aui_needed_targets "${_dep_target}")
endif()
endforeach()
endforeach()
list(REMOVE_DUPLICATES _aui_needed_targets)
foreach(_target IN LISTS _aui_needed_targets)
if(TARGET "${_target}")
continue()
endif()
if(_target MATCHES "^glm::")
find_dependency(glm CONFIG)
elseif(_target MATCHES "^fmt::")
find_dependency(fmt CONFIG)
elseif(_target MATCHES "^range-v3::")
find_dependency(range-v3 CONFIG)
elseif(_target STREQUAL "ZLIB::ZLIB")
find_dependency(ZLIB)
elseif(_target MATCHES "^Ogg::")
find_dependency(Ogg CONFIG)
elseif(_target MATCHES "^Vorbis::")
find_dependency(Vorbis CONFIG)
elseif(_target STREQUAL "Threads::Threads")
find_dependency(Threads)
elseif(_target STREQUAL "unofficial::libbacktrace::libbacktrace")
find_dependency(unofficial-libbacktrace CONFIG)
elseif(_target MATCHES "^unofficial::libnsgif::")
find_dependency(unofficial-libnsgif CONFIG)
elseif(_target MATCHES "^unofficial::sqlite3::")
find_dependency(unofficial-sqlite3 CONFIG)
elseif(_target MATCHES "^OpenSSL::")
find_dependency(OpenSSL)
elseif(_target MATCHES "^CURL::")
find_dependency(CURL)
elseif(_target MATCHES "^lunasvg::")
find_dependency(lunasvg CONFIG)
elseif(_target MATCHES "^MINIZIP::")
find_dependency(minizip CONFIG)
elseif(_target MATCHES "^WebP::")
find_dependency(WebP CONFIG)
elseif(_target MATCHES "^GLEW::")
find_dependency(GLEW CONFIG)
elseif(_target STREQUAL "Freetype::Freetype")
find_dependency(Freetype)
elseif(_target MATCHES "^X11::")
find_dependency(X11)
elseif(_target STREQUAL "Fontconfig::Fontconfig")
find_dependency(Fontconfig)
elseif(_target MATCHES "^OpenGL::")
find_dependency(OpenGL)
elseif(_target MATCHES "^oboe::" OR _target STREQUAL "oboe")
find_path(OBOE_INCLUDE_DIR NAMES oboe/Oboe.h REQUIRED)
find_library(OBOE_LIBRARY NAMES oboe REQUIRED)
if(NOT TARGET oboe::oboe)
add_library(oboe::oboe UNKNOWN IMPORTED)
set_target_properties(oboe::oboe PROPERTIES
IMPORTED_LOCATION "${OBOE_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${OBOE_INCLUDE_DIR}"
)
endif()
elseif(_target MATCHES "^PkgConfig::")
if(NOT DEFINED PKG_CONFIG_FOUND)
find_package(PkgConfig QUIET)
endif()
if(NOT PKG_CONFIG_FOUND)
continue()
endif()
set(_aui_pkgconfig_name "")
if(_target STREQUAL "PkgConfig::PulseAudio")
set(_aui_pkgconfig_name libpulse)
elseif(_target STREQUAL "PkgConfig::PulseAudioSimple")
set(_aui_pkgconfig_name libpulse-simple)
elseif(_target STREQUAL "PkgConfig::Opus")
set(_aui_pkgconfig_name opus)
elseif(_target STREQUAL "PkgConfig::soxr")
set(_aui_pkgconfig_name soxr)
elseif(_target STREQUAL "PkgConfig::DBUS")
set(_aui_pkgconfig_name dbus-1)
elseif(_target STREQUAL "PkgConfig::GTK3")
set(_aui_pkgconfig_name gtk+-3.0)
endif()
if(_aui_pkgconfig_name)
string(REPLACE "PkgConfig::" "" _aui_pkgconfig_prefix "${_target}")
if(NOT TARGET "PkgConfig::${_aui_pkgconfig_prefix}")
if(DEFINED ENV{PKG_CONFIG_PATH})
set(_aui_prev_pkg_config_path "$ENV{PKG_CONFIG_PATH}")
else()
unset(_aui_prev_pkg_config_path)
endif()
set(ENV{PKG_CONFIG_PATH} "${AUI_ROOT_DIR}/lib/pkgconfig:${AUI_ROOT_DIR}/share/pkgconfig:$ENV{PKG_CONFIG_PATH}")
pkg_check_modules(${_aui_pkgconfig_prefix} IMPORTED_TARGET ${_aui_pkgconfig_name})
if(DEFINED _aui_prev_pkg_config_path)
set(ENV{PKG_CONFIG_PATH} "${_aui_prev_pkg_config_path}")
else()
unset(ENV{PKG_CONFIG_PATH})
endif()
endif()
endif()
endif()
endforeach()
function(_aui_check_component_deps _component)
set(_aui_deps_ok TRUE PARENT_SCOPE)
if(NOT DEFINED AUI_COMPONENT_${_component}_LINK_LIBS)
return()
endif()
foreach(_dep IN LISTS AUI_COMPONENT_${_component}_LINK_LIBS)
string(REGEX REPLACE "^\\\$<LINK_ONLY:(.*)>$" "\\1" _dep_target "${_dep}")
if(_dep_target MATCHES "^aui::")
string(REPLACE "aui::" "" _dep_module "${_dep_target}")
if(NOT _dep_module IN_LIST AUI_AVAILABLE_COMPONENTS)
set(_aui_deps_ok FALSE PARENT_SCOPE)
return()
endif()
elseif(_dep_target MATCHES "::")
if(NOT TARGET "${_dep_target}")
set(_aui_deps_ok FALSE PARENT_SCOPE)
return()
endif()
endif()
endforeach()
endfunction()
set(_aui_pending_components ${AUI_FIND_COMPONENTS})
set(_aui_processed_components "")
while(_aui_pending_components)
list(POP_FRONT _aui_pending_components _module)
if(_module IN_LIST _aui_processed_components)
continue()
endif()
list(APPEND _aui_processed_components ${_module})
if (_module STREQUAL "toolbox")
set(${CMAKE_FIND_PACKAGE_NAME}_toolbox_FOUND TRUE)
continue()
endif()
set(_module_target_name aui::${_module})
if (NOT ${_module} IN_LIST AUI_ALL_COMPONENTS)
set(${CMAKE_FIND_PACKAGE_NAME}_${_module}_FOUND FALSE)
if (${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED AND ${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED_${_module})
message(FATAL_ERROR "Unknown component ${_module}")
else()
message(STATUS "Unknown component ${_module}")
endif()
continue()
endif()
if (_module STREQUAL toolbox)
continue()
endif()
if (${_module} IN_LIST AUI_AVAILABLE_COMPONENTS)
_aui_check_component_deps(${_module})
if(NOT _aui_deps_ok)
set(${CMAKE_FIND_PACKAGE_NAME}_${_module}_FOUND FALSE)
message(STATUS "AUI component '${_module}' skipped: missing transitive dependencies")
continue()
endif()
if (WIN32)
find_file(${CMAKE_FIND_PACKAGE_NAME}_${_module}_LIBRARY
NAMES "aui.${_module}.dll" "libaui.${_module}.dll"
PATHS "${AUI_ROOT_DIR}/bin" "${AUI_ROOT_DIR}/aui.${_module}/bin"
NO_DEFAULT_PATH
NO_CACHE)
find_file(${CMAKE_FIND_PACKAGE_NAME}_${_module}_LIBRARY_DEBUG
NAMES "aui.${_module}.dll" "libaui.${_module}.dll"
PATHS "${AUI_ROOT_DIR}/debug/bin" "${AUI_ROOT_DIR}/debug/aui.${_module}/bin"
NO_DEFAULT_PATH
NO_CACHE)
find_library(${CMAKE_FIND_PACKAGE_NAME}_${_module}_IMPLIBRARY "aui.${_module}"
PATHS "${AUI_ROOT_DIR}/lib" "${AUI_ROOT_DIR}/aui.${_module}/lib"
NO_DEFAULT_PATH
NO_CACHE)
find_library(${CMAKE_FIND_PACKAGE_NAME}_${_module}_IMPLIBRARY_DEBUG "aui.${_module}"
PATHS "${AUI_ROOT_DIR}/debug/lib" "${AUI_ROOT_DIR}/debug/aui.${_module}/lib"
NO_DEFAULT_PATH
NO_CACHE)
else()
find_library(${CMAKE_FIND_PACKAGE_NAME}_${_module}_LIBRARY "aui.${_module}"
PATHS "${AUI_ROOT_DIR}/lib" "${AUI_ROOT_DIR}/aui.${_module}/lib"
NO_DEFAULT_PATH
NO_CACHE)
find_library(${CMAKE_FIND_PACKAGE_NAME}_${_module}_LIBRARY_DEBUG "aui.${_module}"
PATHS "${AUI_ROOT_DIR}/debug/lib" "${AUI_ROOT_DIR}/debug/aui.${_module}/lib"
NO_DEFAULT_PATH
NO_CACHE)
endif()
set(_lib ${${CMAKE_FIND_PACKAGE_NAME}_${_module}_LIBRARY})
set(_lib_debug ${${CMAKE_FIND_PACKAGE_NAME}_${_module}_LIBRARY_DEBUG})
set(_implib ${${CMAKE_FIND_PACKAGE_NAME}_${_module}_IMPLIBRARY})
set(_implib_debug ${${CMAKE_FIND_PACKAGE_NAME}_${_module}_IMPLIBRARY_DEBUG})
set(_include "${AUI_ROOT_DIR}/include")
if ((_lib OR _implib) AND EXISTS ${_include})
set(${CMAKE_FIND_PACKAGE_NAME}_${_module}_FOUND TRUE)
if (NOT _lib)
set(_lib ${_implib})
endif()
if (NOT _lib_debug)
set(_lib_debug ${_implib_debug})
endif()
list(APPEND ${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${_lib})
list(APPEND ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${_include})
list(APPEND ${CMAKE_FIND_PACKAGE_NAME}_IMPORTED_TARGETS "${_module_target_name}")
add_library(${_module_target_name} ${AUI_COMPONENT_${_module}_KIND} IMPORTED)
add_library(aui.${_module} ALIAS ${_module_target_name})
target_link_libraries(${_module_target_name} INTERFACE ${AUI_COMPONENT_${_module}_LINK_LIBS})
target_link_options(${_module_target_name} INTERFACE ${AUI_COMPONENT_${_module}_LINK_OPTIONS})
# Per-config imported locations: Debug consumers link the debug
# libs (debug/lib), all other configurations the release ones.
set(_aui_props
IMPORTED_LOCATION "${_lib}"
INTERFACE_INCLUDE_DIRECTORIES "${AUI_ROOT_DIR}/include"
INTERFACE_LINK_DIRECTORIES "${AUI_ROOT_DIR}/lib")
if(_implib)
list(APPEND _aui_props IMPORTED_IMPLIB "${_implib}")
endif()
if(_lib_debug)
list(APPEND _aui_props IMPORTED_LOCATION_DEBUG "${_lib_debug}")
endif()
if(_implib_debug)
list(APPEND _aui_props IMPORTED_IMPLIB_DEBUG "${_implib_debug}")
endif()
set_target_properties(${_module_target_name} PROPERTIES ${_aui_props})
target_compile_definitions(${_module_target_name} INTERFACE ${AUI_COMPONENT_${_module}_COMPILE_DEFINITIONS})
if (AUI_COMPONENT_${_module}_WHOLEARCHIVE)
set_target_properties(${_module_target_name} PROPERTIES INTERFACE_AUI_WHOLEARCHIVE ON)
endif()
foreach(_dep IN LISTS AUI_COMPONENT_${_module}_LINK_LIBS)
string(REGEX REPLACE "^\\\$<LINK_ONLY:(.*)>$" "\\1" _dep_target "${_dep}")
if(_dep_target MATCHES "^aui::")
string(REPLACE "aui::" "" _dep_module "${_dep_target}")
if(NOT _dep_module IN_LIST _aui_processed_components AND _dep_module IN_LIST AUI_AVAILABLE_COMPONENTS)
list(APPEND _aui_pending_components ${_dep_module})
endif()
endif()
endforeach()
continue()
endif()
endif()
set(${CMAKE_FIND_PACKAGE_NAME}_${_module}_FOUND FALSE)
endwhile()
if(NOT _all)
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND TRUE)
foreach(_module ${AUI_FIND_COMPONENTS})
if(NOT ${CMAKE_FIND_PACKAGE_NAME}_${_module}_FOUND)
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED_${_module} OR ${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Component ${_module} is not found")
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED_${_module})
message(FATAL_ERROR "Component ${_module} is not found")
else()
message(STATUS "Component ${_module} is not found")
endif()
endif()
endif()
endforeach()
else()
if("core" IN_LIST AUI_AVAILABLE_COMPONENTS AND ${CMAKE_FIND_PACKAGE_NAME}_core_FOUND AND ${CMAKE_FIND_PACKAGE_NAME}_IMPORTED_TARGETS)
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND TRUE)
else()
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "AUI could not be found because no core/available components could be loaded")
endif()
endif()
if (${CMAKE_FIND_PACKAGE_NAME}_FOUND AND ${CMAKE_FIND_PACKAGE_NAME}_IMPORTED_TARGETS AND NOT TARGET aui)
add_library(aui INTERFACE IMPORTED)
set_target_properties(aui PROPERTIES
INTERFACE_LINK_LIBRARIES "${${CMAKE_FIND_PACKAGE_NAME}_IMPORTED_TARGETS}")
endif()
set(AUI_BUILD_AUI_ROOT "${AUI_ROOT_DIR}/share/aui")
macro(auib_use_system_libs_begin)
endmacro()
macro(auib_use_system_libs_end)
endmacro()
include("${AUI_BUILD_AUI_ROOT}/cmake/aui.build.cmake")
if(NOT AUI_TOOLBOX_EXE)
find_program(AUI_TOOLBOX_EXE NAMES aui.toolbox
HINTS
"$ENV{AUI_TOOLBOX_EXE}"
"${AUI_ROOT_DIR}/tools/aui-toolbox"
"${AUI_ROOT_DIR}/tools/aui"
"${AUI_ROOT_DIR}/bin"
"${_VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}/tools/aui-toolbox"
"${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/tools/aui-toolbox"
)
endif()

362
ports/aui/debundle.patch Normal file
View File

@ -0,0 +1,362 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6902d56..d1d37e1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,9 +64,7 @@ function(define_aui_component AUI_COMPONENT_NAME)
add_subdirectory("aui.${AUI_COMPONENT_NAME}")
endfunction()
-auib_import(ZLIB https://github.com/aui-framework/zlib
- VERSION 448a9c76a97202a21f68bd82e453dd743e944a3a
- CMAKE_ARGS -DZLIB_BUILD_EXAMPLES=OFF)
+find_package(ZLIB REQUIRED)
# define all components
define_aui_component(core)
@@ -86,7 +84,7 @@ define_aui_component(json)
define_aui_component(audio)
define_aui_component(updater)
-if (NOT ANDROID AND NOT IOS)
+if (0)
define_aui_component(uitests)
endif()
@@ -195,7 +193,6 @@ auib_precompiled_binary()
# [auib_precompiled_binary]
# test aui.boot on ci/cd
-add_subdirectory(test/)
# [configure file example]
configure_file(cmake/aui-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/aui-config.cmake @ONLY)
diff --git a/aui.audio/CMakeLists.txt b/aui.audio/CMakeLists.txt
index 21e4415..7beaeca 100644
--- a/aui.audio/CMakeLists.txt
+++ b/aui.audio/CMakeLists.txt
@@ -1,30 +1,33 @@
cmake_minimum_required(VERSION 3.10)
aui_module(aui.audio WHOLEARCHIVE EXPORT aui)
-add_subdirectory(3rdparty/ogg)
+find_package(Ogg CONFIG REQUIRED)
+find_package(Vorbis CONFIG REQUIRED)
aui_link(aui.audio PUBLIC aui::core)
if (AUI_PLATFORM_ANDROID)
- auib_import(oboe https://github.com/google/oboe ADD_SUBDIRECTORY VERSION main)
- aui_link(aui.audio PUBLIC oboe $<LINK_ONLY:log> $<LINK_ONLY:OpenSLES>)
-
- install(
- TARGETS oboe
- EXPORT aui
- ARCHIVE DESTINATION "aui.audio/lib"
- LIBRARY DESTINATION "aui.audio/lib"
- RUNTIME DESTINATION "aui.audio/bin"
- PUBLIC_HEADER DESTINATION "aui.audio/include"
- INCLUDES DESTINATION "aui.audio/include"
- )
+ find_path(OBOE_INCLUDE_DIR NAMES oboe/Oboe.h REQUIRED)
+ find_library(OBOE_LIBRARY NAMES oboe REQUIRED)
+ if(NOT TARGET oboe::oboe)
+ add_library(oboe::oboe UNKNOWN IMPORTED)
+ set_target_properties(oboe::oboe PROPERTIES
+ IMPORTED_LOCATION "${OBOE_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${OBOE_INCLUDE_DIR}"
+ )
+ endif()
+ aui_link(aui.audio PUBLIC oboe::oboe $<LINK_ONLY:log> $<LINK_ONLY:OpenSLES>)
elseif (AUI_PLATFORM_LINUX)
- aui_link(aui.audio PUBLIC pulse)
+ include(FindPkgConfig)
+ pkg_check_modules(PulseAudio REQUIRED IMPORTED_TARGET libpulse)
+ pkg_check_modules(PulseAudioSimple REQUIRED IMPORTED_TARGET libpulse-simple)
+ aui_link(aui.audio PRIVATE PkgConfig::PulseAudio PkgConfig::PulseAudioSimple)
elseif (AUI_PLATFORM_WIN)
aui_link(aui.audio PUBLIC Winmm dsound.lib dxguid.lib)
endif()
-auib_import(Opus https://github.com/xiph/opus.git VERSION v1.4)
-aui_link(aui.audio PRIVATE Opus::opus)
+include(FindPkgConfig)
+pkg_check_modules(Opus REQUIRED IMPORTED_TARGET opus)
+aui_link(aui.audio PRIVATE PkgConfig::Opus)
if (AUI_PLATFORM_IOS OR AUI_PLATFORM_MACOS)
auib_use_system_libs_begin()
@@ -42,9 +45,9 @@ if (AUI_PLATFORM_MACOS)
"-framework QuartzCore")
endif()
-auib_import(soxr https://github.com/aui-framework/soxr
- ADD_SUBDIRECTORY
- VERSION adacc686124ac3568432f3dca388878963a005ee
- )
+include(FindPkgConfig)
+pkg_check_modules(soxr REQUIRED IMPORTED_TARGET soxr)
+
+aui_link(aui.audio PRIVATE PkgConfig::soxr)
-aui_link(aui.audio PRIVATE soxr)
+aui_link(aui.audio PRIVATE Vorbis::vorbisfile)
diff --git a/aui.audio/src/AUI/Audio/Formats/vorbis/AVorbisSoundPipe.cpp b/aui.audio/src/AUI/Audio/Formats/vorbis/AVorbisSoundPipe.cpp
index 5cffdb9..4479ca7 100644
--- a/aui.audio/src/AUI/Audio/Formats/vorbis/AVorbisSoundPipe.cpp
+++ b/aui.audio/src/AUI/Audio/Formats/vorbis/AVorbisSoundPipe.cpp
@@ -1,7 +1,7 @@
#include "AVorbisSoundPipe.h"
#include "vorbis/codec.h"
#include "AUI/Logging/ALogger.h"
-#include "os.h"
+#include <cmath>
static constexpr auto LOG_TAG = "vorbis";
@@ -71,7 +71,7 @@ void AVorbisSoundPipe::write(const char *src, size_t size) {
auto sampleCount = vorbis_synthesis_pcmout(mState.ptr(), &pcm);
for (int sampleNum = 0; sampleNum < sampleCount; sampleNum++) {
for (int channel = 0; channel < mInfo->channels; channel++) {
- auto sample = static_cast<int16_t>(vorbis_ftoi(
+ auto sample = static_cast<int16_t>(std::lrint(
glm::clamp(32768.f * pcm[channel][sampleNum], -32768.f, 32767.f)));
mDecodedSamples.write(reinterpret_cast<char*>(&sample), sizeof(sample));
}
diff --git a/aui.core/CMakeLists.txt b/aui.core/CMakeLists.txt
index 6aa1b07..0eaa67f 100644
--- a/aui.core/CMakeLists.txt
+++ b/aui.core/CMakeLists.txt
@@ -11,9 +11,8 @@ aui_enable_benchmarks(aui.core)
get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-if (GLM_INCLUDE_DIR)
- message(STATUS "Using custom GLM_INCLUDE_DIR: ${GLM_INCLUDE_DIR}")
-else()
+find_package(glm REQUIRED)
+if (0) # vendored glm replaced by vcpkg's glm
set(GLM_INCLUDE_DIR "${SELF_DIR}/3rdparty/glm")
install(
@@ -21,7 +20,8 @@ else()
DESTINATION "aui.core/include/"
)
endif()
-target_include_directories(aui.core PUBLIC $<BUILD_INTERFACE:${GLM_INCLUDE_DIR}>)
+target_link_libraries(aui.core PUBLIC glm::glm-header-only)
+target_compile_definitions(aui.core PUBLIC GLM_ENABLE_EXPERIMENTAL=1)
target_compile_definitions(aui.core PRIVATE UNICODE=1)
target_compile_definitions(aui.core PUBLIC NOMINMAX=1)
@@ -49,8 +49,7 @@ if (NOT WIN32)
endif()
if (AUI_PLATFORM_LINUX)
- auib_import(backtrace https://github.com/aui-framework/libbacktrace
- VERSION a5a32e3cc8e22a9fc40689a884b032c52ee3f88e)
+ find_package(unofficial-libbacktrace CONFIG REQUIRED)
set(_use_backtrace TRUE)
else()
@@ -84,7 +83,7 @@ endif()
if(_use_backtrace)
message(STATUS "Stacktrace backend: backtrace")
- aui_link(aui.core PRIVATE backtrace)
+ aui_link(aui.core PRIVATE unofficial::libbacktrace::libbacktrace)
target_compile_definitions(aui.core PRIVATE AUI_USE_BACKTRACE=1)
elseif(_use_unwind)
message(STATUS "Stacktrace backend: unwind")
@@ -111,7 +110,12 @@ if (ANDROID)
endif()
aui_link(aui.core PRIVATE ZLIB::ZLIB)
-add_subdirectory(3rdparty/minizip)
+find_package(minizip CONFIG REQUIRED)
+if(TARGET MINIZIP::minizip)
+ aui_link(aui.core PRIVATE MINIZIP::minizip)
+else()
+ aui_link(aui.core PRIVATE MINIZIP::minizipstatic)
+endif()
# forward platform info
foreach(_var AUI_PLATFORM_WIN
@@ -147,13 +151,9 @@ endif()
# [auib_import examples]
-auib_import(fmt https://github.com/fmtlib/fmt
- VERSION 9.1.0
- CMAKE_ARGS -DFMT_TEST=FALSE -DFMT_DOC=FALSE)
+find_package(fmt CONFIG REQUIRED)
-auib_import(range-v3 https://github.com/ericniebler/range-v3
- VERSION 0.12.0
- CMAKE_ARGS -DRANGE_V3_DOCS=OFF -DRANGE_V3_TESTS=OFF -DRANGE_V3_EXAMPLES=OFF -DRANGE_V3_PERF=OFF -DRANGE_V3_HEADER_CHECKS=OFF)
+find_package(range-v3 CONFIG REQUIRED)
# [auib_import examples]
aui_link(aui.core PUBLIC fmt::fmt-header-only range-v3::range-v3)
diff --git a/aui.crypt/CMakeLists.txt b/aui.crypt/CMakeLists.txt
index c5354f2..9adab74 100644
--- a/aui.crypt/CMakeLists.txt
+++ b/aui.crypt/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.10)
unset(OPENSSL_CRYPTO_LIBRARY CACHE)
unset(OPENSSL_SSL_LIBRARY CACHE)
-auib_import(OpenSSL https://github.com/aui-framework/openssl-cmake/archive/56ee19b7e11b418e0f29825414abdca96ff6b83e.zip ARCHIVE)
+find_package(OpenSSL REQUIRED)
aui_module(aui.crypt EXPORT aui)
aui_enable_tests(aui.crypt)
diff --git a/aui.curl/CMakeLists.txt b/aui.curl/CMakeLists.txt
index 5141c8e..1da335a 100644
--- a/aui.curl/CMakeLists.txt
+++ b/aui.curl/CMakeLists.txt
@@ -1,7 +1,6 @@
cmake_minimum_required(VERSION 3.10)
-auib_import(CURL https://github.com/aui-framework/curl/archive/refs/heads/master.zip
- ARCHIVE)
+find_package(CURL REQUIRED)
aui_module(aui.curl EXPORT aui WHOLEARCHIVE)
aui_enable_tests(aui.curl)
diff --git a/aui.image/CMakeLists.txt b/aui.image/CMakeLists.txt
index 033e7ad..e9494fe 100644
--- a/aui.image/CMakeLists.txt
+++ b/aui.image/CMakeLists.txt
@@ -1,7 +1,6 @@
cmake_minimum_required(VERSION 3.10)
-auib_import(lunasvg https://github.com/aui-framework/lunasvg
- VERSION 272ceee)
+find_package(lunasvg CONFIG REQUIRED)
set(WEBP_COMPONENTS_TO_DISABLE ANIM_UTILS CWEBP DWEBP GIF2WEBP IMG2WEBP VWEBP WEBPINFO LIBWEBPMUX WEBPMUX EXTRAS)
@@ -10,9 +9,11 @@ foreach(_component ${WEBP_COMPONENTS_TO_DISABLE})
list(APPEND WEBP_CMAKE_ARGS "-DWEBP_BUILD_${_component}=OFF")
endforeach()
-auib_import(WebP https://github.com/webmproject/libwebp VERSION 1.3.1 CMAKE_ARGS ${WEBP_CMAKE_ARGS})
+find_package(WebP CONFIG REQUIRED)
aui_module(aui.image WHOLEARCHIVE EXPORT aui)
-add_subdirectory(3rdparty)
-aui_link(aui.image PRIVATE aui::core lunasvg::lunasvg WebP::webp WebP::webpdemux)
+find_package(unofficial-libnsgif CONFIG REQUIRED)
+find_package(Stb REQUIRED)
+aui_link(aui.image PRIVATE aui::core lunasvg::lunasvg WebP::webp WebP::webpdemux unofficial::libnsgif::nsgif)
+target_include_directories(aui.image PRIVATE ${Stb_INCLUDE_DIR})
aui_enable_tests(aui.image)
diff --git a/aui.image/src/AUI/Image/gif/GifImageFactory.cpp b/aui.image/src/AUI/Image/gif/GifImageFactory.cpp
index e9ca38f..4597d68 100644
--- a/aui.image/src/AUI/Image/gif/GifImageFactory.cpp
+++ b/aui.image/src/AUI/Image/gif/GifImageFactory.cpp
@@ -17,7 +17,9 @@
#include "AUI/Image/AImage.h"
#include "AUI/Util/ARaiiHelper.h"
#include "AUI/Logging/ALogger.h"
-#include "nsgif.h"
+extern "C" {
+#include <nsgif.h>
+}
static nsgif_bitmap_t* create_callback(int width, int height) {
return new char[4 * width * height];
diff --git a/aui.sqlite/CMakeLists.txt b/aui.sqlite/CMakeLists.txt
index 6afd58f..8514048 100644
--- a/aui.sqlite/CMakeLists.txt
+++ b/aui.sqlite/CMakeLists.txt
@@ -1,12 +1,11 @@
cmake_minimum_required(VERSION 3.10)
-file(GLOB_RECURSE SQLITE3_SRCS 3rdparty/*.c)
+find_package(unofficial-sqlite3 CONFIG REQUIRED)
-aui_module(aui.sqlite ADDITIONAL_SRCS ${SQLITE3_SRCS}
- EXPORT aui
+aui_module(aui.sqlite EXPORT aui
PLUGIN)
-target_include_directories(aui.sqlite PRIVATE 3rdparty/sqlite3)
+aui_link(aui.sqlite PRIVATE unofficial::sqlite3::sqlite3)
aui_link(aui.sqlite PUBLIC aui::core)
aui_link(aui.sqlite PUBLIC aui::data)
diff --git a/aui.views/CMakeLists.txt b/aui.views/CMakeLists.txt
index dfe6b18..e8a40cf 100644
--- a/aui.views/CMakeLists.txt
+++ b/aui.views/CMakeLists.txt
@@ -9,10 +9,7 @@ find_package(OpenGL)
auib_use_system_libs_end()
if (OPENGL_FOUND OR ANDROID OR IOS)
- auib_import(Freetype https://github.com/freetype/freetype/archive/refs/tags/VER-2-13-3.zip ARCHIVE
- CONFIG_ONLY
- CMAKE_ARGS -DFT_DISABLE_BZIP2=ON -DFT_DISABLE_PNG=ON -DFT_DISABLE_HARFBUZZ=ON -DFT_DISABLE_BROTLI=ON
- )
+ find_package(Freetype REQUIRED)
if (NOT TARGET Freetype::Freetype)
message(FATAL_ERROR "Freetype not imported")
@@ -20,9 +17,7 @@ if (OPENGL_FOUND OR ANDROID OR IOS)
if (AUI_PLATFORM_WIN OR AUI_PLATFORM_LINUX OR AUI_PLATFORM_MACOS)
- auib_import(GLEW https://github.com/aui-framework/glew-cmake
- CMAKE_WORKING_DIR "build/cmake"
- VERSION a80a1dc)
+ find_package(GLEW CONFIG REQUIRED)
endif ()
aui_module(aui.views EXPORT aui)
@@ -32,17 +27,12 @@ if (OPENGL_FOUND OR ANDROID OR IOS)
auib_use_system_libs_begin()
find_package(PkgConfig REQUIRED)
- pkg_check_modules(DBUS REQUIRED dbus-1)
- include_directories(${DBUS_INCLUDE_DIRS})
- link_directories(${DBUS_LIBRARY_DIRS})
-
- pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
- include_directories(${GTK3_INCLUDE_DIRS})
- link_directories(${GTK3_LIBRARY_DIRS})
+ pkg_check_modules(DBUS REQUIRED IMPORTED_TARGET dbus-1)
+ pkg_check_modules(GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0)
auib_use_system_libs_end()
- aui_link(aui.views PRIVATE X11::X11 X11::Xrandr X11::Xcursor X11::Xi ${DBUS_LIBRARIES} ${GTK3_LIBRARIES} Fontconfig::Fontconfig)
+ aui_link(aui.views PRIVATE X11::X11 X11::Xrandr X11::Xcursor X11::Xi PkgConfig::DBUS PkgConfig::GTK3 Fontconfig::Fontconfig)
endif ()
if (NOT AUI_PLATFORM_WINDOWS)
diff --git a/cmake/aui.build.cmake b/cmake/aui.build.cmake
index 90c53d4..7a8e8e8 100644
--- a/cmake/aui.build.cmake
+++ b/cmake/aui.build.cmake
@@ -1072,18 +1072,18 @@ function(aui_module AUI_MODULE_NAME)
ARCHIVE DESTINATION "lib"
LIBRARY DESTINATION "lib"
RUNTIME DESTINATION "bin"
- PUBLIC_HEADER DESTINATION "${AUI_MODULE_NAME}/include"
- INCLUDES DESTINATION "${AUI_MODULE_NAME}/include"
+ PUBLIC_HEADER DESTINATION "include"
+ INCLUDES DESTINATION "include"
)
install(
DIRECTORY src/
- DESTINATION "${AUI_MODULE_NAME}/include/"
+ DESTINATION "include/"
FILES_MATCHING PATTERN "*.h"
PATTERN "*.hpp"
)
- target_include_directories(${AUI_MODULE_NAME} INTERFACE $<INSTALL_INTERFACE:${AUI_MODULE_NAME}/include/>)
+ target_include_directories(${AUI_MODULE_NAME} INTERFACE $<INSTALL_INTERFACE:include>)
endif()
if (NOT BUILD_AS_IMPORTED_NAME STREQUAL ${AUI_MODULE_NAME})
add_library(${BUILD_AS_IMPORTED_NAME} ALIAS ${AUI_MODULE_NAME})

View File

@ -0,0 +1,21 @@
diff --git a/aui.boot.cmake b/aui.boot.cmake
index 6baab15..72a838b 100644
--- a/aui.boot.cmake
+++ b/aui.boot.cmake
@@ -204,13 +204,13 @@ endif()
# create all required dirs
-if (NOT EXISTS ${AUIB_CACHE_DIR})
+if (0)
file(MAKE_DIRECTORY ${AUIB_CACHE_DIR})
endif()
-if (NOT EXISTS ${AUIB_CACHE_DIR}/prefix)
+if (0)
file(MAKE_DIRECTORY ${AUIB_CACHE_DIR}/prefix)
endif()
-if (NOT EXISTS ${AUIB_CACHE_DIR}/repo)
+if (0)
file(MAKE_DIRECTORY ${AUIB_CACHE_DIR}/repo)
endif()

View File

@ -0,0 +1,22 @@
diff --git a/cmake/aui.build.cmake b/cmake/aui.build.cmake
index 90c53d45..c741359d 100644
--- a/cmake/aui.build.cmake
+++ b/cmake/aui.build.cmake
@@ -230,7 +230,7 @@ macro(_aui_import_gtest)
endmacro()
macro(aui_enable_tests AUI_MODULE_NAME)
- if (NOT CMAKE_CROSSCOMPILING)
+ if (0)
_aui_import_gtest()
if (NOT TARGET GTest::gtest)
message(FATAL_ERROR "GTest::gtest not found!")
@@ -328,7 +328,7 @@ macro(_aui_import_google_benchmark)
endmacro()
macro(aui_enable_benchmarks AUI_MODULE_NAME)
- if (NOT CMAKE_CROSSCOMPILING)
+ if (0)
_aui_import_gtest()
_aui_import_google_benchmark()
if (NOT TARGET benchmark::benchmark)

13
ports/aui/fix-arm64.patch Normal file
View File

@ -0,0 +1,13 @@
diff --git a/cmake/aui.build.cmake b/cmake/aui.build.cmake
index 90c53d4..780c872 100644
--- a/cmake/aui.build.cmake
+++ b/cmake/aui.build.cmake
@@ -140,7 +140,7 @@ else()
set(AUI_COMPILER_MSVC 0 CACHE INTERNAL "Compiler")
endif()
-if (CMAKE_GENERATOR_PLATFORM MATCHES "(arm64)|(ARM64)" OR CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64)")
+if (CMAKE_GENERATOR_PLATFORM MATCHES "(aarch64|arm64|AARCH64|ARM64)" OR CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|AARCH64|ARM64)")
set(AUI_ARCH_X86_64 0 CACHE INTERNAL "Arch")
set(AUI_ARCH_X86 0 CACHE INTERNAL "Arch")
set(AUI_ARCH_ARM_64 1 CACHE INTERNAL "Arch")

196
ports/aui/fix-fmt12.patch Normal file
View File

@ -0,0 +1,196 @@
diff --git a/aui.core/src/AUI/Common/AByteBufferView.h b/aui.core/src/AUI/Common/AByteBufferView.h
index 0f82653..176170c 100644
--- a/aui.core/src/AUI/Common/AByteBufferView.h
+++ b/aui.core/src/AUI/Common/AByteBufferView.h
@@ -116,8 +116,13 @@ public:
inline std::ostream& operator<<(std::ostream& lhs, const AByteBufferView& rhs) {
lhs << "[";
for (const auto b : rhs) {
- char buf[8];
+ char buf[16];
+ #if defined(FMT_VERSION) && (FMT_VERSION < 100000)
lhs.write(buf, std::distance(std::begin(buf), fmt::format_to(buf, " {:02x}", b)));
+ #else
+ auto end = fmt::format_to(buf, " {:02x}", static_cast<uint8_t>(b));
+ lhs.write(buf, end - buf);
+ #endif
}
lhs << " ]";
diff --git a/aui.core/src/AUI/Common/AString.h b/aui.core/src/AUI/Common/AString.h
index cbf9d12..2623866 100644
--- a/aui.core/src/AUI/Common/AString.h
+++ b/aui.core/src/AUI/Common/AString.h
@@ -14,6 +14,7 @@
#include <algorithm>
#include <string>
#include <iostream>
+#include <cstring>
#include "AUI/Core.h"
#include "AUI/Traits/values.h"
#include <AUI/Common/ASet.h>
@@ -839,7 +840,9 @@ namespace aui::win32 {
}
#endif
+#if defined(FMT_VERSION) && (FMT_VERSION < 100000)
template <> struct fmt::detail::is_string<AString>: std::false_type {};
+#endif
template <> struct fmt::formatter<AString>: fmt::formatter<std::string> {
auto format(const AString& s, format_context& ctx) const {
diff --git a/aui.core/src/AUI/Traits/strings.h b/aui.core/src/AUI/Traits/strings.h
index ef92c34..7d5d5d7 100644
--- a/aui.core/src/AUI/Traits/strings.h
+++ b/aui.core/src/AUI/Traits/strings.h
@@ -17,6 +17,7 @@
#include "types.h"
#include <fmt/format.h>
+#include <fmt/ranges.h>
namespace aui {
diff --git a/aui.curl/src/AUI/Curl/ACurlMulti.cpp b/aui.curl/src/AUI/Curl/ACurlMulti.cpp
index f6faf9b..b6774cc 100644
--- a/aui.curl/src/AUI/Curl/ACurlMulti.cpp
+++ b/aui.curl/src/AUI/Curl/ACurlMulti.cpp
@@ -53,7 +53,11 @@ void ACurlMulti::run(bool infinite) {
AThread::interruptionPoint();
if (status) {
+ #if defined(FMT_VERSION) && (FMT_VERSION < 100000)
throw ACurl::Exception("curl poll failed: {}"_format(status));
+ #else
+ throw ACurl::Exception(fmt::format("curl poll failed: {}", static_cast<int>(status)));
+ #endif
}
int messagesLeft;
diff --git a/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp b/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp
index 0847241..58f6e0f 100644
--- a/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp
+++ b/aui.toolbox/src/ShadingLanguage/Lang/Parser.cpp
@@ -95,7 +95,11 @@ _<AST> Parser::parseShader() {
break;
default:
+ #if defined(FMT_VERSION) && (FMT_VERSION < 100000)
reportUnexpectedErrorAndSkip("expected using, class, struct, input, output, inter, uniform, entry keywords"_format(keywordType));
+ #else
+ reportUnexpectedErrorAndSkip(fmt::format("expected using, class, struct, input, output, inter, uniform, entry keywords {}", keywordType));
+ #endif
}
break;
}
diff --git a/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h b/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h
index c75dc8b..bdebaae 100644
--- a/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h
+++ b/aui.toolbox/src/ShadingLanguage/Lang/Token/KeywordToken.h
@@ -101,4 +101,10 @@ public:
static Type fromName(const AString& name);
};
-
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <> struct fmt::formatter<KeywordToken::Type> : fmt::formatter<const char*> {
+ auto format(KeywordToken::Type type, fmt::format_context& ctx) const {
+ return fmt::formatter<const char*>::format(KeywordToken(type).getName(), ctx);
+ }
+};
+#endif
diff --git a/aui.views/src/AUI/ASS/Property/Opacity.h b/aui.views/src/AUI/ASS/Property/Opacity.h
index 53d4786..dfde6ce 100644
--- a/aui.views/src/AUI/ASS/Property/Opacity.h
+++ b/aui.views/src/AUI/ASS/Property/Opacity.h
@@ -19,6 +19,15 @@
#include <AUI/Common/IStringable.h>
#include "IProperty.h"
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <> struct fmt::formatter<aui::float_within_0_1> : fmt::formatter<float> {
+ auto format(const aui::float_within_0_1& v, fmt::format_context& ctx) const {
+ return fmt::formatter<float>::format(static_cast<float>(v), ctx);
+ }
+};
+#endif
+
+
namespace ass {
/**
diff --git a/aui.views/src/AUI/ASS/unset.h b/aui.views/src/AUI/ASS/unset.h
index 62a2fb8..fa5780c 100644
--- a/aui.views/src/AUI/ASS/unset.h
+++ b/aui.views/src/AUI/ASS/unset.h
@@ -182,4 +182,28 @@ std::ostream& operator<<(std::ostream& o, const ass::unset_wrap<T>& wrap) {
o << "<unset>";
}
return o;
-}
\ No newline at end of file
+}
+
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <typename T, typename Char>
+struct fmt::formatter<ass::unset_wrap<T>, Char> {
+ fmt::formatter<T, Char> inner;
+
+ // Parse format specs like {:>10}, {:.2f}, etc.
+ template<typename ParseContext>
+ constexpr auto parse(ParseContext& ctx) {
+ return inner.parse(ctx);
+ }
+
+ // Format either the value (if set) or the "<unset>" fallback
+ template<typename FormatContext>
+ auto format(const ass::unset_wrap<T>& value, FormatContext& ctx) const {
+ if (value) {
+ return inner.format(*value, ctx);
+ } else {
+ static constexpr auto fallback = std::basic_string_view<Char>(FMT_STRING("<unset>"));
+ return fmt::format_to(ctx.out(), "{}", fallback);
+ }
+ }
+};
+#endif
diff --git a/aui.views/src/AUI/Util/AMetric.h b/aui.views/src/AUI/Util/AMetric.h
index 84a5ec1..f58e160 100644
--- a/aui.views/src/AUI/Util/AMetric.h
+++ b/aui.views/src/AUI/Util/AMetric.h
@@ -16,6 +16,7 @@
#include <ostream>
#include <tuple>
#include "AUI/Util/Assert.h"
+#include <fmt/format.h>
class AString;
@@ -259,4 +260,25 @@ inline std::ostream& operator<<(std::ostream& o, const AMetric& value) {
break;
}
return o;
-}
\ No newline at end of file
+}
+
+#if defined(FMT_VERSION) && (FMT_VERSION >= 100000)
+template <> struct fmt::formatter<AMetric> {
+ constexpr auto parse(format_parse_context& ctx) {
+ return ctx.begin(); // No custom formatting options needed
+ }
+
+ template <typename FormatContext>
+ auto format(const AMetric& metric, FormatContext& ctx) const {
+ std::string_view suffix;
+ switch (metric.getUnit()) {
+ case AMetric::T_PX: suffix = "px"; break;
+ case AMetric::T_DP: suffix = "dp"; break;
+ case AMetric::T_PT: suffix = "pt"; break;
+ default: suffix = ""; break;
+ }
+
+ return fmt::format_to(ctx.out(), "{}{}", metric.getRawValue(), suffix);
+ }
+};
+#endif

36
ports/aui/fix-glm.patch Normal file
View File

@ -0,0 +1,36 @@
diff --git a/aui.views/src/AUI/GL/OpenGLRenderer.cpp b/aui.views/src/AUI/GL/OpenGLRenderer.cpp
index 42fafa0..b33409b 100644
--- a/aui.views/src/AUI/GL/OpenGLRenderer.cpp
+++ b/aui.views/src/AUI/GL/OpenGLRenderer.cpp
@@ -33,6 +33,7 @@
#include "ShaderUniforms.h"
#include "AUI/Render/IRenderer.h"
#include "glm/fwd.hpp"
+#include <glm/ext/matrix_clip_space.hpp>
#include "AUI/Util/GaussianKernel.h"
#include "AUI/Traits/bit.h"
#include <AUI/Traits/callables.h>
diff --git a/aui.views/src/AUI/Platform/AGLEmbedAuiWrap.cpp b/aui.views/src/AUI/Platform/AGLEmbedAuiWrap.cpp
index 05ed0b0..39fc651 100644
--- a/aui.views/src/AUI/Platform/AGLEmbedAuiWrap.cpp
+++ b/aui.views/src/AUI/Platform/AGLEmbedAuiWrap.cpp
@@ -16,6 +16,7 @@
#include "AGLEmbedAuiWrap.h"
#include "AUI/GL/State.h"
#include "AUI/GL/OpenGLRenderer.h"
+#include <glm/ext/matrix_clip_space.hpp>
void AGLEmbedAuiWrap::render(ARenderContext context) {
windowMakeCurrent();
diff --git a/aui.views/src/AUI/Render/IRenderer.h b/aui.views/src/AUI/Render/IRenderer.h
index f726865..f173190 100644
--- a/aui.views/src/AUI/Render/IRenderer.h
+++ b/aui.views/src/AUI/Render/IRenderer.h
@@ -12,6 +12,7 @@
#pragma once
#include <glm/glm.hpp>
+#include <glm/ext/matrix_transform.hpp>
#include <AUI/Reflect/AEnumerate.h>
#include <AUI/Common/ASide.h>
#include <AUI/Common/AColor.h>

17
ports/aui/fix-macos.patch Normal file
View File

@ -0,0 +1,17 @@
diff --git a/aui.views/src/AUI/GL/gl.h b/aui.views/src/AUI/GL/gl.h
index 64209c64..afd734e3 100644
--- a/aui.views/src/AUI/GL/gl.h
+++ b/aui.views/src/AUI/GL/gl.h
@@ -10,7 +10,6 @@
*/
#pragma once
-extern "C" {
#if AUI_PLATFORM_ANDROID
#include <GLES3/gl3.h>
#include <GLES3/gl31.h>
@@ -27,4 +26,3 @@ extern "C" {
#include <GL/glew.h>
#include <GL/gl.h>
#endif
-}

View File

@ -0,0 +1,141 @@
diff --git a/aui.core/src/AUI/api.h b/aui.core/src/AUI/api.h
index 7be8bd6..5aae23d 100644
--- a/aui.core/src/AUI/api.h
+++ b/aui.core/src/AUI/api.h
@@ -11,6 +11,84 @@
#pragma once
+#if !defined(AUI_PLATFORM_WIN) && !defined(AUI_PLATFORM_LINUX) && !defined(AUI_PLATFORM_APPLE) && !defined(AUI_PLATFORM_ANDROID) && !defined(AUI_PLATFORM_EMSCRIPTEN)
+ #if defined(_WIN32)
+ #define AUI_PLATFORM_WIN 1
+ #elif defined(__ANDROID__)
+ #define AUI_PLATFORM_ANDROID 1
+ #define AUI_PLATFORM_UNIX 1
+ #elif defined(__APPLE__)
+ #define AUI_PLATFORM_APPLE 1
+ #define AUI_PLATFORM_UNIX 1
+ #include <TargetConditionals.h>
+ #if TARGET_OS_IPHONE
+ #define AUI_PLATFORM_IOS 1
+ #else
+ #define AUI_PLATFORM_MACOS 1
+ #endif
+ #elif defined(__EMSCRIPTEN__)
+ #define AUI_PLATFORM_EMSCRIPTEN 1
+ #elif defined(__linux__)
+ #define AUI_PLATFORM_LINUX 1
+ #define AUI_PLATFORM_UNIX 1
+ #elif defined(__unix__)
+ #define AUI_PLATFORM_UNIX 1
+ #endif
+#endif
+#ifndef AUI_PLATFORM_WIN
+ #define AUI_PLATFORM_WIN 0
+#endif
+#ifndef AUI_PLATFORM_LINUX
+ #define AUI_PLATFORM_LINUX 0
+#endif
+#ifndef AUI_PLATFORM_APPLE
+ #define AUI_PLATFORM_APPLE 0
+#endif
+#ifndef AUI_PLATFORM_MACOS
+ #define AUI_PLATFORM_MACOS 0
+#endif
+#ifndef AUI_PLATFORM_IOS
+ #define AUI_PLATFORM_IOS 0
+#endif
+#ifndef AUI_PLATFORM_ANDROID
+ #define AUI_PLATFORM_ANDROID 0
+#endif
+#ifndef AUI_PLATFORM_EMSCRIPTEN
+ #define AUI_PLATFORM_EMSCRIPTEN 0
+#endif
+#ifndef AUI_PLATFORM_UNIX
+ #define AUI_PLATFORM_UNIX 0
+#endif
+#if !defined(AUI_ARCH_X86) && !defined(AUI_ARCH_X86_64) && !defined(AUI_ARCH_ARM_V7) && !defined(AUI_ARCH_ARM_64)
+ #if defined(__x86_64__) || defined(_M_X64) || defined(__amd64__)
+ #define AUI_ARCH_X86_64 1
+ #elif defined(__i386__) || defined(_M_IX86)
+ #define AUI_ARCH_X86 1
+ #elif defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
+ #define AUI_ARCH_ARM_64 1
+ #elif defined(__arm__) || defined(_M_ARM)
+ #define AUI_ARCH_ARM_V7 1
+ #endif
+#endif
+#ifndef AUI_ARCH_X86
+ #define AUI_ARCH_X86 0
+#endif
+#ifndef AUI_ARCH_X86_64
+ #define AUI_ARCH_X86_64 0
+#endif
+#ifndef AUI_ARCH_ARM_V7
+ #define AUI_ARCH_ARM_V7 0
+#endif
+#ifndef AUI_ARCH_ARM_64
+ #define AUI_ARCH_ARM_64 0
+#endif
+#ifndef AUI_DEBUG
+ #if defined(NDEBUG)
+ #define AUI_DEBUG 0
+ #else
+ #define AUI_DEBUG 1
+ #endif
+#endif
#ifdef AUI_STATIC
#define AUI_IMPORT
#define AUI_EXPORT
@@ -23,6 +101,51 @@
#define AUI_EXPORT __attribute__((visibility("default")))
#endif
#endif
+#ifndef API_AUI_CORE
+#define API_AUI_CORE AUI_IMPORT
+#endif
+#ifndef API_AUI_VIEWS
+#define API_AUI_VIEWS AUI_IMPORT
+#endif
+#ifndef API_AUI_AUDIO
+#define API_AUI_AUDIO AUI_IMPORT
+#endif
+#ifndef API_AUI_CRYPT
+#define API_AUI_CRYPT AUI_IMPORT
+#endif
+#ifndef API_AUI_CURL
+#define API_AUI_CURL AUI_IMPORT
+#endif
+#ifndef API_AUI_DATA
+#define API_AUI_DATA AUI_IMPORT
+#endif
+#ifndef API_AUI_IMAGE
+#define API_AUI_IMAGE AUI_IMPORT
+#endif
+#ifndef API_AUI_JSON
+#define API_AUI_JSON AUI_IMPORT
+#endif
+#ifndef API_AUI_MYSQL
+#define API_AUI_MYSQL AUI_IMPORT
+#endif
+#ifndef API_AUI_NETWORK
+#define API_AUI_NETWORK AUI_IMPORT
+#endif
+#ifndef API_AUI_SQLITE
+#define API_AUI_SQLITE AUI_IMPORT
+#endif
+#ifndef API_AUI_UITESTS
+#define API_AUI_UITESTS AUI_IMPORT
+#endif
+#ifndef API_AUI_UPDATER
+#define API_AUI_UPDATER AUI_IMPORT
+#endif
+#ifndef API_AUI_XML
+#define API_AUI_XML AUI_IMPORT
+#endif
+#ifndef GLM_ENABLE_EXPERIMENTAL
+#define GLM_ENABLE_EXPERIMENTAL 1
+#endif
#if !__cpp_rtti

103
ports/aui/portfile.cmake Normal file
View File

@ -0,0 +1,103 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO aui-framework/aui
REF "v${VERSION}"
SHA512 decac6cebb6003791896e8d7a9fd7334351aa30205eac787cdbb51d1da657cda140178e0b8f5d236b42a4c1f37633141fb869784e5fc5c9718b5396e077afe7d
HEAD_REF master
PATCHES
debundle.patch
disable-tests.patch
disable-auib.patch
fix-fmt12.patch
fix-glm.patch
fix-macos.patch
fix-arm64.patch
fix-public-headers.patch
)
file(REMOVE_RECURSE "${SOURCE_PATH}/aui.audio/3rdparty" "${SOURCE_PATH}/aui.core/3rdparty" "${SOURCE_PATH}/aui.image/3rdparty" "${SOURCE_PATH}/aui.sqlite/3rdparty")
file(REMOVE "${SOURCE_PATH}/platform/android/project/gradle/wrapper/gradle-wrapper.jar")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/aui-config.cmake.in" DESTINATION "${SOURCE_PATH}/cmake")
vcpkg_find_acquire_program(PKGCONFIG)
set(_aui_cmake_options "")
if(VCPKG_CROSSCOMPILING)
# aui.views compiles assets and shaders at build time with aui.toolbox, which
# must run on the host. When cross-compiling the in-tree aui.toolbox target is
# not built (and would target the wrong architecture anyway), so use the
# host-built tool from the aui-toolbox port. This also keeps AUI Boot from
# being invoked to fetch a host toolchain.
find_program(AUI_TOOLBOX_EXE NAMES aui.toolbox
HINTS "${CURRENT_HOST_INSTALLED_DIR}/tools/aui-toolbox"
NO_DEFAULT_PATH
)
if(NOT AUI_TOOLBOX_EXE)
message(FATAL_ERROR
"aui needs the host tool aui.toolbox when cross-compiling; "
"the aui-toolbox host dependency did not install it")
endif()
list(APPEND _aui_cmake_options "-DAUI_TOOLBOX_EXE=${AUI_TOOLBOX_EXE}")
endif()
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
${_aui_cmake_options}
-DAUI_INSTALL_RUNTIME_DEPENDENCIES=OFF
-DAUIB_NO_PRECOMPILED=TRUE
-DAUIB_DISABLE=ON
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
)
vcpkg_host_path_list(PREPEND ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin" "${CURRENT_INSTALLED_DIR}/debug/bin")
vcpkg_cmake_install()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/AUI/api.h"
"#pragma once"
"#pragma once\n\n#ifndef AUI_STATIC\n#define AUI_STATIC\n#endif"
)
endif()
if(EXISTS "${CURRENT_PACKAGES_DIR}/bin/aui.toolbox${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
vcpkg_copy_tools(TOOL_NAMES aui.toolbox AUTO_CLEAN)
endif()
# Remove empty folders
function(_aui_prune_empty_dirs _root)
file(GLOB _aui_children "${_root}/*")
foreach(_aui_child IN LISTS _aui_children)
if(IS_DIRECTORY "${_aui_child}")
_aui_prune_empty_dirs("${_aui_child}")
file(GLOB _aui_grandchildren "${_aui_child}/*")
if(NOT _aui_grandchildren)
file(REMOVE_RECURSE "${_aui_child}")
endif()
endif()
endforeach()
endfunction()
_aui_prune_empty_dirs("${CURRENT_PACKAGES_DIR}")
if(EXISTS "${CURRENT_PACKAGES_DIR}/aui-config.cmake")
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/aui")
file(RENAME "${CURRENT_PACKAGES_DIR}/aui-config.cmake" "${CURRENT_PACKAGES_DIR}/share/aui/aui-config.cmake")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/aui-config.cmake")
if(EXISTS "${CURRENT_PACKAGES_DIR}/cmake")
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/aui")
file(RENAME "${CURRENT_PACKAGES_DIR}/cmake" "${CURRENT_PACKAGES_DIR}/share/aui/cmake")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/cmake")
if(EXISTS "${CURRENT_PACKAGES_DIR}/platform")
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/aui")
file(RENAME "${CURRENT_PACKAGES_DIR}/platform" "${CURRENT_PACKAGES_DIR}/share/aui/platform")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/platform")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY)

12
ports/aui/usage Normal file
View File

@ -0,0 +1,12 @@
The package aui provides CMake targets:
find_package(aui CONFIG REQUIRED COMPONENTS core views ...)
# Configure an application using AUI helper functions:
aui_executable(${PROJECT_NAME})
# Link against AUI component targets
aui_link(${PROJECT_NAME} PRIVATE aui::core aui::views)
aui_compile_assets(${PROJECT_NAME})
aui_app(TARGET ${PROJECT_NAME} NAME "My App" VENDOR "vcpkg"
ICON "assets/img/icon.svg"
ANDROID_PACKAGE "org.vcpkg.auitest")

67
ports/aui/vcpkg.json Normal file
View File

@ -0,0 +1,67 @@
{
"name": "aui",
"version": "7.1.2",
"description": "Declarative UI toolkit for modern C++20",
"homepage": "https://github.com/aui-framework/aui",
"license": "MPL-2.0",
"dependencies": [
{
"name": "aui-toolbox",
"host": true,
"platform": "!native"
},
"curl",
{
"name": "dbus",
"platform": "linux"
},
"fmt",
{
"name": "fontconfig",
"platform": "linux"
},
"freetype",
{
"name": "glew",
"platform": "windows | linux | osx"
},
"glm",
{
"name": "gtk3",
"platform": "linux"
},
{
"name": "libbacktrace",
"platform": "linux"
},
"libnsgif",
"libogg",
"libvorbis",
"libwebp",
{
"name": "libx11",
"platform": "linux"
},
"lunasvg",
"minizip",
{
"name": "oboe",
"platform": "android"
},
"openssl",
"opus",
{
"name": "pulseaudio",
"platform": "linux"
},
"range-v3",
"soxr",
"sqlite3",
"stb",
{
"name": "vcpkg-cmake",
"host": true
},
"zlib"
]
}

View File

@ -0,0 +1,22 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bb01a0d..82ef7f7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -87,7 +87,7 @@
if (BUILD_FRAMEWORK)
set_target_properties (${PROJECT_NAME} PROPERTIES FRAMEWORK TRUE)
-elseif (NOT WIN32)
+else ()
set (TARGET_PCS ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in ${TARGET_PCS})
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
endif ()
@@ -111,7 +111,7 @@
if (BUILD_FRAMEWORK)
set_target_properties (${LSR} PROPERTIES FRAMEWORK TRUE)
- elseif (NOT WIN32)
+ else ()
set (TARGET_PCS "${TARGET_PCS} ${CMAKE_CURRENT_BINARY_DIR}/${LSR}.pc")
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/${LSR}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${LSR}.pc)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${LSR}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
endif ()

View File

@ -1,40 +1,41 @@
vcpkg_from_sourceforge(
OUT_SOURCE_PATH SOURCE_PATH
REPO soxr
FILENAME "soxr-0.1.3-Source.tar.xz"
SHA512 f4883ed298d5650399283238aac3dbe78d605b988246bea51fa343d4a8ce5ce97c6e143f6c3f50a3ff81795d9c19e7a07217c586d4020f6ced102aceac46aaa8
PATCHES
001_initialize-resampler.patch
002_disable_warning.patch
003_detect_arm.patch
)
vcpkg_check_features(
OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
openmp WITH_OPENMP
lsr-bindings WITH_LSR_BINDINGS
)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" BUILD_SHARED_RUNTIME)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DBUILD_TESTS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_SHARED_RUNTIME=${BUILD_SHARED_RUNTIME}
-DCMAKE_DISABLE_FIND_PACKAGE_LibAVUtil=TRUE
${FEATURE_OPTIONS}
)
vcpkg_cmake_install()
file(INSTALL "${SOURCE_PATH}/LICENCE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/doc")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/doc")
vcpkg_fixup_pkgconfig()
vcpkg_from_sourceforge(
OUT_SOURCE_PATH SOURCE_PATH
REPO soxr
FILENAME "soxr-0.1.3-Source.tar.xz"
SHA512 f4883ed298d5650399283238aac3dbe78d605b988246bea51fa343d4a8ce5ce97c6e143f6c3f50a3ff81795d9c19e7a07217c586d4020f6ced102aceac46aaa8
PATCHES
001_initialize-resampler.patch
002_disable_warning.patch
003_detect_arm.patch
004_install-pkgconfig-windows.patch
)
vcpkg_check_features(
OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
openmp WITH_OPENMP
lsr-bindings WITH_LSR_BINDINGS
)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" BUILD_SHARED_RUNTIME)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DBUILD_TESTS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_SHARED_RUNTIME=${BUILD_SHARED_RUNTIME}
-DCMAKE_DISABLE_FIND_PACKAGE_LibAVUtil=TRUE
${FEATURE_OPTIONS}
)
vcpkg_cmake_install()
file(INSTALL "${SOURCE_PATH}/LICENCE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/doc")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/doc")
vcpkg_fixup_pkgconfig()

View File

@ -1,7 +1,7 @@
{
"name": "soxr",
"version": "0.1.3",
"port-version": 8,
"port-version": 9,
"description": "High quality audio resampling",
"homepage": "https://sourceforge.net/projects/soxr/",
"dependencies": [

View File

@ -0,0 +1,12 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
vcpkg_find_acquire_program(PKGCONFIG)
vcpkg_host_path_list(PREPEND ENV{PATH} "${CURRENT_HOST_INSTALLED_DIR}/tools/aui-toolbox")
vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
OPTIONS
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
)
vcpkg_cmake_build()

View File

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.16)
project(aui-test VERSION 0.0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(aui CONFIG REQUIRED COMPONENTS core views curl json crypt updater)
aui_executable(${PROJECT_NAME})
aui_link(${PROJECT_NAME} PRIVATE aui::core aui::views aui::updater)
aui_compile_assets(${PROJECT_NAME})
aui_app(TARGET ${PROJECT_NAME} NAME "AUI CI Test" VENDOR "vcpkg"
ICON "assets/img/icon.svg"
ANDROID_PACKAGE "org.vcpkg.auitest")

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
<rect width="256" height="256" rx="32" fill="#2f6fed"/>
</svg>

After

Width:  |  Height:  |  Size: 153 B

View File

@ -0,0 +1,7 @@
#include <AUI/Common/AString.h>
#include <AUI/Platform/Entry.h>
AUI_ENTRY {
AString s = AString::number(42);
return 0;
}

View File

@ -0,0 +1,16 @@
{
"name": "vcpkg-ci-aui",
"version-string": "ci",
"description": "Validates aui",
"dependencies": [
"aui",
{
"name": "aui-toolbox",
"host": true
},
{
"name": "vcpkg-cmake",
"host": true
}
]
}

View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "f26df47f4fc22a0920fcdf6311fdf52dadffb9bf",
"version": "7.1.2",
"port-version": 0
}
]
}

9
versions/a-/aui.json Normal file
View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "30673fde524070c2155f0a2c43628123dfaf7ab6",
"version": "7.1.2",
"port-version": 0
}
]
}

View File

@ -416,6 +416,14 @@
"baseline": "4.1.4",
"port-version": 0
},
"aui": {
"baseline": "7.1.2",
"port-version": 0
},
"aui-toolbox": {
"baseline": "7.1.2",
"port-version": 0
},
"aurora": {
"baseline": "2017-06-21-c75699d2a8caa726260c29b6d7a0fd35f8f28933",
"port-version": 2
@ -9594,7 +9602,7 @@
},
"soxr": {
"baseline": "0.1.3",
"port-version": 8
"port-version": 9
},
"spaceland": {
"baseline": "7.8.2",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "38edca408abad1f7d8e84363d2b8e31d982d6952",
"version": "0.1.3",
"port-version": 9
},
{
"git-tree": "89f01ea88aee3a0468ba3bf335a7a537a105cae1",
"version": "0.1.3",