#-------------------------------------------------------------------- # __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(bin/httpd.tcl) AC_CONFIG_AUX_DIR(config) CONFIGDIR=${srcdir}/config AC_SUBST(CONFIGDIR) #-------------------------------------------------------------------- # __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=tclhttpd MAJOR_VERSION=3 MINOR_VERSION=5 PATCHLEVEL=".1" RELEASE=`grep Release: ${srcdir}/${PACKAGE}.spec | sed -e 's/Release: *//'` VERSION=${MAJOR_VERSION}.${MINOR_VERSION}${PATCHLEVEL} NODOT_VERSION=${MAJOR_VERSION}${MINOR_VERSION} WIN_VERSION=`echo ${VERSION} | sed -e 's/\.//g'` TCL_VERSION=8.4.5 TCLLIB_VERSION=1.4 THREAD_VERSION=2.6 # We build two minor packages for the crypt and limit C extensions CRYPT_PACKAGE=crypt CRYPT_VERSION="1.0" WIN_CRYPT_VERSION=`echo ${CRYPT_VERSION} | sed -e 's/\.//g'` LIMIT_PACKAGE=limit LIMIT_VERSION="1.0" WIN_LIMIT_VERSION=`echo ${LIMIT_VERSION} | sed -e 's/\.//g'` AC_ARG_WITH(serverroot, [ --with-serverroot=DIR Location of where to install the server document tree], SERVER_ROOT=${withval}, SERVER_ROOT='$(prefix)/$(PACKAGE)') AC_SUBST(PACKAGE) AC_SUBST(SERVER_ROOT) AC_SUBST(VERSION) AC_SUBST(RELEASE) AC_SUBST(WIN_VERSION) AC_SUBST(CRYPT_PACKAGE) AC_SUBST(CRYPT_VERSION) AC_SUBST(WIN_CRYPT_VERSION) AC_SUBST(LIMIT_PACKAGE) AC_SUBST(LIMIT_VERSION) AC_SUBST(WIN_LIMIT_VERSION) AC_SUBST(TCL_VERSION) AC_SUBST(TCLLIB_VERSION) AC_SUBST(THREAD_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}") #-------------------------------------------------------------------- # Check whether --enable-gcc or --disable-gcc was given. Do this # before AC_CYGWIN is called so the compiler can # be fully tested by built-in autoconf tools. # This macro also calls AC_PROG_CC to set the compiler if --enable-gcc # was not used. #-------------------------------------------------------------------- SC_ENABLE_GCC AC_PROG_INSTALL #-------------------------------------------------------------------- # Checks to see if the make program sets the $MAKE variable. #-------------------------------------------------------------------- AC_PROG_MAKE_SET #-------------------------------------------------------------------- # Find ranlib #-------------------------------------------------------------------- AC_PROG_RANLIB #-------------------------------------------------------------------- # This macro performs additional compiler tests. #-------------------------------------------------------------------- AC_CYGWIN #-------------------------------------------------------------------- # Determines the correct binary file extension (.o, .obj, .exe etc.) #-------------------------------------------------------------------- AC_OBJEXT AC_EXEEXT #-------------------------------------------------------------------- # "cygpath" is used on windows to generate native path names for include # files. # These variables should only be used with the compiler and linker since # they generate native path names. # # Unix tclConfig.sh points SRC_DIR at the top-level directory of # the Tcl sources, while the Windows tclConfig.sh points SRC_DIR at # the win subdirectory. Hence the different usages of SRC_DIR below. # # This must be done before calling SC_PUBLIC_TCL_HEADERS #-------------------------------------------------------------------- case "`uname -s`" in *win32* | *WIN32* | *CYGWIN_NT* | *CYGWIN_98* | *CYGWIN_95*) CYGPATH="cygpath -w" RELPATH=".. .. bin" ;; *) CYGPATH=echo RELPATH=.. ;; esac AC_SUBST(CYGPATH) AC_SUBST(RELPATH) #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- SC_PATH_TCLCONFIG SC_LOAD_TCLCONFIG #-------------------------------------------------------------------- # __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 called after SC_PATH_TCLCONFIG/SC_LOAD_TCLCONFIG #-------------------------------------------------------------------- SC_PUBLIC_TCL_HEADERS #SC_PRIVATE_TCL_HEADERS #-------------------------------------------------------------------- # __CHANGE__ # A few miscellaneous platform-specific items: # # Define a special symbol for Windows (BUILD_exampleA 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. #-------------------------------------------------------------------- case "`uname -s`" in *win32* | *WIN32* | *CYGWIN_NT*|*CYGWIN_98*|*CYGWIN_95*) AC_DEFINE_UNQUOTED(BUILD_${PACKAGE}) CLEANFILES="*.lib *.dll *.exp *.ilk *.pdb vc50.pch" AC_SUBST(CLEANFILES) ;; *) CLEANFILES= ;; esac #-------------------------------------------------------------------- # Check whether --enable-threads or --disable-threads was given. # So far only Tcl responds to this one. #-------------------------------------------------------------------- SC_ENABLE_THREADS #-------------------------------------------------------------------- # The statement below defines a collection of symbols related to # building as a shared library instead of a static library. #-------------------------------------------------------------------- SC_ENABLE_SHARED #-------------------------------------------------------------------- # This macro figures out what flags to use with the compiler/linker # when building shared/static debug/optimized objects. This information # is all taken from the tclConfig.sh file. #-------------------------------------------------------------------- CFLAGS_DEBUG=${TCL_CFLAGS_DEBUG} CFLAGS_OPTIMIZE=${TCL_CFLAGS_OPTIMIZE} LDFLAGS_DEBUG=${TCL_LDFLAGS_DEBUG} LDFLAGS_OPTIMIZE=${TCL_LDFLAGS_OPTIMIZE} SHLIB_LD=${TCL_SHLIB_LD} STLIB_LD=${TCL_STLIB_LD} SHLIB_CFLAGS=${TCL_SHLIB_CFLAGS} AC_SUBST(CFLAGS_DEBUG) AC_SUBST(CFLAGS_OPTIMIZE) AC_SUBST(STLIB_LD) AC_SUBST(SHLIB_LD) AC_SUBST(SHLIB_CFLAGS) AC_SUBST(SHLIB_LDFLAGS) #-------------------------------------------------------------------- # Find out where we should get the crypt() function #-------------------------------------------------------------------- AC_CHECK_FUNC(crypt, , [ AC_CHECK_LIB(crypt, crypt, CRYPT_LIB=-lcrypt, CRYPT_OBJS=cryptLib.${OBJEXT}) ]) AC_SUBST(CRYPT_OBJS) #-------------------------------------------------------------------- # Find out if we have the sys/resource.h header file for building # the limit extension #-------------------------------------------------------------------- AC_CHECK_HEADER(sys/resource.h, BUILD_LIMIT=1, BUILD_LIMIT=0) if test "${BUILD_LIMIT}" = 1 ; then LIMIT_EXTENSION='$(limit_LIB_FILE)' else LIMIT_EXTENSION='' fi AC_SUBST(LIMIT_EXTENSION) AC_SUBST(BUILD_LIMIT) #-------------------------------------------------------------------- # Set the default compiler switches based on the --enable-symbols # option. #-------------------------------------------------------------------- SC_ENABLE_SYMBOLS if test "${SHARED_BUILD}" = "1" ; then CFLAGS='${CFLAGS_DEFAULT} ${CFLAGS_WARNING} ${SHLIB_CFLAGS}' else CFLAGS='${CFLAGS_DEFAULT} ${CFLAGS_WARNING}' fi #-------------------------------------------------------------------- # 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. #-------------------------------------------------------------------- AC_DEFINE(USE_TCL_STUBS) #-------------------------------------------------------------------- # This macro generates a line to use when building a library. It # depends on values set by the SC_ENABLE_SHARED, SC_ENABLE_SYMBOLS, # and SC_LOAD_TCLCONFIG macros above. #-------------------------------------------------------------------- SC_MAKE_LIB #-------------------------------------------------------------------- # eval these two values to dereference the ${DBGX} variable. #-------------------------------------------------------------------- eval "SHARED_LIB_SUFFIX=${TCL_SHARED_LIB_SUFFIX}" eval "UNSHARED_LIB_SUFFIX=${TCL_UNSHARED_LIB_SUFFIX}" #-------------------------------------------------------------------- # Shared libraries and static libraries have different names. #-------------------------------------------------------------------- case "`uname -s`" in *win32* | *WIN32* | *CYGWIN_NT*|*CYGWIN_98*|*CYGWIN_95*) if test "${SHARED_BUILD}" = "1" ; then SHLIB_LD_LIBS="\"`cygpath -w ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\" ${TCL_SHLIB_LD_LIBS}" eval "${PACKAGE}_LIB_FILE=${PACKAGE}${SHARED_LIB_SUFFIX}" eval "${CRYPT_PACKAGE}_LIB_FILE=${CRYPT_PACKAGE}${SHARED_LIB_SUFFIX}" eval "${LIMIT_PACKAGE}_LIB_FILE=${LIMIT_PACKAGE}${SHARED_LIB_SUFFIX}" RANLIB=: else eval "${PACKAGE}_LIB_FILE=${PACKAGE}${UNSHARED_LIB_SUFFIX}" eval "${CRYPT_PACKAGE}_LIB_FILE=${CRYPT_PACKAGE}${UNSHARED_LIB_SUFFIX}" eval "${LIMIT_PACKAGE}_LIB_FILE=${LIMIT_PACKAGE}${UNSHARED_LIB_SUFFIX}" fi ;; *) if test "${SHARED_BUILD}" = "1" ; then SHLIB_LD_LIBS="${TCL_STUB_LIB_SPEC} ${CRYPT_LIB}" eval "${PACKAGE}_LIB_FILE=lib${PACKAGE}${SHARED_LIB_SUFFIX}" eval "${CRYPT_PACKAGE}_LIB_FILE=lib${CRYPT_PACKAGE}${SHARED_LIB_SUFFIX}" eval "${LIMIT_PACKAGE}_LIB_FILE=lib${LIMIT_PACKAGE}${SHARED_LIB_SUFFIX}" RANLIB=: else eval "${PACKAGE}_LIB_FILE=lib${PACKAGE}${UNSHARED_LIB_SUFFIX}" eval "${CRYPT_PACKAGE}_LIB_FILE=lib${CRYPT_PACKAGE}${UNSHARED_LIB_SUFFIX}" eval "${LIMIT_PACKAGE}_LIB_FILE=lib${LIMIT_PACKAGE}${UNSHARED_LIB_SUFFIX}" fi ;; esac AC_SUBST(SHARED_BUILD) #-------------------------------------------------------------------- # __CHANGE__ # Change the name from exampeA_LIB_FILE to match your package name. #-------------------------------------------------------------------- # Hack to map from the TclHttpd version number that got automatically # sucked up by the SHARED_LIB_SUFFIX macro crypt_LIB_FILE=`echo $crypt_LIB_FILE | sed -e "s/$VERSION/$CRYPT_VERSION/" | sed -e "s/$NODOT_VERSION/$WIN_CRYPT_VERSION/"` limit_LIB_FILE=`echo $limit_LIB_FILE | sed -e "s/$VERSION/$LIMIT_VERSION/" | sed -e "s/$NODOT_VERSION/$WIN_LIMIT_VERSION/"` AC_SUBST(limit_LIB_FILE) AC_SUBST(crypt_LIB_FILE) AC_SUBST(SHLIB_LD_LIBS) #-------------------------------------------------------------------- # 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. #-------------------------------------------------------------------- SC_PROG_TCLSH #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. #-------------------------------------------------------------------- AC_OUTPUT([Makefile \ crypt_pkgIndex.tcl \ limit_pkgIndex.tcl])