name: CI_build on: [push, pull_request] jobs: build_windows: runs-on: windows-latest strategy: fail-fast: false matrix: build_configuration: [Release, Debug] build_platform: [x64, Win32, ARM64] steps: - name: Checkout repo uses: actions/checkout@v4 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1 - name: MSBuild of n++ exe working-directory: PowerEditor\visual.net\ run: msbuild notepadPlus.sln /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="v143" - name: Archive artifacts for x64 / Release if: matrix.build_platform == 'x64' && matrix.build_configuration == 'Release' uses: actions/upload-artifact@v3 with: name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: PowerEditor\bin64\Notepad++.exe - name: Archive artifacts for Win32 / Release if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Release' uses: actions/upload-artifact@v3 with: name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: PowerEditor\bin\Notepad++.exe - name: Archive artifacts for ARM64 / Release if: matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' uses: actions/upload-artifact@v3 with: name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: PowerEditor\binarm64\Notepad++.exe - name: Archive artifacts for ARM64|x64 / Debug if: (matrix.build_platform == 'ARM64' || matrix.build_platform == 'x64') && matrix.build_configuration == 'Debug' uses: actions/upload-artifact@v3 with: name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: PowerEditor\visual.net\${{ matrix.build_platform}}\${{ matrix.build_configuration}}\Notepad++.exe - name: Archive artifacts for Win32 / Debug if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug' uses: actions/upload-artifact@v3 with: name: Notepad++.MSVC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: PowerEditor\visual.net\${{ matrix.build_configuration}}\Notepad++.exe - name: Run xml validation test for Win32 / Debug only if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug' working-directory: .\ run: | python -m pip install requests rfc3987 pywin32 lxml python PowerEditor\Test\xmlValidator\validator_xml.py - name: Run FunctionList and UrlDetection Tests for Win32 / Debug only if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Debug' working-directory: .\ run: | Copy-Item "PowerEditor\visual.net\Debug\Notepad++.exe" -Destination "PowerEditor\bin" Copy-Item "PowerEditor\src\langs.model.xml" -Destination "PowerEditor\bin" Copy-Item "PowerEditor\src\stylers.model.xml" -Destination "PowerEditor\bin" Copy-Item "PowerEditor\src\shortcuts.xml" -Destination "PowerEditor\bin" Copy-Item "PowerEditor\src\contextMenu.xml" -Destination "PowerEditor\bin" Copy-Item "PowerEditor\installer\functionList" -Destination "PowerEditor\bin" -Recurse Copy-Item "PowerEditor\installer\filesForTesting\regexGlobalTest.xml" -Destination "PowerEditor\bin\functionList" Copy-Item "PowerEditor\installer\filesForTesting\overrideMap.xml" -Destination "PowerEditor\bin\functionList" cd .\PowerEditor\Test\FunctionList\ .\unitTestLauncher.ps1 if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } cd ..\UrlDetection .\verifyUrlDetection.ps1 # build_windows_clang: # runs-on: windows-latest # strategy: # matrix: # build_configuration: [Release] # build_platform: [x64] # steps: # - name: Checkout repo # uses: actions/checkout@v4 # - name: Add msbuild to PATH # uses: microsoft/setup-msbuild@v1 # - name: MSBuild of n++ exe # working-directory: PowerEditor\visual.net\ # run: msbuild notepadPlus.sln /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="ClangCL" build_windows_cmake: runs-on: windows-latest strategy: matrix: include: - build_configuration: Release build_platform: x64 arch: amd64 steps: - name: Checkout repo uses: actions/checkout@v4 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1 - name: Add nmake to PATH uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ matrix.arch }} - name: build scintilla working-directory: scintilla/win32/ run: | nmake -f scintilla.mak - name: build lexilla working-directory: lexilla/src/ run: | nmake -f lexilla.mak - name: generate cmake working-directory: PowerEditor/src run: | mkdir _build cd _build cmake -G "Visual Studio 17 2022" -A ${{ matrix.build_platform }} -T "v143" .. - name: build cmake working-directory: PowerEditor/src run: | cd _build cmake --build . --config ${{ matrix.build_configuration }} build_windows_msys2: runs-on: windows-latest strategy: fail-fast: false matrix: build_configuration: [Release, Debug] build_platform: [x86_64, i686] steps: - name: Checkout repo uses: actions/checkout@v4 - name: Make n++ exe working-directory: .\ run: | Write-host "${{ matrix.build_platform }}" Write-host "${{ matrix.build_configuration }}" $Env:Path = 'C:\msys64\usr\bin' + [IO.Path]::PathSeparator + $Env:Path if ( $${{ matrix.build_platform == 'i686'}} ) {$Env:MSYSTEM = 'MINGW32'} if ( $${{ matrix.build_platform == 'i686'}} ) {$Env:Path = 'C:\msys64\mingw32\bin' + [IO.Path]::PathSeparator + $Env:Path} if ( $${{ matrix.build_platform == 'x86_64'}} ) {$Env:MSYSTEM = 'MINGW64'} if ( $${{ matrix.build_platform == 'x86_64'}} ) {$Env:Path = 'C:\msys64\mingw64\bin' + [IO.Path]::PathSeparator + $Env:Path} if ( $${{ matrix.build_configuration == 'Debug'}} ) {$Env:DEBUG = '1'} Write-Output "Tools version:" Write-Output (((gcc --version) | select-object -first 1) + " " + (gcc -dumpmachine)) Write-Output (make --version) | select-object -first 1 Write-Output (sh --version) | select-object -first 1 Write-Output "" bash -lc "pacman --noconfirm -Syuu" bash -lc "pacman --noconfirm -Syuu" if ( $${{ matrix.build_platform == 'i686'}} ) {bash -lc "pacman --noconfirm -S mingw-w64-i686-gcc mingw-w64-i686-make"} if ( $${{ matrix.build_platform == 'x86_64'}} ) {bash -lc "pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make"} make -f PowerEditor\gcc\makefile - name: Archive artifacts for ${{ matrix.build_platform}} / Release if: matrix.build_configuration == 'Release' uses: actions/upload-artifact@v3 with: name: Notepad++.GCC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: bin.${{ matrix.build_platform}}\notepad++.exe - name: Archive artifacts for ${{ matrix.build_platform}} / Debug if: matrix.build_configuration == 'Debug' uses: actions/upload-artifact@v3 with: name: Notepad++.GCC.${{ matrix.build_platform}}.${{ matrix.build_configuration}} path: bin.${{ matrix.build_platform}}-debug\notepad++.exe