summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
authordas <das>2005-05-26 11:18:50 (GMT)
committerdas <das>2005-05-26 11:18:50 (GMT)
commita71f904442ce7d197df78aea91ec73b933d165b3 (patch)
tree4761826130ea3bda8d5678fa9603ae3b530e3eb9 /macosx
parent5ec6d80383290a83f26a0e5c03acab1c12c2e12f (diff)
downloadtk-a71f904442ce7d197df78aea91ec73b933d165b3.zip
tk-a71f904442ce7d197df78aea91ec73b933d165b3.tar.gz
tk-a71f904442ce7d197df78aea91ec73b933d165b3.tar.bz2
* macosx/tkMacOSXInit.c (TkpInit): fixed resource file extraction
from __tk_rsrc section to work with non-prebound .dylib and .bundle. * macosx/Makefile: corrected EMBEDDED_BUILD check, use separate tcl and tk version vars to properly support tk/x11 framework version overriding, rewrite tkConfig.sh when overriding tk version, corrected Wish.app symlink in tk build dir. * unix/configure.in: corrected framework finalization to softlink stub library to Versions/8.x subdir instead of Versions/Current. * unix/configure: autoconf-2.59
Diffstat (limited to 'macosx')
-rw-r--r--macosx/Makefile23
-rw-r--r--macosx/tkMacOSXInit.c18
2 files changed, 23 insertions, 18 deletions
diff --git a/macosx/Makefile b/macosx/Makefile
index 9908165..a1cd172 100644
--- a/macosx/Makefile
+++ b/macosx/Makefile
@@ -4,7 +4,7 @@
# uses the standard unix build system in tk/unix (which can be used directly instead of this
# if you are not using the tk/macosx projects).
#
-# RCS: @(#) $Id: Makefile,v 1.16 2005/05/23 20:24:59 das Exp $
+# RCS: @(#) $Id: Makefile,v 1.17 2005/05/26 11:19:01 das Exp $
#
########################################################################################################
@@ -96,6 +96,7 @@ PRODUCT_NAME := Tk
UNIX_DIR := ${CURDIR}/../unix
VERSION := $(shell awk -F= '/^TK_VERSION/ {print $$2; nextfile}' ${UNIX_DIR}/configure.in)
+TCL_VERSION := ${VERSION}
WISH = wish${VERSION}
BUILD_TARGET := wish
@@ -106,7 +107,7 @@ TCL_DIR := ${TCL_BUILD_DIR}
TCL_FRAMEWORK_DIR := ${TCL_BUILD_DIR}/..
else
TCL_DIR := ${TCL_FRAMEWORK_DIR}/Tcl.framework
-TCL_EXE := ${TCLSH_DIR}/tclsh${VERSION}
+TCL_EXE := ${TCLSH_DIR}/tclsh${TCL_VERSION}
MAKE_VARS = TCL_EXE
export DYLD_FRAMEWORK_PATH := ${TCL_FRAMEWORK_DIR}
endif
@@ -154,7 +155,7 @@ APP_DIR := .
FMWK_DIR := .
endif
-TCL_FMWK_DIR := ${FMWK_DIR}/Tcl.framework/Versions/${VERSION}
+TCL_FMWK_DIR := ${FMWK_DIR}/Tcl.framework/Versions/${TCL_VERSION}
TK_FMWK_DIR := ${FMWK_DIR}/${PRODUCT_NAME}.framework/Versions/${VERSION}
#-------------------------------------------------------------------------------------------------------
@@ -168,6 +169,10 @@ ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure
--mandir=${MANDIR} --enable-threads --enable-framework \
--with-tcl=${TCL_DIR} \
${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS}
+ifneq (${TK_X11},)
+ @cd ${OBJ_DIR} && sed -e 's#/Versions/${TCL_VERSION}#/Versions/${VERSION}#' \
+ tkConfig.sh > tkConfig.sh.1 && mv -f tkConfig.sh.1 tkConfig.sh
+endif
build-${PROJECT}: ${OBJ_DIR}/Makefile
${DO_MAKE}
@@ -187,7 +192,8 @@ endif
install-${PROJECT}: build-${PROJECT}
ifeq (${EMBEDDED_BUILD}_${INSTALL_ROOT},1_)
@echo "Cannot install-embedded with empty INSTALL_ROOT !" && false
-else
+endif
+ifeq (${EMBEDDED_BUILD},1)
@rm -rf "${INSTALL_ROOT}/${LIBDIR}/Tk.framework"
endif
${DO_MAKE}
@@ -225,9 +231,9 @@ endif
ifeq (${TK_X11},)
ifeq (${EMBEDDED_BUILD},)
# install Wish.app link in APPLICATION_INSTALL_PATH and setup 'Wish Shell' compatibility links
- @cd ${TOP_DIR} && mkdir -p "./${APP_DIR}" && \
- ln -fsh "$$(echo ./${APP_DIR} | sed -e 's#/[^/][^/]*#/..#g')/${TK_FMWK_DIR}/Resources/Wish.app" "./${APP_DIR}" && \
- ln -fsh Wish.app "./${APP_DIR}/Wish Shell.app" && \
+ @cd ${TOP_DIR} && if [ -n "${APP_DIR}" ]; then mkdir -p "./${APP_DIR}" && \
+ ln -fsh "./$$(echo ${APP_DIR} | sed -e 's#/[^/][^/]*#/..#g')/${FMWK_DIR}/${PRODUCT_NAME}.framework/Resources/Wish.app" "./${APP_DIR}" && \
+ ln -fsh Wish.app "./${APP_DIR}/Wish Shell.app"; fi && \
ln -fsh Wish.app "./${TK_FMWK_DIR}/Resources/Wish Shell.app" && \
ln -fsh Wish "./${TK_FMWK_DIR}/Resources/Wish.app/Contents/MacOS/Wish Shell"
else
@@ -240,7 +246,8 @@ else
mkdir -p "./${APP_DIR}/Wish.app/Contents/Frameworks" && \
mv -f "./${FMWK_DIR}"/T{cl,k}.framework "./${APP_DIR}/Wish.app/Contents/Frameworks" && \
rmdir -p "./${FMWK_DIR}" 2>&- || true && cd "./${APP_DIR}/Wish.app/Contents" && \
- rm -rf Frameworks/T{cl,k}.framework/{,/Versions/$(VERSION)}/{Headers,PrivateHeaders,*_debug,lib*.a,*Config.sh} && \
+ rm -rf Frameworks/Tcl.framework/{,/Versions/$(TCL_VERSION)}/{Headers,PrivateHeaders,*_debug,lib*.a,*Config.sh} && \
+ rm -rf Frameworks/Tk.framework/{,/Versions/$(VERSION)}/{Headers,PrivateHeaders,*_debug,lib*.a,*Config.sh} && \
fix_install_id ( ) { \
chmod -RH a+w "$$1"; \
install_name_tool -id $$(otool -L "$$1" | awk "/$$2\.framework.*[^:]\$$/ {sub(\"^.*/Frameworks\",\"@executable_path/../Frameworks\",\$$1); print \$$1}") "$$1"; \
diff --git a/macosx/tkMacOSXInit.c b/macosx/tkMacOSXInit.c
index 780bcc3..b604317 100644
--- a/macosx/tkMacOSXInit.c
+++ b/macosx/tkMacOSXInit.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXInit.c,v 1.11 2005/05/24 02:32:15 das Exp $
+ * RCS: @(#) $Id: tkMacOSXInit.c,v 1.12 2005/05/26 11:19:01 das Exp $
*/
#include "tkInt.h"
@@ -175,23 +175,20 @@ TkpInit(interp)
unsigned long size;
int fd = -1;
char fileName[L_tmpnam + 15];
+ int i, n;
/* Get resource data from __tk_rsrc section of tk library file */
-#ifdef HAVE__DYLD_GET_IMAGE_HEADER_CONTAINING_ADDRESS
- image = _dyld_get_image_header_containing_address((unsigned long)&TkpInit);
- if (image) {
- data = getsectdatafromheader(image, SEG_TEXT, "__tk_rsrc", &size);
- }
-#else
- int i, n = _dyld_image_count();
+ n = _dyld_image_count();
for (i = 0; i < n; i++) {
image = _dyld_get_image_header(i);
if (image) {
data = getsectdatafromheader(image, SEG_TEXT, "__tk_rsrc", &size);
+ if (data) {
+ data += _dyld_get_image_vmaddr_slide(i);
+ break;
+ }
}
- if (data) break;
}
-#endif
while (data) {
OSStatus err;
FSRef ref;
@@ -210,6 +207,7 @@ TkpInit(interp)
err = FSPathMakeRef(fileName, &ref, NULL);
if (err != noErr) break;
err = FSOpenResourceFile(&ref, 0, NULL, fsRdPerm, &refNum);
+ if (err != noErr) fprintf(stderr,"FSOpenResourceFile error %d\n",err);
break;
}
if (fd != -1) {