From aa9f499dd3fff092f86ce32142c5e073bcc1d873 Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Wed, 22 Oct 2025 12:13:16 -0500 Subject: [PATCH] Push win32 --- .onedev-buildspec.yml | 2 +- Packaging/CPKG/WindowsToolchains/x64.cmake | 7 +++ Packaging/CPKG/WindowsToolchains/x86.cmake | 7 +++ Packaging/CPKG/pack.tcross | 56 +++++++++++++++++++++- 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 Packaging/CPKG/WindowsToolchains/x64.cmake create mode 100644 Packaging/CPKG/WindowsToolchains/x86.cmake diff --git a/.onedev-buildspec.yml b/.onedev-buildspec.yml index 3fa651e..ab0bef4 100644 --- a/.onedev-buildspec.yml +++ b/.onedev-buildspec.yml @@ -73,7 +73,7 @@ jobs: bash build-ubuntu-jammy.sh bash push-ubuntu-jammy.sh apt update -y - apt install -y crosslang git + apt install -y crosslang git gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 cd ../CPKG bash pack_and_publish.sh envVars: diff --git a/Packaging/CPKG/WindowsToolchains/x64.cmake b/Packaging/CPKG/WindowsToolchains/x64.cmake new file mode 100644 index 0000000..1d7cc26 --- /dev/null +++ b/Packaging/CPKG/WindowsToolchains/x64.cmake @@ -0,0 +1,7 @@ +set(CMAKE_C_COMPILER "/usr/bin/x86_64-w64-mingw32-gcc") +set(CMAKE_CXX_COMPILER "/usr/bin/x86_64-w64-mingw32-g++") +set(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -static") +set(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -static") +set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86_64) \ No newline at end of file diff --git a/Packaging/CPKG/WindowsToolchains/x86.cmake b/Packaging/CPKG/WindowsToolchains/x86.cmake new file mode 100644 index 0000000..86d52ca --- /dev/null +++ b/Packaging/CPKG/WindowsToolchains/x86.cmake @@ -0,0 +1,7 @@ +set(CMAKE_C_COMPILER "/usr/bin/i686-w64-mingw32-gcc") +set(CMAKE_CXX_COMPILER "/usr/bin/i686-w64-mingw32-g++") +set(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -static") +set(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -static") +set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR i686) \ No newline at end of file diff --git a/Packaging/CPKG/pack.tcross b/Packaging/CPKG/pack.tcross index 6279973..f86af78 100644 --- a/Packaging/CPKG/pack.tcross +++ b/Packaging/CPKG/pack.tcross @@ -42,6 +42,10 @@ var statics = [ } ]; +var winStatics = [ + "x64", + "x86" +]; func CPUS() { var p = Process.Start({ @@ -53,6 +57,51 @@ func CPUS() return ParseLong(ms.GetBytes().ToString().Replace("\n","").Replace("\r","")); } var nproc = CPUS(); +func BuildConsoleOrServerWindowsStatic(arch) +{ + Console.WriteLine($"Building Windows Static {arch}"); + var build_dir = "builds" / $"win-{arch}"; + var publish_dir = "publish" / $"win-{arch}"; + FS.Local.CreateDirectory(build_dir); + FS.Local.CreateDirectory(publish_dir); + + var args = ["-S","ConsoleOrServer","-B",build_dir.ToString(),"-DCROSSAPPPUBLISH_STATIC=ON"]; + + args.Add($"-DCMAKE_TOOLCHAIN_FILE=WindowsToolchains/{arch}.cmake"); + + Process.Start({ + FileName = Env.GetRealExecutablePath("cmake").ToString(), + Arguments = args + }).Join(); + + + var p = new Process(); + p.FileName = Env.GetRealExecutablePath("make").ToString(); + p.WorkingDirectory = build_dir.MakeAbsolute().ToString(); + p.Arguments = [$"-j{nproc}"]; + if(p.Start()) + p.Join(); + + + mvFile(build_dir/"crossapp", publish_dir / "crossapp"); + var info = { + type = "archive", + maintainer = "Mike Nolan", + repo = "https://onedev.site.tesses.net/crosslang", + homepage = "https://crosslang.tesseslanguage.com/", + executable_name = "crossapp", + executable_can_be_renamed = true, + executable_runtime = $"win-{arch}", + description = $"Runtime files for win-{arch}", + }; + + var name = $"Tesses.CrossLang.Runtime.win-{arch}"; + + var subDir = new SubdirFilesystem(FS.Local,publish_dir); + var pkgStrm = FS.Local.OpenFile("publish"/$"{name}-{VERSION}.crvm","wb"); + FS.CreateArchive(subDir,pkgStrm, name ,VERSION, Json.Encode(info)); + pkgStrm.Close(); +} func BuildConsoleOrServerLinuxStatic(dir,cmake_toolchain) { Console.WriteLine($"Building Linux Static {dir}"); @@ -194,6 +243,11 @@ func mvFile(src,dest) func main(args) { Console.WriteLine($"Got {nproc} cpus"); + each(var static : winStatics) + { + BuildConsoleOrServerWindowsStatic(static); + } + BuildConsoleOrServerLinuxShared("x86_64"); BuildConsoleOrServerLinuxShared("aarch64", "/opt/toolchains/arm64.cmake"); BuildConsoleOrServerLinuxShared("armv7l", "/opt/toolchains/armhf.cmake"); @@ -204,7 +258,7 @@ func main(args) { BuildConsoleOrServerLinuxStaticBasedOnTarget(static.target,static.cpu); } - + var info = { type = "archive", maintainer = "Mike Nolan",