source: trunk/base/src/cflib1.0/ @ 117621

Last change on this file since 117621 was 117621, checked in by cal@…, 7 years ago

macports: use a local copy of Tcl 8.5, mostly fix out-of-source build (#28001)

This change switches MacPorts to a private copy of Tcl 8.5 that will be extracted, configured, built
and installed along with MacPorts. This will allow us to drop Tcl 8.4-compatibility for older OS
releases that didn't ship Tcl 8.5 and is an important step towards Tcl 8.6 compatibility.

Most of the changes to make this happen were in aclocal.m4 (where I re-implemented a custom version
of AC_CONFIG_SUBDIRS similar to what was proposed upstream in but never actually merged), and the vendor directory.

Since we want to build MacPorts against the headers of our custom Tcl, this change also required
adjusting Mk/ to pass the correct path to the headers. However, we cannot use
the build directory containing the public headers, because this directory is also clobbered with
other headers such as regex.h, breaking the build later on when this file is included in pextlib1.0.
Fortunately, the Tcl autoconf macros take care of all the other details required to build against
a private Tcl.

Not having the blessed copy of Tcl around during configure lead to some other difficulties such as
the MP_TCL_PLATFORM macro, which uses $TCLSH to read the $tcl_platform variable. I have
re-implemented this as MP_PLATFORM using uname in the same way as the $tcl_platform variable is set
up in the Tcl source code.

Besides a standard Tcl distribution, this change also installs the Tcl Thread package (required for
trace mode) and Tcllib, a package containing various helpful modules for Tcl (such as an
8.6-compatible try implementation). It also drops support for the Tcl sqlite3 extension that is
present on OS X and was previously picked up by configure, but isn't used in the source.

While I was refactoring the build system I also mostly fixed out-of-source builds (see #28001,
caused all Makefile -> moves). The remaining issue is that the pkgIndex.tcl files
generated by pkg_mkIndex only list the files present in the build directory (i.e. all files that
have been re-inplaced or built from source), but not those from the source directory. That currently
causes the Tcl scripts in the install target to fail.

I also unified indentation in aclocal.m4.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 256 bytes
1srcdir = @srcdir@
2VPATH  = @srcdir@
4OBJS=           CFLib.o
6LIBS+=          -framework CoreFoundation
7INSTALLDIR= ${DESTDIR}${datadir}/macports/Tcl/cflib1.0
9include ../../Mk/
10include $(srcdir)/../../Mk/
Note: See TracBrowser for help on using the repository browser.