LOCALM3FLAGS = -D$(ILUHOME)/include -L$(ILUHOME)/lib
LOCALINCLUDES = -I$(ILUHOME)/include
ILULIBS = $(ILUHOME)/lib/libilu-c++.a $(ILUHOME)/lib/libilu.a

NormalObjectRule()
DependTarget()

# A simple Foo.O client and server, which don't use any name service.
M3LibraryTarget(libfoo.a, IluM3Files(Foo), -lilu-m3)
M3ProgramTarget(FooM3Server, FooM3Server.m3 libfoo.a, -lilu-m3 -lilu)
M3ProgramTarget(FooM3Client, FooM3Client.m3 libfoo.a, -lilu-m3 -lilu)

# A simple Bar.P server
M3LibraryTarget(libbar.a, IluM3Files(Bar), -lilu-m3)
M3ProgramTarget(BarM3Server, BarM3Server.m3 libbar.a, -lilu-m3 -lilu)
M3ProgramTarget(BarM3Client, BarM3Client.m3 libbar.a, -lilu-m3 -lilu)

# A simple Baz.O server
M3LibraryTarget(libbaz.a, IluM3Files(Baz) libbar.a libfoo.a, -lilu-m3)
M3ProgramTarget(BazM3Server, BazM3Server.m3 libbaz.a libbar.a libfoo.a, -lilu-m3 -lilu)
M3ProgramTarget(BazM3Client, BazM3Client.m3 libbaz.a libbar.a libfoo.a, -lilu-m3 -lilu)

# A slightly more complex Foo.O client and server, which use NameServer
M3ProgramTarget(FooM3Server2, FooM3Server2.m3 libfoo.a, -lilunms-m3 -lilu-m3 -lilu)
M3ProgramTarget(FooM3Client2, FooM3Client2.m3 libfoo.a, -lilunms-m3 -lilu-m3 -lilu)

ILUCPlusPlusTarget(Foo.H Foo.cc Foo-server-stubs.cc, Foo.isl)
DepObjectTarget(FooCppServer.o, Foo.H)
DepObjectTarget(Foo.o, Foo.H)
DepObjectTarget(Foo-server-stubs.o, Foo.H)
CPlusPlusProgramTarget(FooCppServer, FooCppServer.o Foo.o Foo-server-stubs.o, $(ILULIBS),)
