TARGET     = ISO9660$(EXEEXT)
LEAK_CHECK = LeakCheck$(TARGET)
SOURCES    = main.cpp ISO9660.cpp CString.cpp VirtualCD.cpp

CXXFLAGS = -Wall -g
INCLUDE  = -idirafter .

OBJECTS = $(SOURCES:.cpp=.o)

all : $(TARGET)

$(TARGET): $(OBJECTS)
	$(CXX) $(OBJECTS) -o $(TARGET)


.SUFFIXES: .cpp .o
.cpp.o:
	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<

depend:
	$(CXX) -MM $(INCLUDE) $(CXXFLAGS) $(SOURCES) > dependencies

test : $(TARGET)
	cd ISO9660-Test; $(MAKE)

clean :
	rm -f $(OBJECTS) $(LEAK_CHECK) $(TARGET)
	cd ISO9660-Test; $(MAKE) $@

$(LEAK_CHECK) : $(OBJECTS) ./LeakTracer/LeakTracer.o
	$(CXX) $(OBJECTS) ./LeakTracer/LeakTracer.o -o $(LEAK_CHECK)

./LeakTracer/LeakTracer.o :
	cd LeakTracer; $(MAKE)

leakcheck : leakcheck1 leakcheck2 leakcheck3 leakcheck4 leakcheck5 leakcheck6 leakcheck7 leakcheck8

# ls 正常に行なえる場合
leakcheck1 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso ls SERVERS/FILE
	leak-analyze $(LEAK_CHECK)

# ls ディレクトリがない場合
leakcheck2 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso ls HOGE
	leak-analyze $(LEAK_CHECK)

# cp ファイルがある場合
leakcheck3 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso cp MAKEFILE testMakefile
	rm -f testMakefile
	leak-analyze $(LEAK_CHECK)

# cp ファイルがない場合
leakcheck4 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso cp MAKEFIL testMakefile
	leak-analyze $(LEAK_CHECK)

# read ファイルがある場合
leakcheck5 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso read MAKEFILE
	rm -f testMakefile
	leak-analyze $(LEAK_CHECK)

# read ファイルがない場合
leakcheck6 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso read SERVERS/MAKEFIL
	leak-analyze $(LEAK_CHECK)

# ls 正常に行なえる場合
leakcheck7 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso ls -l SERVERS/FILE
	leak-analyze $(LEAK_CHECK)

# ls ディレクトリがない場合
leakcheck8 : $(LEAK_CHECK)
	rm -f leak.out
	$(LEAK_CHECK) sample.iso ls -l HOGE
	leak-analyze $(LEAK_CHECK)



include dependencies
