SRCDIR = ..
TIFFDEF =       -DLIBTIFF

include $(SRCDIR)/Makefile.config


INCLUDE = -I$(SRCDIR)

# Shared library naming
LIBROOT = pbm
LIBPBM = lib$(LIBROOT).so
MAJ = 1
MIN = 4

LIBLIBS = $(SRCDIR)/shhopt/libshhopt.a
NETPBMLIBS = $(LIBPBM)

PORTBINARIES =	atktopbm brushtopbm cmuwmtopbm g3topbm \
		icontopbm gemtopbm macptopbm mgrtopbm \
		pbmclean pbmlife pbmmake pbmmask pbmpscale \
		pbmreduce pbmtext \
		pbmto10x pbmto4425 pbmtoascii pbmtoatk \
		pbmtobbnbg pbmtocmuwm \
		pbmtoepsi pbmtoepson \
		pbmtog3 pbmtogem pbmtogo pbmtoicon pbmtolj \
		pbmtoln03 pbmtolps pbmtomacp pbmtomgr \
		pbmtopi3 pbmtoplot pbmtoptx \
		pbmtox10bm pbmtoxbm pbmtoybm pbmtozinc \
		pbmupc pi3topbm pktopbm xbmtopbm ybmtopbm
MATHBINARIES =	pbmtopk
BINARIES =	$(PORTBINARIES) $(MATHBINARIES)

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

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

LIBOBJECTS = libpbm1.o libpbm2.o libpbm3.o libpbm4.o libpbm5.o

MANUALS1 =	$(BINARIES)
MANUALS3 =	libpbm
MANUALS5 =	pbm

MERGENAME = pbmmerge

INTERFACE_HEADERS = pbm.h

.PHONY: all
all:		$(BINARIES)

.PHONY: merge
merge: $(MERGENAME)

# Rules for plain programs.
$(PORTBINARIES): %: %.o $(NETPBMLIBS)
	$(LD) $(LDFLAGS) -o $@ $@.o $(NETPBMLIBS) $(CDEBUG)

# Rule for math-dependent programs.
$(MATHBINARIES): %: %.o $(NETPBMLIBS)
	$(LD) $(LDFLAGS) -o $@ $@.o -lm $(NETPBMLIBS) $(CDEBUG)

# Rule for objects.
$(OBJECTS) $(LIBOBJECTS): %.o: %.c
	$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ $<

$(MERGE_OBJECTS): %.o2: %.c
	$(CC) -c $(CFLAGS) $(INCLUDE) "-Dmain=$*_main" -o $@ $<

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

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

include $(SRCDIR)/Makefile.common

../compile.h: 
	$(MAKE) -C $(SRCDIR) compile.h

../shhopt/libshhopt.a:
	cd ../shhopt; $(MAKE) libshhopt.a

.PHONY: clean
clean:
	-rm -f *.o *.o2 *.a *.so* *.cat *~ core $(BINARIES) $(MERGENAME)

