diff options
author | das <das> | 2005-05-26 11:18:50 (GMT) |
---|---|---|
committer | das <das> | 2005-05-26 11:18:50 (GMT) |
commit | a71f904442ce7d197df78aea91ec73b933d165b3 (patch) | |
tree | 4761826130ea3bda8d5678fa9603ae3b530e3eb9 /macosx | |
parent | 5ec6d80383290a83f26a0e5c03acab1c12c2e12f (diff) | |
download | tk-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/Makefile | 23 | ||||
-rw-r--r-- | macosx/tkMacOSXInit.c | 18 |
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) { |