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