diff options
-rw-r--r-- | .github/workflows/win-build.yml | 4 | ||||
-rw-r--r-- | libtommath/tommath.h | 2 | ||||
-rw-r--r-- | win/README | 7 | ||||
-rw-r--r-- | win/rules.vc | 11 |
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__) || \ @@ -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
|