CC=gcc
REN=mv
CFLAGS=-Wall -MD -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wwrite-strings -W -Wcast-align -Waggregate-return -Wbad-function-cast -Wcast-qual -O2 -g -Wundef -Wredundant-decls -Wsign-compare 
#-Wunreachable-code -Wmissing-noreturn 
#-Wconversion
#-Wtraditional 
#--static 
# -g
#-pedantic
#-nostdinc 


#-Werror 
#-fstack-check
#s -fomit-frame-pointer
#g
#-fcheck-memory-usage

OBJS=lang.o fnctdsk.o analyse.o testdisk.o readpart.o godmode.o bsd.o common.o fat.o mbrmanip.o ext2.o bfs.o swap.o netware.o intrface.o hdaccess.o ntfs.o rfs.o lvm.o dir_ext2.o dir_fat.o md.o

default:
	@echo "make linux"
	@echo "make linux_no_e2fs : Linux version without e2fs"
	@echo "make dos"
	@echo "make dos_no_e2fs   : Dos version without e2fs"
	@echo "make bsd"
	@echo "make bsd_no_e2fs"  : BSD version without e2fs

linux:
	$(MAKE) testdisk CFLAGS="$(CFLAGS) -DLINUX -DHAVE_E2FS -pipe" LDFLAGS="-lncurses -lext2fs"

linux_no_ext2fs:
	$(MAKE) testdisk CFLAGS="$(CFLAGS) -DLINUX -pipe" LDFLAGS="-lncurses"

dos:
	$(MAKE) testdisk.exe CFLAGS="$(CFLAGS) -DHAVE_E2FS -I." OBJS="$(OBJS)  ext2fs/libext2fs.a" LDFLAGS="-lpdcurses"

dos_no_e2fs:
	$(MAKE) testdisk.exe LDFLAGS="-lpdcurses"

bsd_no_e2fs:
	$(MAKE) testdisk CFLAGS="$(CFLAGS) -DBSD -pipe" LDFLAGS="-lncurses"

bsd:
	$(MAKE) testdisk CFLAGS="$(CFLAGS) -DBSD -DHAVE_E2FS -pipe -I." OBJS="$(OBJS) ../../e2fsprogs-1.26/lib/ext2fs/libext2fs.a" LDFLAGS="-lncurses"

linuxtest:
#	$(MAKE) testdisk CFLAGS="$(CFLAGS) -DLINUX" LDFLAGS="-lncurses_g -g /usr/lib/ccmalloc.o -ldl"
	$(MAKE) testdisk CFLAGS="$(CFLAGS) -DLINUX" LDFLAGS="-lncurses /usr/lib/ccmalloc.o -ldl"


testdisk: $(OBJS)
	$(CC) $(CFLAGS) -o testdisk $(OBJS) $(LDFLAGS)

testdisk.exe: $(OBJS)
	$(CC) $(CFLAGS) -o testdisk.exe $(OBJS) $(LDFLAGS)

#-lcurses 
#-lncurses_g -g /usr/lib/ccmalloc.o -ldl
#-lccmalloc -ldl
#-static -s

mbrmanip.o: mbrmanip.c types.h common.h fnctdsk.h lang.h hdaccess.h
	$(CC) $(CFLAGS) -c mbrmanip.c

readpart.o: readpart.c readpart.h lang.h common.h testdisk.h fnctdsk.h analyse.h hdaccess.h fat.h intrface.h
	$(CC) $(CFLAGS) -c readpart.c

common.o: common.c common.h
	$(CC) $(CFLAGS) -c common.c

fat.o: fat.c types.h common.h fat.h lang.h hdaccess.h fnctdsk.h testdisk.h intrface.h
	$(CC) $(CFLAGS) -c fat.c

dir_fat.o: dir_fat.c types.h common.h fat.h lang.h hdaccess.h fnctdsk.h testdisk.h intrface.h
	$(CC) $(CFLAGS) -c dir_fat.c

ntfs.o: ntfs.c types.h common.h intrface.h ntfs.h fnctdsk.h lang.h hdaccess.h
	$(CC) $(CFLAGS) -c ntfs.c

bsd.o: bsd.c types.h common.h fnctdsk.h bsd.h intrface.h fnctdsk.h hdaccess.h
	$(CC) $(CFLAGS) -c bsd.c

ext2.o: ext2.c types.h common.h ext2.h intrface.h fnctdsk.h hdaccess.h
	$(CC) $(CFLAGS) -c ext2.c

bfs.o: bfs.c types.h common.h bfs.h intrface.h fnctdsk.h hdaccess.h
	$(CC) $(CFLAGS) -c bfs.c

netware.o: netware.c types.h common.h netware.h 
	$(CC) $(CFLAGS) -c netware.c

swap.o: swap.c types.h common.h swap.h  fnctdsk.h hdaccess.h
	$(CC) $(CFLAGS) -c swap.c

md.o: md.c types.h common.h md.h intrface.h fnctdsk.h hdaccess.h
	$(CC) $(CFLAGS) -c md.c

testdisk.o:  testdisk.c types.h common.h testdisk.h lang.h intrface.h godmode.h fnctdsk.h
	$(CC) $(CFLAGS) -c testdisk.c

analyse.o:  analyse.c types.h common.h fnctdsk.h hdaccess.h analyse.h bfs.h testdisk.h swap.h netware.h intrface.h rfs.h
	$(CC) $(CFLAGS) -c analyse.c

godmode.o:  godmode.c types.h common.h fnctdsk.h analyse.h lang.h testdisk.h fat.h intrface.h hdaccess.h
	$(CC) $(CFLAGS) -c godmode.c

fnctdsk.o: fnctdsk.c types.h common.h fnctdsk.h lang.h testdisk.h hdaccess.h intrface.h analyse.h
	$(CC) $(CFLAGS) -c fnctdsk.c

lang.o: lang.c
	$(CC) $(CFLAGS) -c lang.c

hdaccess.o:   hdaccess.c types.h common.h hdaccess.h intrface.h 
	$(CC) $(CFLAGS) -c hdaccess.c

intrface.o: intrface.c types.h common.h lang.h intrface.h readpart.h godmode.h fnctdsk.h testdisk.h lang.h hdaccess.h fat.h ntfs.h
	$(CC) $(CFLAGS) -c intrface.c

rfs.o: rfs.c types.h common.h rfs.h fnctdsk.h
	$(CC) $(CFLAGS) -c rfs.c

lvm.o: lvm.c types.h common.h lvm.h fnctdsk.h
	$(CC) $(CFLAGS) -c lvm.c

dir_ext2.o: dir_ext2.c types.h common.h intrface.h hdaccess.h
	$(CC) $(CFLAGS) -c dir_ext2.c

clean:
	rm -f *.o *~ *.d core *.bak

zip:
	rm -f testdisk.zip
	zip testdisk.zip *

