Project = tcl
include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make
TCL_DSTROOT = $(if $(DSTROOT),$(DSTROOT),/tmp/tcl/Release)
TCL_FRAMEWORK_DIR = $(TCL_DSTROOT)$(NSFRAMEWORKDIR)
TCLSH = $(TCL_DSTROOT)$(USRBINDIR)/tclsh
WISH = $(TCL_DSTROOT)$(USRBINDIR)/wish
TCL_EXT_DIR = $(NSLIBRARYDIR)/Tcl
TCL_SRC_DIR = $(SRCROOT)/tcl
TCL_VERSION = $(shell $(GREP) "TCL_VERSION=" "$(TCL_SRC_DIR)/tcl/unix/configure" | $(CUT) -d '=' -f 2)
TCL_INIT = $(TCL_FRAMEWORK_DIR)/Tcl.framework/Versions/$(TCL_VERSION)/Resources/Scripts/init.tcl
ext ext84: TCL_EXT_DIR= $(NSLIBRARYDIR)/Tcl/$(TCL_VERSION)
ext84: TCL_SRC_DIR = $(SRCROOT)/tcl84
ext: TCL_VERSCHECK = [catch {package present Tcl $(TCL_VERSION)-}]
ext84: TCL_VERSCHECK = [package vcompare $(TCL_VERSION) $$::tcl_version]
ext84: TCL_AUTOPATH = $(NSFRAMEWORKDIR)/Tk.framework/Versions/$(TCL_VERSION)/Resources
fetch:: SRCROOT = $(CURDIR)
TCL_CONFIG_DIR = $(OBJROOT)
AC_VALS = ac_cv_path_tclsh=$(TCLSH) ac_cv_path_wish=$(WISH) ac_cv_header_stdc=yes
MAKE_ARGS = TclExtLibDir=$(TCL_EXT_DIR) LicenseInstallDir=$(OSL) Plist=$(PLIST) \
TclFramework=$(TCL_FRAMEWORK_DIR)/Tcl.framework Tclsh=$(TCLSH) \
TkFramework=$(TCL_FRAMEWORK_DIR)/Tk.framework Wish=$(WISH) \
CONFIG_SITE=$(TCL_CONFIG_DIR)/config.site
ext: EXT_MAKE_ARGS = PureTclExt=NO Tcl84Ext=NO
ext84: EXT_MAKE_ARGS = PureTclExt=NO Tcl84Ext=YES
ext_puretcl: EXT_MAKE_ARGS = PureTclExt=YES
PLIST = $(SRCROOT)/$(Project).plist
OSV = /usr/local/OpenSourceVersions
OSL = /usr/local/OpenSourceLicenses
export PATH := $(PATH):/usr/X11/bin
Cruft += .git
SubProjects := tcl84 tk84 tcl tk tcl_ext
Actions := almostclean extract fetch install-license
Actions_nodeps := install
include tcl_ext/SubprojActions.make
core84 := install-tcl84 install-tk84 ext84 cleanup84
core := install-tcl install-tk ext ext_puretcl
ext := install-tcl_ext
install_source:: extract
build::
$(_v) $(MKDIR) $(TCL_CONFIG_DIR)
$(_v) echo "cache_file=$(TCL_CONFIG_DIR)/config.cache" > "$(TCL_CONFIG_DIR)/config.site"
$(_v) for v in $(AC_VALS); do echo "$$v" >> "$(TCL_CONFIG_DIR)/config.site"; done
install:: $(core84) $(core) install-plist
ext ext84:
$(_v) $(MAKE) $(ext) $(EXT_MAKE_ARGS) \
TCL_EXT_DIR=$(TCL_EXT_DIR) TCL_CONFIG_DIR=$(OBJROOT) \
OBJROOT=$(OBJROOT)/$@ SYMROOT=$(SYMROOT)/$@
$(_v) printf '%s\n%s%s\n' 'if {$(TCL_VERSCHECK)} {return}' \
'if {[lsearch -exact $$::auto_path $$dir] == -1} {' \
'lappend ::auto_path $$dir; lappend ::tcl_pkgPath $$dir}' \
> $(OBJROOT)/$@/pkgIndex.tcl
$(_v) printf '\n%s\n %s%s\n\t%s\n\t %s%s\n\t%s\n %s\n' \
'proc tcl::DarwinFixAutoPath {} {' \
'if {[lsearch -exact $$::auto_path $(TCL_EXT_DIR)] == -1 && ' \
'[lsearch -exact $$::auto_path $(shell dirname $(TCL_EXT_DIR))] != -1} {' \
'foreach g {::auto_path ::tcl_pkgPath} {' \
'set $$g [linsert [set $$g] [expr {[lsearch -exact [set $$g] ' \
'$(shell dirname $(TCL_EXT_DIR))]+1}] $(TCL_EXT_DIR)]' '}' '}'\
>> $(TCL_INIT)
$(_v) if [ -n "$(TCL_AUTOPATH)" ]; then printf '%s%s\n' \
'if {[lsearch -exact $$::auto_path $(TCL_AUTOPATH)] == -1} {' \
'lappend ::auto_path $(TCL_AUTOPATH)}' \
>> $(OBJROOT)/$@/pkgIndex.tcl; \
printf ' %s%s\n\t%s%s\n %s\n' \
'if {[lsearch -exact $$::auto_path $(TCL_AUTOPATH)] == -1 && ' \
'[lsearch -exact $$::auto_path $(NSFRAMEWORKDIR)] != -1} {' \
'set ::auto_path [linsert $$::auto_path [expr {[lsearch -exact ' \
'$$::auto_path $(NSFRAMEWORKDIR)]+1}] $(TCL_AUTOPATH)]' '}' \
>> $(TCL_INIT); fi
$(_v) printf '%s\n%s\n%s\n' \
'}' 'tcl::DarwinFixAutoPath' 'rename tcl::DarwinFixAutoPath {}' \
>> $(TCL_INIT)
$(_v) $(INSTALL_FILE) $(OBJROOT)/$@/pkgIndex.tcl $(DSTROOT)$(TCL_EXT_DIR)
ext_puretcl:
$(_v) $(MAKE) $(ext) $(EXT_MAKE_ARGS)
cleanup84:
$(_v) $(RMDIR) $(DSTROOT)$(USRDIR)/{include,lib,share/man/{man3,mann},local/include}
$(_v) $(RM) $(DSTROOT)$(NSFRAMEWORKDIR)/{Tcl,Tk}.framework/*8.4*
$(_v) $(RMDIR) $(DSTROOT)$(NSFRAMEWORKDIR)/{Tcl,Tk}.framework/Versions/8.4/Resources/Documentation
install-plist: install-license
$(_v) $(MKDIR) $(DSTROOT)$(OSV) && $(INSTALL_FILE) $(PLIST) $(DSTROOT)$(OSV)/$(Project).plist
extract::
$(_v) $(FIND) "$(SRCROOT)" $(Find_Cruft) -depth -exec $(RMDIR) "{}" \;
.PHONY: ext ext84 ext_puretcl cleanup84 install-plist
.NOTPARALLEL: