diff options
author | hobbs <hobbs> | 2005-11-30 00:19:01 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2005-11-30 00:19:01 (GMT) |
commit | f0c3a91f5ea2b819f6bf50e67f95d8a90eecf96e (patch) | |
tree | e93af74ffc560c427f348a51fef41a992ed9136d /win/configure | |
parent | 8d48b63b4dc1cc235bfc878499afc7bfc0361355 (diff) | |
download | tk-f0c3a91f5ea2b819f6bf50e67f95d8a90eecf96e.zip tk-f0c3a91f5ea2b819f6bf50e67f95d8a90eecf96e.tar.gz tk-f0c3a91f5ea2b819f6bf50e67f95d8a90eecf96e.tar.bz2 |
* win/tcl.m4: Add build support for Windows-x64 builds.
* win/configure: --enable-64bit now accepts =amd64|ia64 for
* win/Makefile.in: Windows 64-bit build variants (default: amd64)
* win/makefile.vc: [Bug 1369597]
* win/configure.in:
* win/wish.exe.manifest.in (new): manifest must map in MACHINE
* win/rc/wish.exe.manifest (removed): and VERSION to be correct.
Diffstat (limited to 'win/configure')
-rwxr-xr-x | win/configure | 100 |
1 files changed, 64 insertions, 36 deletions
diff --git a/win/configure b/win/configure index 0813db3..abf25a8 100755 --- a/win/configure +++ b/win/configure @@ -16,7 +16,7 @@ ac_help="$ac_help ac_help="$ac_help --enable-shared build and link with shared libraries [--enable-shared]" ac_help="$ac_help - --enable-64bit enable 64bit support (where applicable)" + --enable-64bit enable 64bit support (where applicable = amd64|ia64)" ac_help="$ac_help --enable-symbols build with debugging symbols [--disable-symbols]" ac_help="$ac_help @@ -1224,7 +1224,7 @@ echo "configure:1205: checking for Windows native path bug in windres" >&5 echo $ac_n "checking compiler flags""... $ac_c" 1>&6 echo "configure:1226: checking compiler flags" >&5 if test "${GCC}" = "yes" ; then - if test "$do64bit" = "yes" ; then + if test "$do64bit" != "no" ; then echo "configure: warning: "64bit mode not supported with GCC on Windows"" 1>&2 fi SHLIB_LD="" @@ -1364,34 +1364,49 @@ echo "configure:1226: checking compiler flags" >&5 # This is a 2-stage check to make sure we have the 64-bit SDK # We have to know where the SDK is installed. - if test "$do64bit" = "yes" ; then + # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs + # MACHINE is IX86 for LINK, but this is used by the manifest, + # which requires x86|amd64|ia64. + MACHINE="X86" + if test "$do64bit" != "no" ; then if test "x${MSSDK}x" = "xx" ; then - MSSDK="C:/Progra~1/Microsoft SDK" + MSSDK="C:/Progra~1/Microsoft Platform SDK" fi MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'` - if test ! -d "${MSSDK}/bin/win64" ; then - echo "configure: warning: "could not find 64-bit SDK to enable 64bit mode"" 1>&2 + PATH64="" + case "$do64bit" in + amd64|x64|yes) + MACHINE="AMD64" ; # default to AMD64 64-bit build + PATH64="${MSSDK}/Bin/Win64/x86/AMD64" + ;; + ia64) + MACHINE="IA64" + PATH64="${MSSDK}/Bin/Win64" + ;; + esac + if test ! -d "${PATH64}" ; then + echo "configure: warning: Could not find 64-bit $MACHINE SDK to enable 64bit mode" 1>&2 + echo "configure: warning: Ensure latest Platform SDK is installed" 1>&2 do64bit="no" + else + echo "$ac_t"" Using 64-bit $MACHINE mode" 1>&6 fi fi - if test "$do64bit" = "yes" ; then - # All this magic is necessary for the Win64 SDK RC1 - hobbs + if test "$do64bit" != "no" ; then # The space-based-path will work for the Makefile, but will - # not work if AC_TRY_COMPILE is called. TEA has the - # TEA_PATH_NOSPACE to avoid this issue. - CC="\"${MSSDK}/Bin/Win64/cl.exe\" \ - -I\"${MSSDK}/Include/prerelease\" \ - -I\"${MSSDK}/Include/Win64/crt\" \ - -I\"${MSSDK}/Include/Win64/crt/sys\" \ - -I\"${MSSDK}/Include\"" + # not work if AC_TRY_COMPILE is called. + CC="\"${PATH64}/cl.exe\" -I\"${MSSDK}/Include\" \ + -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\"" RC="\"${MSSDK}/bin/rc.exe\"" CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d" # Do not use -O2 for Win64 - this has proved buggy in code gen. CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}" - lflags="-MACHINE:IA64 -LIBPATH:\"${MSSDK}/Lib/IA64\" \ - -LIBPATH:\"${MSSDK}/Lib/Prerelease/IA64\" -nologo" - LINKBIN="\"${MSSDK}/bin/win64/link.exe\"" + lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\"" + LINKBIN="\"${PATH64}/link.exe\"" + # Avoid 'unresolved external symbol __security_cookie' errors. + # c.f. http://support.microsoft.com/?id=894573 + LIBS="user32.lib advapi32.lib bufferoverflowU.lib" else RC="rc" # -Od - no optimization @@ -1401,9 +1416,9 @@ echo "configure:1226: checking compiler flags" >&5 CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}" lflags="-nologo" LINKBIN="link" + LIBS="user32.lib advapi32.lib" fi - LIBS="user32.lib advapi32.lib" LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib" SHLIB_LD="${LINKBIN} -dll -incremental:no ${lflags}" # link -lib only works when -lib is the first arg @@ -1445,7 +1460,7 @@ echo "configure:1226: checking compiler flags" >&5 #-------------------------------------------------------------------- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1449: checking how to run the C preprocessor" >&5 +echo "configure:1464: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1460,13 +1475,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 1464 "configure" +#line 1479 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1477,13 +1492,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 1481 "configure" +#line 1496 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1494,13 +1509,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -#line 1498 "configure" +#line 1513 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1526,17 +1541,17 @@ echo "$ac_t""$CPP" 1>&6 ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for errno.h""... $ac_c" 1>&6 -echo "configure:1530: checking for errno.h" >&5 +echo "configure:1545: checking for errno.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1535 "configure" +#line 1550 "configure" #include "confdefs.h" #include <errno.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1568,7 +1583,7 @@ fi echo $ac_n "checking for build with symbols""... $ac_c" 1>&6 -echo "configure:1572: checking for build with symbols" >&5 +echo "configure:1587: checking for build with symbols" >&5 # Check whether --enable-symbols or --disable-symbols was given. if test "${enable_symbols+set}" = set; then enableval="$enable_symbols" @@ -1629,7 +1644,7 @@ TK_DBGX=${DBGX} echo $ac_n "checking the location of tclConfig.sh""... $ac_c" 1>&6 -echo "configure:1633: checking the location of tclConfig.sh" >&5 +echo "configure:1648: checking the location of tclConfig.sh" >&5 if test -d ../../tcl8.4$TK_PATCH_LEVEL/win; then TCL_BIN_DIR_DEFAULT=../../tcl8.4$TK_PATCH_LEVEL/win @@ -1657,7 +1672,7 @@ fi echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6 -echo "configure:1661: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 +echo "configure:1676: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then echo "$ac_t""loading" 1>&6 @@ -1710,14 +1725,14 @@ echo "configure:1661: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5 echo $ac_n "checking for tclsh in Tcl build directory""... $ac_c" 1>&6 -echo "configure:1714: checking for tclsh in Tcl build directory" >&5 +echo "configure:1729: checking for tclsh in Tcl build directory" >&5 BUILD_TCLSH=${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT} echo "$ac_t""$BUILD_TCLSH" 1>&6 echo $ac_n "checking for tclsh""... $ac_c" 1>&6 -echo "configure:1721: checking for tclsh" >&5 +echo "configure:1736: checking for tclsh" >&5 if eval "test \"`echo '$''{'ac_cv_path_tclsh'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1814,6 +1829,17 @@ else TK_RES='tk.$(RES)' fi +# The wish.exe.manifest requires these +# TK_WIN_VERSION is the 4 dotted pair Windows version format +case "$TK_PATCH_LEVEL" in + a*) TK_WIN_VERSION="$TK_VERSION.0.`echo $TK_PATCH_LEVEL | tr -d a`" ;; + b*) TK_WIN_VERSION="$TK_VERSION.1.`echo $TK_PATCH_LEVEL | tr -d b`" ;; + .*) TK_WIN_VERSION="$TK_VERSION.2$TK_PATCH_LEVEL" ;; +esac + +# X86|AMD64|IA64 for manifest + + @@ -2005,7 +2031,7 @@ done ac_given_srcdir=$srcdir -trap 'rm -fr `echo "Makefile tkConfig.sh" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +trap 'rm -fr `echo "Makefile tkConfig.sh wish.exe.manifest" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <<EOF @@ -2066,6 +2092,8 @@ s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g s%@TCL_DEFS@%$TCL_DEFS%g s%@BUILD_TCLSH@%$BUILD_TCLSH%g s%@TCLSH_PROG@%$TCLSH_PROG%g +s%@TK_WIN_VERSION@%$TK_WIN_VERSION%g +s%@MACHINE@%$MACHINE%g s%@TK_VERSION@%$TK_VERSION%g s%@TK_MAJOR_VERSION@%$TK_MAJOR_VERSION%g s%@TK_MINOR_VERSION@%$TK_MINOR_VERSION%g @@ -2167,7 +2195,7 @@ EOF cat >> $CONFIG_STATUS <<EOF -CONFIG_FILES=\${CONFIG_FILES-"Makefile tkConfig.sh"} +CONFIG_FILES=\${CONFIG_FILES-"Makefile tkConfig.sh wish.exe.manifest"} EOF cat >> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then |