From a4dd0ad63c00f4dee3b86dfd3075d1d61b2b3180 Mon Sep 17 00:00:00 2001 From: sanine Date: Sat, 27 Aug 2022 23:52:56 -0500 Subject: add plibsys --- 3rdparty/portaudio/.github/workflows/MSBuild.yml | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 3rdparty/portaudio/.github/workflows/MSBuild.yml (limited to '3rdparty/portaudio/.github/workflows/MSBuild.yml') diff --git a/3rdparty/portaudio/.github/workflows/MSBuild.yml b/3rdparty/portaudio/.github/workflows/MSBuild.yml new file mode 100644 index 0000000..fa61d1a --- /dev/null +++ b/3rdparty/portaudio/.github/workflows/MSBuild.yml @@ -0,0 +1,96 @@ +name: MSBuild MSVC Project File CI + +on: [push, pull_request] + +env: + # Path to the solution file relative to the root of the project. + SOLUTION_FILE_PATH: ./build/msvc/portaudio.sln + VCPROJ_FILE_PATH: ./build/msvc/portaudio.vcproj + VCXPROJ_FILE_PATH: ./build/msvc/portaudio.vcxproj + VCXPROJ_FILTERS_FILE_PATH: ./build/msvc/portaudio.vcxproj.filters + VCXPROJ_USER_FILE_PATH: ./build/msvc/portaudio.vcxproj.user + DEF_FILE_PATH: ./build/msvc/portaudio.def + +jobs: + build: + runs-on: windows-latest + strategy: + matrix: + BUILD_CONFIGURATION: [Release] + BUILD_PLATFORM: [Win32, x64] + + steps: + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v1 + + - uses: actions/checkout@v2 + + - name: Upgrade VC Project File + # We maintain our vcproj file in an old format to maintain backwards compatibility + # This step upgrades the project to the latest version of MSVC + # see https://docs.microsoft.com/en-us/visualstudio/ide/reference/upgrade-devenv-exe?view=vs-2019 + # pipe to file to ensure that it terminates https://stackoverflow.com/questions/48896010/occasionally-occurring-msbuild-error-msb3428/48918105#48918105 + # discussion of using vswhere.exe here: https://stackoverflow.com/questions/65287456/how-to-upgrade-a-visual-studio-project-from-within-a-github-action/65311868#65311868 + run: | + $devenv = & vswhere.exe '-property' productPath + Write-Output "$devenv" + & $devenv "${{env.VCPROJ_FILE_PATH}}" /Upgrade /NoSplash | Out-Null + Write-Output "devenv launched" + while (!(Test-Path "${{env.VCXPROJ_FILE_PATH}}")) { Start-Sleep -Seconds 10 } + Write-Output "vcxproj found" + while (!(Test-Path "${{env.VCXPROJ_FILTERS_FILE_PATH}}")) { Start-Sleep -Seconds 10 } + Write-Output "vcxproj.filters found" + Start-Sleep -Seconds 10 + Write-Output "done." + + - name: Remove ASIO Files and Enable PA_USE_DS=1 + # Process the project files to remove ASIO-related sources and includes (since we can not access the ASIO SDK in a public build) + run: | + # Process .vcxproj file: remove source files + $xdoc = new-object System.Xml.XmlDocument + $vcxprojFile = resolve-path("${{env.VCXPROJ_FILE_PATH}}") + $xdoc.load($vcxprojFile) + $namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $xdoc.NameTable + $namespace.AddNamespace("vs", $xdoc.DocumentElement.NamespaceURI) + $nodes = $xdoc.SelectNodes("//vs:ClCompile[contains(@Include, '..\src\hostapi\asio')]", $namespace) + Write-Output "deleting ASIO related compilation nodes from .vcxproj:" + Write-Output $nodes + ForEach($node in $nodes) { + $parent = $node.ParentNode + $parent.RemoveChild($node) + } + # Enable DirectSound host API + $nodes = $xdoc.SelectNodes("//vs:PreprocessorDefinitions[contains(., 'PA_USE_DS=0')]", $namespace) + ForEach($node in $nodes) { + $text = $node.InnerText + $node.InnerText = $text -replace 'PA_USE_DS=0', 'PA_USE_DS=1' + } + $xdoc.save($vcxprojFile) + # Process .vcxproj.filters file: remove source files and includes + $vcxprojFiltersFile = resolve-path("${{env.VCXPROJ_FILTERS_FILE_PATH}}") + $xdoc.load($vcxprojFiltersFile) + $namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $xdoc.NameTable + $namespace.AddNamespace("vs", $xdoc.DocumentElement.NamespaceURI) + $nodes = $xdoc.SelectNodes("//vs:ClCompile[contains(@Include, '..\src\hostapi\asio')]", $namespace) + Write-Output "deleting ASIO related compilation nodes from .vcxproj.filters:" + Write-Output $nodes + ForEach($node in $nodes) { + $parent = $node.ParentNode + $parent.RemoveChild($node) + } + $nodes = $xdoc.SelectNodes("//vs:ClInclude[contains(@Include, 'pa_asio.h')]", $namespace) + Write-Output "deleting ASIO related include nodes from .vcxproj.filters:" + Write-Output $nodes + ForEach($node in $nodes) { + $parent = $node.ParentNode + $parent.RemoveChild($node) + } + $xdoc.save($vcxprojFiltersFile) + # Process .def file: remove PaAsio_ symbols + Set-Content -Path "${{env.DEF_FILE_PATH}}" -Value (Get-Content -Path "${{env.DEF_FILE_PATH}}" | Select-String -Pattern 'PaAsio_' -NotMatch) + + - name: Build + working-directory: ${{env.GITHUB_WORKSPACE}} + # Add additional options to the MSBuild command line here (like platform or verbosity level). + # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference + run: msbuild /m /p:Configuration=${{matrix.BUILD_CONFIGURATION}} /p:Platform=${{matrix.BUILD_PLATFORM}} ${{env.VCXPROJ_FILE_PATH}} -- cgit v1.2.1