RJLRef: $RBGB/bdeBuilds.050823 ========================================================= Four bde.exe versions fully rebuilt tonight: Run xmkmf -a each time: once with -DLOG on mercury; once after configure.h workaround -define LOG 1 on saturn. TBD: avoid this work-around somehow. 3 out of 4 checked-in Imakefiles now do all 4 versions: Imakefiles are in bde, pr_util_log, pr_util_nolog, and src. The used Imakefiles are bde/Imakefile, bde/src/Imakefile, and either bde/pr_util_nolog/Imakefile or bde/pr_util_log/Imakefile. During xmkmf -a [-DLOG], bde/Imakefile redefines SUBDIRS conditionally on -DLOG and generates two new Makefiles there: ------------------------- #ifdef GENLOG PRDIR = $(TOP)/pr_util_log #endif #ifndef GENLOG PRDIR = $(TOP)/pr_util_nolog #endif SUBDIRS = $(PRDIR) src PROBJDIR = $(PRDIR)/$(HOSTTYPE)/probj BINDIR = $(PRDIR)/$(HOSTTYPE)/bin OBJDIR = $(PRDIR)/$(HOSTTYPE)/obj ------------------------- New Makefiles are generated in bde, bde/src and bde/$(PRDIR). Makefile in $PRDIR builds the library pr_util.a; Makefile in src builds the executable in $PRDIR/$HOSTTYPE/bin. ======================================================================= Here are the executables: --------------------- mercury.cs.uml.edu(14)> lg */*/bin/bde.exe -rwx--x--x 1 lechner 04f522 7010864 Aug 23 20:21 pr_util_log/alpha/bin/bde.exe -rwx--x--x 1 lechner fac 2111364 Aug 23 20:55 pr_util_log/i386-linux/bin/bde.exe -rwx--x--x 1 lechner 04f522 6775200 Aug 23 20:12 pr_util_nolog/alpha/bin/bde.exe -rwx--x--x 1 lechner fac 1975405 Aug 23 20:35 pr_util_nolog/i386-linux/bin/bde.exe ---------------------- ===================================== Other differences between builds: Which src and obj directories are used? GOAL: pr_util_[no]log for auto-generated pr*.c files, depending in chgen3 log option, pr_util_[no]log/$HOSTTYPE/probj for .o files from pr_util..., pr_util_[no]log/$HOSTTYPE/obj for compiled bde/src files (the shared bde/src). Current status: src/*.cc is copied to pr_util_[no]log/obj by the Makefile there, Each new build recommpiles ALL src and pr_util_* files not just those which changed. TBD: Make sure old bde/src/*.o are not assumed to be valid on both platforms. TBD: Arrangeto recompile ONLY the changed files, as make intended. Inspecting make progress for paths: =================================================================== CONCLUSION 1: saturn without log: Copies *.cc from src to ../pr_util_nolog/alpha/obj but then compiles src/*.cc to src/*.o and links src/*.o and ../pr_util_nolog/alpha/probj/pr_util.a to ../pr_util_nolog/alpha/bin/bde.exe ---------------------------------------------------------------------- CONCLUSION 2: saturn with #define LOG 1 in bde/configure.h: Same as nolog behavior: Copies pr_*.c from ../pr_util_log to ../pr_util_log/alpha/probj and compiles to pr_util.a `there; Compiles src/*.cc in src, and links src/*.o and ../pr_util_log/alpha/probj/pr_util.a to ../pr_util_log/alpha/bin/bde.exe --------------------------------------------------------------------------- CONCLUSION 3: (mercury nolog: no record) -------------------------------------------------------------------- CONCLUSION 4: mercury with xmkmf -a -DLOG: pr_util_log/Makefile copies ../pr_util_log/pr_*.c to ../pr_util_log/i386-linux/probj, compiles and links pr_*.o there into pr_util.a. Then src/Makefile copies src/*.cc to ../pr_util_log/i386-linux/obj and compiles src/*.cc to src/*.o Finally, it links these + ../pr_util_log/i386-linux/probj/pr_util.a into ../pr_util_log/i386-linux/bin/bde.exe ===============================================================================