source: trunk/base/configure.ac @ 43375

Last change on this file since 43375 was 43375, checked in by jmpp@…, 12 years ago

Finally move trunk away from floating point version numbers and instead use the more common x.y.z format, by:

  • Moving base/macports1.0/macports_autoconf.tcl.in to the @MACPORTS_VERSION@ autoconf variable;
  • Introducing a temporary special-case hack to force the selfupdate run in case the $macports::autoconf::macports_version variable is in the old format and smaller or equal to 1.800 (cf. my comment in the selfupdate proc in base/macports1.0/macports.tcl);
  • Removing the now unnecessary base/config/mp_version file, as everything is now determined from the base/config/macports_version file;
  • Removing the @MP_VERSION@ autoconf macro;
  • Regenerating the configure script;

All in all, we should have standard x.y.z version numbers starting from current trunk + 1 (e.g. 1.8.1), since
current trunk will only serve to introduce this code into users' hands first.

PS: I chose to force the upgrade as the special-case hack, since otherwise I'd have to reset the $macports::autoconf::macports_version
variable to achieve the same result, and that seems like it might make some babies out there cry...

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 12.2 KB
Line 
1dnl Process this file with autoconf to produce a configure script.
2dnl $Id: configure.ac 43375 2008-12-10 04:49:53Z jmpp@macports.org $
3AC_PREREQ(2.52)
4AC_DEFUN([MACPORTS_VERSION_MACRO], [esyscmd(cat config/macports_version | tr -d '\n')])
5AC_INIT([MacPorts], [MACPORTS_VERSION_MACRO], [macports-dev@lists.macosforge.org], [macports])
6AC_CONFIG_SRCDIR([src/pextlib1.0/Pextlib.c])
7AC_CONFIG_HEADERS([src/config.h])
8AC_CANONICAL_SYSTEM
9
10# Read in the MacPorts version from the base/config/macports_vesion file
11AC_MSG_CHECKING(MacPorts version)
12MACPORTS_VERSION=MACPORTS_VERSION_MACRO
13AC_MSG_RESULT([$MACPORTS_VERSION])
14AC_SUBST(MACPORTS_VERSION)
15
16# Check user PATH for MP paths, and remove as necessary.
17MP_PATH_SCAN
18
19AC_CHECK_PROGS(SW_VERS, sw_vers)
20if test "x$SW_VERS" != "x"; then
21  AC_MSG_CHECKING(Mac OS X version)
22  MACOSX_VERSION=`$SW_VERS | sed -n "s/^ProductVersion:[[[:space:]]]//p" | cut -f 1-3 -d.`
23  AC_MSG_RESULT([$MACOSX_VERSION])
24fi
25
26case "$MACOSX_VERSION" in
27  10.0*|10.1*|10.2*)
28    AC_WARN(This version of Mac OS X is not supported)
29    AC_WARN(Please upgrade at http://store.apple.com/)
30    ;;
31  10.1.[[0-4]]|10.2.[[0-7]]|10.3.[[0-8]]|10.4.[[0-9]]|10.4.10|10.5.[[0-4]])
32    AC_WARN(This version of Mac OS X is out of date)
33    AC_WARN(Please run Software Update to update it)
34    ;;
35  10.3*|10.4*|10.5*)
36    dnl Supported version
37    ;;
38  *)
39    ;;
40esac
41
42XCODEPLIST=/Developer/Applications/Xcode.app/Contents/version.plist
43if test -r "$XCODEPLIST"; then
44  AC_MSG_CHECKING(Xcode version)
45  XCODE_VERSION=`tr -d '\r\n' < $XCODEPLIST | sed -e 's/.*<key>CFBundleShortVersionString<\/key>.<string>\([[0-9.]]*\)<\/string>.*/\1/'`
46  AC_MSG_RESULT([$XCODE_VERSION])
47fi
48
49case "$XCODE_VERSION" in
50  1.[[0-1]]*|2.[[0-1]]*)
51    AC_WARN(This version of Xcode Tools is not supported)
52    AC_WARN(Please upgrade at http://connect.apple.com/)
53    ;;
54  1.[[2-4]]*|2.[[2-3]]*)
55    AC_WARN(This version of Xcode Tools is out of date)
56    AC_WARN(Please consider upgrading as some ports fail compiling)
57    ;;
58  1.5*|2.4*|3.*)
59    dnl Supported version
60    ;;
61  *)
62    ;;
63esac
64
65# Checks for programs.
66AC_PROG_CC
67AC_PROG_OBJC
68AC_PROG_INSTALL
69AC_PROG_MAKE_SET
70AC_PROG_LN_S
71AC_PATH_PROG(MTREE, [mtree], [], [$PATH:/usr/sbin])
72AC_PATH_PROG(CVS, [cvs], [])
73AC_PATH_PROG(SVN, [svn], [])
74AC_PATH_PROG(GIT, [git], [])
75AC_PATH_PROG(RSYNC, [rsync], [])
76AC_PATH_PROG(SED, [sed])
77AC_PATH_PROG(TAR, [tar])
78AC_PATH_PROG(MAKE, [make])
79AC_CHECK_PROG(HAVE_LAUNCHD, [launchd], [yes], [])
80AC_PATH_PROG(LAUNCHCTL, [launchctl], [])
81AC_PATH_PROG(XCODEBUILD, [xcodebuild], [])
82AC_PATH_PROGS(GNUTAR, [gnutar gtar], [], [$PATH:/usr/local/bin])
83AC_PATH_PROGS(GNUMAKE, [gnumake gmake], [], [$PATH:/usr/local/bin])
84AC_PATH_PROG(BZIP2, [bzip2], [])
85AC_PATH_PROG(XAR, [xar], [])
86AC_PATH_PROG(OPEN, [open], [])
87
88# Define some precious variables allowing user to override PATH for some programs
89AC_ARG_VAR(MTREE, [path to mtree command])
90AC_ARG_VAR(CVS, [path to cvs command])
91AC_ARG_VAR(SVN, [path to svn command])
92AC_ARG_VAR(RSYNC, [path to rsync command])
93AC_ARG_VAR(SED, [path to sed command])
94AC_ARG_VAR(TAR, [path to tar command])
95AC_ARG_VAR(MAKE, [path to make command])
96AC_ARG_VAR(GNUTAR, [path to gnutar command])
97AC_ARG_VAR(GNUMAKE, [path to gnumake command])
98AC_ARG_VAR(BZIP2, [path to bzip2 command])
99AC_ARG_VAR(XAR, [path to xar command])
100AC_ARG_VAR(OPEN, [path to open command])
101
102MP_SED_EXTENDED_REGEXP
103MP_TAR_NO_SAME_OWNER
104
105# Quiche eaters options.
106if test x$GCC = xyes; then
107        CFLAGS_QUICHEEATERS='-W -Wall -pedantic'
108fi
109AC_SUBST(CFLAGS_QUICHEEATERS)
110MP_WERROR
111
112MP_COMPILER_ATTRIBUTE_UNUSED
113MP_COMPILER_ATTRIBUTE_LF_PRIVATE
114
115# Determine if we want to install conditional packages
116CONDITIONAL_PACKAGES=
117
118# Foundation checks
119ACX_PTHREAD
120MP_OBJC_RUNTIME
121MP_OBJC_FOUNDATION
122
123# tclobjc requires objc (runtime and foundation) support
124if test x$OBJC_RUNTIME != xnone -a x$OBJC_FOUNDATION != xnone; then
125        CONDITIONAL_PACKAGES="tclobjc1.0 $CONDITIONAL_PACKAGES"
126fi
127
128MP_PROG_DAEMONDO
129#MP_PROG_XAR
130
131AC_SUBST(REPLACEMENT_PROGS)
132AC_SUBST(EXTRA_PROGS)
133
134# set default ports-directory
135PORTS_DIR_DEFAULT=`pwd | sed -e "s/base/ports/"`
136
137# Check for paths
138AC_PREFIX_DEFAULT(/opt/local)
139MP_PATH_PORTSDIR([$PORTS_DIR_DEFAULT])
140MP_PATH_MPCONFIGDIR
141
142# Check for install ownership
143MP_CHECK_INSTALLUSER
144MP_CHECK_INSTALLGROUP
145MP_DIRECTORY_MODE
146
147# Check for default directories
148MP_PATH_APPLICATIONS
149MP_PATH_FRAMEWORKS
150
151# Check for universal options
152MP_UNIVERSAL_OPTIONS
153
154# Check for standard header files.
155AC_HEADER_STDC
156AC_HEADER_DIRENT
157AC_HEADER_SYS_WAIT
158AC_HEADER_STAT
159AC_CHECK_HEADERS([limits.h paths.h sys/file.h crt_externs.h fcntl.h sys/fcntl.h sys/cdefs.h err.h libgen.h sys/socket.h \
160        readline/readline.h readline/history.h pwd.h sys/paths.h utime.h])
161
162INCLUDES="-I.. -I. $INCLUDES"
163
164# Checks for library functions.
165AC_FUNC_CLOSEDIR_VOID
166AC_FUNC_FORK
167AC_FUNC_STRERROR_R
168AC_CHECK_FUNCS([bzero memset dup2 regcomp strdup strerror strtol fgetln lockf flock setmode strcasecmp strncasecmp strlcpy copyfile clearenv])
169MP_CHECK_READLINK_IS_P1003_1A
170
171AC_ARG_WITH(x11-prefix, [AC_HELP_STRING([--with-x11-prefix=PREFIX], [use PREFIX as the X11 base dir (default autodetect)])], [ x11prefix="$withval" ] )
172case "$x11prefix" in
173  "")
174    # default to traditional value
175    x11prefix=/usr/X11R6
176    ;;
177  *)
178    x_includes=$x11prefix/include
179    x_libraries=$x11prefix/lib
180    ;;
181esac
182
183# Check for md5 implementation
184MP_LIB_MD5
185# Check for X11 and paraphernalia
186MP_CHECK_X11
187
188AC_MSG_CHECKING(for X11 prefix)
189X_INCLUDES_PREFIX=`echo "$x_includes" | sed "s,/include,,"`
190X_LIBRARIES_PREFIX=`echo "$x_libraries" | sed "s,/lib,,"`
191if test "x$have_x" = "xyes" -a "x$X_INCLUDES_PREFIX" = "x$X_LIBRARIES_PREFIX" -a "x$X_LIBRARIES_PREFIX" != x; then
192    x11prefix=$X_LIBRARIES_PREFIX
193fi
194AC_MSG_RESULT([$x11prefix])
195AC_SUBST(x11prefix)
196
197# Check for readline
198AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [Enable addition of readline support, if readline present.]),
199[
200        AC_CHECK_LIB([readline], [readline], [
201                                  READLINE_LIBS=-lreadline
202                                  AC_DEFINE([HAVE_LIBREADLINE], [1], [Define to 1 if you have the `readline' library (-lreadline).])
203                                  ])
204        AC_CHECK_DECLS([rl_username_completion_function,rl_filename_completion_function,rl_completion_matches,username_completion_function,filename_completion_function,completion_matches], [], [],
205        [
206        #include <stdio.h>
207        #if HAVE_READLINE_READLINE_H
208        # include <readline/readline.h>
209        #endif
210        ])
211])
212AC_SUBST(READLINE_LIBS)
213
214# Lowest non-system-reserved uid and gid (Apple claims <500)
215AC_DEFINE([MIN_USABLE_UID], [500], [Lowest non-system-reserved UID.])
216AC_DEFINE([MIN_USABLE_GID], [500], [Lowest non-system-reserved GID.])
217
218# Load tclConfig.sh
219SC_PATH_TCLCONFIG
220SC_LOAD_TCLCONFIG
221
222# Check for Tcl public headers
223dnl XXX  hardwire CYGPATH (CYGPATH must be set for SC_PUBLIC_TCL_HEADERS)
224CYGPATH=echo
225SC_PUBLIC_TCL_HEADERS
226
227# Check for tclsh binary
228MP_PROG_TCLSH
229
230# Check for Tcl package path
231MP_TCL_PACKAGE_DIR
232
233# Check if thread is enabled.
234MP_TCL_THREAD_SUPPORT
235
236## libcurl
237MP_LIBCURL_FLAGS
238
239# Do we have curl_easy_strerror?
240AH_TEMPLATE([HAVE_CURL_EASY_STRERROR],
241               [Define to 1 if you have the curl_easy_strerror function.])
242AC_CHECK_LIB([curl], [curl_easy_strerror],
243        [AC_DEFINE([HAVE_CURL_EASY_STRERROR])],[],
244        [$LDFLAGS_LIBCURL])
245
246# Determine if we need to install some bundled packages
247OUR_INCLUDED_PACKAGES=
248
249## Thread package.
250AC_ARG_WITH(
251                included-tclthread,
252                AS_HELP_STRING([--with-included-tclthread],
253                        [install included Thread package.]),
254                [with_included_tclthread=$withval],
255                [with_included_tclthread="unspecified"])
256
257# Check if thread package is already installed.
258if test "x$with_included_tclthread" = "xunspecified" ; then
259        MP_TCL_PACKAGE(
260                [Thread],
261                [AC_MSG_RESULT([yes]); with_included_tclthread=no],
262                [AC_MSG_RESULT([no]); with_included_tclthread=yes])
263fi
264
265# If thread package isn't installed, configure and install thread package.
266if test "$with_included_tclthread" = "yes"; then
267        OUR_INCLUDED_PACKAGES="$OUR_INCLUDED_PACKAGES thread2.6"
268        AC_CONFIG_SUBDIRS([src/thread2.6])
269        # Extract thread package
270        (cd src/; gzip -d < thread2.6.tar.gz | tar xf -)
271        # Patch thread package (so thread2.6 is the vanilla distribution directory)
272        patch -p0 < src/thread2.6.diff
273fi
274
275## sqlite3 package.
276AC_ARG_WITH(
277                included-sqlite3,
278                AS_HELP_STRING([--with-included-sqlite3],
279                        [build using bundled sqlite3 package]),
280                [with_included_sqlite3=$withval],
281                [with_included_sqlite3="unspecified"])
282
283# Check if sqlite3 package is already installed.
284if test "x$with_included_sqlite3" = "xunspecified" ; then
285        AC_CHECK_LIB([sqlite3],[sqlite3_open],
286                [with_included_sqlite3=no],
287                [with_included_sqlite3=yes])
288fi
289
290AC_ARG_WITH(
291                tcl-sqlite3,
292                AS_HELP_STRING([--with-tcl-sqlite3=DIR],
293                        [directory for Tcl sqlite3 (default /usr/lib/sqlite3)]),
294                [mp_sqlite3_dir=$withval],
295                [mp_sqlite3_dir=/usr/lib/sqlite3])
296
297# If sqlite3 package isn't installed, configure and install sqlite3 package.
298if test "$with_included_sqlite3" = "yes"; then
299        OUR_INCLUDED_PACKAGES="$OUR_INCLUDED_PACKAGES sqlite-3.1.3"
300        INCLUDES="$INCLUDES -I../sqlite-3.1.3"
301        AC_CONFIG_SUBDIRS([src/sqlite-3.1.3])
302        # Extract sqlite3 package
303        (cd src/; gzip -d < sqlite-3.1.3.tar.gz | tar xf -)
304        # patch sqlite3 with desired configure options
305        patch -p0 < src/sqlite-3.1.3.diff
306        # the new tclinstaller.tcl needs to have substitution occur
307        mv src/sqlite-3.1.3/tclinstaller.tcl src/sqlite-3.1.3/tclinstaller.tcl.in
308        SQLITE3_LIBS=`pwd`"/src/sqlite-3.1.3/.libs/libsqlite3.a"
309        if test "x$prefix" = "xNONE" ; then
310                SQLITE3_DIR=$ac_default_prefix/share/macports/Tcl/sqlite3
311        else
312                SQLITE3_DIR=$prefix/share/macports/Tcl/sqlite3
313        fi
314else
315        SQLITE3_LIBS="-lsqlite3"
316
317        AC_CACHE_CHECK([for Tcl sqlite3 location], [mp_cv_sqlite3_dir],
318                [mp_cv_sqlite3_dir=
319                test -r "${mp_sqlite3_dir}/pkgIndex.tcl" && mp_cv_sqlite3_dir=$mp_sqlite3_dir
320                ])
321
322        SQLITE3_DIR=$mp_cv_sqlite3_dir
323fi
324
325AC_SUBST(SQLITE3_LIBS)
326AC_SUBST(SQLITE3_DIR)
327
328AH_TEMPLATE([TRACE_SDK], [SDK for SDK redirect in tracelib])
329AC_ARG_WITH(
330        trace-sdk,
331        AS_HELP_STRING([--with-trace-sdk=SDK],
332                [SDK for redirection in trace lib (for example MacOSX10.4u.sdk)]),
333        [test -d /Developer/SDKs/$withval && AC_DEFINE_UNQUOTED([TRACE_SDK], "${withval}")], [])
334       
335       
336# If /etc/paths.d and /etc/manpaths.d then we can install our path configuration
337# (this code is currently disabled since this mechanism implies that MacPorts paths are
338# added after the system's paths, and so MacPorts commands would not override system functions).
339AC_MSG_CHECKING(whether to install MacPorts paths into /etc/paths.d and /etc/manpaths.d)
340mpprefix=$prefix
341test "x$mpprefix" = "xNONE" && mpprefix=$ac_default_prefix
342if false && test -d /etc/paths.d -a -d /etc/manpaths.d -a "$mpprefix" = "$ac_default_prefix"; then
343        PATHCONF=pathconf
344        AC_CONFIG_FILES([src/pathconf/Makefile src/pathconf/paths src/pathconf/manpaths])
345        AC_MSG_RESULT([yes])
346else
347        AC_MSG_RESULT([no])
348fi
349
350
351# Allows building of shared libraries
352SC_ENABLE_SHARED
353
354# Pull compiler / linker values from tclConfig.sh
355CFLAGS_DEBUG=${TCL_CFLAGS_DEBUG}
356CFLAGS_OPTIMIZE=${TCL_CFLAGS_OPTIMIZE}
357LDFLAGS_DEBUG=${TCL_LDFLAGS_DEBUG}
358LDFLAGS_OPTIMIZE=${TCL_LDFLAGS_OPTIMIZE}
359SHLIB_LD=${TCL_SHLIB_LD}
360STLIB_LD=${TCL_STLIB_LD}
361SHLIB_CFLAGS=${TCL_SHLIB_CFLAGS}
362SHLIB_SUFFIX=${TCL_SHLIB_SUFFIX}
363
364AC_SUBST(INCLUDES)
365AC_SUBST(CFLAGS_DEBUG)
366AC_SUBST(CFLAGS_OPTIMIZE)
367AC_SUBST(PATHCONF)
368AC_SUBST(STLIB_LD)
369AC_SUBST(SHLIB_LD)
370AC_SUBST(SHLIB_CFLAGS)
371AC_SUBST(SHLIB_LDFLAGS)
372AC_SUBST(SHLIB_SUFFIX)
373AC_SUBST(TCL_DEFS)
374AC_SUBST(TCL_STUB_LIB_SPEC)
375AC_SUBST(TCL_CC)
376AC_SUBST(CONDITIONAL_PACKAGES)
377AC_SUBST(OUR_INCLUDED_PACKAGES)
378
379# misc variables that need to be expanded for substitution into tcl
380
381oldprefix=$prefix
382if test "x$prefix" = "xNONE" ; then
383   prefix=$ac_default_prefix
384fi
385
386eval "prefix_expanded=$prefix"
387AC_SUBST(prefix_expanded)
388# do this twice, since there is a nested variable of
389# ${prefix} inside of ${sysconfdir}
390eval "MPCONFIGDIR_EXPANDED=$MPCONFIGDIR"
391eval "MPCONFIGDIR_EXPANDED=$MPCONFIGDIR_EXPANDED"
392AC_SUBST(MPCONFIGDIR_EXPANDED)
393eval "localstatedir_expanded=$localstatedir"
394AC_SUBST(localstatedir_expanded)
395
396prefix=$oldprefix
397
398dnl man page settings (compressed, links, etc)
399dnl
400dnl SC_CONFIG_MANPAGES
401
402# Output
403AC_CONFIG_FILES([
404        Doxyfile
405        Makefile
406        Mk/macports.autoconf.mk
407        doc/prefix.mtree
408        doc/macosx.mtree
409        doc/macports.conf
410        portmgr/freebsd/Makefile
411        portmgr/fedora/macports.spec
412        src/Makefile
413        src/macports1.0/macports_autoconf.tcl
414        src/tclobjc1.0/Makefile
415        src/port1.0/port_autoconf.tcl
416        src/registry1.0/registry_autoconf.tcl
417        src/programs/Makefile
418        src/macports1.0/macports_fastload.tcl
419        setupenv.bash
420])
421
422AC_OUTPUT
Note: See TracBrowser for help on using the repository browser.