250 lines
8.6 KiB
YAML
250 lines
8.6 KiB
YAML
strategy:
|
|
matrix:
|
|
linux_latest_gcc14_minimal:
|
|
imageName: 'ubuntu-latest'
|
|
toolchainName: gcc14
|
|
buildTargetName: minimal
|
|
linux_noble_clang_all:
|
|
imageName: 'ubuntu-24.04'
|
|
toolchainName: clang
|
|
buildTargetName: all
|
|
linux_jammy_gcc9_all:
|
|
imageName: 'ubuntu-22.04'
|
|
toolchainName: gcc9
|
|
buildTargetName: all
|
|
linux_noble_gcc13_all:
|
|
imageName: 'ubuntu-24.04'
|
|
toolchainName: gcc13
|
|
buildTargetName: all
|
|
macOS_latest_clang_all:
|
|
imageName: 'macOS-latest'
|
|
toolchainName: clang
|
|
buildTargetName: all
|
|
macOS_Sequoia_clang15_all:
|
|
imageName: 'macOS-15'
|
|
toolchainName: clang
|
|
buildTargetName: all
|
|
windows-visualstudio:
|
|
imageName: 'windows-latest'
|
|
toolchainName: vs
|
|
buildTargetName: all
|
|
windows-mingw:
|
|
imageName: 'windows-2025'
|
|
toolchainName: mingw
|
|
buildTargetName: all
|
|
linux_noble_cross_msdos:
|
|
imageName: 'ubuntu-24.04'
|
|
toolchainName: cross
|
|
buildTargetName: msdos
|
|
linux_noble_docs:
|
|
imageName: 'ubuntu-24.04'
|
|
toolchainName: docs
|
|
buildTargetName: all
|
|
continueOnError: true
|
|
|
|
pool:
|
|
vmImage: $(imageName)
|
|
|
|
# resources:
|
|
# repositories:
|
|
# - repository: pdcursesrepo
|
|
# type: github
|
|
# name: wmcbrine/PDCurses
|
|
# ref: refs/heads/master
|
|
# endpoint: github.com_barthouse
|
|
|
|
variables:
|
|
toolchain: $(toolchainName)
|
|
buildTarget: $(buildTargetName)
|
|
netHackPath: s/NetHack
|
|
|
|
steps:
|
|
- bash: |
|
|
if [ "$(toolchain)" == "gcc9" ]
|
|
then
|
|
echo "##vso[task.setvariable variable=CC]gcc-9"
|
|
echo "##vso[task.setvariable variable=CXX]g++-9"
|
|
fi
|
|
if [ "$(toolchain)" == "gcc13" ]
|
|
then
|
|
echo "##vso[task.setvariable variable=CC]gcc-13"
|
|
echo "##vso[task.setvariable variable=CXX]g++-13"
|
|
fi
|
|
if [ "$(toolchain)" == "gcc14" ]
|
|
then
|
|
echo "##vso[task.setvariable variable=CC]gcc-14"
|
|
echo "##vso[task.setvariable variable=CXX]g++-14"
|
|
fi
|
|
if [ "$(toolchain)" == "clang" ]
|
|
then
|
|
echo "##vso[task.setvariable variable=CC]clang"
|
|
echo "##vso[task.setvariable variable=CXX]clang++"
|
|
fi
|
|
if [ "$(toolchain)" == "cross" ]
|
|
then
|
|
echo "##vso[task.setvariable variable=CC]gcc-13"
|
|
echo "##vso[task.setvariable variable=CXX]g++-13"
|
|
fi
|
|
displayName: 'Setting variables'
|
|
|
|
- bash: |
|
|
echo "toolchain: $(toolchain)"
|
|
echo "buildTarget: $(buildTarget)"
|
|
echo "netHackPath: $NETHACKPATH"
|
|
echo "CC: $CC"
|
|
echo "CXX: $CXX"
|
|
displayName: 'Echoing variables'
|
|
|
|
- checkout: git://NetHack/NetHack@NetHack-3.7
|
|
submodules: true
|
|
path: $(netHackPath) # $(Agent.BuildDirectory)/$(netHackPath)
|
|
|
|
- task: DownloadSecureFile@1
|
|
name: storeKey
|
|
inputs:
|
|
secureFile: 'NetHackPackage_StoreKey.pfx'
|
|
condition: eq( variables.toolchain, 'vs' )
|
|
displayName: 'Store Key Download'
|
|
|
|
- task: CopyFiles@2
|
|
inputs:
|
|
contents: NetHackPackage_StoreKey.pfx
|
|
SourceFolder: $(Agent.TempDirectory)
|
|
TargetFolder: $(Agent.BuildDirectory)/$(netHackPath)/sys/windows/vs
|
|
condition: eq( variables.toolchain, 'vs' )
|
|
displayName: 'Copying store key'
|
|
|
|
- task: VSBuild@1
|
|
inputs:
|
|
solution: $(Agent.BuildDirectory)/$(netHackPath)/sys/windows/vs/NetHack.sln
|
|
platform: Win32
|
|
configuration: Debug
|
|
condition: eq( variables.toolchain, 'vs' )
|
|
displayName: 'Visual Studio Build'
|
|
|
|
- bash: |
|
|
export ADD_LUA=Y
|
|
export WANT_LUAC=N
|
|
export LUATOP=../submodules/lua
|
|
export LUASRC=../submodules/lua
|
|
export ADD_CURSES=Y
|
|
export PDCURSES_TOP=../submodules/pdcursesmod
|
|
export LUA_VERSION=5.4.6
|
|
#
|
|
# 64-bit
|
|
#export CURLSRC=https://github.com/brechtsanders/winlibs_mingw/releases/download/14.2.0posix-19.1.1-12.0.0-ucrt-r2/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.1-mingw-w64ucrt-12.0.0-r2.zip
|
|
#export CURLSRC=https://github.com/brechtsanders/winlibs_mingw/releases/download/15.1.0posix-12.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-15.1.0-mingw-w64ucrt-12.0.0-r1.zip
|
|
#export CURLDST=mingw-x64.zip
|
|
#export MINGWBIN=mingw64
|
|
#export MSYSTEM=MINGW64
|
|
#
|
|
# 32-bit
|
|
#export CURLSRC=https://github.com/brechtsanders/winlibs_mingw/releases/download/14.2.0posix-19.1.1-12.0.0-ucrt-r2/winlibs-i686-posix-dwarf-gcc-14.2.0-llvm-19.1.1-mingw-w64ucrt-12.0.0-r2.zip
|
|
export CURLSRC=https://github.com/brechtsanders/winlibs_mingw/releases/download/15.1.0posix-12.0.0-ucrt-r1/winlibs-i686-posix-dwarf-gcc-15.1.0-mingw-w64ucrt-12.0.0-r1.zip
|
|
export CURLDST=mingw-x86.zip
|
|
export MINGWBIN=mingw32
|
|
export MSYSTEM=MINGW32
|
|
# all
|
|
mkdir -p ../lib
|
|
cd ../lib
|
|
mkdir -p mingw
|
|
curl -L $CURLSRC -o $CURLDST
|
|
#tar -C mingw -xvf $CURLDST
|
|
#/c/Windows/System32/tar -C mingw -xvf $CURLDST
|
|
powershell -command "Expand-Archive -Force $CURLDST mingw"
|
|
export PATH=../lib/mingw/$MINGWBIN/bin:$PATH
|
|
export
|
|
cd ../src
|
|
pwd
|
|
cp ../sys/windows/GNUmakefile* .
|
|
mingw32-make -f GNUmakefile CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION clean
|
|
mingw32-make -f GNUmakefile CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION depend
|
|
mingw32-make -f GNUmakefile CI_COMPILER=1 GIT=1 MSYSTEM=$MSYSTEM LUA_VERSION=$LUA_VERSION
|
|
condition: eq( variables.toolchain, 'mingw' )
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)/src
|
|
displayName: 'MinGW Build'
|
|
|
|
- bash: |
|
|
sudo apt-get -qq -y update
|
|
sudo apt-get -qq -y install libncurses-dev
|
|
sudo apt-get -qq -y install libx11-dev libxaw7-dev xfonts-utils qtbase5-dev qtmultimedia5-dev qtbase5-dev-tools
|
|
condition: and(eq( variables['Agent.OS'], 'Linux' ), eq( variables.buildTarget, 'all'))
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
|
|
displayName: 'Getting linux build dependencies'
|
|
|
|
- bash: |
|
|
cd sys/unix
|
|
sh setup.sh hints/linux.370
|
|
cd ../..
|
|
make fetch-lua
|
|
make WANT_WIN_ALL=1 QT_SELECT=5 MOC=moc all
|
|
condition: and(eq( variables['Agent.OS'], 'Linux' ), eq( variables.buildTarget, 'all'))
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
|
|
displayName: 'Building linux full build'
|
|
|
|
- bash: |
|
|
cd sys/unix
|
|
sh setup.sh hints/linux-minimal
|
|
cd ../..
|
|
sed -i '/^#[ ]*define CLIPPING/d' include/config.h
|
|
sed -i '/^#[ ]*define COMPRESS/d' include/config.h
|
|
sed -i '/^#[ ]*define CRASHREPORT/d' include/config.h
|
|
#sed -i '/^#[ ]*define DOAGAIN/d' include/config.h
|
|
sed -i '/^#[ ]*define DUMPLOG/d' include/config.h
|
|
sed -i '/^#[ ]*define DUMPLOG_CORE/d' include/config.h
|
|
#sed -i '/^#[ ]*define GDBPATH/d' include/config.h
|
|
#sed -i '/^#[ ]*define GREPPATH/d' include/config.h
|
|
sed -i '/^#[ ]*define INSURANCE/d' include/config.h
|
|
sed -i '/^#[ ]*define ENHANCED_SYMBOLS/d' include/config.h
|
|
sed -i '/^#[ ]*define LOGFILE/d' include/config.h
|
|
sed -i '/^#[ ]*define NEWS/d' include/config.h
|
|
sed -i '/^#[ ]*define PANICLOG/d' include/config.h
|
|
#sed -i '/^#[ ]*define STATUS_HILITES/d' include/config.h
|
|
sed -i '/^#[ ]*define SYSCF/d' include/config.h
|
|
sed -i '/^#[ ]*define USER_SOUNDS/d' include/config.h
|
|
sed -i '/^#[ ]*define XLOGFILE/d' include/config.h
|
|
sed -i '/^#[ ]*define HANGUPHANDLING/d' include/global.h
|
|
sed -i '/^#[ ]*define MAIL/d' include/unixconf.h
|
|
sed -i '/^#[ ]*define SHELL/d' include/unixconf.h
|
|
sed -i '/^#[ ]*define SUSPEND/d' include/unixconf.h
|
|
make fetch-lua
|
|
make WANT_WIN_ALL=1 NOCRASHREPORT=1 all
|
|
condition: and(eq( variables['Agent.OS'], 'Linux' ), eq( variables.buildTarget, 'minimal'))
|
|
displayName: 'Building linux minimal build'
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
|
|
|
|
- bash: |
|
|
brew install groff
|
|
cd sys/unix
|
|
sh setup.sh hints/macos.370
|
|
cd ../..
|
|
make fetch-lua
|
|
make WANT_MACSOUND=1 all
|
|
condition: eq( variables['Agent.OS'], 'Darwin' )
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
|
|
displayName: 'Building mac full build'
|
|
|
|
- bash: |
|
|
sudo apt -qq -y install libfl2
|
|
export GCCVER=gcc1220
|
|
cd sys/unix
|
|
sh setup.sh hints/linux.370
|
|
cd ../..
|
|
make fetch-lua
|
|
sys/msdos/fetch-cross-compiler.sh
|
|
retVal=$?
|
|
if [ $retVal -eq 0 ]; then
|
|
make LUA_VERSION=5.4.6 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 CROSS_TO_MSDOS=1 package
|
|
fi
|
|
condition: and(eq( variables['Agent.OS'], 'Linux' ), eq( variables.toolchain, 'cross'))
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
|
|
displayName: 'Building MSDOS build'
|
|
- bash: |
|
|
sudo apt-get install texlive
|
|
make Guidebook
|
|
make Guidebook.txt
|
|
make Guidebook.pdf
|
|
condition: and(eq( variables['Agent.OS'], 'Linux' ), eq( variables.toolchain, 'docs'))
|
|
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
|
|
displayName: 'Building NetHack documentation'
|