>>>>> "shapj" == shapj <shapj@us.ibm.com> writes:
shapj> That won't work, because the quoting will merge all of the shapj> directories into a single element.
shapj> I see how to do it -- what's needed is an ifdef in the shapj> makefile itself. I'll deal with it tonight.
That does the trick, e.g. :
ifdef DIRS
@if [ -n "$(DIRS)" ]; then\ for i in $(DIRS); do \ if [ -d "$$i" ]; then\ $(MAKE) -C $$i $(MAKERULES) install; \ if [ $$? -ne 0 ]; then\ echo "*** RECURSIVE BUILD STOPS ***";\ exit 1;\ fi; \ fi; \ done; \ fi
I wrapped ALL the targets with ifdef, I don't know if that's necessary, but it was easy to do. Notice that it didn't require ifeq.
That got me all the way to the link phase where I ended up with a bunch of unresolved symbol errors :-(
I have included the full text from the point at which the error occurs. Most of the messages relate to __throw is missing. Is this the throw which should be part of "standard" C++ ?
Brian
make[4]: Leaving directory `/usr/local/eros/src/base/sys/arch/i486/boot' make[4]: Entering directory `/usr/local/eros/src/base/sys/arch/i486/gplus-lib' make[4]: Leaving directory `/usr/local/eros/src/base/sys/arch/i486/gplus-lib' make[4]: Entering directory `/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT' ld -static -N -Ttext 0x00101000 -nostdlib -o DEFAULT.eros lostart.o ../../gplus-lib/gnu_crt1.o kern_main.o memory.o interrupt.o Invoke.o IPC-vars.o IpcTrap.o IntTrap.o setjmp.o kern_Invoke.o UserContextIPC.o UserContextInvoke.o gdtasm.o GDT-table.o kern_IRQ.o db_interface.o db_disasm.o db_trace.o net_3c59x.o ide_ide.o ide_drive.o ide_chipset.o AutoConf.o SysConfig.o PhysMem386.o DMA.o IDT.o TSS.o Keyboard.o HardClock.o CMOS.o Console386.o Thread386.o KernContext.o ReservedFault.o PageFault.o PseudoInstr.o DebugException.o BadOpcode.o DivZeroFault.o GPFault.o SSFault.o SegPresFault.o BptTrap.o FpuTrap.o UserContext.o BIOS32.o Machine.o SysTrace.o IRQ386.o GDT.o longjmp.o kern_CpuReserve.o kern_CoreObHash.o kern_CoreObSleep.o kern_AutoConf.o kern_Node.o kern_util.o kern_MsgLog.o kern_Thread.o kern_IoRegion.o kern_Depend.o kern_Context.o kern_SysTimer.o kern_WallClock.o kern_eprintf.o kern_KeyRing.o kern_RamDisk.o kern_ObjectCache.o kern_ObjectHeader.o kern_PhysMem.o kern_Check.o kern_Checker.o kern_IdleThread.o kern_IntAction.o kern_Task.o kern_Twiddler.o kern_AnsiConsole.o kern_Persist.o kern_Profile.o kern_qsort.o kern_memory.o io_Request.o io_Partition.o io_RequestQueue.o io_NetDev.o io_NetInterface.o io_BlockDev.o io_BlockDevMount.o dsk_DiskNode.o dsk_DiskKey.o dsk_DivName.o dsk_KeyType.o dsk_DiskLSS.o ck_CoreDir.o ck_Checkpoint.o ck_ReadWrite.o ck_Retag.o ck_Restart.o ck_Generation.o ck_CoreDirTree.o ck_AllocMap.o pk_GateKey.o pk_NumberKey.o pk_DataPageKey.o pk_CapPageKey.o pk_NodeKey.o pk_SegmentKey.o pk_ProcessKey.o pk_SchedKey.o pk_RangeKey.o pk_DeviceKey.o pk_MiscKey.o mk_LogAppendKey.o mk_SleepKey.o mk_TimeOfDay.o mk_NetDevCreator.o mk_BlockDevCreator.o mk_KeyBits.o mk_Discrim.o mk_Returner.o mk_ProcessTool.o mk_TimePage.o mk_Checkpoint.o mk_ConsoleCreator.o mk_SchedCreator.o mk_SysTrace.o kern_Key.o pci_PCI.o pci_dev.o db_access.o db_break.o db_command.o db_examine.o db_expr.o db_input.o db_lex.o db_output.o db_print.o db_run.o db_sym.o db_trap.o db_vari ables.o db_write_cmd.o db_eros.o db_nmhack.o autoconf.o \
DebuggerStubs.o ../../gplus-lib/gplus-lib.a ../../gplus-lib/gnu_crtn.o
kern_main.o: In function `main_thread_entry(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_main.cxx:185: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_main.cxx:267: undefined reference to `terminate(void)'
kern_Invoke.o: In function `Process::DoGeneralKeyInvocation(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Invoke.cxx:955: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Invoke.cxx:1132: undefined reference to `terminate(void)'
ide_ide.o: In function `BlockDev type_info function':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kerninc/BlockDev.hxx(.text+0x184): undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kerninc/BlockDev.hxx(.text+0x1a3): undefined reference to `terminate(void)'
ide_ide.o: In function `global constructors keyed to ac_ide':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/arch/i486/device/ide_ide.cxx:80: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/arch/i486/device/ide_ide.cxx:80: undefined reference to `terminate(void)'
ide_ide.o: In function `ide_hwif type_info function':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/arch/i486/device/ide_ide.cxx:80: undefined reference to `__rtti_si'
ide_ide.o: In function `BlockDev type_info function':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kerninc/BlockDev.hxx(.gnu.linkonce.t.__tf8BlockDev+0x19): undefined reference to `__rtti_user'
kern_RamDisk.o: In function `RamDiskCtrlr type_info function':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_RamDisk.cxx:192: undefined reference to `__rtti_si'
kern_ObjectCache.o: In function `ObjectCache::Init(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_ObjectCache.cxx:98: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_ObjectCache.cxx:128: undefined reference to `Node::~Node(void)'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_ObjectCache.cxx:128: undefined reference to `terminate(void)'
kern_Persist.o: In function `Persist::RegisterDivision(Partition *, Division const &)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:121: undefined reference to `__throw'
kern_Persist.o: In function `Persist::ReadPageFrame(CoreDivision *, unsigned long, ObType::Type, unsigned long long, bool, unsigned long, bool)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:281: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:302: undefined reference to `terminate(void)'
kern_Persist.o: In function `Persist::GetPage(unsigned long long, unsigned long, ObType::Type, bool)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:676: undefined reference to `__throw'
kern_Persist.o: In function `Persist::WriteRangeHeaders(ObjectHeader *)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:910: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:939: undefined reference to `terminate(void)'
kern_Persist.o: In function `Persist::WritePageTo(ObjectHeader *, CoreDivision *, unsigned long, bool, void (*)(DuplexedIO *))':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:998: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kernel/kern_Persist.cxx:1026: undefined reference to `terminate(void)'
io_Partition.o: In function `Partition::Mount(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_Partition.cxx:132: undefined reference to `__throw'
io_NetDev.o: In function `NetDev type_info function':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kerninc/NetDev.hxx(.gnu.linkonce.t.__tf6NetDev+0x19): undefined reference to `__rtti_user'
io_NetInterface.o: In function `global constructors keyed to NetInterface::NetInterface(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_NetInterface.cxx:28: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_NetInterface.cxx:28: undefined reference to `terminate(void)'
io_NetInterface.o: In function `NetInterface type_info function':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/kerninc/NetInterface.hxx(.gnu.linkonce.t.__tf12NetInterface+0x19): undefined reference to `__rtti_user'
io_BlockDev.o: In function `BlockDev::DoDeviceRead(unsigned char, ObjectHeader *, unsigned long, unsigned long)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDev.cxx:231: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDev.cxx:238: undefined reference to `terminate(void)'
io_BlockDev.o: In function `BlockDev::DoDeviceWrite(unsigned char, ObjectHeader *, unsigned long, unsigned long)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDev.cxx:260: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDev.cxx:267: undefined reference to `terminate(void)'
io_BlockDev.o: In function `BlockDev::PlugAllBlockDevices(void (*)(DuplexedIO *))':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDev.cxx:302: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDev.cxx:319: undefined reference to `terminate(void)'
io_BlockDevMount.o: In function `BlockDev::DoAutoMount(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDevMount.cxx:173: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDevMount.cxx:225: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDevMount.cxx:277: undefined reference to `terminate(void)'
io_BlockDevMount.o: In function `BlockDev::CheckErosPartition(Partition *)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDevMount.cxx:292: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/IO/io_BlockDevMount.cxx:314: undefined reference to `terminate(void)'
ck_ReadWrite.o: In function `Checkpoint::RegisterDirtyObject(ObjectHeader *)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_ReadWrite.cxx:412: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_ReadWrite.cxx:505: undefined reference to `terminate(void)'
ck_ReadWrite.o: In function `Checkpoint::LoadCurrentPage(CoreDirent *)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_ReadWrite.cxx:714: undefined reference to `__throw'
ck_Retag.o: In function `Checkpoint::RetagFrame(unsigned long long, unsigned char)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_Retag.cxx:413: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_Retag.cxx:436: undefined reference to `terminate(void)'
ck_Restart.o: In function `Checkpoint::ReloadSavedThreads(void)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_Restart.cxx:281: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_Restart.cxx:304: undefined reference to `terminate(void)'
ck_Restart.o: In function `Checkpoint::AddCkDirent(CkptDirent &, unsigned char)':
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_Restart.cxx:315: undefined reference to `__throw'
/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT/../../../../../../base/sys/ckpt/ck_Restart.cxx:406: undefined reference to `terminate(void)'
make[4]: *** [DEFAULT.eros] Error 1
make[4]: Leaving directory `/usr/local/eros/src/base/sys/arch/i486/build/DEFAULT'
*** RECURSIVE BUILD STOPS ***
make[3]: *** [recursive-install] Error 1
make[3]: Leaving directory `/usr/local/eros/src/base/sys/arch/i486'
*** RECURSIVE BUILD STOPS ***
make[2]: *** [recursive-install] Error 1
make[2]: Leaving directory `/usr/local/eros/src/base/sys'
*** RECURSIVE BUILD STOPS ***
make[1]: *** [recursive-install] Error 1
make[1]: Leaving directory `/usr/local/eros/src/base'
*** RECURSIVE BUILD STOPS ***
make: *** [recursive-install] Error 1