FPCDIR = ../fpc
GVDIR = .
ifdef DJ
OUTPUTDIR = djout
else
OUTPUTDIR = linuxout
endif
PFLAGS := $(PFLAGS) -vh- -g -FE$(OUTPUTDIR) 

APIDIRS = -Fu$(FPCDIR)/api
FVDIRS = -Fi$(FPCDIR)/fv -Fu$(FPCDIR)/fv/base -Fu$(FPCDIR)/fv/dialogs
GVDIRS = -Fu$(GVDIR) -Fi$(GVDIR) -Fu$(GVDIR)/fpc -Fi$(GVDIR)/fpc
ifdef DJ
APIDIRS := $(APIDIRS) -Fu$(FPCDIR)/api/go32v2 -Fi$(FPCDIR)/api/go32v2
else
APIDIRS := $(APIDIRS) -Fu$(FPCDIR)/api/linux -Fi$(FPCDIR)/api/linux
GVDIRS := $(GVDIRS) -Fi$(GVDIR)/fpc/linux
SVGALIBDIRS = -Fu$(FPCDIR)/svgalib
endif
BITMAPSDIR = $(FPCDIR)/bitmaps
BITMAPSDIRS = -Fu$(BITMAPSDIR)
## order important:
ifdef NC
ALLDIRS = $(GVDIRS) -Fi$(FPCDIR)/fv
else
ALLDIRS = $(APIDIRS) $(FVDIRS) $(GVDIRS) $(SVGALIBDIRS)
endif

PPC = ppc386 -Fu$(OUTPUTDIR) $(PFLAGS) $(ALLDIRS) 

all: fpc/gvd

%: %.pas bitmaps
	$(PPC) $<

%: %.pp bitmaps
	$(PPC) $<

## Bitmap subsystem

bitmaps: $(OUTPUTDIR)/bmp.ppu $(OUTPUTDIR)/bitmaps.ppu $(OUTPUTDIR)/colors.ppu \
	$(OUTPUTDIR)/bmpres.ppu

BITMAPSPFLAGS = -S2 $(BITMAPSDIRS)

$(OUTPUTDIR)/bmp.ppu: $(BITMAPSDIR)/bmp.pp $(BITMAPSDIR)/bitmaps.pp $(BITMAPSDIR)/colors.pp
	$(PPC) $(BITMAPSPFLAGS) $<

$(OUTPUTDIR)/bmpres.ppu: $(BITMAPSDIR)/bmpres.pp $(BITMAPSDIR)/bitmaps.pp $(BITMAPSDIR)/colors.pp
	$(PPC) $(BITMAPSPFLAGS) $<

$(OUTPUTDIR)/bitmaps.ppu: $(BITMAPSDIR)/bitmaps.pp $(BITMAPSDIR)/colors.pp
	$(PPC) $(BITMAPSPFLAGS) $<

$(OUTPUTDIR)/colors.ppu: $(BITMAPSDIR)/colors.pp
	$(PPC) $(BITMAPSPFLAGS) $<

### Language scripts
$(GVDIR)/fpc/german.gvf: $(GVDIR)/gvlc $(GVDIR)/german.gvs
	$(GVDIR)/gvlc $@ $(GVDIR)/german.gvs

$(GVDIR)/fpc/english.gvf: $(GVDIR)/gvlc $(GVDIR)/english.gvs
	$(GVDIR)/gvlc $@ $(GVDIR)/english.gvs

$(GVDIR)/fpc/demoger.gvf: $(GVDIR)/gvlc $(GVDIR)/german.gvs $(GVDIR)/demoger.gvs
	$(GVDIR)/gvlc $@ $(GVDIR)/german.gvs $(GVDIR)/demoger.gvs

$(GVDIR)/fpc/demoeng.gvf: $(GVDIR)/gvlc $(GVDIR)/english.gvs $(GVDIR)/demoeng.gvs
	$(GVDIR)/gvlc $@ $(GVDIR)/english.gvs $(GVDIR)/demoeng.gvs

$(GVDIR)/fpc/exam.gvf: $(GVDIR)/gvlc $(GVDIR)/english.gvs $(GVDIR)/exam.gvs
	$(GVDIR)/gvlc $@ $(GVDIR)/english.gvs $(GVDIR)/exam.gvs

gvf-files: $(GVDIR)/fpc/german.gvf $(GVDIR)/fpc/english.gvf \
	$(GVDIR)/fpc/demoger.gvf $(GVDIR)/fpc/demoeng.gvf

### Icon conversion

%.pbm: %.asi
	@echo "P1" > $@
	@echo "16" >> $@
	@wc --lines < $*.asi >> $@
	@tr -d -c '01\n' < $*.asi | sed 's/0/0 /g;s/1/1 /g;' >> $@

icons.pbm: 
	pnmcat -white -lr -jtop icon??.pbm > icons.pbm

%.bmp: %.pbm
	@ppmtobmp -windows $*.pbm > $@


###

clean:
	-rm `find . -name "*.o"`
	-rm `find . -name "*.ppu"`

snapshot:
	tar cfz /scratch/gvfpc-`date +'%d-%b-%Y'`.tgz --directory=/dos/home/mkm/m $(TARFLAGS) --verbose \
		gvx fpc/api fpc/fv fpc/svgalib fpc/bitmaps gvfpc.txt \
		--exclude="*RCS*" --exclude="*~*" --exclude="*bak" \
		--exclude="*TAGS" --exclude="*.rws" --exclude="*.ppu" \
		--exclude="*.tpu" --exclude="*.tpw" --exclude="*.tpp" \
		--exclude="*#*" --exclude="*.psm" --exclude="*.dsk" --exclude="*.tdw" \
		--exclude="*.o" --exclude="*.s"  --exclude="*.obj" \
		--exclude="*obsolete*" --exclude="*core" \
		--exclude="*gvx/win/*" --exclude="*gvx/dos/*" --exclude="*gvx/doc/*" \
		--exclude="*gvx/fpc/tests/*" --exclude="*linuxout/*" --exclude="*djout/*" 

gvdoc:
	tar cfz /scratch/gvdoc-`date +'%d-%b-%Y'`.tgz --directory=/dos/home/mkm/m $(TARFLAGS) --verbose \
		gvx/doc \
		--exclude="*.i.tex" --exclude="*.dvi" --exclude="*.h.tex" \
		--exclude="*.ilg" --exclude="*.toc" --exclude="*.s" \
		--exclude="*.ind" --exclude="*.aux" --exclude="*.tph" \
		--exclude="*.log" \

gv:
	cd /dos/home/mkm/m; zip /scratch/gv-`date +'%d-%b-%Y'`.zip \
		gvx/* gvx/dos/* gvx/win/* gvx/doc/* \
		-x "*RCS*" "*~*" "*bak" "*#*"\
		"*TAGS" "*.rws" "*.ppu" "*/icon*.*" \
		"*.o" "*/gvd" "*/gvlc" "*.psm" "*.dsk" "*.dpr" \
		"*.tpu" "*.tpp" "*.tpw" "*.tp" "*.tfa" "*.tdw" "*.dof" \
		"*obsolete*" 
