SRCDIR = ..
BUILDDIR = ..
include $(BUILDDIR)/Makefile.config

LIBROOT = ppm
LIBPPM = $(NETPBMSHLIBPREFIX)$(LIBROOT).$(NETPBMLIBSUFFIX)
MAJ = 9
MIN = 16

ifeq ($(STATICLIB_TOO),y)
EXTRA_STATICLIB = lib$(LIBROOT).$(STATICLIBSUFFIX)
else
EXTRA_STATICLIB =
endif

PGMDIR = $(BUILDDIR)/pgm
LIBPGM = $(NETPBMSHLIBPREFIX)pgm.$(NETPBMLIBSUFFIX)

PBMDIR = $(BUILDDIR)/pbm
LIBPBM = $(NETPBMSHLIBPREFIX)pbm.$(NETPBMLIBSUFFIX)

INCLUDE= -I$(SRCDIR)/shhopt

ifneq ($(LINUXSVGAHDR_DIR),NONE)
  INCLUDE += -I$(LINUXSVGAHDR_DIR)
endif

NETPBMLIBS = $(LIBPPM) $(PBMDIR)/$(LIBPBM) $(PGMDIR)/$(LIBPGM)
LIBLIBS = $(PBMDIR)/$(LIBPBM) $(PGMDIR)/$(LIBPGM)

ifeq ($(LINUXSVGALIB_DIR),NONE)
  LINUXSVGALD =
else
  LINUXSVGALD = -L$(LINUXSVGALIB_DIR) -lvga -lm
endif

PORTBINARIES =	411toppm bmptoppm eyuvtoppm gouldtoppm ilbmtoppm imgtoppm \
		leaftoppm mtvtoppm neotoppm \
		pcxtoppm pgmtoppm pi1toppm picttoppm \
		pjtoppm \
		ppm3d ppmbrighten ppmchange ppmcolormask ppmcolors \
		ppmdim ppmdist ppmdither \
		ppmflash ppmhist ppmmake ppmmix ppmnorm \
		ppmquant ppmrelief ppmshift ppmspread ppmtoacad \
		ppmtobmp ppmtoeyuv ppmtogif ppmtoleaf \
		ppmtoicr ppmtoilbm ppmtolj ppmtomitsu ppmtoneo \
		ppmtopcx ppmtopgm ppmtopi1 ppmtopict ppmtopj \
		ppmtopjxl ppmtopuzz ppmtorgb3 ppmtosixel \
		ppmtotga ppmtouil ppmtowinicon ppmtoxpm ppmtoyuv \
		ppmtoyuvsplit ppmtv  \
		qrttoppm rawtoppm rgb3toppm sldtoppm spctoppm \
		sputoppm tgatoppm winicontoppm ximtoppm xpmtoppm xvminitoppm \
		yuvtoppm yuvsplittoppm

# We don't build vidtoppm by default, because it requires special libraries
# and there is no known requirement for vidtoppm.


MERGEBINARIES = $(PORTBINARIES) $(MATHBINARIES)
NOMERGEBINARIES =
ifneq ($(LINUXSVGAHDR_DIR),NONE)
  ifneq ($(LINUXSVGALIB_DIR),NONE)
    NOMERGEBINARIES += ppmsvgalib
  endif
endif

MATHBINARIES = ppmcie ppmforge ppmlabel ppmntsc ppmpat ppmqvga
BINARIES = $(MERGEBINARIES) $(NOMERGEBINARIES) 
SCRIPTS = ppmfade ppmrainbow ppmquantall ppmshadow ppmtomap

OBJECTS = $(patsubst %, %.o, $(BINARIES))

MERGE_OBJECTS = $(patsubst %,%.o2, $(MERGEBINARIES))

LIBOBJECTS = libppm1.o libppm2.o libppmcmap.o libppm4.o libppm5.o \
	libppmfloyd.o bitio.o

MANUALS1 = $(BINARIES) $(SCRIPTS)
MANUALS3 = libppm
MANUALS5 = ppm

MERGENAME= ppmmerge

INTERFACE_HEADERS = ppm.h ppmcmap.h ppmfloyd.h

ppmsvgalib: %: %.o $(NETPBMLIBS) $(LIBOPT)
	$(LD) $(LDFLAGS) -o $@ $< `$(LIBOPT) $(NETPBMLIBS)` $(LINUXSVGALD) \
	   $(CDEBUG) 

.PHONY: all
all: $(LIBPPM) $(BINARIES) $(EXTRA_STATICLIB)
	$(MAKE) -C ppmtompeg all
	$(MAKE) -C hpcdtoppm all
.PHONY: merge
merge:      $(MERGENAME) $(NOMERGEBINARIES)
	$(MAKE) -C ppmtompeg all
	$(MAKE) -C hpcdtoppm all

# And libraries.
$(PBMDIR)/$(LIBPBM): FORCE
	cd $(PBMDIR) ; $(MAKE) $(LIBPBM)
$(PGMDIR)/$(LIBPGM): FORCE
	cd $(PGMDIR) ; $(MAKE) $(LIBPGM)

.PHONY: install.bin
install.bin: install.bin.common
	$(MAKE) -C ppmtompeg install.bin
	$(MAKE) -C hpcdtoppm install.bin

.PHONY: install.merge
install.merge: install.merge.common
	$(MAKE) -C ppmtompeg install.bin
	$(MAKE) -C hpcdtoppm install.bin

.PHONY: install.lib
install.lib: install.lib.common

.PHONY: install.man
install.man: install.man.common
# The following are for programs that have been renamed
	rm -f $(INSTALLMANUALS1)/ppmtojpeg.*
	$(MAKE) -C ppmtompeg install.man
	$(MAKE) -C hpcdtoppm install.man

HEADERLINKS = pm_config.h pm.h pbm.h libpbm.h pbmfont.h pgm.h libpgm.h

include $(SRCDIR)/Makefile.common

.PHONY: clean
clean: clean.common
	$(MAKE) -C ppmtompeg clean
	$(MAKE) -C hpcdtoppm clean

FORCE:
