mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-09-06 09:06:54 +02:00
MAGIC_VERSION / MAGIC_REVISION / MAGIC_COMMIT / MAGIC_BUILDDATE were on the
global DFLAGS, so every object's compile command line carried them. Because
the command line is part of ccache/sccache's hash key and MAGIC_BUILDDATE
changes every second, that meant a cache miss on every unit on every build;
it also smeared the baked-in date/commit across "whenever each file last
recompiled".
Move the four values into a single translation unit:
* utils/magic_buildinfo.h -- extern MagicVersion/MagicRevision/MagicCommit/
MagicCompileTime (MagicCommit is new; the other three moved here from
utils/magic.h, which now includes this header).
* utils/buildinfo.c -- the ONLY unit compiled with the version defines
(target-specific `buildinfo.o: DFLAGS += ${DFLAGS_MAGICVERSION}` in
utils/Makefile.in); it defines the four globals. ${DFLAGS_MAGICVERSION}
is removed from the global DFLAGS/DFLAGS_NOSTUB.
Consumers updated to read the runtime symbol instead of the compile-time
macro:
* magicTop.c / tclmagic.c no longer define the globals (the MAGIC_WRAPPER
duplicate-symbol guard is gone -- buildinfo.o owns them for every variant,
including WASM, which links both mains).
* Tcl_PkgProvide/PkgRequire in router/ext2spice/lef/ext2sim/plot/tclmagic
now pass MagicVersion.
* extflat: EFVersion (a static-initialized copy of MAGIC_VERSION) is dropped;
EFread.c compares the .ext version against MagicVersion directly -- the same
value ExtCell.c already *writes* into .ext files, so read and write are now
consistent.
Verified: only buildinfo.o carries -DMAGIC_* (hash/DBio/windCmdSZ carry none);
Tcl (375 files) and --without-tcl builds rc=0, version/commit/date embedded in
tclmagic.so, magicTop.o no longer defines MagicVersion; in-tree source clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
32 lines
1.2 KiB
Makefile
32 lines
1.2 KiB
Makefile
#
|
|
# rcsid $Header: /usr/cvsroot/magic-8.0/utils/Makefile,v 1.2 2008/12/04 16:21:44 tim Exp $
|
|
#
|
|
|
|
MODULE = utils
|
|
# Provided by configure: the module's source dir + the build top.
|
|
# defs.mak sees `srcdir` already set and skips its own srcdir derivation.
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
MAGICDIR = @top_builddir@
|
|
LIB_SRCS = LIBdbio.c LIBmain.c LIBtextio.c
|
|
SRCS = args.c buildinfo.c child.c dqueue.c finddisp.c flock.c flsbuf.c fraction.c \
|
|
geometry.c getrect.c hash.c heap.c ihash.c list.c lookup.c \
|
|
lookupany.c lookupfull.c macros.c main.c malloc.c match.c \
|
|
maxrect.c netlist.c niceabort.c parser.c path.c pathvisit.c \
|
|
port.c printstuff.c signals.c stack.c strdup.c runstats.c set.c \
|
|
show.c tech.c touchtypes.c undo.c
|
|
|
|
include ${MAGICDIR}/defs.mak
|
|
|
|
# The following required to pass XLIB to the macros.c routines.
|
|
DFLAGS += ${GR_DFLAGS}
|
|
CFLAGS += ${GR_CFLAGS}
|
|
|
|
include ${MAGICSRC}/rules.mak
|
|
|
|
# buildinfo.c is the ONLY unit that consumes the version defines; they are no
|
|
# longer on the global DFLAGS (that kept the ever-changing MAGIC_BUILDDATE off
|
|
# every other compile command line, so ccache/sccache keys stay stable). Apply
|
|
# them just here, target-specifically.
|
|
buildinfo.o: DFLAGS += ${DFLAGS_MAGICVERSION}
|