pipeline {
	agent{
	    label "built-in"} stages {
		stage("Build document") {
			when{
			    branch "master"} agent{
			    label "built-in"} steps{
			    sh("rm -rf include/Mw/LowLevel/Wayland")
				sh("doxygen")
				    sh("rm -rf /var/www/milsko-doxygen")
					sh("mv doxygen/html /var/www/milsko-doxygen")} post {
				always {
					notifyDiscord()
				}
			}
		}
		stage("Build") {
			parallel {
				stage("Build for Linux 64-bit") {
					agent{
					    label "built-in"} steps {
						sh("git clean -dfx")
						    sh("./configure --enable-opengl --enable-vulkan --without-vulkan-string-helper")
							sh("make -j4")
							    sh("mv src/libMw.so libMw64.so")
								archiveArtifacts("libMw64.so")
					}
				}
				stage("Build for Windows 32-bit") {
					agent{
					    label "built-in"} steps {
						sh("git clean -dfx")
						    sh("./configure --enable-opengl --enable-stb-truetype --disable-freetype2 --cross --target=Windows --host=i686-w64-mingw32")
							sh("make -j4")
							    sh("mv src/Mw.dll Mw32.dll")
								sh("mv src/libMw.dll.a libMw32.dll.a")
								    archiveArtifacts("Mw32.dll,libMw32.dll.a")
					}
				}
				stage("Build for Windows 64-bit") {
					agent{
					    label "built-in"} steps {
						sh("git clean -dfx")
						    sh("./configure --enable-opengl --enable-stb-truetype --disable-freetype2 --cross --target=Windows --host=x86_64-w64-mingw32")
							sh("make -j4")
							    sh("mv src/Mw.dll Mw64.dll")
								sh("mv src/libMw.dll.a libMw64.dll.a")
								    archiveArtifacts("Mw64.dll,libMw64.dll.a")
					}
				}
				stage("Build for Windows 32-bit (MSVC)") {
					agent{
					    label "2012r2"} steps {
						bat("git clean -dfx")
						    bat("nmake -f NTMakefile")
							bat("move /y src\\Mw.dll MwMSVC32.dll")
							    bat("move /y src\\Mw.lib MwMSVC32.lib")
								archiveArtifacts("MwMSVC32.dll,MwMSVC32.lib")
					}
				}
				stage("Build for Windows 32-bit (Watcom)") {
					agent{
					    label "built-in"} environment{
					    WATCOM = "/usr/watcom" INCLUDE = "/usr/watcom/h:/usr/watcom/h/nt" PATH = "/usr/watcom/binl64:${env.PATH}"} steps {
						sh("git clean -dfx")
						    sh("wmake -f WatMakefile")
							sh("mv src/Mw.dll MwWat32.dll")
							    sh("mv src/Mw.lib MwWat32.lib")
								archiveArtifacts("MwWat32.dll,MwWat32.lib")
								    sh("./tools/watcom-pack.sh")
									sh("mv milsko-examples.zip milsko-examples-win32.zip")
									    archiveArtifacts("milsko-examples-win32.zip")
					}
				}
			}
			post {
				always {
					notifyDiscord()
				}
			}
		}
	}
}
