diff --git a/.github/workflows/build-linux-natives.yml b/.github/workflows/build-linux-natives.yml index 3b3f8c7b..7bbcba55 100644 --- a/.github/workflows/build-linux-natives.yml +++ b/.github/workflows/build-linux-natives.yml @@ -9,8 +9,6 @@ jobs: strategy: fail-fast: false - matrix: - build_type: [ Release, Debug, RelWithDebInfo ] steps: - uses: actions/checkout@v4 @@ -25,7 +23,7 @@ jobs: - name: Pack artifact uses: actions/upload-artifact@v3.1.3 with: - name: chroma-natives-linux-${{ matrix.build_type }} + name: chroma-natives-linux path: Dependencies/build_env/artifacts if-no-files-found: error retention-days: 90 diff --git a/.github/workflows/build-macos-natives.yml b/.github/workflows/build-macos-natives.yml new file mode 100644 index 00000000..322ae1dd --- /dev/null +++ b/.github/workflows/build-macos-natives.yml @@ -0,0 +1,34 @@ +name: Build macOS natives + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + workflow_dispatch: + +jobs: + build: + runs-on: macos-latest + + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + - uses: Symbitic/install-cmake@v0.1.0 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + with: + platform: mac + + - name: Build + run: cd Dependencies && ./build_natives --with-ft && cd .. + + - name: Pack artifact + uses: actions/upload-artifact@v3.1.3 + with: + name: chroma-natives-macos + path: Dependencies/build_env/artifacts + if-no-files-found: error + retention-days: 90 diff --git a/Chroma.Natives/Binaries/windows_64/SDL2.bz2 b/Chroma.Natives/Binaries/windows_64/SDL2.bz2 index e4fab760..f5d3474a 100644 Binary files a/Chroma.Natives/Binaries/windows_64/SDL2.bz2 and b/Chroma.Natives/Binaries/windows_64/SDL2.bz2 differ diff --git a/Chroma.Natives/Binaries/windows_64/SDL2_gpu.bz2 b/Chroma.Natives/Binaries/windows_64/SDL2_gpu.bz2 index ef06ddb9..c0050796 100644 Binary files a/Chroma.Natives/Binaries/windows_64/SDL2_gpu.bz2 and b/Chroma.Natives/Binaries/windows_64/SDL2_gpu.bz2 differ diff --git a/Chroma.Natives/Binaries/windows_64/SDL2_sound.bz2 b/Chroma.Natives/Binaries/windows_64/SDL2_sound.bz2 index 451fcb2d..6903b24f 100644 Binary files a/Chroma.Natives/Binaries/windows_64/SDL2_sound.bz2 and b/Chroma.Natives/Binaries/windows_64/SDL2_sound.bz2 differ diff --git a/Chroma.Natives/Binaries/windows_64/freetype.bz2 b/Chroma.Natives/Binaries/windows_64/freetype.bz2 index ee586540..fd632e8b 100644 Binary files a/Chroma.Natives/Binaries/windows_64/freetype.bz2 and b/Chroma.Natives/Binaries/windows_64/freetype.bz2 differ diff --git a/Chroma.Natives/Bindings/FreeType/FT2.cs b/Chroma.Natives/Bindings/FreeType/FT2.cs index 6831445b..16746a42 100644 --- a/Chroma.Natives/Bindings/FreeType/FT2.cs +++ b/Chroma.Natives/Bindings/FreeType/FT2.cs @@ -202,23 +202,23 @@ public enum FT_Glyph_BBox_Mode [StructLayout(LayoutKind.Sequential)] public struct FT_Generic { - public IntPtr data; - public IntPtr finalizer; + public nint data; + public nint finalizer; } [StructLayout(LayoutKind.Sequential)] public struct FT_Glyph_Metrics { - public IntPtr width; - public IntPtr height; + public long width; + public long height; public IntPtr horiBearingX; public IntPtr horiBearingY; - public IntPtr horiAdvance; + public long horiAdvance; - public IntPtr vertBearingX; - public IntPtr vertBearingY; - public IntPtr vertAdvance; + public long vertBearingX; + public long vertBearingY; + public long vertAdvance; } [StructLayout(LayoutKind.Sequential)] @@ -264,7 +264,6 @@ public struct FT_GlyphSlotRec public FT_Generic generic; public FT_Glyph_Metrics metrics; - public IntPtr linearHoriAdvance; public IntPtr linearVertAdvance; public FT_Vector advance; @@ -287,6 +286,7 @@ public struct FT_GlyphSlotRec public IntPtr rsb_delta; public IntPtr other; + private IntPtr @internal; } @@ -355,13 +355,13 @@ private struct FT_ListRec [StructLayout(LayoutKind.Sequential)] public struct FT_FaceRec { - public IntPtr num_faces; - public IntPtr face_index; + public long num_faces; + public long face_index; - public IntPtr face_flags; - public IntPtr style_flags; + public long face_flags; + public long style_flags; - public IntPtr num_glyphs; + public long num_glyphs; public IntPtr family_name; public IntPtr style_name; @@ -394,9 +394,12 @@ public struct FT_FaceRec private IntPtr driver; private IntPtr memory; private IntPtr stream; + private FT_ListRec sizes_list; + private FT_Generic autohint; private IntPtr extensions; + private IntPtr @internal; } diff --git a/Chroma/Graphics/TextRendering/TrueType/FreeTypeException.cs b/Chroma/Graphics/TextRendering/TrueType/FreeTypeException.cs new file mode 100644 index 00000000..13dd4284 --- /dev/null +++ b/Chroma/Graphics/TextRendering/TrueType/FreeTypeException.cs @@ -0,0 +1,10 @@ +namespace Chroma.Graphics.TextRendering.TrueType +{ + public class FreeTypeException : FrameworkException + { + public FreeTypeException(string message) + : base(message) + { + } + } +} \ No newline at end of file diff --git a/Chroma/Graphics/TextRendering/TrueType/TrueTypeFont.cs b/Chroma/Graphics/TextRendering/TrueType/TrueTypeFont.cs index 9f1b95c7..fb99a284 100644 --- a/Chroma/Graphics/TextRendering/TrueType/TrueTypeFont.cs +++ b/Chroma/Graphics/TextRendering/TrueType/TrueTypeFont.cs @@ -33,6 +33,8 @@ public class TrueTypeFont : DisposableResource, IFontProvider private byte[] _ttfData; private Texture _atlas; + private FT_Error _lastFtError; + public static TrueTypeFont Default => EmbeddedAssets.DefaultFont; public string FamilyName { get; private set; } @@ -112,7 +114,12 @@ out var patch static TrueTypeFont() { - FT_Init_FreeType(out _libraryHandle); + var error = FT_Init_FreeType(out _libraryHandle); + + if (error != FT_Error.FT_Err_Ok) + { + throw new FreeTypeException("Failed to initialize FreeType library."); + } } public TrueTypeFont(string fileName, int height, string alphabet = null) @@ -264,15 +271,20 @@ private void InvalidateFont() private unsafe void LoadTtf() { - fixed (byte* fontPtr = &_ttfData[0]) + fixed (byte* fontPtr = _ttfData) { - FT_New_Memory_Face( + _lastFtError = FT_New_Memory_Face( _libraryHandle, fontPtr, _ttfData.Length, 0, out _face ); + + if (_lastFtError != FT_Error.FT_Err_Ok) + { + throw new FreeTypeException($"Failed to load typeface into memory: {_lastFtError}"); + } } FamilyName = Marshal.PtrToStringAnsi(_face->family_name); diff --git a/Dependencies/build_natives b/Dependencies/build_natives index e6c99206..b9ec825b 100755 --- a/Dependencies/build_natives +++ b/Dependencies/build_natives @@ -23,6 +23,7 @@ fi pack_artifacts() { cd $ARTIFACT_DIR + ls -l if [ "$SKIP_FT" -eq "0" ]; then mv $FT_ARTIFACT.bz2 libfreetype.bz2 fi diff --git a/Dependencies/build_natives_linux b/Dependencies/build_natives_linux index 40b10ab6..73af3451 100755 --- a/Dependencies/build_natives_linux +++ b/Dependencies/build_natives_linux @@ -15,17 +15,21 @@ SDL_ARTIFACT=libSDL2.so SDL_GPU_SOPATH=$SDL_GPU_BUILDROOT/SDL_gpu/lib/libSDL2_gpu.so SDL_GPU_ARTIFACT=libSDL2_gpu.so -SDL_SOUND_SOPATH=$SDL_SOUND_BUILDROOT/libSDL2_sound.so.2.0.3 +SDL_SOUND_SOPATH=$SDL_SOUND_BUILDROOT/libSDL2_sound.so.$SDLSOUND_VER SDL_SOUND_ARTIFACT=libSDL2_sound.so if [ "$SKIP_FT" -eq "0" ]; then +echo +echo "-- [[ BUILDING FREETYPE ]] --" $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$FT_BUILD_TYPE \ - -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=1 \ - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=1 \ - -DBUILD_SHARED_LIBS=1 \ - -DFT_WITH_ZLIB=0 \ - -DFT_WITH_HARFBUZZ=0 \ + -DBUILD_SHARED_LIBS=ON \ + -DFT_ENABLE_ERROR_STRINGS=ON \ + -DFT_DISABLE_ZLIB=ON \ + -DFT_DISABLE_BZIP2=ON \ + -DFT_DISABLE_BROTLI=ON \ + -DFT_DISABLE_PNG=ON \ + -DFT_DISABLE_HARFBUZZ=ON \ && cd $FT_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $FT_SOPATH $ARTIFACT_DIR/$FT_ARTIFACT \ \ @@ -33,9 +37,9 @@ if [ "$SKIP_FT" -eq "0" ]; then -DCMAKE_BUILD_TYPE=$HB_BUILD_TYPE \ -DCMAKE_CXX_FLAGS=-fPIC \ -DCMAKE_C_FLAGS=-fPIC \ - -DHB_BUILD_SUBSET=0 \ - -DHB_HAVE_FREETYPE=1 \ - -DFREETYPE_FOUND=1 \ + -DHB_BUILD_SUBSET=FALSE \ + -DHB_HAVE_FREETYPE=TRUE \ + -DFREETYPE_FOUND=TRUE \ -DFREETYPE_INCLUDE_DIRS=$FT_PATH/include \ -DFREETYPE_LIBRARY=$ARTIFACT_DIR/$FT_ARTIFACT \ && cd $HB_BUILDROOT && $MAKE -j$THREADCOUNT \ @@ -44,16 +48,22 @@ if [ "$SKIP_FT" -eq "0" ]; then \ && $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$FT_BUILD_TYPE \ - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=1 \ - -DBUILD_SHARED_LIBS=1 \ - -DFT_WITH_HARFBUZZ=1 \ - -DFT_WITH_ZLIB=0 \ + -DBUILD_SHARED_LIBS=ON \ + -DFT_ENABLE_ERROR_STRINGS=ON \ + -DFT_DISABLE_ZLIB=ON \ + -DFT_DISABLE_BZIP2=ON \ + -DFT_DISABLE_BROTLI=ON \ + -DFT_DISABLE_PNG=ON \ + -DFT_DISABLE_HARFBUZZ=OFF \ + -DFT_REQUIRE_HARFBUZZ=TRUE \ -DHarfBuzz_INCLUDE_DIR=$HB_PATH/src \ -DHarfBuzz_LIBRARY=$ARTIFACT_DIR/$HB_ARTIFACT \ && cd $FT_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $FT_SOPATH $ARTIFACT_DIR/$FT_ARTIFACT fi +echo +echo "-- [[ BUILDING SDL ]] --" $CMAKE $CMAKE_FLAGS -B $SDL_BUILDROOT $SDL_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$SDL_BUILD_TYPE \ -DSDL_STATIC=0 \ diff --git a/Dependencies/build_natives_mingw b/Dependencies/build_natives_mingw index 8ebc8586..53137f60 100755 --- a/Dependencies/build_natives_mingw +++ b/Dependencies/build_natives_mingw @@ -16,40 +16,59 @@ SDL_GPU_ARTIFACT=SDL2_gpu.dll SDL_SOUND_SOPATH=$SDL_SOUND_BUILDROOT/SDL2_sound.dll SDL_SOUND_ARTIFACT=SDL2_sound.dll -if [ "$SKIP_FT" -eq "0" ]; then - $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ +if [ "$SKIP_FT" -eq "0" ]; then +echo +echo "-- [[ BUILDING FREETYPE ]] --" + cd $FT_PATH \ + && (patch -p0 --forward < $PATCH_DIR/FreeType_Win64.patch || true) \ + && cd $SCRIPT_DIR \ + \ + && $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$FT_BUILD_TYPE \ - -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=1 \ - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=1 \ - -DBUILD_SHARED_LIBS=1 \ - -DFT_WITH_ZLIB=0 \ - -DFT_WITH_HARFBUZZ=0 \ + -DBUILD_SHARED_LIBS=ON \ + -DFT_ENABLE_ERROR_STRINGS=ON \ + -DFT_DISABLE_ZLIB=ON \ + -DFT_DISABLE_BZIP2=ON \ + -DFT_DISABLE_BROTLI=ON \ + -DFT_DISABLE_PNG=ON \ + -DFT_DISABLE_HARFBUZZ=ON \ && cd $FT_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $FT_SOPATH $ARTIFACT_DIR/$FT_ARTIFACT \ - && rm -rf $FT_BUILDROOT \ + \ + && cd $HB_PATH \ + && (patch -p0 --forward < $PATCH_DIR/HarfBuzz_MinGW.patch || true) \ + && cd $SCRIPT_DIR \ \ && $CMAKE $CMAKE_FLAGS -B $HB_BUILDROOT $HB_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$HB_BUILD_TYPE \ - -DHB_BUILD_SUBSET=0 \ - -DHB_HAVE_FREETYPE=1 \ - -DFREETYPE_FOUND=1 \ + -DHB_BUILD_SUBSET=FALSE \ + -DHB_HAVE_FREETYPE=TRUE \ + -DFREETYPE_FOUND=TRUE \ -DFREETYPE_INCLUDE_DIRS=$FT_PATH/include \ -DFREETYPE_LIBRARY=$ARTIFACT_DIR/$FT_ARTIFACT \ && cd $HB_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $HB_ARPATH $ARTIFACT_DIR/$HB_ARTIFACT \ + && rm -rf $FT_BUILDROOT \ \ && $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$FT_BUILD_TYPE \ - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=1 \ - -DBUILD_SHARED_LIBS=1 \ - -DFT_WITH_HARFBUZZ=1 \ - -DFT_WITH_ZLIB=0 \ + -DCMAKE_C_FLAGS="-static-libgcc" \ + -DBUILD_SHARED_LIBS=ON \ + -DFT_ENABLE_ERROR_STRINGS=ON \ + -DFT_DISABLE_ZLIB=ON \ + -DFT_DISABLE_BZIP2=ON \ + -DFT_DISABLE_BROTLI=ON \ + -DFT_DISABLE_PNG=ON \ + -DFT_DISABLE_HARFBUZZ=OFF \ + -DFT_REQUIRE_HARFBUZZ=TRUE \ -DHarfBuzz_INCLUDE_DIR=$HB_PATH/src \ -DHarfBuzz_LIBRARY=$ARTIFACT_DIR/$HB_ARTIFACT \ && cd $FT_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $FT_SOPATH $ARTIFACT_DIR/$FT_ARTIFACT fi +echo +echo "-- [[ BUILDING SDL ]] --" $CMAKE $CMAKE_FLAGS -B $SDL_BUILDROOT $SDL_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$SDL_BUILD_TYPE \ -DSDL_STATIC=OFF \ diff --git a/Dependencies/build_natives_osx b/Dependencies/build_natives_osx index 854cdfcb..5a0e6f84 100755 --- a/Dependencies/build_natives_osx +++ b/Dependencies/build_natives_osx @@ -8,7 +8,7 @@ fi CMAKE_FRAMEWORKS="-lc++ -framework CoreFoundation -framework CoreText -framework CoreGraphics" -FT_SOPATH=$FT_BUILDROOT/libfreetype.6.18.0.dylib +FT_SOPATH=$FT_BUILDROOT/libfreetype.6.20.1.dylib FT_ARTIFACT=libfreetype.dylib SDL_SOPATH=$SDL_BUILDROOT/libSDL2-2.0.0.dylib @@ -17,27 +17,34 @@ SDL_ARTIFACT=libSDL2.dylib SDL_GPU_SOPATH=$SDL_GPU_BUILDROOT/SDL_gpu/lib/libSDL2_gpu.dylib SDL_GPU_ARTIFACT=libSDL2_gpu.dylib -SDL_SOUND_SOPATH=$SDL_SOUND_BUILDROOT/libSDL2_sound.2.0.1.dylib +SDL_SOUND_SOPATH=$SDL_SOUND_BUILDROOT/libSDL2_sound.$SDLSOUND_VER.dylib SDL_SOUND_ARTIFACT=libSDL2_sound.dylib if [ "$SKIP_FT" -eq "0" ]; then +echo +echo " -- [[ BUILDING FREETYPE ]] -- " $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$FT_BUILD_TYPE \ - -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=1 \ - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=1 \ - -DBUILD_SHARED_LIBS=1 \ - -DFT_WITH_ZLIB=0 \ - -DFT_WITH_HARFBUZZ=0 \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ + -DBUILD_SHARED_LIBS=ON \ + -DFT_ENABLE_ERROR_STRINGS=ON \ + -DFT_DISABLE_ZLIB=ON \ + -DFT_DISABLE_BZIP2=ON \ + -DFT_DISABLE_BROTLI=ON \ + -DFT_DISABLE_PNG=ON \ + -DFT_DISABLE_HARFBUZZ=ON \ && cd $FT_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $FT_SOPATH $ARTIFACT_DIR/$FT_ARTIFACT \ \ && $CMAKE $CMAKE_FLAGS -B $HB_BUILDROOT $HB_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$HB_BUILD_TYPE \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ -DCMAKE_CXX_FLAGS=-fPIC \ -DCMAKE_C_FLAGS=-fPIC \ - -DHB_BUILD_SUBSET=0 \ - -DHB_HAVE_FREETYPE=1 \ - -DFREETYPE_FOUND=1 \ + -DHB_BUILD_SUBSET=FALSE \ + -DHB_HAVE_FREETYPE=TRUE \ + -DFREETYPE_FOUND=TRUE \ -DFREETYPE_INCLUDE_DIRS=$FT_PATH/include \ -DFREETYPE_LIBRARY=$ARTIFACT_DIR/$FT_ARTIFACT \ && cd $HB_BUILDROOT && $MAKE -j$THREADCOUNT \ @@ -45,32 +52,41 @@ if [ "$SKIP_FT" -eq "0" ]; then && rm -rf $FT_BUILDROOT \ \ && $CMAKE $CMAKE_FLAGS -B $FT_BUILDROOT $FT_PATH -G "$CMAKE_GENERATOR" \ - -DCMAKE_SHARED_LINKER_FLAGS="$CMAKE_FRAMEWORKS" \ -DCMAKE_BUILD_TYPE=$FT_BUILD_TYPE \ - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=1 \ - -DCMAKE_SKIP_RPATH=0 \ - -DBUILD_SHARED_LIBS=1 \ - -DFT_WITH_HARFBUZZ=1 \ - -DFT_DISABLE_HARFBUZZ=0 \ - -DFT_WITH_ZLIB=0 \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ + -DCMAKE_SHARED_LINKER_FLAGS="$CMAKE_FRAMEWORKS" \ + -DCMAKE_SKIP_RPATH=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DFT_ENABLE_ERROR_STRINGS=ON \ + -DFT_DISABLE_ZLIB=ON \ + -DFT_DISABLE_BZIP2=ON \ + -DFT_DISABLE_BROTLI=ON \ + -DFT_DISABLE_PNG=ON \ + -DFT_DISABLE_HARFBUZZ=OFF \ + -DFT_REQUIRE_HARFBUZZ=TRUE \ -DHarfBuzz_INCLUDE_DIR=$HB_PATH/src \ -DHarfBuzz_LIBRARY=$ARTIFACT_DIR/$HB_ARTIFACT \ && cd $FT_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $FT_SOPATH $ARTIFACT_DIR/$FT_ARTIFACT fi +echo +echo " -- [[ BUILDING SDL ]] -- " $CMAKE $CMAKE_FLAGS -B $SDL_BUILDROOT $SDL_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$SDL_BUILD_TYPE \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ -DSDL_STATIC=0 \ && cd $SDL_BUILDROOT && $MAKE -j$THREADCOUNT \ && mv $SDL_SOPATH $ARTIFACT_DIR/$SDL_ARTIFACT \ \ && $CMAKE $CMAKE_FLAGS -B $SDL_GPU_BUILDROOT $SDL_GPU_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$SDL_GPU_BUILD_TYPE \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ -DSDL2_INCLUDE_DIR=$SDL_PATH/include \ -DSDL2_LIBRARY=$ARTIFACT_DIR/$SDL_ARTIFACT \ \ && $CMAKE $CMAKE_FLAGS -B $SDL_GPU_BUILDROOT $SDL_GPU_PATH -G "$CMAKE_GENERATOR" \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ -DDISABLE_OPENGL_1_BASE=1 \ -DDISABLE_OPENGL_1=1 \ -DDISABLE_OPENGL_2=1 \ @@ -82,6 +98,7 @@ fi \ && $CMAKE $CMAKE_FLAGS -B $SDL_SOUND_BUILDROOT $SDL_SOUND_PATH -G "$CMAKE_GENERATOR" \ -DCMAKE_BUILD_TYPE=$SDL_SOUND_BUILD_TYPE \ + -DCMAKE_OSX_ARCHITECTURES="arm64" \ -DCMAKE_SKIP_RPATH=0 \ -DSDLSOUND_BUILD_STATIC=0 \ -DSDLSOUND_BUILD_SHARED=1 \ diff --git a/Dependencies/lib/buildvars.sh b/Dependencies/lib/buildvars.sh index 839a5c3c..b5e69e60 100644 --- a/Dependencies/lib/buildvars.sh +++ b/Dependencies/lib/buildvars.sh @@ -11,10 +11,11 @@ MAKE=ninja SKIP_FT=1 -FT_TAG=VER-2-11-0 -HB_TAG=2.9.0 +FT_TAG=VER-2-13-2 +HB_TAG=8.4.0 SDL_VER=30.3 SDL_TAG=release-2.$SDL_VER +SDLSOUND_VER=2.0.3 NATIVES_DIR=$SCRIPT_DIR/build_env PATCH_DIR=$SCRIPT_DIR/patches diff --git a/Dependencies/patches/FreeType_Win64.patch b/Dependencies/patches/FreeType_Win64.patch new file mode 100644 index 00000000..92eb950c --- /dev/null +++ b/Dependencies/patches/FreeType_Win64.patch @@ -0,0 +1,69 @@ +--- include/freetype/ftimage.h 2024-05-13 08:05:38.607091000 +0200 ++++ include/freetype/ftimage_win64.h 2024-05-13 08:03:11.225157100 +0200 +@@ -49,7 +49,11 @@ + * the context, these can represent distances in integer font units, or + * 16.16, or 26.6 fixed-point pixel coordinates. + */ +- typedef signed long FT_Pos; ++#if _WIN64 ++ typedef signed __int64 FT_Pos; ++#else ++ typedef signed long FT_Pos; ++#endif + + + /************************************************************************** +--- include/freetype/fttypes.h 2024-05-13 08:04:57.594989300 +0200 ++++ include/freetype/fttypes_win64.h 2024-05-13 08:04:39.240890900 +0200 +@@ -242,7 +242,11 @@ + * @description: + * A typedef for signed long. + */ +- typedef signed long FT_Long; ++#if _WIN64 ++ typedef signed __int64 FT_Long; ++#else ++ typedef signed long FT_Long; ++#endif + + + /************************************************************************** +@@ -253,7 +257,11 @@ + * @description: + * A typedef for unsigned long. + */ +- typedef unsigned long FT_ULong; ++#if _WIN64 ++ typedef unsigned __int64 FT_ULong; ++#else ++ typedef unsigned long FT_ULong; ++#endif + + + /************************************************************************** +@@ -275,7 +283,11 @@ + * @description: + * A signed 26.6 fixed-point type used for vectorial pixel coordinates. + */ +- typedef signed long FT_F26Dot6; ++#if _WIN64 ++ typedef signed __int64 FT_F26Dot6; ++#else ++ typedef unsigned long FT_F26Dot6; ++#endif + + + /************************************************************************** +@@ -287,7 +299,11 @@ + * This type is used to store 16.16 fixed-point values, like scaling + * values or matrix coefficients. + */ +- typedef signed long FT_Fixed; ++#if _WIN64 ++ typedef signed __int64 FT_Fixed; ++#else ++ typedef unsigned long FT_Fixed; ++#endif + + + /************************************************************************** \ No newline at end of file diff --git a/Dependencies/patches/HarfBuzz_MinGW.patch b/Dependencies/patches/HarfBuzz_MinGW.patch new file mode 100644 index 00000000..6e6ab834 --- /dev/null +++ b/Dependencies/patches/HarfBuzz_MinGW.patch @@ -0,0 +1,18 @@ +--- CMakeLists.txt 2024-05-12 13:43:03.888993000 +0200 +@@ -112,16 +112,6 @@ + set(PC_REQUIRES_PRIV "") + set(PC_LIBS_PRIV "") + +-if (NOT MSVC) +- set(THREADS_PREFER_PTHREAD_FLAG ON) +- find_package(Threads) +- if (CMAKE_USE_PTHREADS_INIT) +- add_definitions("-DHAVE_PTHREAD") +- list(APPEND THIRD_PARTY_LIBS Threads::Threads) +- list(APPEND PC_LIBS_PRIV -pthread) +- endif () +-endif () +- + if (MSVC) + add_definitions(-wd4244 -wd4267 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS) + endif ()