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

LIBROOT = ppm
LIBPPM = lib$(LIBROOT).$(NETPBMLIBSUFFIX)
MAJ = 9
MIN = 1

PGMDIR = $(SRCDIR)/pgm
LIBPGM = libpgm.$(NETPBMLIBSUFFIX)

PBMDIR = $(SRCDIR)/pbm
LIBPBM = libpbm.$(NETPBMLIBSUFFIX)

INCLUDE= -I$(SRCDIR) -I$(PGMDIR) -I$(PBMDIR) -I$(SRCDIR)/shhopt

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

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

PORTBINARIES =	bmptoppm eyuvtoppm gouldtoppm hpcdtoppm ilbmtoppm imgtoppm \
		mtvtoppm pcxtoppm pgmtoppm pi1toppm picttoppm \
		pjtoppm \
		ppm3d ppmbrighten ppmchange ppmcolormask \
		ppmdim ppmdist ppmdither \
		ppmflash ppmhist ppmmake ppmmix ppmnorm \
		ppmquant ppmrelief ppmshift ppmspread ppmtoacad \
		ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm ppmtomitsu \
		ppmtopcx ppmtopgm ppmtopi1 ppmtopict ppmtopj \
		ppmtopjxl ppmtopuzz ppmtorgb3 ppmtosixel \
		ppmtotga ppmtouil ppmtoxpm ppmtoyuv \
		ppmtoyuvsplit ppmtv \
		qrttoppm rawtoppm rgb3toppm sldtoppm spctoppm \
		sputoppm tgatoppm 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.

ifneq ($(JPEGLIB_DIR), NONE)
  ifneq ($(JPEGHDR_DIR), NONE)
      NOMERGEBINARIES += ppmtojpeg
  endif
endif

MERGEBINARIES = $(PORTBINARIES) $(MATHBINARIES)

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

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

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

LIBOBJECTS = libppm1.o libppm2.o libppm3.o libppm4.o libppm5.o bitio.o

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

MERGENAME= ppmmerge

INTERFACE_HEADERS = ppm.h ppmcmap.h

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

ppmtojpeg: %: %.o $(NETPBMLIBS) $(LIBOPT)
	$(LD) $(LDFLAGS) -o $@ $@.o `$(LIBOPT) $(NETPBMLIBS)` \
	  -L$(JPEGLIB_DIR) -ljpeg $(CDEBUG)

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

.PHONY: install.bin
install.bin: install.bin.common

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

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

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

include $(SRCDIR)/Makefile.common

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

FORCE:
