# HG changeset patch # User sam # Date 1712243305 -25200 # Node ID a8ce28444cf2391ddb5788a96488314ac3d38b3c # Parent 2a5e7b54736e17672b67ab3931ce7174ab70cf99 add: support steam uploads on windows diff -r 2a5e7b54736e -r a8ce28444cf2 semicongine.nimble --- a/semicongine.nimble Thu Apr 04 20:59:19 2024 +0700 +++ b/semicongine.nimble Thu Apr 04 22:08:25 2024 +0700 @@ -9,6 +9,11 @@ installDirs = @["semicongine"] # Dependencies +# On linux/debian also run the following to get everything working +# sudo dpkg --add-architecture i386 +# sudo apt-get update +# sudo apt-get install zip unzip libstdc++6:i386 libc6:i386 + requires "nim >= 2.0" requires "winim" diff -r 2a5e7b54736e -r a8ce28444cf2 semicongine/build.nim --- a/semicongine/build.nim Thu Apr 04 20:59:19 2024 +0700 +++ b/semicongine/build.nim Thu Apr 04 22:08:25 2024 +0700 @@ -26,6 +26,8 @@ platformDir = "linux" elif defined(windows): platformDir = "windows" + else: + raise newException(Exception, "Unsupported platform") return builddir / buildname / platformDir / projectName() @@ -33,10 +35,14 @@ switch("experimental", "strictEffects") switch("experimental", "strictFuncs") switch("define", "nimPreviewHashRef") - if defined(linux): switch("define", "VK_USE_PLATFORM_XLIB_KHR") - if defined(windows): + if defined(linux): + switch("define", "VK_USE_PLATFORM_XLIB_KHR") + elif defined(windows): switch("define", "VK_USE_PLATFORM_WIN32_KHR") switch("app", "gui") + else: + raise newException(Exception, "Unsupported platform") + switch("outdir", semicongine_builddir(buildname, builddir = builddir)) switch("passL", "-Wl,-rpath,'$ORIGIN'") # adds directory of executable to dynlib search path @@ -59,6 +65,8 @@ exec &"zip -r {outputfile} ." elif defined(windows): exec &"powershell Compress-Archive * {outputfile}" + else: + raise newException(Exception, "Unsupported platform") elif bundleType == "exe": switch("define", "BUILD_RESOURCEROOT=" & joinPath(getCurrentDir(), resourceRoot)) # required for in-exe packing of resources, must be absolute if withSteam: @@ -70,6 +78,8 @@ exec &"zip -r {dir.lastPathPart} ." elif defined(windows): exec &"powershell Compress-Archive * {dir.lastPathPart}" + else: + raise newException(Exception, "Unsupported platform") # need this because fileNewer from std/os does not work in Nim VM @@ -131,17 +141,30 @@ if not defined(linux): echo "steam uploads must be done on linux for now" return + let steamdir = thisDir().joinPath(STEAMBUILD_DIR_NAME) if not dirExists(steamdir): steamdir.mkDir let zipFilename = STEAMCMD_ZIP.extractFilename STEAMCMD_ZIP.cpFile(steamdir.joinPath(zipFilename)) withDir(steamdir): - exec &"unzip {zipFilename}" - rmFile zipFilename - exec "steamcmd/steamcmd.sh +quit" # self-update steamcmd + if defined(linux): + exec &"unzip {zipFilename}" + rmFile zipFilename + exec "steamcmd/steamcmd.sh +quit" # self-update steamcmd + elif defined(windows): + exec &"powershell Expand-Archive -LiteralPath {zipFilename} ." + rmFile zipFilename + exec "steamcmd/steamcmd.exe +quit" # self-update steamcmd + else: + raise newException(Exception, "Unsupported platform") - let + var steamcmd: string + if defined(linux): steamcmd = STEAMBUILD_DIR_NAME.joinPath("steamcmd").joinPath("steamcmd.sh") - scriptPath = "..".joinPath("..").joinPath(buildscript) + elif defined(windows): + steamcmd = STEAMBUILD_DIR_NAME.joinPath("steamcmd").joinPath("steamcmd.exe") + else: + raise newException(Exception, "Unsupported platform") + let scriptPath = "..".joinPath("..").joinPath(buildscript) exec &"./{steamcmd} +login \"{steamaccount}\" \"{password}\" +run_app_build {scriptPath} +quit" diff -r 2a5e7b54736e -r a8ce28444cf2 tools/steamcmd.zip Binary file tools/steamcmd.zip has changed