tcl.m4
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:22k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #------------------------------------------------------------------------
  2. # SC_PATH_TCLCONFIG --
  3. #
  4. # Locate the tclConfig.sh file and perform a sanity check on
  5. # the Tcl compile flags
  6. # Currently a no-op for Windows
  7. #
  8. # Arguments:
  9. # PATCH_LEVEL The patch level for Tcl if any.
  10. #
  11. # Results:
  12. #
  13. # Adds the following arguments to configure:
  14. # --with-tcl=...
  15. #
  16. # Sets the following vars:
  17. # TCL_BIN_DIR Full path to the tclConfig.sh file
  18. #------------------------------------------------------------------------
  19. AC_DEFUN([SC_PATH_TCLCONFIG], [
  20.     AC_MSG_CHECKING([the location of tclConfig.sh])
  21.     if test -d ../../tcl8.4$1/win;  then
  22. TCL_BIN_DIR_DEFAULT=../../tcl8.4$1/win
  23.     elif test -d ../../tcl8.4/win;  then
  24. TCL_BIN_DIR_DEFAULT=../../tcl8.4/win
  25.     else
  26. TCL_BIN_DIR_DEFAULT=../../tcl/win
  27.     fi
  28.     
  29.     AC_ARG_WITH(tcl, [  --with-tcl=DIR          use Tcl 8.4 binaries from DIR],
  30.     TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd $TCL_BIN_DIR_DEFAULT; pwd`)
  31.     if test ! -d $TCL_BIN_DIR; then
  32. AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR does not exist)
  33.     fi
  34.     if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
  35. AC_MSG_ERROR(There is no tclConfig.sh in $TCL_BIN_DIR:  perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
  36.     fi
  37.     AC_MSG_RESULT($TCL_BIN_DIR/tclConfig.sh)
  38. ])
  39. #------------------------------------------------------------------------
  40. # SC_PATH_TKCONFIG --
  41. #
  42. # Locate the tkConfig.sh file
  43. # Currently a no-op for Windows
  44. #
  45. # Arguments:
  46. # none
  47. #
  48. # Results:
  49. #
  50. # Adds the following arguments to configure:
  51. # --with-tk=...
  52. #
  53. # Sets the following vars:
  54. # TK_BIN_DIR Full path to the tkConfig.sh file
  55. #------------------------------------------------------------------------
  56. AC_DEFUN([SC_PATH_TKCONFIG], [
  57.     AC_MSG_CHECKING([the location of tkConfig.sh])
  58.     if test -d ../../tk8.4$1/win;  then
  59. TK_BIN_DIR_DEFAULT=../../tk8.4$1/win
  60.     elif test -d ../../tk8.4/win;  then
  61. TK_BIN_DIR_DEFAULT=../../tk8.4/win
  62.     else
  63. TK_BIN_DIR_DEFAULT=../../tk/win
  64.     fi
  65.     
  66.     AC_ARG_WITH(tk, [  --with-tk=DIR          use Tk 8.4 binaries from DIR],
  67.     TK_BIN_DIR=$withval, TK_BIN_DIR=`cd $TK_BIN_DIR_DEFAULT; pwd`)
  68.     if test ! -d $TK_BIN_DIR; then
  69. AC_MSG_ERROR(Tk directory $TK_BIN_DIR does not exist)
  70.     fi
  71.     if test ! -f $TK_BIN_DIR/tkConfig.sh; then
  72. AC_MSG_ERROR(There is no tkConfig.sh in $TK_BIN_DIR:  perhaps you did not specify the Tk *build* directory (not the toplevel Tk directory) or you forgot to configure Tk?)
  73.     fi
  74.     AC_MSG_RESULT([$TK_BIN_DIR/tkConfig.sh])
  75. ])
  76. #------------------------------------------------------------------------
  77. # SC_LOAD_TCLCONFIG --
  78. #
  79. # Load the tclConfig.sh file.
  80. #
  81. # Arguments:
  82. #
  83. # Requires the following vars to be set:
  84. # TCL_BIN_DIR
  85. #
  86. # Results:
  87. #
  88. # Subst the following vars:
  89. # TCL_BIN_DIR
  90. # TCL_SRC_DIR
  91. # TCL_LIB_FILE
  92. #
  93. #------------------------------------------------------------------------
  94. AC_DEFUN([SC_LOAD_TCLCONFIG], [
  95.     AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh])
  96.     if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
  97.         AC_MSG_RESULT([loading])
  98. . $TCL_BIN_DIR/tclConfig.sh
  99.     else
  100.         AC_MSG_RESULT([file not found])
  101.     fi
  102.     #
  103.     # If the TCL_BIN_DIR is the build directory (not the install directory),
  104.     # then set the common variable name to the value of the build variables.
  105.     # For example, the variable TCL_LIB_SPEC will be set to the value
  106.     # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
  107.     # instead of TCL_BUILD_LIB_SPEC since it will work with both an
  108.     # installed and uninstalled version of Tcl.
  109.     #
  110.     if test -f $TCL_BIN_DIR/Makefile ; then
  111.         TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
  112.         TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
  113.         TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
  114.     fi
  115.     #
  116.     # eval is required to do the TCL_DBGX substitution
  117.     #
  118.     eval "TCL_LIB_FILE="${TCL_LIB_FILE}""
  119.     eval "TCL_LIB_FLAG="${TCL_LIB_FLAG}""
  120.     eval "TCL_LIB_SPEC="${TCL_LIB_SPEC}""
  121.     eval "TCL_STUB_LIB_FILE="${TCL_STUB_LIB_FILE}""
  122.     eval "TCL_STUB_LIB_FLAG="${TCL_STUB_LIB_FLAG}""
  123.     eval "TCL_STUB_LIB_SPEC="${TCL_STUB_LIB_SPEC}""
  124.     AC_SUBST(TCL_VERSION)
  125.     AC_SUBST(TCL_PATCH_LEVEL)
  126.     AC_SUBST(TCL_BIN_DIR)
  127.     AC_SUBST(TCL_SRC_DIR)
  128.     AC_SUBST(TCL_LIB_FILE)
  129.     AC_SUBST(TCL_LIB_FLAG)
  130.     AC_SUBST(TCL_LIB_SPEC)
  131.     AC_SUBST(TCL_STUB_LIB_FILE)
  132.     AC_SUBST(TCL_STUB_LIB_FLAG)
  133.     AC_SUBST(TCL_STUB_LIB_SPEC)
  134.     AC_SUBST(TCL_DEFS)
  135. ])
  136. #------------------------------------------------------------------------
  137. # SC_LOAD_TKCONFIG --
  138. #
  139. # Load the tkConfig.sh file
  140. # Currently a no-op for Windows
  141. #
  142. # Arguments:
  143. #
  144. # Requires the following vars to be set:
  145. # TK_BIN_DIR
  146. #
  147. # Results:
  148. #
  149. # Sets the following vars that should be in tkConfig.sh:
  150. # TK_BIN_DIR
  151. #------------------------------------------------------------------------
  152. AC_DEFUN([SC_LOAD_TKCONFIG], [
  153.     AC_MSG_CHECKING([for existence of $TK_BIN_DIR/tkConfig.sh])
  154.     if test -f "$TK_BIN_DIR/tkConfig.sh" ; then
  155.         AC_MSG_RESULT([loading])
  156. . $TK_BIN_DIR/tkConfig.sh
  157.     else
  158.         AC_MSG_RESULT([could not find $TK_BIN_DIR/tkConfig.sh])
  159.     fi
  160.     AC_SUBST(TK_BIN_DIR)
  161.     AC_SUBST(TK_SRC_DIR)
  162.     AC_SUBST(TK_LIB_FILE)
  163. ])
  164. #------------------------------------------------------------------------
  165. # SC_ENABLE_SHARED --
  166. #
  167. # Allows the building of shared libraries
  168. #
  169. # Arguments:
  170. # none
  171. #
  172. # Results:
  173. #
  174. # Adds the following arguments to configure:
  175. # --enable-shared=yes|no
  176. #
  177. # Defines the following vars:
  178. # STATIC_BUILD Used for building import/export libraries
  179. # on Windows.
  180. #
  181. # Sets the following vars:
  182. # SHARED_BUILD Value of 1 or 0
  183. #------------------------------------------------------------------------
  184. AC_DEFUN([SC_ENABLE_SHARED], [
  185.     AC_MSG_CHECKING([how to build libraries])
  186.     AC_ARG_ENABLE(shared,
  187. [  --enable-shared         build and link with shared libraries [--enable-shared]],
  188.     [tcl_ok=$enableval], [tcl_ok=yes])
  189.     if test "${enable_shared+set}" = set; then
  190. enableval="$enable_shared"
  191. tcl_ok=$enableval
  192.     else
  193. tcl_ok=yes
  194.     fi
  195.     if test "$tcl_ok" = "yes" ; then
  196. AC_MSG_RESULT([shared])
  197. SHARED_BUILD=1
  198.     else
  199. AC_MSG_RESULT([static])
  200. SHARED_BUILD=0
  201. AC_DEFINE(STATIC_BUILD)
  202.     fi
  203. ])
  204. #------------------------------------------------------------------------
  205. # SC_ENABLE_THREADS --
  206. #
  207. # Specify if thread support should be enabled
  208. #
  209. # Arguments:
  210. # none
  211. #
  212. # Results:
  213. #
  214. # Adds the following arguments to configure:
  215. # --enable-threads=yes|no
  216. #
  217. # Defines the following vars:
  218. # TCL_THREADS
  219. #------------------------------------------------------------------------
  220. AC_DEFUN([SC_ENABLE_THREADS], [
  221.     AC_MSG_CHECKING(for building with threads)
  222.     AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
  223. [tcl_ok=$enableval], [tcl_ok=no])
  224.     if test "$tcl_ok" = "yes"; then
  225. AC_MSG_RESULT(yes)
  226. TCL_THREADS=1
  227. AC_DEFINE(TCL_THREADS)
  228. # USE_THREAD_ALLOC tells us to try the special thread-based
  229. # allocator that significantly reduces lock contention
  230. AC_DEFINE(USE_THREAD_ALLOC)
  231.     else
  232. TCL_THREADS=0
  233. AC_MSG_RESULT([no (default)])
  234.     fi
  235.     AC_SUBST(TCL_THREADS)
  236. ])
  237. #------------------------------------------------------------------------
  238. # SC_ENABLE_SYMBOLS --
  239. #
  240. # Specify if debugging symbols should be used
  241. # Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
  242. # can also be enabled.
  243. #
  244. # Arguments:
  245. # none
  246. #
  247. # Requires the following vars to be set in the Makefile:
  248. # CFLAGS_DEBUG
  249. # CFLAGS_OPTIMIZE
  250. #
  251. # Results:
  252. #
  253. # Adds the following arguments to configure:
  254. # --enable-symbols
  255. #
  256. # Defines the following vars:
  257. # CFLAGS_DEFAULT Sets to $(CFLAGS_DEBUG) if true
  258. # Sets to $(CFLAGS_OPTIMIZE) if false
  259. # LDFLAGS_DEFAULT Sets to $(LDFLAGS_DEBUG) if true
  260. # Sets to $(LDFLAGS_OPTIMIZE) if false
  261. # DBGX Debug library extension
  262. #
  263. #------------------------------------------------------------------------
  264. AC_DEFUN([SC_ENABLE_SYMBOLS], [
  265.     AC_MSG_CHECKING([for build with symbols])
  266.     AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
  267. # FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
  268.     if test "$tcl_ok" = "no"; then
  269. CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
  270. LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
  271. DBGX=""
  272. AC_MSG_RESULT([no])
  273.     else
  274. CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
  275. LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
  276. DBGX=g
  277. if test "$tcl_ok" = "yes"; then
  278.     AC_MSG_RESULT([yes (standard debugging)])
  279. fi
  280.     fi
  281.     AC_SUBST(CFLAGS_DEFAULT)
  282.     AC_SUBST(LDFLAGS_DEFAULT)
  283.     if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
  284. AC_DEFINE(TCL_MEM_DEBUG)
  285.     fi
  286.     if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
  287. AC_DEFINE(TCL_COMPILE_DEBUG)
  288. AC_DEFINE(TCL_COMPILE_STATS)
  289.     fi
  290.     if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
  291. if test "$tcl_ok" = "all"; then
  292.     AC_MSG_RESULT([enabled symbols mem compile debugging])
  293. else
  294.     AC_MSG_RESULT([enabled $tcl_ok debugging])
  295. fi
  296.     fi
  297. ])
  298. #--------------------------------------------------------------------
  299. # SC_CONFIG_CFLAGS
  300. #
  301. # Try to determine the proper flags to pass to the compiler
  302. # for building shared libraries and other such nonsense.
  303. #
  304. # NOTE: The backslashes in quotes below are substituted twice
  305. # due to the fact that they are in a macro and then inlined
  306. # in the final configure script.
  307. #
  308. # Arguments:
  309. # none
  310. #
  311. # Results:
  312. #
  313. # Can the following vars:
  314. # EXTRA_CFLAGS
  315. # CFLAGS_DEBUG
  316. # CFLAGS_OPTIMIZE
  317. # CFLAGS_WARNING
  318. # LDFLAGS_DEBUG
  319. # LDFLAGS_OPTIMIZE
  320. # LDFLAGS_CONSOLE
  321. # LDFLAGS_WINDOW
  322. # CC_OBJNAME
  323. # CC_EXENAME
  324. # CYGPATH
  325. # STLIB_LD
  326. # SHLIB_LD
  327. # SHLIB_LD_LIBS
  328. # LIBS
  329. # AR
  330. # RC
  331. # RES
  332. #
  333. # MAKE_LIB
  334. # MAKE_EXE
  335. # MAKE_DLL
  336. #
  337. # LIBSUFFIX
  338. # LIBPREFIX
  339. # LIBRARIES
  340. # EXESUFFIX
  341. # DLLSUFFIX
  342. #
  343. #--------------------------------------------------------------------
  344. AC_DEFUN([SC_CONFIG_CFLAGS], [
  345.     # Step 0: Enable 64 bit support?
  346.     AC_MSG_CHECKING([if 64bit support is requested])
  347.     AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable = amd64|ia64)], [do64bit=$enableval], [do64bit=no])
  348.     AC_MSG_RESULT($do64bit)
  349.     # Set some defaults (may get changed below)
  350.     EXTRA_CFLAGS=""
  351.     AC_CHECK_PROG(CYGPATH, cygpath, cygpath -w, echo)
  352.     SHLIB_SUFFIX=".dll"
  353.     # MACHINE is IX86 for LINK, but this is used by the manifest,
  354.     # which requires x86|amd64|ia64.
  355.     MACHINE="X86"
  356.     # Check for a bug in gcc's windres that causes the
  357.     # compile to fail when a Windows native path is
  358.     # passed into windres. The mingw toolchain requires
  359.     # Windows native paths while Cygwin should work
  360.     # with both. Avoid the bug by passing a POSIX
  361.     # path when using the Cygwin toolchain.
  362.     if test "$GCC" = "yes" && test "$CYGPATH" != "echo" ; then
  363. conftest=/tmp/conftest.rc
  364. echo "STRINGTABLE BEGIN" > $conftest
  365. echo "101 "name"" >> $conftest
  366. echo "END" >> $conftest
  367. AC_MSG_CHECKING([for Windows native path bug in windres])
  368. cyg_conftest=`$CYGPATH $conftest`
  369. if AC_TRY_COMMAND($RC -o conftest.res.o $cyg_conftest) ; then
  370.     AC_MSG_RESULT([no])
  371. else
  372.     AC_MSG_RESULT([yes])
  373.     CYGPATH=echo
  374. fi
  375. conftest=
  376. cyg_conftest=
  377.     fi
  378.     if test "$CYGPATH" = "echo" || test "$ac_cv_cygwin" = "yes"; then
  379.         DEPARG='"$<"'
  380.     else
  381.         DEPARG='"$(shell $(CYGPATH) $<)"'
  382.     fi
  383.     # set various compiler flags depending on whether we are using gcc or cl
  384.     AC_MSG_CHECKING([compiler flags])
  385.     if test "${GCC}" = "yes" ; then
  386. if test "$do64bit" != "no" ; then
  387.     AC_MSG_WARN("64bit mode not supported with GCC on Windows")
  388. fi
  389. SHLIB_LD=""
  390. SHLIB_LD_LIBS=""
  391. LIBS=""
  392. LIBS_GUI="-lgdi32 -lcomdlg32 -limm32 -lcomctl32 -lshell32"
  393. STLIB_LD='${AR} cr'
  394. RC_OUT=-o
  395. RC_TYPE=
  396. RC_INCLUDE=--include
  397. RC_DEFINE=--define
  398. RES=res.o
  399. MAKE_LIB="${STLIB_LD} [$]@"
  400. POST_MAKE_LIB="${RANLIB} [$]@"
  401. MAKE_EXE="${CC} -o [$]@"
  402. LIBPREFIX="lib"
  403. #if test "$ac_cv_cygwin" = "yes"; then
  404. #    extra_cflags="-mno-cygwin"
  405. #    extra_ldflags="-mno-cygwin"
  406. #else
  407. #    extra_cflags=""
  408. #    extra_ldflags=""
  409. #fi
  410. if test "$ac_cv_cygwin" = "yes"; then
  411.   touch ac$$.c
  412.   if ${CC} -c -mwin32 ac$$.c >/dev/null 2>&1; then
  413.     case "$extra_cflags" in
  414.       *-mwin32*) ;;
  415.       *) extra_cflags="-mwin32 $extra_cflags" ;;
  416.     esac
  417.     case "$extra_ldflags" in
  418.       *-mwin32*) ;;
  419.       *) extra_ldflags="-mwin32 $extra_ldflags" ;;
  420.     esac
  421.   fi
  422.   rm -f ac$$.o ac$$.c
  423. else
  424.   extra_cflags=''
  425.   extra_ldflags=''
  426. fi
  427. if test "${SHARED_BUILD}" = "0" ; then
  428.     # static
  429.             AC_MSG_RESULT([using static flags])
  430.     runtime=
  431.     MAKE_DLL="echo "
  432.     LIBSUFFIX="s${DBGX}.a"
  433.     LIBFLAGSUFFIX="s${DBGX}"
  434.     LIBRARIES="${STATIC_LIBRARIES}"
  435.     EXESUFFIX="s${DBGX}.exe"
  436. else
  437.     # dynamic
  438.             AC_MSG_RESULT([using shared flags])
  439.     # ad-hoc check to see if CC supports -shared.
  440.     if "${CC}" -shared 2>&1 | egrep ': -shared not supported' >/dev/null; then
  441. AC_MSG_ERROR([${CC} does not support the -shared option.
  442.                 You will need to upgrade to a newer version of the toolchain.])
  443.     fi
  444.     runtime=
  445.     # Link with gcc since ld does not link to default libs like
  446.     # -luser32 and -lmsvcrt by default. Make sure CFLAGS is
  447.     # included so -mno-cygwin passed the correct libs to the linker.
  448.     SHLIB_LD='${CC} -shared ${CFLAGS}'
  449.     SHLIB_LD_LIBS='${LIBS}'
  450.     # Add SHLIB_LD_LIBS to the Make rule, not here.
  451.     MAKE_DLL="${SHLIB_LD} $(LDFLAGS) -o [$]@ ${extra_ldflags} 
  452.         -Wl,--out-implib,$(patsubst %.dll,lib%.a,[$]@)"
  453.     LIBSUFFIX="${DBGX}.a"
  454.     LIBFLAGSUFFIX="${DBGX}"
  455.     EXESUFFIX="${DBGX}.exe"
  456.     LIBRARIES="${SHARED_LIBRARIES}"
  457. fi
  458. # DLLSUFFIX is separate because it is the building block for
  459. # users of tclConfig.sh that may build shared or static.
  460. DLLSUFFIX="${DBGX}.dll"
  461. SHLIB_SUFFIX=.dll
  462. EXTRA_CFLAGS="${extra_cflags}"
  463. CFLAGS_DEBUG=-g
  464. CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
  465. CFLAGS_WARNING="-Wall -Wconversion"
  466. LDFLAGS_DEBUG=
  467. LDFLAGS_OPTIMIZE=
  468. # Specify the CC output file names based on the target name
  469. CC_OBJNAME="-o [$]@"
  470. CC_EXENAME="-o [$]@"
  471. # Specify linker flags depending on the type of app being 
  472. # built -- Console vs. Window.
  473. #
  474. # ORIGINAL COMMENT:
  475. # We need to pass -e _WinMain@16 so that ld will use
  476. # WinMain() instead of main() as the entry point. We can't
  477. # use autoconf to check for this case since it would need
  478. # to run an executable and that does not work when
  479. # cross compiling. Remove this -e workaround once we
  480. # require a gcc that does not have this bug.
  481. #
  482. # MK NOTE: Tk should use a different mechanism. This causes 
  483. # interesting problems, such as wish dying at startup.
  484. #LDFLAGS_WINDOW="-mwindows -e _WinMain@16 ${extra_ldflags}"
  485. LDFLAGS_CONSOLE="-mconsole ${extra_ldflags}"
  486. LDFLAGS_WINDOW="-mwindows ${extra_ldflags}"
  487.     else
  488. if test "${SHARED_BUILD}" = "0" ; then
  489.     # static
  490.             AC_MSG_RESULT([using static flags])
  491.     runtime=-MT
  492.     MAKE_DLL="echo "
  493.     LIBSUFFIX="s${DBGX}.lib"
  494.     LIBFLAGSUFFIX="s${DBGX}"
  495.     LIBRARIES="${STATIC_LIBRARIES}"
  496.     EXESUFFIX="s${DBGX}.exe"
  497.     SHLIB_LD_LIBS=""
  498. else
  499.     # dynamic
  500.             AC_MSG_RESULT([using shared flags])
  501.     runtime=-MD
  502.     # Add SHLIB_LD_LIBS to the Make rule, not here.
  503.     MAKE_DLL="${SHLIB_LD} $(LDFLAGS) -out:[$]@"
  504.     LIBSUFFIX="${DBGX}.lib"
  505.     LIBFLAGSUFFIX="${DBGX}"
  506.     EXESUFFIX="${DBGX}.exe"
  507.     LIBRARIES="${SHARED_LIBRARIES}"
  508.     SHLIB_LD_LIBS='${LIBS}'
  509. fi
  510. # DLLSUFFIX is separate because it is the building block for
  511. # users of tclConfig.sh that may build shared or static.
  512. DLLSUFFIX="${DBGX}.dll"
  513. # This is a 2-stage check to make sure we have the 64-bit SDK
  514. # We have to know where the SDK is installed.
  515. # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs
  516. if test "$do64bit" != "no" ; then
  517.     if test "x${MSSDK}x" = "xx" ; then
  518. MSSDK="C:/Progra~1/Microsoft Platform SDK"
  519.     fi
  520.     MSSDK=`echo "$MSSDK" | sed -e 's!\!/!g'`
  521.     PATH64=""
  522.     case "$do64bit" in
  523. amd64|x64|yes)
  524.     MACHINE="AMD64" ; # default to AMD64 64-bit build
  525.     PATH64="${MSSDK}/Bin/Win64/x86/AMD64"
  526.     ;;
  527. ia64)
  528.     MACHINE="IA64"
  529.     PATH64="${MSSDK}/Bin/Win64"
  530.     ;;
  531.     esac
  532.     if test ! -d "${PATH64}" ; then
  533. AC_MSG_WARN([Could not find 64-bit $MACHINE SDK to enable 64bit mode])
  534. AC_MSG_WARN([Ensure latest Platform SDK is installed])
  535. do64bit="no"
  536.     else
  537. AC_MSG_RESULT([   Using 64-bit $MACHINE mode])
  538.     fi
  539. fi
  540. if test "$do64bit" != "no" ; then
  541.     # The space-based-path will work for the Makefile, but will
  542.     # not work if AC_TRY_COMPILE is called.
  543.     CC=""${PATH64}/cl.exe" -I"${MSSDK}/Include" 
  544. -I"${MSSDK}/Include/crt" -I"${MSSDK}/Include/crt/sys""
  545.     RC=""${MSSDK}/bin/rc.exe""
  546.     CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d"
  547.     # Do not use -O2 for Win64 - this has proved buggy in code gen.
  548.     CFLAGS_OPTIMIZE="-nologo -O1 ${runtime}"
  549.     lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:"${MSSDK}/Lib/${MACHINE}""
  550.     LINKBIN=""${PATH64}/link.exe""
  551.     # Avoid 'unresolved external symbol __security_cookie' errors.
  552.     # c.f. http://support.microsoft.com/?id=894573
  553.     LIBS="user32.lib advapi32.lib bufferoverflowU.lib"
  554. else
  555.     RC="rc"
  556.     # -Od - no optimization
  557.     # -WX - warnings as errors
  558.     CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d"
  559.     # -O2 - create fast code (/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy)
  560.     CFLAGS_OPTIMIZE="-nologo -O2 ${runtime}"
  561.     lflags="-nologo"
  562.     LINKBIN="link"
  563.     LIBS="user32.lib advapi32.lib"
  564. fi
  565. LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib"
  566. SHLIB_LD="${LINKBIN} -dll -incremental:no ${lflags}"
  567. # link -lib only works when -lib is the first arg
  568. STLIB_LD="${LINKBIN} -lib ${lflags}"
  569. RC_OUT=-fo
  570. RC_TYPE=-r
  571. RC_INCLUDE=-i
  572. RC_DEFINE=-d
  573. RES=res
  574. MAKE_LIB="${STLIB_LD} -out:[$]@"
  575. POST_MAKE_LIB=
  576. MAKE_EXE="${CC} -Fe[$]@"
  577. LIBPREFIX=""
  578. EXTRA_CFLAGS=""
  579. CFLAGS_WARNING="-W3"
  580. LDFLAGS_DEBUG="-debug:full"
  581. LDFLAGS_OPTIMIZE="-release"
  582. # Specify the CC output file names based on the target name
  583. CC_OBJNAME="-Fo[$]@"
  584. CC_EXENAME="-Fe"$(shell $(CYGPATH) '[$]@')""
  585. # Specify linker flags depending on the type of app being 
  586. # built -- Console vs. Window.
  587. LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
  588. LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
  589.     fi
  590.     # DL_LIBS is empty, but then we match the Unix version
  591.     AC_SUBST(DL_LIBS)
  592.     AC_SUBST(CFLAGS_DEBUG)
  593.     AC_SUBST(CFLAGS_OPTIMIZE)
  594.     AC_SUBST(CFLAGS_WARNING)
  595. ])
  596. #------------------------------------------------------------------------
  597. # SC_WITH_TCL --
  598. #
  599. # Location of the Tcl build directory.
  600. #
  601. # Arguments:
  602. # none
  603. #
  604. # Results:
  605. #
  606. # Adds the following arguments to configure:
  607. # --with-tcl=...
  608. #
  609. # Defines the following vars:
  610. # TCL_BIN_DIR Full path to the tcl build dir.
  611. #------------------------------------------------------------------------
  612. AC_DEFUN([SC_WITH_TCL], [
  613.     if test -d ../../tcl8.4$1/win;  then
  614. TCL_BIN_DEFAULT=../../tcl8.4$1/win
  615.     else
  616. TCL_BIN_DEFAULT=../../tcl8.4/win
  617.     fi
  618.     
  619.     AC_ARG_WITH(tcl, [  --with-tcl=DIR          use Tcl 8.4 binaries from DIR],
  620.     TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd $TCL_BIN_DEFAULT; pwd`)
  621.     if test ! -d $TCL_BIN_DIR; then
  622. AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR does not exist)
  623.     fi
  624.     if test ! -f $TCL_BIN_DIR/Makefile; then
  625. AC_MSG_ERROR(There is no Makefile in $TCL_BIN_DIR:  perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
  626.     else
  627. echo "building against Tcl binaries in: $TCL_BIN_DIR"
  628.     fi
  629.     AC_SUBST(TCL_BIN_DIR)
  630. ])
  631. #------------------------------------------------------------------------
  632. # SC_PROG_TCLSH
  633. # Locate a tclsh shell installed on the system path. This macro
  634. # will only find a Tcl shell that already exists on the system.
  635. # It will not find a Tcl shell in the Tcl build directory or
  636. # a Tcl shell that has been installed from the Tcl build directory.
  637. # If a Tcl shell can't be located on the PATH, then TCLSH_PROG will
  638. # be set to "". Extensions should take care not to create Makefile
  639. # rules that are run by default and depend on TCLSH_PROG. An
  640. # extension can't assume that an executable Tcl shell exists at
  641. # build time.
  642. #
  643. # Arguments
  644. # none
  645. #
  646. # Results
  647. # Subst's the following values:
  648. # TCLSH_PROG
  649. #------------------------------------------------------------------------
  650. AC_DEFUN([SC_PROG_TCLSH], [
  651.     AC_MSG_CHECKING([for tclsh])
  652.     AC_CACHE_VAL(ac_cv_path_tclsh, [
  653. search_path=`echo ${PATH} | sed -e 's/:/ /g'`
  654. for dir in $search_path ; do
  655.     for j in `ls -r $dir/tclsh[[8-9]]*.exe 2> /dev/null` 
  656.     `ls -r $dir/tclsh* 2> /dev/null` ; do
  657. if test x"$ac_cv_path_tclsh" = x ; then
  658.     if test -f "$j" ; then
  659. ac_cv_path_tclsh=$j
  660. break
  661.     fi
  662. fi
  663.     done
  664. done
  665.     ])
  666.     if test -f "$ac_cv_path_tclsh" ; then
  667. TCLSH_PROG="$ac_cv_path_tclsh"
  668. AC_MSG_RESULT($TCLSH_PROG)
  669.     else
  670. # It is not an error if an installed version of Tcl can't be located.
  671. TCLSH_PROG=""
  672. AC_MSG_RESULT([No tclsh found on PATH])
  673.     fi
  674.     AC_SUBST(TCLSH_PROG)
  675. ])
  676. #------------------------------------------------------------------------
  677. # SC_BUILD_TCLSH
  678. # Determine the fully qualified path name of the tclsh executable
  679. # in the Tcl build directory. This macro will correctly determine
  680. # the name of the tclsh executable even if tclsh has not yet
  681. # been built in the build directory. The build tclsh must be used
  682. # when running tests from an extension build directory. It is not
  683. # correct to use the TCLSH_PROG in cases like this.
  684. #
  685. # Arguments
  686. # none
  687. #
  688. # Results
  689. # Subst's the following values:
  690. # BUILD_TCLSH
  691. #------------------------------------------------------------------------
  692. AC_DEFUN([SC_BUILD_TCLSH], [
  693.     AC_MSG_CHECKING([for tclsh in Tcl build directory])
  694.     BUILD_TCLSH=${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}
  695.     AC_MSG_RESULT($BUILD_TCLSH)
  696.     AC_SUBST(BUILD_TCLSH)
  697. ])