mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2024-12-11 05:11:33 +00:00
230 lines
9.7 KiB
YAML
230 lines
9.7 KiB
YAML
# C/C++ with GCC
|
|
# Build your C/C++ project with GCC using make.
|
|
# Add steps that publish test results, save build artifacts, deploy, and more:
|
|
# https://docs.microsoft.com/azure/devops/pipelines/apps/c-cpp/gcc
|
|
|
|
jobs:
|
|
- job: Windows
|
|
strategy:
|
|
matrix:
|
|
XP_x86:
|
|
platform: Win32
|
|
toolset: v141_xp
|
|
gtk-bundle: $(gtk-bundle-x86)
|
|
libsndfile-url: $(libsndfile-url-x86)
|
|
artifact-prefix: "fluidsynth"
|
|
imageName: 'vs2017-win2016'
|
|
XP_x64:
|
|
platform: x64
|
|
toolset: v141_xp
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
artifact-prefix: "fluidsynth"
|
|
imageName: 'vs2017-win2016'
|
|
pool:
|
|
vmImage: $(imageName)
|
|
steps:
|
|
- task: DownloadBuildArtifacts@0
|
|
inputs:
|
|
buildType: specific
|
|
# https://dev.azure.com/tommbrt/_apis/projects?api-version=5.0
|
|
project: 'd3638885-de4a-4ce7-afe7-f237ae461c07'
|
|
pipeline: 1
|
|
artifactName: libinstpatch-$(platform)
|
|
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
|
displayName: 'Get libinstpatch'
|
|
- script: |
|
|
@ECHO ON
|
|
mkdir d:\deps || exit -1
|
|
cd d:\deps || exit -1
|
|
curl -LfsS -o gtk-bundle-dev.zip $(gtk-bundle) || exit -1
|
|
curl -LfsS -o libsndfile-dev.zip $(libsndfile-url) || exit -1
|
|
7z x -aos -- gtk-bundle-dev.zip > NUL || exit -1
|
|
7z x -aos -- libsndfile-dev.zip > NUL || exit -1
|
|
REM need to fix the naming of libsndfile otherwise the linker won't find it
|
|
mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1
|
|
mv lib\libsndfile-1.def lib\sndfile.def || exit -1
|
|
cd $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)
|
|
cp -rf * d:\deps\
|
|
mv -f * ..
|
|
cd ..
|
|
rmdir $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)\
|
|
DEL /F C:\Strawberry\perl\bin\pkg-config.bat
|
|
displayName: 'Prerequisites'
|
|
- script: |
|
|
@ECHO ON
|
|
SET "PATH=d:\deps\bin;%PATH%"
|
|
pkg-config --list-all
|
|
mkdir build && cd build || exit -1
|
|
cmake -Werror=dev -A $(platform) -T $(toolset) -DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) -Denable-readline=0 -Denable-floats=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 .. || exit -1
|
|
cmake --build . --config Release || exit -1
|
|
displayName: 'Compile fluidsynth'
|
|
- script: |
|
|
@ECHO ON
|
|
SET "PATH=d:\deps\bin;%PATH%"
|
|
cd build || exit -1
|
|
cmake --build . --config Release --target check || exit -1
|
|
displayName: 'Execute Unittests'
|
|
- script: |
|
|
@ECHO ON
|
|
cd build
|
|
cmake --build . --config Release --target install || exit -1
|
|
del $(Build.ArtifactStagingDirectory)\bin\concrt*.dll
|
|
del $(Build.ArtifactStagingDirectory)\bin\vcruntime*.dll
|
|
del $(Build.ArtifactStagingDirectory)\bin\msvcp*.dll
|
|
del $(Build.ArtifactStagingDirectory)\lib\instpatch*.lib
|
|
del $(Build.ArtifactStagingDirectory)\lib\pkgconfig\libinstpatch*.pc
|
|
rd $(Build.ArtifactStagingDirectory)\include\libinstpatch-2 /s /q
|
|
displayName: 'Copy Artifacts'
|
|
- task: PublishBuildArtifacts@1
|
|
inputs:
|
|
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
|
artifactName: $(artifact-prefix)-$(platform)
|
|
|
|
- job: WindowsCI
|
|
strategy:
|
|
matrix:
|
|
default:
|
|
CMAKE_FLAGS:
|
|
CMAKE_CONFIG: Release
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
debug_prof:
|
|
CMAKE_FLAGS: -Denable-profiling=1 -Denable-trap-on-fpe=1 -Denable-fpe-check=1
|
|
CMAKE_CONFIG: Debug
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
no_network:
|
|
CMAKE_FLAGS: -Denable-network=0
|
|
CMAKE_CONFIG: Release
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
static_lib:
|
|
CMAKE_FLAGS: -DBUILD_SHARED_LIBS=0
|
|
CMAKE_CONFIG: Release
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
minimal:
|
|
CMAKE_FLAGS: -Denable-ipv6=0 -Denable-network=0 -Denable-aufile=0 -Denable-dbus=0 -Denable-threads=0 -Denable-winmidi=0 -Denable-waveout=0 -Denable-dsound=0 -Denable-libsndfile=0 -Denable-floats=1
|
|
CMAKE_CONFIG: Release
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
steps:
|
|
- script: |
|
|
@ECHO ON
|
|
mkdir d:\deps || exit -1
|
|
cd d:\deps || exit -1
|
|
curl -LfsS -o gtk-bundle-dev.zip $(gtk-bundle) || exit -1
|
|
curl -LfsS -o libsndfile-dev.zip $(libsndfile-url) || exit -1
|
|
7z x -aos -- gtk-bundle-dev.zip > NUL || exit -1
|
|
7z x -aos -- libsndfile-dev.zip > NUL || exit -1
|
|
REM need to fix the naming of libsndfile otherwise the linker won't find it
|
|
mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1
|
|
mv lib\libsndfile-1.def lib\sndfile.def || exit -1
|
|
DEL /F C:\Strawberry\perl\bin\pkg-config.bat
|
|
displayName: 'Prerequisites'
|
|
- script: |
|
|
@ECHO ON
|
|
SET "PATH=d:\deps\bin;%PATH%"
|
|
mkdir build && cd build || exit -1
|
|
cmake -Werror=dev -A x64 -DCMAKE_BUILD_TYPE=$(CMAKE_CONFIG) -DCMAKE_VERBOSE_MAKEFILE=1 $(CMAKE_FLAGS) -DNO_GUI=1 .. || exit -1
|
|
cmake --build . --config $(CMAKE_CONFIG) || exit -1
|
|
displayName: 'Compile fluidsynth'
|
|
- script: |
|
|
@ECHO ON
|
|
SET "PATH=d:\deps\bin;%PATH%"
|
|
cd build || exit -1
|
|
cmake --build . --config $(CMAKE_CONFIG) --target check || exit -1
|
|
displayName: 'Execute Unittests'
|
|
|
|
- job: WindowsMinGW
|
|
strategy:
|
|
matrix:
|
|
x86:
|
|
CMAKE_FLAGS: -DCMAKE_C_FLAGS="-m32"
|
|
platform: Win32
|
|
gtk-bundle: $(gtk-bundle-x86)
|
|
libsndfile-url: $(libsndfile-url-x86)
|
|
mingw-url: $(mingw-url-x86)
|
|
artifact-prefix: "fluidsynth-mingw"
|
|
x64:
|
|
CMAKE_FLAGS:
|
|
platform: x64
|
|
gtk-bundle: $(gtk-bundle-x64)
|
|
libsndfile-url: $(libsndfile-url-x64)
|
|
mingw-url: $(mingw-url-x64)
|
|
artifact-prefix: "fluidsynth-mingw"
|
|
pool:
|
|
vmImage: 'vs2017-win2016'
|
|
steps:
|
|
- task: DownloadBuildArtifacts@0
|
|
inputs:
|
|
buildType: specific
|
|
# https://dev.azure.com/tommbrt/_apis/projects?api-version=5.0
|
|
project: 'd3638885-de4a-4ce7-afe7-f237ae461c07'
|
|
pipeline: 1
|
|
artifactName: libinstpatch-$(platform)
|
|
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
|
displayName: 'Get libinstpatch'
|
|
- script: |
|
|
@ECHO ON
|
|
mkdir d:\deps || exit -1
|
|
cd d:\deps || exit -1
|
|
curl -LfsS -o gtk-bundle-dev.zip $(gtk-bundle) || exit -1
|
|
curl -LfsS -o libsndfile-dev.zip $(libsndfile-url) || exit -1
|
|
curl -LfsS -o mingw.zip $(mingw-url) || exit -1
|
|
7z x -aos -- gtk-bundle-dev.zip > NUL || exit -1
|
|
7z x -aos -- libsndfile-dev.zip > NUL || exit -1
|
|
7z x -aos -- mingw.zip > NUL || exit -1
|
|
rm *.zip
|
|
REM need to fix the naming of libsndfile otherwise the linker won't find it
|
|
mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1
|
|
mv lib\libsndfile-1.def lib\sndfile.def || exit -1
|
|
cd mingw*\ && cp -rf * .. && cd .. && rm -rf mingw* || exit -1
|
|
cd $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform) && cp -rf * d:\deps\ && mv -f * .. && cd .. && rmdir $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)\ || exit -1
|
|
DEL /F C:\Strawberry\perl\bin\pkg-config.bat
|
|
displayName: 'Prerequisites'
|
|
- script: |
|
|
@ECHO ON
|
|
SET "PATH=d:\deps\bin;%PATH%"
|
|
REM remove that path from PATH to make sure sh.exe is not found (cmake will complain otherwise)
|
|
set PATH=%PATH:C:\Program Files\Git\bin;=%
|
|
set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
|
|
pkg-config --list-all
|
|
mkdir build && cd build || exit -1
|
|
cmake -Werror=dev -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) $(CMAKE_FLAGS) -Denable-readline=0 -Denable-floats=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 .. || exit -1
|
|
mingw32-make.exe -j4 all || exit -1
|
|
displayName: 'Compile fluidsynth'
|
|
- script: |
|
|
@ECHO ON
|
|
SET "PATH=d:\deps\bin;%PATH%"
|
|
REM remove that path from PATH to make sure sh.exe is not found (cmake will complain otherwise)
|
|
set PATH=%PATH:C:\Program Files\Git\bin;=%
|
|
set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
|
|
cd build || exit -1
|
|
mingw32-make.exe -j4 check || exit -1
|
|
displayName: 'Execute Unittests'
|
|
continueOnError: 'true'
|
|
- script: |
|
|
@ECHO ON
|
|
cd build
|
|
mingw32-make.exe install || exit -1
|
|
xcopy d:\deps\bin\libgcc_s_sjlj-1.dll $(Build.ArtifactStagingDirectory)\bin
|
|
xcopy d:\deps\bin\libgcc_s_seh-1.dll $(Build.ArtifactStagingDirectory)\bin
|
|
xcopy d:\deps\bin\libgomp-1.dll $(Build.ArtifactStagingDirectory)\bin
|
|
xcopy d:\deps\bin\libstdc++-6.dll $(Build.ArtifactStagingDirectory)\bin
|
|
xcopy d:\deps\bin\libwinpthread-1.dll $(Build.ArtifactStagingDirectory)\bin
|
|
REM xcopy test $(Build.ArtifactStagingDirectory)\bin /s
|
|
del $(Build.ArtifactStagingDirectory)\bin\concrt*.dll
|
|
del $(Build.ArtifactStagingDirectory)\bin\vcruntime*.dll
|
|
del $(Build.ArtifactStagingDirectory)\bin\msvcp*.dll
|
|
del $(Build.ArtifactStagingDirectory)\lib\instpatch*.lib
|
|
del $(Build.ArtifactStagingDirectory)\lib\pkgconfig\libinstpatch*.pc
|
|
rd $(Build.ArtifactStagingDirectory)\include\libinstpatch-2 /s /q
|
|
displayName: 'Copy Artifacts'
|
|
- task: PublishBuildArtifacts@1
|
|
inputs:
|
|
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
|
artifactName: $(artifact-prefix)-$(platform)
|