summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/win-build.yml4
-rw-r--r--libtommath/tommath.h2
-rw-r--r--win/README7
-rw-r--r--win/rules.vc11
4 files changed, 18 insertions, 6 deletions
diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml
index 5c787f5..a8019ee 100644
--- a/.github/workflows/win-build.yml
+++ b/.github/workflows/win-build.yml
@@ -4,7 +4,7 @@ env:
ERROR_ON_FAILURES: 1
jobs:
msvc:
- runs-on: windows-latest
+ runs-on: windows-2022
defaults:
run:
shell: powershell
@@ -43,7 +43,7 @@ jobs:
throw "nmake exit code: $lastexitcode"
}
gcc:
- runs-on: windows-latest
+ runs-on: windows-2022
defaults:
run:
shell: msys2 {0}
diff --git a/libtommath/tommath.h b/libtommath/tommath.h
index 5834a89..1094641 100644
--- a/libtommath/tommath.h
+++ b/libtommath/tommath.h
@@ -38,7 +38,7 @@ extern "C" {
#endif
/* detect 64-bit mode if possible */
-#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || \
+#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || defined(_M_ARM64) || \
defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \
defined(__s390x__) || defined(__arch64__) || defined(__aarch64__) || \
defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || \
diff --git a/win/README b/win/README
index 8dd0574..c52dc96 100644
--- a/win/README
+++ b/win/README
@@ -56,6 +56,13 @@ using it, are in the comments of "makefile.vc". A quick example would be:
There is also a Developer Studio workspace and project file, too, if you
would like to use them.
+If you want to Cross-compile with Visual Studio (e.g. for X86 or ARM64
+targets, but running on AMD64), first set up the environment for
+your host machine and compile nmakehlp.exe:
+ C:\tcl_source\win\>nmake -f makefile.vc nmakehlp
+Then go to your cross-compile environment and run the nmake
+command again for whatever you want to build.
+
If you are building with Linux, Cygwin or Msys, you can use the configure
script that lives in the win subdirectory. The Linux/Cygwin/Msys based
configure/build process works just like the UNIX one, so you will want
diff --git a/win/rules.vc b/win/rules.vc
index 2f01de0..b68b6b4 100644
--- a/win/rules.vc
+++ b/win/rules.vc
@@ -548,10 +548,15 @@ NMAKEHLPC = $(_TCLDIR)\win\nmakehlp.c
!endif # NMAKEHLPC
+nmakehlp:
+ $(cc32) -nologo "$(NMAKEHLPC)" -link -subsystem:console
+
# We always build nmakehlp even if it exists since we do not know
# what source it was built from.
+!if "$(MACHINE)" == "$(NATIVE_ARCH)"
!if [$(cc32) -nologo "$(NMAKEHLPC)" -link -subsystem:console > nul]
!endif
+!endif
################################################################
# 5. Test for compiler features
@@ -1379,7 +1384,7 @@ OPTDEFINES = $(OPTDEFINES) /DUSE_THREAD_ALLOC=1
OPTDEFINES = $(OPTDEFINES) /DSTATIC_BUILD
!elseif $(TCL_VERSION) > 86
OPTDEFINES = $(OPTDEFINES) /DTCL_WITH_EXTERNAL_TOMMATH
-!if "$(MACHINE)" == "AMD64"
+!if "$(MACHINE)" == "AMD64" || "$(MACHINE)" == "ARM64"
OPTDEFINES = $(OPTDEFINES) /DMP_64BIT
!endif
!endif
@@ -1407,7 +1412,7 @@ OPTDEFINES = $(OPTDEFINES) /DTCL_CFG_OPTIMIZED
!if $(PROFILE)
OPTDEFINES = $(OPTDEFINES) /DTCL_CFG_PROFILED
!endif
-!if "$(MACHINE)" == "AMD64"
+!if "$(MACHINE)" == "AMD64" || "$(MACHINE)" == "ARM64"
OPTDEFINES = $(OPTDEFINES) /DTCL_CFG_DO64BIT
!endif
!if $(VCVERSION) < 1300
@@ -1469,7 +1474,7 @@ cdebug = $(cdebug) -Zi
# cwarn includes default warning levels.
cwarn = $(WARNINGS)
-!if "$(MACHINE)" == "AMD64"
+!if "$(MACHINE)" == "AMD64" || "$(MACHINE)" == "ARM64"
# Disable pointer<->int warnings related to cast between different sizes
# There are a gadzillion of these due to use of ClientData and
# clutter up compiler