ifeq ($(SRCDIR)x,x) SRCDIR = $(CURDIR)/../.. BUILDDIR = $(SRCDIR) endif SUBDIR = converter/other VPATH=.:$(SRCDIR)/$(SUBDIR) include $(BUILDDIR)/config.mk # The pkg-config test used to be just 'pkg-config libxml-2.0', without the # --exists, and on at least one system, it does the same thing as --exists: # exit code 0 if the package exists; 1 if it does not, with no Standard # Output. But we have evidence that on one system, it issues the whole # package not found try a different path, blah, blah, blah message that # looks like a failure in the build. We're hoping --exists does not do that. # But maybe we didn't do --exists in the first place because it doesn't exist # on older pkg-config. 19.09.20. # # Note that --exists is better for another reason - it fails when the named # package exists, but it is unusable because its prerequisite packages don't. # # Also note that in both cases, the shell command fails if pkg-config # doesn't even exist. TEST_PKGCONFIG_LIBXML2 := \ if $(PKG_CONFIG) libxml-2.0 --exists; then echo exists; fi ifneq ($(shell $(TEST_PKGCONFIG_LIBXML2)),) # pkg-config works and says libxml2 exists on this system XML2_LIBS = $(shell $(PKG_CONFIG) libxml-2.0 --libs) XML2_CFLAGS = $(shell $(PKG_CONFIG) libxml-2.0 --cflags) else ifeq ($(shell xml2-config --version),) XML2_LIBS=NONE XML2_CFLAGS=NONE else XML2_LIBS=$(shell xml2-config --libs) XML2_CFLAGS=$(shell xml2-config --cflags) endif endif SUBDIRS = jbig pnmtopalm jpeg2000 cameratopam pamtosvg ifneq ($(BUILD_FIASCO), N) SUBDIRS += fiasco endif ifneq ($(TIFFLIB),NONE) ifneq ($(TIFFHDR_DIR)x,x) EXTERN_INCLUDES += -I$(TIFFHDR_DIR) endif endif TEST_PKGCONFIG_LIBPNG := \ if $(PKG_CONFIG) libpng$(PNGVER) --exists; then echo exists; fi ifneq ($(shell $(TEST_PKGCONFIG_LIBPNG)),) # pkg-config works and says libpng exists on this system HAVE_PNGLIB = Y EXTERN_INCLUDES += $(shell $(PKG_CONFIG) libpng$(PNGVER) --cflags) else ifneq ($(shell libpng$(PNGVER)-config --version),) # No pkg-config, but we have libpng-config on this system HAVE_PNGLIB = Y EXTERN_INCLUDES += $(shell libpng$(PNGVER)-config --cflags) else # System can't tell us where libpng is; use stuff from config.mk ifneq ($(PNGLIB),NONE) HAVE_PNGLIB = Y ifneq ($(PNGHDR_DIR)x,x) EXTERN_INCLUDES += -I$(PNGHDR_DIR) endif ifneq ($(ZHDR_DIR)x,x) EXTERN_INCLUDES += -I$(ZHDR_DIR) endif endif endif endif ifneq ($(JPEGLIB),NONE) ifneq ($(JPEGHDR_DIR)x,x) EXTERN_INCLUDES += -I$(JPEGHDR_DIR) endif endif ifneq ($(URTLIB),NONE) ifneq ($(URTHDR_DIR)x,x) EXTERN_INCLUDES += -I$(URTHDR_DIR) endif endif ifneq ($(XML2_LIBS),NONE) ifneq ($(XML2_CFLAGS),NONE) EXTERN_INCLUDES += $(XML2_CFLAGS) endif endif ifeq ($(TIFFLIB),NONE) TIFF_PREREQ_MISSING = Y endif TIFFLIB_EXTRALIBS = ifeq ($(TIFFLIB_NEEDS_JPEG),Y) ifeq ($(JPEGLIB),NONE) TIFF_PREREQ_MISSING = Y else TIFFLIB_EXTRALIBS += $(JPEGLIB) endif endif ifeq ($(TIFFLIB_NEEDS_Z),Y) ifeq ($(ZLIB),NONE) TIFF_PREREQ_MISSING = Y else TIFFLIB_EXTRALIBS += $(ZLIB) endif endif # TIFFLIB_USERLIBS is for the user to set manually, on the make command line # or manually added to config.mk. There are arcane situations where the TIFF # library refers to additional libraries not handled above. TIFFLIB_EXTRALIBS += $(TIFFLIB_USERLIBS) # Pnmtops's "flate" compression function requires libz. But if we don't # have libz, we still build Pnmtops; we just omit the flate compression # capability. ifeq ($(ZLIB),NONE) PNMTOPS_ZLIB_OPT = PNMTOPS_NOFLATE_OPT = -DNOFLATE else PNMTOPS_ZLIB_OPT = $(ZLIB) PNMTOPS_NOFLATE_OPT = endif PORTBINARIES = avstopam bmptopnm fitstopnm \ gemtopnm giftopnm hdifftopam infotopam \ pamtoavs pamtodjvurle pamtofits pamtogif \ pamtohdiff pamtohtmltbl pamtompfont pamtooctaveimg \ pamtopam pamtopdbimg pamtopfm pamtopnm \ pamtoqoi pamtosrf pamtouil \ pamtowinicon pamtoxvmini \ pbmtopgm pdbimgtopam pfmtopam \ pgmtopbm pgmtoppm ppmtopgm pnmtoddif \ pnmtopclxl pnmtorast \ pnmtosgi pnmtosir pamtotga pnmtoxwd qoitopam \ rasttopnm rlatopam sgitopnm sirtopnm srftopam sunicontopnm \ winicontopam xwdtopnm yuy2topam zeisstopnm \ ifneq ($(DONT_HAVE_PROCESS_MGMT),Y) PORTBINARIES += pstopnm pnmtops endif ifeq ($(HAVE_PNGLIB),Y) PORTBINARIES += pamtopng pnmtopng pngtopam endif ifneq ($(JPEGLIB),NONE) PORTBINARIES += jpegtopnm pnmtojpeg endif ifneq ($(TIFF_PREREQ_MISSING),Y) PORTBINARIES += tifftopnm pamtotiff pnmtotiffcmyk endif ifneq ($(URTLIB),NONE) PORTBINARIES += rletopnm pnmtorle endif ifneq ($(XML2_LIBS),NONE) PORTBINARIES += svgtopam endif BINARIES = $(PORTBINARIES) MERGEBINARIES = $(BINARIES) EXTRA_OBJECTS = exif.o rast.o ipdb.o srf.o ifeq ($(HAVE_PNGLIB),Y) EXTRA_OBJECTS += pngtxt.o EXTRA_OBJECTS += pngx.o endif ifneq ($(JPEGLIB),NONE) EXTRA_OBJECTS += jpegdatasource.o endif ifneq (($TIFF_PREREQ_MISSING),Y) EXTRA_OBJECTS += tiff.o endif OBJECTS = $(BINARIES:%=%.o) $(EXTRA_OBJECTS) MERGE_OBJECTS = $(MERGEBINARIES:%=%.o2) $(EXTRA_OBJECTS) HAVE_MERGE_COMPAT=YES pnmtops.o pnmtops.o2: CFLAGS_TARGET=$(PNMTOPS_NOFLATE_OPT) SCRIPTS = anytopnm pnmtoplainpnm .PHONY: all all: $(BINARIES) $(SUBDIRS:%=%/all) include $(SRCDIR)/common.mk ifeq ($(NEED_RUNTIME_PATH),Y) LIBOPTR = -runtime else LIBOPTR = endif LIBOPTS_TIFF = $(shell $(LIBOPT) \ $(LIBOPTR) $(TIFFLIB) $(TIFFLIB_EXTRALIBS)) tifftopnm pamtotiff pnmtotiffcmyk: tiff.o tifftopnm pamtotiff pnmtotiffcmyk: ADDL_OBJECTS = tiff.o tifftopnm pamtotiff pnmtotiffcmyk: \ LDFLAGS_TARGET = \ $(shell $(LIBOPT) $(LIBOPTR) $(TIFFLIB) $(TIFFLIB_EXTRALIBS)) ifneq ($(shell $(TEST_PKGCONFIG_LIBPNG)),) # pkg-config works and says libpng exists on this system PNGLIB_LIBOPTS = $(shell $(PKG_CONFIG) libpng$(PNGVER) --libs) else ifneq ($(shell libpng$(PNGVER)-config --version),) # No pkg-config, but we have libpng-config on this system PNGLIB_LIBOPTS = $(shell libpng$(PNGVER)-config --ldflags) else # System can't tell us where libpng is; use stuff from config.mk PNGLIB_LIBOPTS = $(shell $(LIBOPT) $(LIBOPTR) $(PNGLIB) $(ZLIB)) endif endif pngtopam: pngx.o pngtopam: ADDL_OBJECTS = pngx.o pngtopam: LDFLAGS_TARGET = $(PNGLIB_LIBOPTS) pamtopng: pngx.o pngtxt.o pamtopng: ADDL_OBJECTS = pngx.o pngtxt.o pamtopng: LDFLAGS_TARGET = $(PNGLIB_LIBOPTS) pnmtopng: pngx.o pngtxt.o pnmtopng: ADDL_OBJECTS = pngx.o pngtxt.o pnmtopng: LDFLAGS_TARGET = $(PNGLIB_LIBOPTS) jpegtopnm: jpegdatasource.o exif.o jpegtopnm: ADDL_OBJECTS = jpegdatasource.o exif.o jpegtopnm: LDFLAGS_TARGET = $(shell $(LIBOPT) $(LIBOPTR) $(JPEGLIB)) srftopam pamtosrf: srf.o srftopam pamtosrf: ADDL_OBJECTS = srf.o pnmtojpeg: LDFLAGS_TARGET = $(shell $(LIBOPT) $(LIBOPTR) $(JPEGLIB)) svgtopam: LDFLAGS_TARGET = $(XML2_LIBS) # If URTLIB is BUNDLED_URTLIB, then we're responsible for building it, which # means it needs to be a dependency: ifeq ($(URTLIB), $(BUNDLED_URTLIB)) rletopnm pnmtorle: $(URTLIB) endif rletopnm pnmtorle: LDFLAGS_TARGET = $(shell $(LIBOPT) $(URTLIB)) pnmtops: LDFLAGS_TARGET = $(shell $(LIBOPT) $(PNMTOPS_ZLIB_OPT)) pnmtorast rasttopnm: rast.o pnmtorast rasttopnm: ADDL_OBJECTS = rast.o pdbimgtopam pamtopdbimg: ipdb.o pdbimgtopam pamtopdbimg: ADDL_OBJECTS = ipdb.o # Declare dependencies on created header files (symbolic links, actually). bmptopnm.o bmptopnm.o2: bmp.h pamtotga.o pamtotga.o2: tga.h install.bin install.merge: install.bin.local .PHONY: install.bin.local install.bin.local: $(PKGDIR)/bin # Remember that $(SYMLINK) might just be a copy command. # backward compatibility: program used to be named pnmnoraw cd $(PKGDIR)/bin ; \ $(SYMLINK) pnmtoplainpnm$(EXE) pnmnoraw$(EXE) # backward compatibility: program used to be gemtopbm cd $(PKGDIR)/bin ; \ $(SYMLINK) gemtopnm$(EXE) gemtopbm$(EXE) # In October 2001, pnmtojpeg replaced ppmtojpeg ifneq ($(JPEGLIB),NONE) cd $(PKGDIR)/bin ; \ $(SYMLINK) pnmtojpeg$(EXE) ppmtojpeg$(EXE) endif # In March 2002, bmptopnm replaced bmptoppm cd $(PKGDIR)/bin ; \ $(SYMLINK) bmptopnm$(EXE) bmptoppm$(EXE) # In May 2002, pamtouil replaced ppmtouil cd $(PKGDIR)/bin ; \ $(SYMLINK) pamtouil$(EXE) ppmtouil$(EXE) # In July 2002, pamtotga replaced ppmtotga cd $(PKGDIR)/bin ; \ $(SYMLINK) pamtotga$(EXE) ppmtotga$(EXE) # In March 2005, we realized that pamtopnm obviates pnmtopnm cd $(PKGDIR)/bin ; \ $(SYMLINK) pamtopnm$(EXE) pnmtopnm$(EXE) # In October 2005, pamtofits replaced pnmtofits cd $(PKGDIR)/bin ; \ $(SYMLINK) pamtofits$(EXE) pnmtofits$(EXE) ifneq ($(TIFF_PREREQ_MISSING),Y) # In October 2005, pamtotiff replaced pnmtotiff cd $(PKGDIR)/bin ; \ $(SYMLINK) pamtotiff$(EXE) pnmtotiff$(EXE) endif ifeq ($(HAVE_PNGLIB),Y) # In September 2009, pngtopam replaced pngtopnm cd $(PKGDIR)/bin ; \ $(SYMLINK) pngtopam$(EXE) pngtopnm$(EXE) endif # In December 2010, sunicontopnm replaced icontopbm cd $(PKGDIR)/bin ; \ $(SYMLINK) sunicontopnm$(EXE) icontopbm$(EXE) ifeq ($(HAVE_PNGLIB),Y) # In June 2015, pamtopng replaced pamrgbapng cd $(PKGDIR)/bin ; \ $(SYMLINK) pamtopng$(EXE) pamrgbatopng$(EXE) endif mergecomptrylist: cat /dev/null >$@ echo "TRY(\"bmptoppm\", main_bmptopnm);" >>$@ echo "TRY(\"gemtopbm\", main_gemtopnm);" >>$@ ifneq ($(JPEGLIB),NONE) echo "TRY(\"ppmtojpeg\", main_pnmtojpeg);" >>$@ endif echo "TRY(\"ppmtouil\", main_pamtouil);" >>$@ echo "TRY(\"ppmtotga\", main_pamtotga);" >>$@ echo "TRY(\"pnmtopnm\", main_pamtopnm);" >>$@ echo "TRY(\"pnmtofits\", main_pamtofits);" >>$@ ifneq ($(TIFF_PREREQ_MISSING),Y) echo "TRY(\"pnmtotiff\", main_pamtotiff);" >>$@ endif ifeq ($(HAVE_PNGLIB),Y) echo "TRY(\"pngtopnm\", main_pngtopam);" >>$@ endif echo "TRY(\"icontopbm\", main_sunicontopnm);" >>$@ ifeq ($(HAVE_PNGLIB),Y) echo "TRY(\"pamrgbatopng\", main_pamtopng);" >>$@ endif