#!/bin/bash -norc #-------------------------------------------------------------------- # Sample configure.in for Tcl Extensions. The only places you should # need to modify this file are marked by the string __CHANGE__ #-------------------------------------------------------------------- #-------------------------------------------------------------------- # __CHANGE__ # This very first macro is used to verify that the configure script can # find the sources. The argument to AC_INIT should be a unique filename # for this package, and can be a relative path, such as: # # AC_INIT(../generic/tcl.h) #-------------------------------------------------------------------- AC_INIT(generic/itcl.h) AC_CONFIG_AUX_DIR(../config) #-------------------------------------------------------------------- # __CHANGE__ # Set your package name and version numbers here. The NODOT_VERSION is # required for constructing the library name on systems that don't like # dots in library names (Windows). The VERSION variable is used on the # other systems. #-------------------------------------------------------------------- PACKAGE=itcl MAJOR_VERSION=3 MINOR_VERSION=3 PATCHLEVEL=.0 VERSION=${MAJOR_VERSION}.${MINOR_VERSION} NODOT_VERSION=${MAJOR_VERSION}${MINOR_VERSION} AC_SUBST(PACKAGE) AC_SUBST(VERSION) #-------------------------------------------------------------------- # We put this here so that you can compile with -DVERSION="1.2" to # encode the package version directly into the source files. #-------------------------------------------------------------------- eval AC_DEFINE_UNQUOTED(VERSION, "${VERSION}") #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows". #-------------------------------------------------------------------- TEA_INIT #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- TEA_PATH_TCLCONFIG TEA_LOAD_TCLCONFIG #----------------------------------------------------------------------- # Handle the --prefix=... option by defaulting to what Tcl gave. # Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER. #----------------------------------------------------------------------- TEA_PREFIX #----------------------------------------------------------------------- # Standard compiler checks. # This sets up CC by using the CC env var, or looks for gcc otherwise. # This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create # the basic setup necessary to compile executables. #----------------------------------------------------------------------- TEA_SETUP_COMPILER #-------------------------------------------------------------------- # Includes for this package #-------------------------------------------------------------------- ITCL_GENERIC_DIR_NATIVE=`${CYGPATH} ${srcdir}/generic` ITCL_WIN_DIR_NATIVE=`${CYGPATH} ${srcdir}/win` ITCL_UNIX_DIR_NATIVE=`${CYGPATH} ${srcdir}/unix` if test "${TEA_PLATFORM}" = "windows" ; then ITCL_PLATFORM_DIR_NATIVE=${ITCL_WIN_DIR_NATIVE} else ITCL_PLATFORM_DIR_NATIVE=${ITCL_UNIX_DIR_NATIVE} fi ITCL_INCLUDES="-I\"${ITCL_GENERIC_DIR_NATIVE}\" -I\"${ITCL_PLATFORM_DIR_NATIVE}\"" AC_SUBST(ITCL_GENERIC_DIR_NATIVE) AC_SUBST(ITCL_WIN_DIR_NATIVE) AC_SUBST(ITCL_UNIX_DIR_NATIVE) AC_SUBST(ITCL_INCLUDES) #-------------------------------------------------------------------- # __CHANGE__ # Choose which headers you need. Extension authors should try very # hard to only rely on the Tcl public header files. Internal headers # contain private data structures and are subject to change without # notice. # This must be done AFTER calling TEA_PATH_TCLCONFIG/TEA_LOAD_TCLCONFIG # so that we can extract TCL_SRC_DIR from the config file (in the case # of private headers #-------------------------------------------------------------------- #TEA_PUBLIC_TCL_HEADERS TEA_PRIVATE_TCL_HEADERS #-------------------------------------------------------------------- # __CHANGE__ # A few miscellaneous platform-specific items: # # Define a special symbol for Windows (BUILD_itcl in this case) so # that we create the export library with the dll. See sha1.h on how # to use this. # # Windows creates a few extra files that need to be cleaned up. # You can add more files to clean if your extension creates any extra # files. # # Define any extra compiler flags in the PACKAGE_CFLAGS variable. # These will be appended to the current set of compiler flags for # your system. #-------------------------------------------------------------------- if test "${TEA_PLATFORM}" = "windows" ; then AC_DEFINE(BUILD_itcl) CLEANFILES="*.lib *.dll *.exp *.ilk *.pdb vc*.pch" PLATFORM_SOURCES='$(WIN_SOURCES)' PLATFORM_OBJECTS='$(WIN_OBJECTS)' PLATFORM_DIR='$(WIN_DIR)' else CLEANFILES= PLATFORM_SOURCES='$(UNIX_SOURCES)' PLATFORM_OBJECTS='$(UNIX_OBJECTS)' PLATFORM_DIR='$(UNIX_DIR)' fi AC_SUBST(CLEANFILES) AC_SUBST(PLATFORM_SOURCES) AC_SUBST(PLATFORM_OBJECTS) AC_SUBST(PLATFORM_DIR) #-------------------------------------------------------------------- # We need to enable the threading macros found in tcl.h and tclInt.h. # The use of the threading features is determined by the core the # extension is loaded into, but we need to compile with these macros # turned on. #-------------------------------------------------------------------- AC_DEFINE(TCL_THREADS) #-------------------------------------------------------------------- # The statement below defines a collection of symbols related to # building as a shared library instead of a static library. #-------------------------------------------------------------------- TEA_ENABLE_SHARED #-------------------------------------------------------------------- # This macro figures out what flags to use with the compiler/linker # when building shared/static debug/optimized objects. This information # can be taken from the tclConfig.sh file, but this figures it all out. #-------------------------------------------------------------------- TEA_CONFIG_CFLAGS #-------------------------------------------------------------------- # Set the default compiler switches based on the --enable-symbols # option. #-------------------------------------------------------------------- TEA_ENABLE_SYMBOLS #-------------------------------------------------------------------- # Everyone should be linking against the Tcl stub library. If you # can't for some reason, remove this definition. If you aren't using # stubs, you also need to modify the SHLIB_LD_LIBS setting below to # link against the non-stubbed Tcl library. #-------------------------------------------------------------------- if test "${SHARED_BUILD}" = "1" ; then AC_DEFINE(USE_TCL_STUBS) fi #-------------------------------------------------------------------- # This macro generates a line to use when building a library. It # depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS, # and TEA_LOAD_TCLCONFIG macros above. #-------------------------------------------------------------------- TEA_MAKE_LIB #-------------------------------------------------------------------- # __CHANGE__ # Change the name from exampeA_LIB_FILE to match your package name. # Use the stub_LIB_FILE substitution if your package creates a stub # library. #-------------------------------------------------------------------- AC_SUBST(itclstub_LIB_FILE) AC_SUBST(itcl_LIB_FILE) #-------------------------------------------------------------------- # Find tclsh so that we can run pkg_mkIndex to generate the pkgIndex.tcl # file during the install process. Don't run the TCLSH_PROG through # ${CYGPATH} because it's being used directly by make. # Require that we use a tclsh shell version 8.2 or later since earlier # versions have bugs in the pkg_mkIndex routine. #-------------------------------------------------------------------- TEA_PROG_TCLSH #-------------------------------------------------------------------- # These are for itclConfig.sh #-------------------------------------------------------------------- # pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib) eval pkglibdir="${libdir}/${PACKAGE}${VERSION}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then eval itcl_LIB_FLAG="-litcl${VERSION}${DBGX}" else eval itcl_LIB_FLAG="-litcl`echo ${VERSION} | tr -d .`${DBGX}" fi itcl_BUILD_LIB_SPEC="-L`pwd` ${itcl_LIB_FLAG}" itcl_LIB_SPEC="-L${pkglibdir} ${itcl_LIB_FLAG}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then eval itcl_STUB_LIB_FLAG="-litclstub${VERSION}${DBGX}" else eval itcl_STUB_LIB_FLAG="-litclstub`echo ${VERSION} | tr -d .`${DBGX}" fi itcl_BUILD_STUB_LIB_SPEC="-L`pwd` ${itcl_STUB_LIB_FLAG}" itcl_STUB_LIB_SPEC="-L${pkglibdir} ${itcl_STUB_LIB_FLAG}" itcl_BUILD_STUB_LIB_PATH="`pwd`/${itclstub_LIB_FILE}" itcl_STUB_LIB_PATH="${pkglibdir}/${itclstub_LIB_FILE}" AC_SUBST(itcl_BUILD_LIB_SPEC) AC_SUBST(itcl_LIB_SPEC) AC_SUBST(itcl_BUILD_STUB_LIB_SPEC) AC_SUBST(itcl_STUB_LIB_SPEC) AC_SUBST(itcl_BUILD_STUB_LIB_PATH) AC_SUBST(itcl_STUB_LIB_PATH) AC_SUBST(MAJOR_VERSION) AC_SUBST(MINOR_VERSION) AC_SUBST(PATCHLEVEL) #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. #-------------------------------------------------------------------- AC_OUTPUT([Makefile pkgIndex.tcl itclConfig.sh])