summaryrefslogtreecommitdiffstats
path: root/macosx
Commit message (Collapse)AuthorAgeFilesLines
* * macosx/Tcl.xcodeproj/project.pbxproj: add debug configs with gcov,das2008-06-123-71/+292
| | | | | | | | | and with corefoundation disabled; updates and cleanup for Xcode 3.1 and for Leopard. * macosx/Tcl.xcode/project.pbxproj: sync Tcl.xcodeproj changes. * macosx/README: document new build configs. FossilOrigin-Name: dbc92079cc74ae90a4c480449f4956a0556b4dd0
* fix Makefile dependencydas2008-05-061-2/+2
| | | FossilOrigin-Name: a687f2e844d7af9a1a23440f6e5ca0c332686bd8
* sync with Tcl.xcodeprojdas2008-04-151-2/+15
| | | FossilOrigin-Name: 260dad3fa099cce97ee28994c22aadc7858bbba4
* disable codesign on tests targetdas2008-03-281-1/+17
| | | FossilOrigin-Name: 0871ba27bd839a3189dc70ae55a6d514b1555aed
* * macosx/Tcl.xcodeproj/project.pbxproj: add support for Xcode 3.1das2008-03-123-4/+24
| | | | | | | * macosx/Tcl.xcodeproj/default.pbxuser: CODE_SIGN_IDENTITY and * macosx/Tcl-Common.xcconfig: 'xcodebuild install'. FossilOrigin-Name: d886202f1d1d8762d1456188de8f28325df7c8ab
* * macosx/GNUmakefile: fix quoting to allow paths todas2008-03-112-23/+28
| | | | | | | | | | | | | | * macosx/Tcl-Common.xcconfig: ${builddir} and ${INSTALL_ROOT} * unix/Makefile.in: to contain spaces. * unix/configure.in: * unix/install-sh: * unix/tcl.m4: * tests/ioCmd.test: * unix/Makefile.in (install-strip): strip non-global symbols from dynamic library. FossilOrigin-Name: 82d286110d8aba7cc7ffb0cfd1ce0d2315a733c3
* * macosx/Tcl.xcodeproj/project.pbxproj: add support for Xcode 3.1 anddas2008-03-112-3/+199
| | | | | | | | | | | | | * macosx/Tcl.xcodeproj/default.pbxuser: targets for building with * macosx/Tcl-Common.xcconfig: gcc-4.2 and llvm-gcc-4.2. * unix/tclUnixPort.h: workaround vfork() problems in llvm-gcc-4.2.1 -O4 build. * unix/tclUnixPort.h: move MODULE_SCOPE compat define to top [Bug 1911102]. FossilOrigin-Name: ad66da0f7f951779d8378b78b1974790939ec317
* * macosx/tclMacOSXNotify.c: avoid using CoreFoundation after fork() ondas2008-03-111-7/+3
| | | | | | Darwin 9 even when TclpCreateProcess() uses vfork(). FossilOrigin-Name: bec5e4d2dbff1f887dccb200ba5e9c113355e5fb
* merge stable branch onto HEADdgp2007-12-137-7/+7
| | | FossilOrigin-Name: d1f7550cd9bf1343d8505fb99fc5141b58bb88bf
* * macosx/Tcl.xcodeproj/project.pbxproj: add new chanio.test.das2007-11-152-4/+8
| | | | | | * macosx/Tcl.xcode/project.pbxproj: FossilOrigin-Name: 97b073a7591d8fd986ae0dd7ec1d0c3f61fdfa03
* * generic/tclDTrace.d (new file): add DTrace provider for Tcl; allowsdas2007-09-133-5/+9
| | | | | | | | | | | | | | | | | | | | * generic/tclCompile.h: tracing of proc and command entry & * generic/tclBasic.c: return, bytecode execution, object * generic/tclExecute.c: allocation and more; with essentially * generic/tclInt.h: zero cost when tracing is inactive; * generic/tclObj.c: enable with --enable-dtrace configure * generic/tclProc.c: arg (disabled by default, will only * unix/Makefile.in: enable if DTrace is present). * unix/configure.in: [Patch 1793984] * macosx/GNUmakefile: enable DTrace support. * macosx/Tcl-Common.xcconfig: * macosx/Tcl.xcodeproj/project.pbxproj: * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 FossilOrigin-Name: 4ab9e1dde242f5992d1ab5cf3861f56b9f325271
* typodas2007-09-061-2/+2
| | | FossilOrigin-Name: da504fa0ec2b335f5481445b043afa22d5788642
* * macosx/Tcl.xcode/project.pbxproj: discontinue unmaintained supportdas2007-09-066-127/+63
| | | | | | | | | | | | | | | * macosx/Tcl.xcode/default.pbxuser: for Xcode 1.5; replace by Xcode2 project for use on Tiger (with Tcl.xcodeproj to be used on Leopard). * macosx/Tcl.xcodeproj/project.pbxproj: updates for Xcode 2.5 and 3.0. * macosx/Tcl.xcodeproj/default.pbxuser: * macosx/Tcl.xcode/project.pbxproj: * macosx/Tcl.xcode/default.pbxuser: * macosx/Tcl-Common.xcconfig: * macosx/README: document project changes. FossilOrigin-Name: e80aeb3e3cc1813ef16cb71f7d0d027b11bf6d28
* discontinue support for Xcode 1.5 (project was no longer being maintained); ↵das2007-09-062-7845/+2561
| | | | | make identical to current Tcl.xcodeproj. FossilOrigin-Name: a3a2884ba3823d9b07624a7741b330eff5423be4
* replace (ab)use of GENERIC_FLAGS as a unix/Makefile override by dedicated ↵das2007-09-061-2/+2
| | | | | EXTRA_CFLAGS var FossilOrigin-Name: 4e3c58ee196cbcfa4edc9f32244607024dc96b82
* * unix/dltest/pkga.c: whitespace & comment cleanup, removedas2007-08-141-3/+1
| | | | | | | | | | | * unix/dltest/pkgb.c: unused pkgf.c. * unix/dltest/pkgc.c: * unix/dltest/pkge.c: * unix/dltest/pkgf.c (removed): * unix/dltest/pkgua.c: * macosx/Tcl.xcodeproj/project.pbxproj: FossilOrigin-Name: 9c5c352689dfc076685844bdde2b17761859e909
* fix missing preprocessor \ line continuationdas2007-08-111-2/+2
| | | FossilOrigin-Name: c3ab19362f341823c8a8bed147d1a3e4fd4df300
* * macosx/Tcl.xcodeproj/project.pbxproj: improve support for renamed tcldas2007-06-294-22/+70
| | | | | | | | | * macosx/Tcl.xcodeproj/default.pbxuser: source dir; add 10.5 SDK build * macosx/Tcl-Common.xcconfig: config; remove tclMathOp.c. * macosx/README: document Tcl.xcodeproj changes. FossilOrigin-Name: b36e47fa576bc87112f21ee139f0255b81fc7ed1
* * macosx/tclMacOSXNotify.c (AtForkChild): don't call CoreFoundationdas2007-06-231-3/+22
| | | | | | APIs after fork() on systems where that would lead to an abort(). FossilOrigin-Name: 36af5226c8533117413d32c86a467ab629103c0e
* * macosx/Tcl.xcodeproj/project.pbxproj: add new Tclsh-Info.plist.in.das2007-06-091-1/+3
| | | FossilOrigin-Name: 8e19e10814d23fab7772584661383168966e8cb0
* * macosx/Tcl.xcodeproj/project.pbxproj: add settings for Fix&Continue.das2007-06-063-4/+44
| | | | | | | | | | | | * unix/configure.in (Darwin): add plist for tclsh; link the * unix/Makefile.in (Darwin): Tcl and tclsh plists into their * macosx/Tclsh-Info.plist.in (new): binaries in all cases. * macosx/Tcl-Common.xcconfig: * unix/tcl.m4 (Darwin): fix CF checks in fat 32&64bit builds. * unix/configure: autoconf-2.59 FossilOrigin-Name: 9f2720b9725146ff331725937e436e45484b34fb
* * macosx/Tcl.xcodeproj/project.pbxproj: add 'DebugUnthreaded' &das2007-05-092-3/+107
| | | | | | | * macosx/Tcl.xcodeproj/default.pbxuser: 'DebugLeaks' targets and env var settings needed to run the 'leaks' tool. FossilOrigin-Name: 7a4896c2522030e70f9e4abf2d40857aa2dad3e0
* * macosx/Tcl-Common.xcconfig: enable more warnings.das2007-04-2311-39/+101
| | | | | | | | | | | | | | | | | | | | | | | | | * macosx/Tcl.xcodeproj/project.pbxproj: add 'DebugMemCompile' build configuration that calls configure with --enable-symbols=all; override configure check for __attribute__((__visibility__("hidden"))) in Debug configuration to restore availability of ZeroLink. * macosx/tclMacOSXNotify.c: fix warnings. * macosx/tclMacOSXFCmd.c: const fixes. * macosx/Tcl-Common.xcconfig: fix whitespace. * macosx/Tcl-Debug.xcconfig: * macosx/Tcl-Release.xcconfig: * macosx/README: * macosx/GNUmakefile: fix/add copyright and license refs. * macosx/tclMacOSXBundle.c: * macosx/Tcl-Info.plist.in: * macosx/Wish-Info.plist.in: * macosx/Tcl.xcode/project.pbxproj: * macosx/Tcl.xcodeproj/project.pbxproj: FossilOrigin-Name: fc195aae9d843b7c8469cff60ef05a488c433fad
* * macosx/tclMacOSXNotify.c: add spinlock debugging and sanity checks.das2007-03-074-15/+75
| | | | | | | | | | | | * macosx/Tcl.xcodeproj/project.pbxproj: ensure gcc version used by * macosx/Tcl.xcodeproj/default.pbxuser: Xcode and configure/make are * macosx/Tcl-Common.xcconfig: consistent and independent of gcc_select default and CC env var; fixes for Xcode 3.0. * unix/tcl.m4 (Darwin): s/CFLAGS/CPPFLAGS/ in macosx-version-min check. * unix/configure: autoconf-2.59 FossilOrigin-Name: ddc29ff5232316294edac4392d40a838ddc0ee51
* * macosx/Tcl.xcodeproj/project.pbxproj: extract build settings thatdas2007-01-288-332/+406
| | | | | | | | | | | | | | | | | | | | | * macosx/Tcl.xcodeproj/default.pbxuser: were common to multiple * macosx/Tcl-Common.xcconfig (new file): configurations into external * macosx/Tcl-Debug.xcconfig (new file): xcconfig files; add extra * macosx/Tcl-Release.xcconfig (new file): configurations for building with SDKs and 64bit; convert legacy jam-based 'Tcl' target to native target with single script phase; correct syntax of build setting references to use $() throughout. * macosx/README: document new Tcl.xcodeproj configurations; other minor updates/corrections. * generic/tcl.h: update location of version numbers in macosx files. * macosx/Tcl.xcode/project.pbxproj: restore 'tcltest' target to working * macosx/Tcl.xcode/default.pbxuser: order by replicating applicable changes to Tcl.xcodeproj since 2006-07-20. FossilOrigin-Name: 3e0d0f89fd958de686919f81809c6762c0bb2a17
* * macosx/tclMacOSXFCmd.c (TclMacOSXSetFileAttribute): on some versionsdas2007-01-194-18/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | of Mac OS X, truncate() fails on resource forks, in that case use open() with O_TRUNC instead. * macosx/tclMacOSXNotify.c: accommodate changes to prototypes of OSSpinLock(Un)Lock API. * macosx/Tcl.xcodeproj/project.pbxproj: ensure HOME and USER env vars * macosx/Tcl.xcodeproj/default.pbxuser: are defined when running testsuite from Xcode. * tests/env.test: add extra system env vars that need to be preserved on some Mac OS X versions for testsuite to work. * unix/Makefile.in: move libtommath defines into configure.in to avoid * unix/configure.in: replicating them across multiple buildsystems. * macosx/Tcl.xcodeproj/project.pbxproj: * unix/tcl.m4: ensure CPPFLAGS env var is used when set. [Bug 1586861] (Darwin): add -isysroot and -mmacosx-version-min flags to CPPFLAGS when present in CFLAGS to avoid discrepancies between what headers configure sees during preprocessing tests and compiling tests. * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 FossilOrigin-Name: 54a154124be0f7057742ef27810bc9762654115f
* * tests/macOSXLoad.test (new file): add testing of .bundle loading anddas2006-12-171-1/+29
| | | | | | | | | | | | | * tests/load.test: unloading on Darwin (in addition to * tests/unload.test: existing tests of .dylib loading). * macosx/Tcl.xcodeproj/project.pbxproj: add building of dltest binaries so that testsuite run from Xcode can use them; fix testsuite run script. * unix/configure.in: add support for building dltest binaries as * unix/dltest/Makefile.in: .bundle (in addition to .dylib) on Darwin. * unix/Makefile.in: add stub lib dependency to dltest target. * unix/configure: autoconf-2.59 FossilOrigin-Name: da1fb6e37fe84dce9f6c2687a1c02ae1cf13ca83
* add new platform package files and earlier new test filesdas2006-12-061-0/+22
| | | FossilOrigin-Name: 3670d70c4159bf1d19e62962c4689b2d972fd58a
* add tclMathOp.cdas2006-11-261-0/+4
| | | FossilOrigin-Name: 96dbeb13c17cfe693cbd86c41aa4663f26808bd0
* removed tools/genWinImage.tcl and win/README.binarydas2006-11-231-4/+0
| | | FossilOrigin-Name: c8c386946c4b2988d84c93effaf5496e2d0302a6
* suppress linker arch warnings when building universaldas2006-11-101-1/+4
| | | FossilOrigin-Name: d33ba03a52cd93368c5dbc237a9bcb47d1093fad
* * tests/fCmd.test (fCmd-6.26): fix failure when env(HOME) path containsdas2006-11-101-5/+1
| | | | | | | | | | | | | | | | symlinks. * macosx/Tcl.xcodeproj/project.pbxproj: remove tclParseExpr.c; when running testsuite from inside Xcdoe, skip stack-3.1 (it only fails under those circumstances). * unix/tcl.m4 (Darwin): suppress linker arch warnings when building universal for both 32 & 64 bit and no 64bit CoreFoundation is available; sync with tk tcl.m4 change. * unix/configure.in: whitespace. * unix/configure: autoconf-2.59 FossilOrigin-Name: 22b6ae1be7d04879e714d32c64d66313c7dde8ca
* * macosx/Tcl.xcodeproj/project.pbxproj: check autoconf/autoheader exitdas2006-11-031-1/+1
| | | | | | status and stop build if they fail. FossilOrigin-Name: 01fee8451b8231b7186943b6b58b8489a866a2da
* fix configurations of 'tests' targetdas2006-10-201-6/+9
| | | FossilOrigin-Name: 635dff9ad69acba938f995ff3043eb7dc15f716d
* * unix/tclUnixThrd.c (TclpThreadGetStackSize): Darwin: fix for maindas2006-10-161-4/+7
| | | | | | | | thread, where pthread_get_stacksize_np() returns incorrect info. * macosx/GNUmakefile: don't redo prebinding of non-prebound binaires. FossilOrigin-Name: 8ff3943783431ffa32916db94e7f3951d03821da
* * library/msgcat/msgcat.tcl (msgcat::Init): on Darwin, add fallback ofdas2006-09-101-3/+8
| | | | | | | | | | | | | | | | | | | | * tests/msgcat.test: default msgcat locale to * unix/tclUnixInit.c (TclpSetVariables): current CFLocale identifier if available (via private ::tcl::mac::locale global, set at interp init when on Mac OS X 10.3 or later with CoreFoundation). * library/tcltest/tcltest.tcl: add 'line' verbose level: prints source * doc/tcltest.n: file line information of failing tests. * macosx/Tcl.xcodeproj/project.pbxproj: add new tclUnixCompat.c file; revise tests target to use new tcltest 'line' verbose level. * unix/configure.in: add descriptions to new AC_DEFINEs for MT-safe. * unix/tcl.m4: add caching to new SC_TCL_* macros for MT-safe wrappers. * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 FossilOrigin-Name: dc96f873b962ac5793b2539377dd669754135ccb
* removed now no longer needed '-constraints newExprParser' arg to tcltestdas2006-08-242-6/+4
| | | FossilOrigin-Name: 925a757acb59a7508456c73634c7a3946bb082b7
* typo: s/Xcode 2.3/Xcode 2.4/das2006-08-211-3/+3
| | | FossilOrigin-Name: d76fe61104fd90d38889ccdc2c0294961b45dc91
* add support for building without -fconstant-cfstrings, e.g. when ↵das2006-08-211-3/+15
| | | | | MACOSX_DEPLOYMENT_TARGET unset. [Bug 1543715] FossilOrigin-Name: d5ab9428b4e6ac2056dd5b74e925498da2997add
* * macosx/tclMacOSXNotify.c (Tcl_WaitForEvent): if the run loop isdas2006-08-211-2/+24
| | | | | | | | | | | | | | | already running (e.g. if Tcl_WaitForEvent was called recursively), re-run it in a custom run loop mode containing only the source for the notifier thread, otherwise wakeups from other sources added to the common run loop modes might get lost. * unix/tclUnixNotfy.c (Tcl_WaitForEvent): on 64-bit Darwin, pthread_cond_timedwait() appears to have a bug that causes it to wait forever when passed an absolute time which has already been exceeded by the system time; as a workaround, when given a very brief timeout, just do a poll on that platform. [Bug 1457797] FossilOrigin-Name: 7221913ebc975b20a122380a2bca34a2fdd74a3f
* * unix/tcl.m4 (Darwin): add support for --enable-64bit on x86_64, fordas2006-08-184-15/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | universal builds including x86_64, for 64-bit CoreFoundation on Leopard and for use of -mmacosx-version-min instead of MACOSX_DEPLOYMENT_TARGET. * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 * generic/tcl.h: add fixes for building on Leopard and support * unix/tclUnixPort.h: for 64-bit CoreFoundation on Leopard. * macosx/tclMacOSXFCmd.c: * unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it causes execve to fail intermittently. (rdar://4685553) * generic/tclTomMath.h: on Darwin 64-bit, for now disable use of 128-bit arithmetic through __attribute__ ((mode(TI))), as it leads to link errors due to missing fallbacks. (rdar://4685527) * macosx/Tcl.xcodeproj/project.pbxproj: add x86_64 to universal build, switch native release targets to use DWARF with dSYM, Xcode 3.0 changes. * macosx/README: updates for x86_64 and Xcode 2.3. * macosx/Tcl.xcodeproj/default.pbxuser: add test suite target that runs * macosx/Tcl.xcodeproj/project.pbxproj: the tcl test suite at build time and shows clickable test suite errors in the GUI build window. * tests/macOSXFCmd.test: fix use of deprecated resource fork paths. * unix/tclUnixInit.c (TclpInitLibraryPath): move code that is only needed when TCL_LIBRARY is defined to run only in that case. * generic/tclLink.c (LinkTraceProc): fix 64-bit signed-with-unsigned comparison warning from gcc4 -Wextra. FossilOrigin-Name: 8e0081af99484566f768574cb6062fcadb3acf72
* Various minor object file size efficiency fixes. [Bug 1530474]dkf2006-08-101-19/+21
| | | FossilOrigin-Name: a09967381cf3a88dc91d8eb051a73d82af962eb8
* typosdas2006-07-211-3/+3
| | | FossilOrigin-Name: eace2ae02f668920c5b87fc80917e2510e5c8330
* * macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent): createdas2006-07-204-56/+168
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | notifier thread lazily upon first call to Tcl_WaitForEvent() rather than in Tcl_InitNotifier(). Allows calling exeve() in processes where the event loop has not yet been run (Darwin's execve() fails in processes with more than one thread), in particular allows embedders to call fork() followed by execve(), previously the pthread_atfork() child handler's call to Tcl_InitNotifier() would immediately recreate the notifier thread in the child after a fork. * macosx/tclMacOSXFCmd.c (TclMacOSXCopyFileAttributes): add support * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): for weakly * unix/tclUnixInit.c (Tcl_GetEncodingNameFromEnvironment): importing symbols not available on OSX 10.2 or 10.3, enables binaires built on later OSX versions to run on earlier ones. * macosx/Tcl.xcodeproj/project.pbxproj: enable weak-linking; turn on extra warnings. * macosx/README: document how to enable weak-linking; cleanup. * unix/tclUnixPort.h: add support for weak-linking; conditionalize AvailabilityMacros.h inclusion; only disable realpath on 10.2 or earlier when threads are enabled. * unix/tclLoadDyld.c (TclpLoadMemoryGetBuffer): change runtime Darwin * unix/tclUnixInit.c (TclpInitPlatform): release check to use global initialized once. * unix/tclUnixFCmd.c (DoRenameFile, TclpObjNormalizePath): add runtime Darwin release check to determine if realpath is threadsafe. * unix/configure.in: add check on Darwin for compiler support of weak * unix/tcl.m4: import and for AvailabilityMacros.h header; move Darwin specific checks & defines that are only relevant to the tcl build out of tcl.m4; restrict framework option to Darwin; cleanup quoting and help messages. * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 * unix/tclLoadDyld.c (TclpLoadMemory): fix signed-with-unsigned comparison and other warnings from gcc4 -Wextra. FossilOrigin-Name: 95ec29253654b71bcf47e25490d735c73f08752b
* * macosx/tclMacOSXNotify.c: implemented pthread_atfork() handler thatdas2006-05-271-3/+112
| | | | | | | | | | | | | | | * unix/tcl.m4 (Darwin): recreates CoreFoundation state and notifier thread in the child after a fork(). Note that pthread_atfork() is available starting with Tiger only. Because vfork() is used by the core on Darwin, [exec]/[open] are not affected by this fix, only extensions or embedders that call fork() directly (such as TclX). However, this only makes fork() safe from corefoundation tcl with --disable-threads; as on all platforms, forked children may deadlock in threaded tcl due to the potential for stale locked mutexes in the child. [Patch 923072] * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59 FossilOrigin-Name: b5827f92284acd85c0238dca6591500033b9bde4
* updates for Xcode 2.3das2006-05-262-27/+3
| | | FossilOrigin-Name: 5a0445f00ffb8e6d52edd8feaad39b1497299e9a
* cosmetic fix to 'install' targetsdas2006-04-121-1/+3
| | | FossilOrigin-Name: e8ce97c351f5de4a94d7073c6fb36b1d54f75fc7
* * macosx/Tcl.xcode/default.pbxuser: add '-singleproc 1' cli arg todas2006-03-284-6/+10
| | | | | | | | | | * macosx/Tcl.xcodeproj/default.pbxuser: tcltest to ease test debugging. * macosx/Tcl.xcode/project.pbxproj: removed $prefix/share from * macosx/Tcl.xcodeproj/project.pbxproj: TCL_PACKAGE_PATH as per change to unix/configure.in of 2006-03-13. FossilOrigin-Name: 29d4b4d456bdc43a29d9532424039d0cde8e01fe
* * generic/tclInt.decls: implement globbing for HFS creator & typedas2006-03-211-30/+173
| | | | | | | | | | | * macosx/tclMacOSXFCmd.c: codes and 'hidden' flag, as documented in * tests/macOSXFCmd.test: glob.n; objectified OSType handling in [glob] * unix/tclUnixFile.c: and [file attributes]; fix globbing for hidden files with pattern==NULL arg. [Bug 823329] * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: make genstubs FossilOrigin-Name: c72a1b963bebae88298ba81a6d1a67515c913790
* * macosx/Tcl.xcode/project.pbxproj:das2005-12-142-0/+22
| | | | | | | | | * macosx/Tcl.xcodeproj/project.pbxproj: * unix/Makefile.in: add new tclTomMath* files. * generic/tclBasic.c: replace panic with Tcl_Panic. FossilOrigin-Name: 7decb8b713bf30160fcb3b4180068ed52377fe8a