diff options
author | Joe Mistachkin <joe@mistachkin.com> | 2017-08-13 22:05:25 (GMT) |
---|---|---|
committer | Joe Mistachkin <joe@mistachkin.com> | 2017-08-13 22:05:25 (GMT) |
commit | 9b1b7036b0de2150a62088d4681e966d721fc012 (patch) | |
tree | f1407abdf076dfc855ea19667458ce99f40a5659 /win | |
parent | ed3d8a5c300d7029bc85bc0c012386ae933e230f (diff) | |
download | tcl-9b1b7036b0de2150a62088d4681e966d721fc012.zip tcl-9b1b7036b0de2150a62088d4681e966d721fc012.tar.gz tcl-9b1b7036b0de2150a62088d4681e966d721fc012.tar.bz2 |
Support cross-compiling Tcl for 'Win32 on ARM' using Visual Studio.
Diffstat (limited to 'win')
-rw-r--r-- | win/makefile.vc | 11 | ||||
-rw-r--r-- | win/tclWin32Dll.c | 4 | ||||
-rw-r--r-- | win/tclWinFile.c | 2 | ||||
-rw-r--r-- | win/tclWinSock.c | 3 |
4 files changed, 13 insertions, 7 deletions
diff --git a/win/makefile.vc b/win/makefile.vc index ada08cc..40de392 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -121,7 +121,7 @@ the build instructions. # nodep = Turns off compatibility macros to ensure the core
# isn't being built with deprecated functions.
#
-# MACHINE=(ALPHA|AMD64|IA64|IX86)
+# MACHINE=(ARM|AMD64|IA64|IX86)
# Set the machine type used for the compiler, linker, and
# resource compiler. This hook is needed to tell the tools
# when alternate platforms are requested. IX86 is the default
@@ -484,9 +484,16 @@ cdebug = -Zi -Od $(DEBUGFLAGS) cdebug = -Zi -WX $(DEBUGFLAGS)
!endif
+### Common compiler options that are architecture specific
+!if "$(MACHINE)" == "ARM"
+carch = -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE
+!else
+carch =
+!endif
+
### Declarations common to all compiler options
cwarn = $(WARNINGS) -D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE
-cflags = -nologo -c $(COMPILERFLAGS) $(cwarn) -Fp$(TMP_DIR)^\
+cflags = -nologo -c $(COMPILERFLAGS) $(carch) $(cwarn) -Fp$(TMP_DIR)^\
!if $(MSVCRT)
!if $(DEBUG) && !$(UNCHECKED)
diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 688fa8d..84c7a97 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -29,7 +29,7 @@ static int platformId; /* Running under NT, or 95/98? */ * VC++ 5.x has no 'cpuid' assembler instruction, so we must emulate it */ -#if defined(_MSC_VER) && (_MSC_VER <= 1100) +#if defined(_MSC_VER) && (_MSC_VER <= 1100) && defined (_M_IX86) #define cpuid __asm __emit 0fh __asm __emit 0a2h #endif @@ -735,7 +735,7 @@ TclWinCPUID( __cpuid(regsPtr, index); status = TCL_OK; -# else +# elif defined (_M_IX86) /* * Define a structure in the stack frame to hold the registers. */ diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 6662327..7586af1 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -828,7 +828,7 @@ tclWinDebugPanic( __builtin_trap(); #elif defined(_WIN64) __debugbreak(); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined (_M_IX86) _asm {int 3} #else DebugBreak(); diff --git a/win/tclWinSock.c b/win/tclWinSock.c index da2e60a..3799d98 100644 --- a/win/tclWinSock.c +++ b/win/tclWinSock.c @@ -1426,8 +1426,7 @@ TcpGetOptionProc( flags |= NI_NUMERICHOST; } } else if (sockname.sa.sa_family == AF_INET6) { - if ((IN6_ARE_ADDR_EQUAL(&sockname.sa6.sin6_addr, - &in6addr_any)) || + if (IN6_IS_ADDR_UNSPECIFIED(&sockname.sa6.sin6_addr) || (IN6_IS_ADDR_V4MAPPED(&sockname.sa6.sin6_addr) && sockname.sa6.sin6_addr.s6_addr[12] == 0 && sockname.sa6.sin6_addr.s6_addr[13] == 0 |