# From "Thinking in C++, 2nd Edition, Volume 2" # by Bruce Eckel & Chuck Allison # Available at http:\\www.BruceEckel.com # (c)2004 MindView Inc. Copyright notice in Copyright.txt # Automatically-generated MAKEFILE # For examples in directory .\C11 # Invoke with: make compiler-name # or: make clean ifneq ($(MAKECMDGOALS),clean) include ..\$(MAKECMDGOALS).mac endif .SUFFIXES : .cpp .$(OBJEXT) .exe Borland: \ NoThread.exe \ BasicThreads.exe \ MoreBasicThreads.exe \ UnresponsiveUI.exe \ ResponsiveUI.exe \ ThreadedExecutor.exe \ PoolExecutor.exe \ ConcurrentExecutor.exe \ SynchronousExecutor.exe \ YieldingTask.exe \ SleepingTask.exe \ SimplePriorities.exe \ Incrementer.exe \ ReferenceCounting.exe \ EvenGenerator.exe \ MutexEvenGenerator.exe \ GuardedEvenGenerator.exe \ TemporaryUnlocking.exe \ TimedLocking.exe \ SynchronizedClass.exe \ ThreadLocalVariables.exe \ OrnamentalGarden.exe \ Interrupting.exe \ Interrupting2.exe \ Interrupting3.exe \ WaxOMatic.exe \ ToastOMatic.exe \ TestTQueue.exe \ ToastOMaticMarkII.exe \ CarBuilder.exe \ DeadlockingDiningPhilosophers.exe \ FixedDiningPhilosophers.exe \ TESTHEADER_LiftOff.exe \ TESTHEADER_EvenChecker.exe \ TESTHEADER_Display.exe \ TESTHEADER_TQueue.exe \ TESTHEADER_DiningPhilosophers.exe Microsoft: \ NoThread.exe \ BasicThreads.exe \ MoreBasicThreads.exe \ UnresponsiveUI.exe \ ResponsiveUI.exe \ ThreadedExecutor.exe \ PoolExecutor.exe \ ConcurrentExecutor.exe \ SynchronousExecutor.exe \ YieldingTask.exe \ SleepingTask.exe \ SimplePriorities.exe \ Incrementer.exe \ ReferenceCounting.exe \ EvenGenerator.exe \ MutexEvenGenerator.exe \ GuardedEvenGenerator.exe \ TemporaryUnlocking.exe \ TimedLocking.exe \ SynchronizedClass.exe \ ThreadLocalVariables.exe \ OrnamentalGarden.exe \ Interrupting.exe \ Interrupting2.exe \ Interrupting3.exe \ WaxOMatic.exe \ ToastOMatic.exe \ TestTQueue.exe \ ToastOMaticMarkII.exe \ CarBuilder.exe \ DeadlockingDiningPhilosophers.exe \ FixedDiningPhilosophers.exe \ TESTHEADER_LiftOff.exe \ TESTHEADER_EvenChecker.exe \ TESTHEADER_Display.exe \ TESTHEADER_TQueue.exe \ TESTHEADER_DiningPhilosophers.exe g++: \ NoThread.exe \ BasicThreads.exe \ MoreBasicThreads.exe \ UnresponsiveUI.exe \ ResponsiveUI.exe \ ThreadedExecutor.exe \ PoolExecutor.exe \ ConcurrentExecutor.exe \ SynchronousExecutor.exe \ YieldingTask.exe \ SleepingTask.exe \ SimplePriorities.exe \ Incrementer.exe \ ReferenceCounting.exe \ EvenGenerator.exe \ MutexEvenGenerator.exe \ GuardedEvenGenerator.exe \ TemporaryUnlocking.exe \ TimedLocking.exe \ SynchronizedClass.exe \ ThreadLocalVariables.exe \ OrnamentalGarden.exe \ Interrupting.exe \ Interrupting2.exe \ Interrupting3.exe \ WaxOMatic.exe \ ToastOMatic.exe \ TestTQueue.exe \ ToastOMaticMarkII.exe \ CarBuilder.exe \ DeadlockingDiningPhilosophers.exe \ FixedDiningPhilosophers.exe \ TESTHEADER_LiftOff.exe \ TESTHEADER_EvenChecker.exe \ TESTHEADER_Display.exe \ TESTHEADER_TQueue.exe \ TESTHEADER_DiningPhilosophers.exe edg: \ NoThread.exe \ BasicThreads.exe \ MoreBasicThreads.exe \ UnresponsiveUI.exe \ ResponsiveUI.exe \ ThreadedExecutor.exe \ PoolExecutor.exe \ ConcurrentExecutor.exe \ SynchronousExecutor.exe \ YieldingTask.exe \ SleepingTask.exe \ SimplePriorities.exe \ Incrementer.exe \ ReferenceCounting.exe \ EvenGenerator.exe \ MutexEvenGenerator.exe \ GuardedEvenGenerator.exe \ TemporaryUnlocking.exe \ TimedLocking.exe \ SynchronizedClass.exe \ ThreadLocalVariables.exe \ OrnamentalGarden.exe \ Interrupting.exe \ Interrupting2.exe \ Interrupting3.exe \ WaxOMatic.exe \ ToastOMatic.exe \ TestTQueue.exe \ ToastOMaticMarkII.exe \ CarBuilder.exe \ DeadlockingDiningPhilosophers.exe \ FixedDiningPhilosophers.exe \ TESTHEADER_LiftOff.exe \ TESTHEADER_EvenChecker.exe \ TESTHEADER_Display.exe \ TESTHEADER_TQueue.exe \ TESTHEADER_DiningPhilosophers.exe Metrowerks: \ NoThread.exe \ BasicThreads.exe \ MoreBasicThreads.exe \ UnresponsiveUI.exe \ ResponsiveUI.exe \ ThreadedExecutor.exe \ PoolExecutor.exe \ ConcurrentExecutor.exe \ SynchronousExecutor.exe \ YieldingTask.exe \ SleepingTask.exe \ SimplePriorities.exe \ Incrementer.exe \ ReferenceCounting.exe \ EvenGenerator.exe \ MutexEvenGenerator.exe \ GuardedEvenGenerator.exe \ TemporaryUnlocking.exe \ TimedLocking.exe \ SynchronizedClass.exe \ ThreadLocalVariables.exe \ OrnamentalGarden.exe \ Interrupting.exe \ Interrupting2.exe \ Interrupting3.exe \ WaxOMatic.exe \ ToastOMatic.exe \ TestTQueue.exe \ ToastOMaticMarkII.exe \ CarBuilder.exe \ DeadlockingDiningPhilosophers.exe \ FixedDiningPhilosophers.exe \ TESTHEADER_LiftOff.exe \ TESTHEADER_EvenChecker.exe \ TESTHEADER_Display.exe \ TESTHEADER_TQueue.exe \ TESTHEADER_DiningPhilosophers.exe DigitalMars: \ NoThread.exe \ BasicThreads.exe \ MoreBasicThreads.exe \ UnresponsiveUI.exe \ ResponsiveUI.exe \ ThreadedExecutor.exe \ PoolExecutor.exe \ ConcurrentExecutor.exe \ SynchronousExecutor.exe \ YieldingTask.exe \ SleepingTask.exe \ SimplePriorities.exe \ Incrementer.exe \ ReferenceCounting.exe \ EvenGenerator.exe \ MutexEvenGenerator.exe \ GuardedEvenGenerator.exe \ TemporaryUnlocking.exe \ TimedLocking.exe \ ThreadLocalVariables.exe \ OrnamentalGarden.exe \ Interrupting.exe \ Interrupting2.exe \ Interrupting3.exe \ WaxOMatic.exe \ ToastOMatic.exe \ TestTQueue.exe \ ToastOMaticMarkII.exe \ CarBuilder.exe \ DeadlockingDiningPhilosophers.exe \ FixedDiningPhilosophers.exe \ TESTHEADER_LiftOff.exe \ TESTHEADER_EvenChecker.exe \ TESTHEADER_Display.exe \ TESTHEADER_TQueue.exe \ TESTHEADER_DiningPhilosophers.exe CodeWizard: CodeWizard *.cpp clean: ifeq ($(notdir $(SHELL)),COMMAND.COM) del *.o del *.obj del *.exe del *.tds del *.map else rm -f *.o *.obj *.exe *.tds *.map endif NoThread.exe: NoThread.cpp $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ BasicThreads.exe: BasicThreads.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ BasicThreads.$(OBJEXT): BasicThreads.cpp MoreBasicThreads.exe: MoreBasicThreads.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ MoreBasicThreads.$(OBJEXT): MoreBasicThreads.cpp UnresponsiveUI.exe: UnresponsiveUI.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread UnresponsiveUI.$(OBJEXT): UnresponsiveUI.cpp ResponsiveUI.exe: ResponsiveUI.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread ResponsiveUI.$(OBJEXT): ResponsiveUI.cpp ThreadedExecutor.exe: ThreadedExecutor.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ ThreadedExecutor.$(OBJEXT): ThreadedExecutor.cpp PoolExecutor.exe: PoolExecutor.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ PoolExecutor.$(OBJEXT): PoolExecutor.cpp ConcurrentExecutor.exe: ConcurrentExecutor.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ ConcurrentExecutor.$(OBJEXT): ConcurrentExecutor.cpp SynchronousExecutor.exe: SynchronousExecutor.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ SynchronousExecutor.$(OBJEXT): SynchronousExecutor.cpp YieldingTask.exe: YieldingTask.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ YieldingTask.$(OBJEXT): YieldingTask.cpp SleepingTask.exe: SleepingTask.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ SleepingTask.$(OBJEXT): SleepingTask.cpp SimplePriorities.exe: SimplePriorities.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ SimplePriorities.$(OBJEXT): SimplePriorities.cpp Incrementer.exe: Incrementer.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread Incrementer.$(OBJEXT): Incrementer.cpp ReferenceCounting.exe: ReferenceCounting.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ ReferenceCounting.$(OBJEXT): ReferenceCounting.cpp EvenGenerator.exe: EvenGenerator.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ EvenGenerator.$(OBJEXT): EvenGenerator.cpp MutexEvenGenerator.exe: MutexEvenGenerator.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread MutexEvenGenerator.$(OBJEXT): MutexEvenGenerator.cpp GuardedEvenGenerator.exe: GuardedEvenGenerator.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread GuardedEvenGenerator.$(OBJEXT): GuardedEvenGenerator.cpp TemporaryUnlocking.exe: TemporaryUnlocking.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ TemporaryUnlocking.$(OBJEXT): TemporaryUnlocking.cpp TimedLocking.exe: TimedLocking.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ TimedLocking.$(OBJEXT): TimedLocking.cpp SynchronizedClass.exe: SynchronizedClass.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ SynchronizedClass.$(OBJEXT): SynchronizedClass.cpp ThreadLocalVariables.exe: ThreadLocalVariables.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread ThreadLocalVariables.$(OBJEXT): ThreadLocalVariables.cpp OrnamentalGarden.exe: OrnamentalGarden.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread OrnamentalGarden.$(OBJEXT): OrnamentalGarden.cpp Interrupting.exe: Interrupting.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ Interrupting.$(OBJEXT): Interrupting.cpp Interrupting2.exe: Interrupting2.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ Interrupting2.$(OBJEXT): Interrupting2.cpp Interrupting3.exe: Interrupting3.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread Interrupting3.$(OBJEXT): Interrupting3.cpp WaxOMatic.exe: WaxOMatic.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread WaxOMatic.$(OBJEXT): WaxOMatic.cpp ToastOMatic.exe: ToastOMatic.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread ToastOMatic.$(OBJEXT): ToastOMatic.cpp TestTQueue.exe: TestTQueue.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread TestTQueue.$(OBJEXT): TestTQueue.cpp ToastOMaticMarkII.exe: ToastOMaticMarkII.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread ToastOMaticMarkII.$(OBJEXT): ToastOMaticMarkII.cpp CarBuilder.exe: CarBuilder.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread CarBuilder.$(OBJEXT): CarBuilder.cpp DeadlockingDiningPhilosophers.exe: DeadlockingDiningPhilosophers.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread DeadlockingDiningPhilosophers.$(OBJEXT): DeadlockingDiningPhilosophers.cpp FixedDiningPhilosophers.exe: FixedDiningPhilosophers.$(OBJEXT) $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread FixedDiningPhilosophers.$(OBJEXT): FixedDiningPhilosophers.cpp TESTHEADER_LiftOff.exe: TESTHEADER_LiftOff.cpp $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ TESTHEADER_EvenChecker.exe: TESTHEADER_EvenChecker.cpp $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ TESTHEADER_Display.exe: TESTHEADER_Display.cpp $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ TESTHEADER_TQueue.exe: TESTHEADER_TQueue.cpp $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@ TESTHEADER_DiningPhilosophers.exe: TESTHEADER_DiningPhilosophers.cpp $(CPP) $(CPPFLAGS) $(EXEFLAG)$@ $^ $(LIBLINK)ZThread $@