ci: Add OrangeC 6.73.1 nightly CI job
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5982c27..c13ba72 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1392,6 +1392,20 @@
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
+t:windows-orangec6.73.1:
+    extends:
+        - .windows_orangec6.73.1
+        - .cmake_test_windows_external
+        - .windows_x86_64_tags_concurrent
+        - .cmake_junit_artifacts
+        - .run_dependent
+    dependencies:
+        - t:windows-vs2022-x64-ninja
+    needs:
+        - t:windows-vs2022-x64-ninja
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
 # Windows arm64 jobs
 
 b:windows-arm64-vs2022-ninja:
diff --git a/.gitlab/.gitignore b/.gitlab/.gitignore
index 852dfa6..19796ef 100644
--- a/.gitlab/.gitignore
+++ b/.gitlab/.gitignore
@@ -12,6 +12,7 @@
 /ninja*
 /openmp
 /open-watcom*
+/orangec
 /python*
 /qt*
 /sccache*
diff --git a/.gitlab/ci/configure_windows_orangec6.73.1.cmake b/.gitlab/ci/configure_windows_orangec6.73.1.cmake
new file mode 100644
index 0000000..e667b94
--- /dev/null
+++ b/.gitlab/ci/configure_windows_orangec6.73.1.cmake
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_orangec_common.cmake")
diff --git a/.gitlab/ci/configure_windows_orangec_common.cmake b/.gitlab/ci/configure_windows_orangec_common.cmake
new file mode 100644
index 0000000..55dce1d
--- /dev/null
+++ b/.gitlab/ci/configure_windows_orangec_common.cmake
@@ -0,0 +1,5 @@
+set(CMake_TEST_Java OFF CACHE BOOL "")
+
+set(configure_no_sccache 1)
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")
diff --git a/.gitlab/ci/env_windows_orangec6.73.1.ps1 b/.gitlab/ci/env_windows_orangec6.73.1.ps1
new file mode 100755
index 0000000..96e36a1
--- /dev/null
+++ b/.gitlab/ci/env_windows_orangec6.73.1.ps1
@@ -0,0 +1,2 @@
+. .gitlab/ci/ninja-env.ps1
+. .gitlab/ci/orangec-env.ps1
diff --git a/.gitlab/ci/orangec-env.ps1 b/.gitlab/ci/orangec-env.ps1
new file mode 100755
index 0000000..3a5d232
--- /dev/null
+++ b/.gitlab/ci/orangec-env.ps1
@@ -0,0 +1,8 @@
+Invoke-Expression -Command .gitlab/ci/orangec.ps1
+$pwdpath = $pwd.Path
+Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\orangec\bin;$env:PATH"
+Set-Item -Force -Path "env:ORANGEC" -Value "$pwdpath\.gitlab\orangec"
+
+$env:CC  = "occ"
+$env:CXX = "occ"
+occ --version
diff --git a/.gitlab/ci/orangec.ps1 b/.gitlab/ci/orangec.ps1
new file mode 100755
index 0000000..2201e12
--- /dev/null
+++ b/.gitlab/ci/orangec.ps1
@@ -0,0 +1,24 @@
+$erroractionpreference = "stop"
+
+if ("$env:CMAKE_CONFIGURATION".Contains("orangec6.73.1")) {
+    # OrangeC 6.73.1
+    $archive = "ZippedBinaries6738.zip"
+    $release = "Orange-C-v6.73.1"
+    $sha256sum = "29BC506AB105B2BF1002129C37826B2153DF1C8D0F22B9A2C38ACA3FB72A5B89"
+} else {
+    throw ('unknown CMAKE_CONFIGURATION: ' + "$env:CMAKE_CONFIGURATION")
+}
+
+$outdir = $pwd.Path
+$outdir = "$outdir\.gitlab"
+$ProgressPreference = 'SilentlyContinue'
+Invoke-WebRequest -Uri "https://github.com/LADSoft/OrangeC/releases/download/$release/$archive" -OutFile "$outdir\$archive"
+$hash = Get-FileHash "$outdir\$archive" -Algorithm SHA256
+if ($hash.Hash -ne $sha256sum) {
+    exit 1
+}
+
+Add-Type -AssemblyName System.IO.Compression.FileSystem
+[System.IO.Compression.ZipFile]::ExtractToDirectory("$outdir\$archive", "$outdir")
+# The archive contains directory 'orangec', placed at '$outdir\orangec'.
+Remove-Item "$outdir\$archive"
diff --git a/.gitlab/os-windows.yml b/.gitlab/os-windows.yml
index 81944cb..c449ab8 100644
--- a/.gitlab/os-windows.yml
+++ b/.gitlab/os-windows.yml
@@ -261,6 +261,20 @@
     variables:
         CMAKE_CONFIGURATION: windows_openwatcom1.9
 
+.windows_orangec:
+    extends: .windows
+
+    variables:
+        CMAKE_GENERATOR: "Ninja"
+        CMAKE_CI_BUILD_TYPE: Release
+        CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
+
+.windows_orangec6.73.1:
+    extends: .windows_orangec
+
+    variables:
+        CMAKE_CONFIGURATION: windows_orangec6.73.1
+
 .windows_arm64_vs2022:
     extends: .windows