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