diff --git a/.gitignore b/.gitignore index 0eb1f89..b14111e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ bin *.crvm *.o *.a -*.exe \ No newline at end of file +*.exe +build-x86 +build-x64 \ No newline at end of file diff --git a/.onedev-buildspec.yml b/.onedev-buildspec.yml index ab0bef4..a9dbd5d 100644 --- a/.onedev-buildspec.yml +++ b/.onedev-buildspec.yml @@ -68,12 +68,14 @@ jobs: interpreter: !DefaultInterpreter commands: | apt update -y - apt install -y pkg-config + apt install -y pkg-config git gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 cd Packaging/Linux bash build-ubuntu-jammy.sh bash push-ubuntu-jammy.sh + cd ../Windows + bash build.sh apt update -y - apt install -y crosslang git gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 + apt install -y crosslang cd ../CPKG bash pack_and_publish.sh envVars: @@ -83,6 +85,26 @@ jobs: value: '@secret:CPKG_KEY@' useTTY: true condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL + - !PublishArtifactStep + name: Publish Win32 Installer + sourcePath: Packaging/Windows/build-x86 + artifacts: TessesCrossLang-*-win32.exe + condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL + - !PublishArtifactStep + name: Publish Win32 ZIP + sourcePath: Packaging/Windows/build-x86 + artifacts: TessesCrossLang-*-win32.zip + condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL + - !PublishArtifactStep + name: Publish Win64 Installer + sourcePath: Packaging/Windows/build-x64 + artifacts: TessesCrossLang-*-win64.exe + condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL + - !PublishArtifactStep + name: Publish Win64 ZIP + sourcePath: Packaging/Windows/build-x64 + artifacts: TessesCrossLang-*-win64.zip + condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - !CommandStep name: Build and Publish Deb Package (Plucky) runInContainer: true diff --git a/Packaging/CPKG/pack.sh b/Packaging/CPKG/pack.sh index 8e73234..f1f922d 100644 --- a/Packaging/CPKG/pack.sh +++ b/Packaging/CPKG/pack.sh @@ -1,4 +1,3 @@ #!/bin/bash mkdir compilers -export PATH=$COMPILERS/bin:$PATH crossint pack.tcross \ No newline at end of file diff --git a/Packaging/CPKG/pack.tcross b/Packaging/CPKG/pack.tcross index f86af78..0db3e7d 100644 --- a/Packaging/CPKG/pack.tcross +++ b/Packaging/CPKG/pack.tcross @@ -66,8 +66,10 @@ func BuildConsoleOrServerWindowsStatic(arch) FS.Local.CreateDirectory(publish_dir); var args = ["-S","ConsoleOrServer","-B",build_dir.ToString(),"-DCROSSAPPPUBLISH_STATIC=ON"]; - - args.Add($"-DCMAKE_TOOLCHAIN_FILE=WindowsToolchains/{arch}.cmake"); + + var file= ("WindowsToolchains"/$"{arch}.cmake").MakeAbsolute().ToString(); + + args.Add($"-DCMAKE_TOOLCHAIN_FILE={file}"); Process.Start({ FileName = Env.GetRealExecutablePath("cmake").ToString(), @@ -89,7 +91,7 @@ func BuildConsoleOrServerWindowsStatic(arch) maintainer = "Mike Nolan", repo = "https://onedev.site.tesses.net/crosslang", homepage = "https://crosslang.tesseslanguage.com/", - executable_name = "crossapp", + executable_name = "crossapp.exe", executable_can_be_renamed = true, executable_runtime = $"win-{arch}", description = $"Runtime files for win-{arch}", diff --git a/Packaging/Windows/WindowsToolchains/x64.cmake b/Packaging/Windows/WindowsToolchains/x64.cmake new file mode 100644 index 0000000..1d7cc26 --- /dev/null +++ b/Packaging/Windows/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/Windows/WindowsToolchains/x86.cmake b/Packaging/Windows/WindowsToolchains/x86.cmake new file mode 100644 index 0000000..86d52ca --- /dev/null +++ b/Packaging/Windows/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/Windows/build.sh b/Packaging/Windows/build.sh new file mode 100644 index 0000000..451aeaf --- /dev/null +++ b/Packaging/Windows/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash +cmake -S ../.. -B build-x86 -DCMAKE_TOOLCHAIN_FILE=`pwd`/WindowsToolchains/x86.cmake -DTESSESFRAMEWORK_FETCHCONTENT=ON -DTESSESFRAMEWORK_ENABLE_APPS=OFF -DTESSESFRAMEWORK_ENABLE_EXAMPLES=OFF -DTESSESFRAMEWORK_ENABLE_STATIC=ON -DTESSESFRAMEWORK_ENABLE_SHARED=OFF -DCMAKE_INSTALL_PREFIX=tmp-x86 +cd build-x86 +make -j`nproc` +cpack -G NSIS +cpack -G ZIP +cd .. +cmake -S ../.. -B build-x64 -DCMAKE_TOOLCHAIN_FILE=`pwd`/WindowsToolchains/x64.cmake -DTESSESFRAMEWORK_FETCHCONTENT=ON -DTESSESFRAMEWORK_ENABLE_APPS=OFF -DTESSESFRAMEWORK_ENABLE_EXAMPLES=OFF -DTESSESFRAMEWORK_ENABLE_STATIC=ON -DTESSESFRAMEWORK_ENABLE_SHARED=OFF -DCMAKE_INSTALL_PREFIX=tmp-x64 +cd build-x64 +make -j`nproc` +cpack -G NSIS +cpack -G ZIP \ No newline at end of file