diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..ef730dd3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,316 @@ +name: Release Builds + +on: + push: + branches: + - master + - 2.6.x + tags: + - "**" + workflow_dispatch: {} + +concurrency: + group: release-${{github.ref}} + cancel-in-progress: true + +jobs: + windows-x86: + name: Windows x86 + runs-on: windows-2022 + + steps: + - name: Cache MinGW x86 + id: mingw-x86-cache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/mingw32 + key: 14.1.0posix-18.1.5-11.0.1-msvcrt-r1-x86 + + - name: Install MinGW x86 + if: steps.mingw-x86-cache.outputs.cache-hit != 'true' + uses: bwoodsend/setup-winlibs-action@v1 + id: winlibs-32 + with: + tag: 14.1.0posix-18.1.5-11.0.1-msvcrt-r1 + with_clang: false + architecture: 32 + destination: ${{ github.workspace }} + add_to_path: false + + - name: Checkout SFML + uses: actions/checkout@v4 + with: + repository: SFML/SFML + ref: 2.6.1 + path: SFML + + - name: Checkout CSFML + uses: actions/checkout@v4 + with: + path: CSFML + + - name: Build SFML + run: | + cmake -S SFML -B SFML-build -A Win32 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=FALSE -DSFML_USE_STATIC_STD_LIBS=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build SFML-build --config Release --target install + + - name: Build CSFML + run: | + cmake -S CSFML -B CSFML-build -A Win32 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=TRUE -DSTATIC_STD_LIBS=TRUE -DCSFML_LINK_SFML_STATICALLY=TRUE -DCMAKE_BUILD_TYPE=Release -DSFML_DIR=${{ github.workspace }}/SFML-install/lib/cmake/SFML -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build CSFML-build --config Release --target install + + - name: Add MinGW to PATH + shell: bash + run: echo "${{ github.workspace }}\mingw32\bin" >> $GITHUB_PATH + + - name: Generate Import Libs for MinGW + shell: pwsh + run: | + New-Item -ItemType "directory" -PATH "CSFML-install\lib\gcc" + New-Item -ItemType "directory" -PATH "CSFML-install\lib\msvc" + Move-Item -Path "CSFML-install\lib\*.lib" -Destination "CSFML-install\lib\msvc" + + Push-Location CSFML-install\lib\gcc + & gendef.exe "..\..\bin\csfml-graphics-2.dll" + & dlltool.exe -d "csfml-graphics-2.def" -D "..\..\bin\csfml-graphics-2.dll" -l "libcsfml-graphics.a" + Remove-Item -Path "csfml-graphics-2.def" + + & gendef.exe "..\..\bin\csfml-window-2.dll" + & dlltool.exe -d "csfml-window-2.def" -D "..\..\bin\bin\csfml-window-2.dll" -l "libcsfml-window.a" + Remove-Item -Path "csfml-window-2.def" + + & gendef.exe "..\..\bin\csfml-audio-2.dll" + & dlltool.exe -d "csfml-audio-2.def" -D "..\..\bin\bin\csfml-audio-2.dll" -l "libcsfml-audio.a" + Remove-Item -Path "csfml-audio-2.def" + + & gendef.exe "..\..\bin\csfml-network-2.dll" + & dlltool.exe -d "csfml-network-2.def" -D "..\..\bin\bin\csfml-network-2.dll" -l "libcsfml-network.a" + Remove-Item -Path "csfml-network-2.def" + + & gendef.exe "..\..\bin\csfml-system-2.dll" + & dlltool.exe -d "csfml-system-2.def" -D "..\..\bin\bin\csfml-system-2.dll" -l "libcsfml-system.a" + Remove-Item -Path "csfml-system-2.def" + Pop-Location + + New-Item -ItemType "directory" -PATH "install" + Move-Item -Path "CSFML-install\*" -Destination "install\CSFML" + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: CSFML-windows-32-bit + path: install/CSFML + + windows-x64: + name: Windows x64 + runs-on: windows-2022 + + steps: + - name: Cache MinGW x64 + id: mingw-x64-cache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/mingw64 + key: 14.1.0posix-18.1.5-11.0.1-msvcrt-r1-x64 + + - name: Install MinGW x64 + if: steps.mingw-x64-cache.outputs.cache-hit != 'true' + uses: bwoodsend/setup-winlibs-action@v1 + id: winlibs-64 + with: + tag: 14.1.0posix-18.1.5-11.0.1-msvcrt-r1 + with_clang: false + architecture: 64 + destination: ${{ github.workspace }} + add_to_path: false + + - name: Checkout SFML + uses: actions/checkout@v4 + with: + repository: SFML/SFML + ref: 2.6.1 + path: SFML + + - name: Checkout CSFML + uses: actions/checkout@v4 + with: + path: CSFML + + - name: Build SFML + run: | + cmake -S SFML -B SFML-build -A x64 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=FALSE -DSFML_USE_STATIC_STD_LIBS=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build SFML-build --config Release --target install + + - name: Build CSFML + run: | + cmake -S CSFML -B CSFML-build -A x64 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=TRUE -DSTATIC_STD_LIBS=TRUE -DCSFML_LINK_SFML_STATICALLY=TRUE -DCMAKE_BUILD_TYPE=Release -DSFML_DIR=${{ github.workspace }}/SFML-install/lib/cmake/SFML -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build CSFML-build --config Release --target install + + - name: Add MinGW to PATH + shell: bash + run: echo "${{ github.workspace }}\mingw64\bin" >> $GITHUB_PATH + + - name: Generate Import Libs for MinGW + shell: pwsh + run: | + New-Item -ItemType "directory" -PATH "CSFML-install\lib\gcc" + New-Item -ItemType "directory" -PATH "CSFML-install\lib\msvc" + Move-Item -Path "CSFML-install\lib\*.lib" -Destination "CSFML-install\lib\msvc" + + Push-Location CSFML-install\lib\gcc + & gendef.exe "..\..\bin\csfml-graphics-2.dll" + & dlltool.exe -d "csfml-graphics-2.def" -D "..\..\bin\csfml-graphics-2.dll" -l "libcsfml-graphics.a" + Remove-Item -Path "csfml-graphics-2.def" + + & gendef.exe "..\..\bin\csfml-window-2.dll" + & dlltool.exe -d "csfml-window-2.def" -D "..\..\bin\bin\csfml-window-2.dll" -l "libcsfml-window.a" + Remove-Item -Path "csfml-window-2.def" + + & gendef.exe "..\..\bin\csfml-audio-2.dll" + & dlltool.exe -d "csfml-audio-2.def" -D "..\..\bin\bin\csfml-audio-2.dll" -l "libcsfml-audio.a" + Remove-Item -Path "csfml-audio-2.def" + + & gendef.exe "..\..\bin\csfml-network-2.dll" + & dlltool.exe -d "csfml-network-2.def" -D "..\..\bin\bin\csfml-network-2.dll" -l "libcsfml-network.a" + Remove-Item -Path "csfml-network-2.def" + + & gendef.exe "..\..\bin\csfml-system-2.dll" + & dlltool.exe -d "csfml-system-2.def" -D "..\..\bin\bin\csfml-system-2.dll" -l "libcsfml-system.a" + Remove-Item -Path "csfml-system-2.def" + Pop-Location + + New-Item -ItemType "directory" -PATH "install" + Move-Item -Path "CSFML-install\*" -Destination "install\CSFML" + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: CSFML-windows-64-bit + path: install/CSFML + + macos-x64: + name: macOS x64 + runs-on: macos-12 + + steps: + - name: Checkout SFML + uses: actions/checkout@v4 + with: + repository: SFML/SFML + ref: 2.6.1 + path: SFML + + - name: Checkout CSFML + uses: actions/checkout@v4 + with: + path: CSFML + + - name: Build SFML + run: | + cmake -S SFML -B SFML-build -G "Unix Makefiles" \ + -DCMAKE_C_COMPILER="/usr/bin/clang" \ + -DCMAKE_CXX_COMPILER="/usr/bin/clang++" \ + -DCMAKE_C_FLAGS="-stdlib=libc++" \ + -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ + -DBUILD_SHARED_LIBS=TRUE \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install/Library/Frameworks \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \ + -DSFML_BUILD_FRAMEWORKS=TRUE \ + -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build SFML-build --config Release --target install + + - name: Build CSFML + run: | + cmake -S CSFML -B CSFML-build -G "Unix Makefiles" \ + -DCMAKE_C_COMPILER="/usr/bin/clang" \ + -DCMAKE_CXX_COMPILER="/usr/bin/clang++" \ + -DCMAKE_C_FLAGS="-stdlib=libc++" \ + -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ + -DBUILD_SHARED_LIBS=TRUE \ + -DCSFML_LINK_SFML_STATICALLY=FALSE \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \ + -DSFML_DIR=${{ github.workspace }}/SFML-install/Library/Frameworks/SFML.framework/Resources/CMake \ + -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build CSFML-build --config Release --target install + + - name: Create Archive + run: | + mkdir CSFML-macOS-clang-64-bit + cp -R CSFML-install/include CSFML-macOS-clang-64-bit + cp -R CSFML-install/lib CSFML-macOS-clang-64-bit + cp CSFML-install/share/CSFML/* CSFML-macOS-clang-64-bit + tar -zcvf CSFML-macOS-clang-64-bit.tar.gz CSFML-macOS-clang-64-bit + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: CSFML-macOS-clang-64-bit + path: CSFML-macOS-clang-64-bit.tar.gz + + macos-arm64: + name: macOS ARM64 + runs-on: macos-14 + + steps: + - name: Checkout SFML + uses: actions/checkout@v4 + with: + repository: SFML/SFML + ref: 2.6.1 + path: SFML + + - name: Checkout CSFML + uses: actions/checkout@v4 + with: + path: CSFML + - name: Build SFML + run: | + cmake -S SFML -B SFML-build -G "Unix Makefiles" \ + -DCMAKE_C_COMPILER="/usr/bin/clang" \ + -DCMAKE_CXX_COMPILER="/usr/bin/clang++" \ + -DCMAKE_C_FLAGS="-stdlib=libc++" \ + -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ + -DBUILD_SHARED_LIBS=TRUE \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install/Library/Frameworks \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \ + -DSFML_BUILD_FRAMEWORKS=TRUE \ + -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build SFML-build --config Release --target install + + - name: Build CSFML + run: | + cmake -S CSFML -B CSFML-build -G "Unix Makefiles" \ + -DCMAKE_C_COMPILER="/usr/bin/clang" \ + -DCMAKE_CXX_COMPILER="/usr/bin/clang++" \ + -DCMAKE_C_FLAGS="-stdlib=libc++" \ + -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ + -DBUILD_SHARED_LIBS=TRUE \ + -DCSFML_LINK_SFML_STATICALLY=FALSE \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \ + -DSFML_DIR=${{ github.workspace }}/SFML-install/Library/Frameworks/SFML.framework/Resources/CMake \ + -DCMAKE_VERBOSE_MAKEFILE=ON + cmake --build CSFML-build --config Release --target install + + - name: Create Archive + run: | + mkdir CSFML-macOS-clang-arm64 + cp -R CSFML-install/include CSFML-macOS-clang-arm64 + cp -R CSFML-install/lib CSFML-macOS-clang-arm64 + cp CSFML-install/share/CSFML/* CSFML-macOS-clang-arm64 + tar -zcvf CSFML-macOS-clang-arm64.tar.gz CSFML-macOS-clang-arm64 + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: CSFML-macOS-clang-arm64 + path: CSFML-macOS-clang-arm64.tar.gz diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 577183e5..1444cc4e 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -38,8 +38,8 @@ add_custom_target(doc ALL install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${INSTALL_MISC_DIR}/doc COMPONENT doc) -if(DOXYGEN_HHC_PROGRAM) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CSFML.chm +if(DOXYGEN_GENERATE_HTMLHELP) + install(FILES ${DOXYGEN_OUTPUT_DIR}/CSFML.chm DESTINATION ${INSTALL_MISC_DIR}/doc COMPONENT doc) endif() diff --git a/tools/BuildMacOS.sh b/tools/BuildMacOS.sh index 5e38ea4c..bee5fe28 100644 --- a/tools/BuildMacOS.sh +++ b/tools/BuildMacOS.sh @@ -1,7 +1,7 @@ #!/bin/sh -VERSION="2.6.1" -VERSION_C="2.6.0" +VERSION="3.0.0" +VERSION_C="3.0.0" # BUILD_CSFML=FALSE BUILD_CSFML=TRUE BUILD_SFML=FALSE diff --git a/tools/nuget/build.macos.sh b/tools/nuget/build.macos.sh old mode 100755 new mode 100644 index d1b946e7..dfa96936 --- a/tools/nuget/build.macos.sh +++ b/tools/nuget/build.macos.sh @@ -167,7 +167,7 @@ fixrpath() install_name_tool -change $OLD $NEW "$SFMLLibDir/libsfml-$MODULE.$SFMLMajorMinorPatch.dylib" } -fixrpath audio "@rpath/../Frameworks/vorbisenc.framework/Versions/A/vorbisenc" "@rpath/vorbisenc.framework/Versions/A/vorbisen" +fixrpath audio "@rpath/../Frameworks/vorbisenc.framework/Versions/A/vorbisenc" "@rpath/vorbisenc.framework/Versions/A/vorbisenc" fixrpath audio "@rpath/../Frameworks/vorbisfile.framework/Versions/A/vorbisfile" "@rpath/vorbisfile.framework/Versions/A/vorbisfile" fixrpath audio "@rpath/../Frameworks/vorbis.framework/Versions/A/vorbis" "@rpath/vorbis.framework/Versions/A/vorbis" fixrpath audio "@rpath/../Frameworks/ogg.framework/Versions/A/ogg" "@rpath/ogg.framework/Versions/A/ogg"