1## 2# Makefile for Tk 3## 4# Daniel A. Steffen <das@users.sourceforge.net>: 5## 6 7# Project info 8Project = tk 9ProjectName = Tk 10UserType = Developer 11ToolType = Commands 12 13# Fetch info 14Release = 8.5.9 15UrlFile = $(Project)$(Release) 16Url = http://cloud.github.com/downloads/das/tcltk/$(UrlFile)-decarbon$(UrlExt) 17 18Configure = $(Sources)/unix/configure 19Extra_Environment = INSTALL_PATH="$(NSFRAMEWORKDIR)" PREFIX="$(USRDIR)" \ 20 APPLICATION_INSTALL_PATH="$(AppInstallDir)" \ 21 SYMROOT="$(SYMROOT)" OBJROOT="$(OBJROOT)" \ 22 MANDIR="$(MANDIR)" INSTALL_MANPAGES=1 \ 23 EXTRA_CONFIGURE_ARGS="$(Configure_Flags)" \ 24 TCL_FRAMEWORK_DIR="$(TclFrameworkDir)" TCLSH_DIR="$(TclshDir)" 25AfterInstall = extra-int-headers lipo links compress_man_pages fix-perms 26 27include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make 28include ../tcl_ext/Fetch.make 29 30Install_Flags = INSTALL_ROOT="$(DSTROOT)" 31 32Version = $(shell $(GREP) "TK_VERSION=" "$(Configure)" | $(CUT) -d '=' -f 2) 33 34FmwkDir = $(NSFRAMEWORKDIR)/Tk.framework/Versions/$(Version) 35LibItems = tkConfig.sh libtkstub$(Version).a 36HeaderItems = tk.h tkDecls.h tkPlatDecls.h tkIntXlibDecls.h tkMacOSX.h 37PrivateHeaderItems = tkInt.h tkIntDecls.h tkIntPlatDecls.h tkMacOSXInt.h \ 38 tkPort.h tkMacOSXPort.h ttkDecls.h ttkTheme.h \ 39 default.h tkMacOSXDefault.h tkFont.h 40AppInstallDir = $(NSDEVELOPERAPPSDIR)/Utilities 41 42Tclsh = $(USRBINDIR)/tclsh 43TclFramework = $(NSFRAMEWORKDIR)/Tcl.framework 44 45TclshDir = $(shell dirname $(Tclsh)) 46TclFrameworkDir = $(shell dirname $(TclFramework)) 47 48Wish_app = Wish.app 49Wish_bin = $(Wish_app)/Contents/MacOS/Wish 50 51# add suffix to tk manpage names to avoid conflicts 52Manpage_Suffix = tcl 53Configure_Flags += --enable-man-suffix=$(Manpage_Suffix) 54 55extra-int-headers: 56 $(_v) $(INSTALL_FILE) "$(Sources)/generic/default.h" "$(Sources)/macosx/tkMacOSXDefault.h" \ 57 "$(Sources)/generic/tkFont.h" "$(DSTROOT)$(FmwkDir)/PrivateHeaders" 58 $(_v) $(MKDIR) "$(DSTROOT)$(FmwkDir)/Headers/tk-private" 59 $(_v) $(MV) -f $(foreach f,$(PrivateHeaderItems),"$(DSTROOT)$(FmwkDir)/PrivateHeaders/$(f)") "$(DSTROOT)$(FmwkDir)/Headers/tk-private" 60 $(_v) $(RMDIR) "$(DSTROOT)$(FmwkDir)/PrivateHeaders" 61 $(_v) $(LN) -fsh "Headers/tk-private" "$(DSTROOT)$(FmwkDir)/PrivateHeaders" 62 63lipo_archs := $(filter ppc,$(RC_ARCHS)) 64ifdef lipo_archs 65define lipo 66 $(_v) lipo $(patsubst %,-remove %,$(patsubst ppc,ppc7400,$(lipo_archs))) -output $(1) $(1) 67endef 68endif 69lipo: 70 $(call lipo,$(DSTROOT)$(FmwkDir)/Resources/$(Wish_bin)) 71 72links: 73 $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(USRLIBDIR)" 74 $(_v) $(LN) -fs "../..$(FmwkDir)/$(ProjectName)" "$(DSTROOT)$(USRLIBDIR)/libtk$(Version).dylib" 75 $(_v) $(LN) -fs "libtk$(Version).dylib" "$(DSTROOT)$(USRLIBDIR)/libtk.dylib" 76 $(_v) $(LN) -fs $(foreach f,$(LibItems),"../..$(FmwkDir)/$(f)") "$(DSTROOT)$(USRLIBDIR)" 77 $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(USRINCLUDEDIR)" 78 $(_v) $(LN) -fs $(foreach f,$(HeaderItems),"../..$(FmwkDir)/Headers/$(f)") \ 79 "$(DSTROOT)$(USRINCLUDEDIR)" 80# Install compat sym links for private headers in /usr/local/include 81 $(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)$(USRDIR)/local/include" 82 $(_v) $(LN) -fs $(foreach f,$(PrivateHeaderItems),"../../..$(FmwkDir)/Headers/tk-private/$(f)") \ 83 "$(DSTROOT)$(USRDIR)/local/include/" 84# Move wish.1 to wish$(Version).1 and link wish.1 to wish$(Version).1 85 $(_v) $(MV) -f "$(DSTROOT)$(MANDIR)/man1/wish.1$(Manpage_Suffix)" \ 86 "$(DSTROOT)$(MANDIR)/man1/wish$(Version).1$(Manpage_Suffix)" 87 $(_v) $(LN) -fs "wish$(Version).1$(Manpage_Suffix)" \ 88 "$(DSTROOT)$(MANDIR)/man1/wish.1$(Manpage_Suffix)" 89 90fix-perms: 91 $(_v)- $(CHOWN) -R $(Install_User):$(Install_Group) $(DSTROOT) 92 $(_v)- $(FIND) $(DSTROOT) -type f ! -perm -+x ! -perm $(Install_File_Mode) -print0 | $(XARGS) -0 $(CHMOD) $(Install_File_Mode) 93 $(_v)- $(FIND) $(DSTROOT) -type f -perm -+x ! -perm $(Install_Program_Mode) -print0 | $(XARGS) -0 $(CHMOD) $(Install_Program_Mode) 94 $(_v)- $(FIND) $(DSTROOT) -type d ! -perm $(Install_Directory_Mode) -print0 | $(XARGS) -0 $(CHMOD) $(Install_Directory_Mode) 95 96### 97 98Sources = $(SRCROOT)/$(Project) 99MakeDir = $(Sources)/macosx 100 101Fmwk = $(SYMROOT)/$(ProjectName).framework 102BuildTarget = $(Project) BUILD_STYLE=Deployment 103InstallTarget = install-deploy 104 105all: build 106 107build:: $(Fmwk) $(Fmwk).dSYM 108 109$(Fmwk): 110 @echo "Building $(Project)..." 111 $(_v) $(Environment) $(MAKE) -C $(MakeDir) $(BuildTarget) 112 113$(Fmwk).dSYM: $(Fmwk) 114 $(_v) $(DSYMUTIL) -o $(Fmwk).dSYM $(Fmwk)/$(ProjectName) 115 $(call lipo,$(SYMROOT)/$(Wish_bin)) 116 $(_v) $(DSYMUTIL) -o $(SYMROOT)/$(Wish_app).dSYM $(SYMROOT)/$(Wish_bin) 117 118install:: $(Fmwk) $(Fmwk).dSYM 119 @echo "Installing $(Project)..." 120 -@$(RM) -f "$(DSTROOT)$(FmwkDir)/PrivateHeaders" 121 $(_v) umask $(Install_Mask) ; $(Environment) $(MAKE) -C $(MakeDir) \ 122 $(Install_Flags) $(InstallTarget) 123 $(_v) $(RMDIR) $(DSTROOT)$(NSDEVELOPERAPPSDIR) 124 $(_v) $(FIND) $(DSTROOT) $(Find_Cruft) -print0 | $(XARGS) -0 $(RMDIR) 125 $(_v) $(MAKE) $(AfterInstall) 126 127almostclean:: 128 @echo "Cleaning $(Project)..." 129 $(_v) $(Environment) $(MAKE) -C $(MakeDir) clean-$(BuildTarget) 130 131.PHONY: almostclean $(AfterInstall) 132.NOTPARALLEL: 133