summaryrefslogtreecommitdiffstats
path: root/tools/genStubs.tcl
diff options
context:
space:
mode:
authordas <das>2002-08-31 06:09:45 (GMT)
committerdas <das>2002-08-31 06:09:45 (GMT)
commit9ac61d2a0122062c25c3ad97defae9cbaa59b57f (patch)
treea04dce9b4970c608d3bd9a81f627bd20b9081064 /tools/genStubs.tcl
parent6f97e75f52281eb769d51f15d7e07c3cd935a4d3 (diff)
downloadtcl-9ac61d2a0122062c25c3ad97defae9cbaa59b57f.zip
tcl-9ac61d2a0122062c25c3ad97defae9cbaa59b57f.tar.gz
tcl-9ac61d2a0122062c25c3ad97defae9cbaa59b57f.tar.bz2
*** macosx-8-4-branch merged into the mainline [tcl patch #602770] ***macosx_8_4_merge_2002_08_31_trunk
* generic/tcl.decls: added new macosx specific entry to stubs table. * tools/genStubs.tcl: added generation of platform guards for macosx. This is a little more complex than it seems, because MacOS X IS "unix" plus a little bit, for the purposes of Tcl. BUT unfortunately, Tk uses "unix" to mean X11. So added platform keys for macosx (the little added to "unix"), "aqua" and "x11" to distinguish these for Tk. * generic/tcl.h: added a #ifnded RESOURCE_INCLUDED so that tcl.h can be passed to the resource compiler. * generic/tcl.h: * generic/tclNotify.c: added a few Notifier procs, to be able to modify more bits of the Tcl notifier dynamically. Required to get Mac OS X Tk to live on top of the Tcl Unix threaded notifier. Changes the size of the Tcl_NotifierProcs structure, but doesn't move any elements around. * unix/tclUnixNotfy.c: moved the call to Tcl_ConditionNotify till AFTER we are done mucking with the pointer swap. Fixes cases where the thread waiting on the condition wakes & accesses the waitingListPtr before it gets reset, causing a hang. * library/auto.tcl (tcl_findLibrary): added checking the directories in the tcl_pkgPath for library files on macosx to enable support of the standard Mac OSX library locations * unix/Makefile.in: * unix/configure.in: * unix/tcl.m4: added MAC_OSX_DIR. Added PLAT_OBJS to the OBJS: there are some MacOS X specific files now for Tcl, and when I get he resource & applescript stuff ported over, and restore support for FindFiles, etc, there will be a few more. Added LD_LIBRARY_PATH_VAR configure variable to avoid having to set all possible LD_LIBRARY_PATH analogues on all platforms. LD_LIBRARY_PATH_VAR is "LD_LIBRARY_PATH" by default, "LIBPATH" on AIX, "SHLIB_PATH" on HPUX and "DYLD_LIBRARY_PATH" on Mac OSX. Added configure option to package Tcl as a framework on Mac OSX. * macosx/tclMacOSXBundle.c (new): support for finding Tcl extension packaged as 'bundles' in the standard Mac OSX library locations. * unix/tclUnixInit.c: added support for findig the tcl script library inside Tcl packaged as a framework on Mac OSX. * macosx/Tcl.pbproj/jingham.pbxuser (new): * macosx/Tcl.pbproj/project.pbxproj (new): project for Apple's ProjectBuilder IDE. * macosx/Makefile (new): simple makefile for building the project from the command line via the ProjectBuilder tool 'pbxbuild'. * unix/configure: * generic/tclStubInit.c: * generic/tclPlatDecls.h: regen
Diffstat (limited to 'tools/genStubs.tcl')
-rw-r--r--tools/genStubs.tcl80
1 files changed, 77 insertions, 3 deletions
diff --git a/tools/genStubs.tcl b/tools/genStubs.tcl
index f11739e..73770ae 100644
--- a/tools/genStubs.tcl
+++ b/tools/genStubs.tcl
@@ -8,7 +8,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: genStubs.tcl,v 1.11 2002/05/08 12:21:39 davygrvy Exp $
+# RCS: @(#) $Id: genStubs.tcl,v 1.12 2002/08/31 06:09:46 das Exp $
package require Tcl 8
@@ -122,7 +122,7 @@ proc genStubs::hooks {names} {
# Arguments:
# index The index number of the interface.
# platform The platform the interface belongs to. Should be one
-# of generic, win, unix, or mac.
+# of generic, win, unix, or mac, or macosx or aqua or x11.
# decl The C function declaration, or {} for an undefined
# entry.
#
@@ -226,6 +226,15 @@ proc genStubs::addPlatformGuard {plat text} {
mac {
return "#ifdef MAC_TCL\n${text}#endif /* MAC_TCL */\n"
}
+ macosx {
+ return "#ifdef MAC_OSX_TCL\n${text}#endif /* MAC_OSX_TCL */\n"
+ }
+ aqua {
+ return "#ifdef MAC_OSX_TK\n${text}#endif /* MAC_OSX_TK */\n"
+ }
+ x11 {
+ return "#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK)) /* X11 */\n${text}#endif /* X11 */\n"
+ }
}
return "$text"
}
@@ -615,6 +624,30 @@ proc genStubs::forAllStubs {name slotProc onAll textVar \
set emit 1
}
}
+ #
+ # "aqua" and "macosx" and "x11" are special cases,
+ # since "macosx" always implies "unix" and "aqua",
+ # "macosx", so we need to be careful not to
+ # emit duplicate stubs entries for the two.
+ #
+ if {[info exists stubs($name,aqua,$i)]
+ && ![info exists stubs($name,macosx,$i)]} {
+ append text [addPlatformGuard aqua \
+ [$slotProc $name $stubs($name,aqua,$i) $i]]
+ set emit 1
+ }
+ if {[info exists stubs($name,macosx,$i)]
+ && ![info exists stubs($name,unix,$i)]} {
+ append text [addPlatformGuard macosx \
+ [$slotProc $name $stubs($name,macosx,$i) $i]]
+ set emit 1
+ }
+ if {[info exists stubs($name,x11,$i)]
+ && ![info exists stubs($name,unix,$i)]} {
+ append text [addPlatformGuard x11 \
+ [$slotProc $name $stubs($name,x11,$i) $i]]
+ set emit 1
+ }
}
if {$emit == 0} {
eval {append text} $skipString
@@ -637,8 +670,49 @@ proc genStubs::forAllStubs {name slotProc onAll textVar \
append text [addPlatformGuard $plat $temp]
}
}
+ # Again, make sure you don't duplicate entries for macosx & aqua.
+ if {[info exists stubs($name,aqua,lastNum)]
+ && ![info exists stubs($name,macosx,lastNum)]} {
+ set lastNum $stubs($name,aqua,lastNum)
+ set temp {}
+ for {set i 0} {$i <= $lastNum} {incr i} {
+ if {![info exists stubs($name,aqua,$i)]} {
+ eval {append temp} $skipString
+ } else {
+ append temp [$slotProc $name $stubs($name,aqua,$i) $i]
+ }
+ }
+ append text [addPlatformGuard aqua $temp]
+ }
+ # Again, make sure you don't duplicate entries for macosx & unix.
+ if {[info exists stubs($name,macosx,lastNum)]
+ && ![info exists stubs($name,unix,lastNum)]} {
+ set lastNum $stubs($name,macosx,lastNum)
+ set temp {}
+ for {set i 0} {$i <= $lastNum} {incr i} {
+ if {![info exists stubs($name,macosx,$i)]} {
+ eval {append temp} $skipString
+ } else {
+ append temp [$slotProc $name $stubs($name,macosx,$i) $i]
+ }
+ }
+ append text [addPlatformGuard macosx $temp]
+ }
+ # Again, make sure you don't duplicate entries for x11 & unix.
+ if {[info exists stubs($name,x11,lastNum)]
+ && ![info exists stubs($name,unix,lastNum)]} {
+ set lastNum $stubs($name,x11,lastNum)
+ set temp {}
+ for {set i 0} {$i <= $lastNum} {incr i} {
+ if {![info exists stubs($name,x11,$i)]} {
+ eval {append temp} $skipString
+ } else {
+ append temp [$slotProc $name $stubs($name,x11,$i) $i]
+ }
+ }
+ append text [addPlatformGuard x11 $temp]
+ }
}
-
}
# genStubs::emitDeclarations --