$NetBSD: patch-ac,v 1.19 2018/05/06 13:19:10 leot Exp $

- libtool support 
- Install target cleanup
- Also install muthreads and mupkcs7 libraries (needed by various tools)
- Do not force `-O0' flag when building
- Get rid of unused VERSION variable and `version:' target (otherwise `git' can
  be invoked during the building phase)
- Install only one `mupdf' binary, prefer the featureful one and always
  install it as `mupdf'.
- Install all EXTRA_APPS (muraster, mujstest, mjsgen)

--- Makefile.orig	2018-04-12 13:14:06.000000000 +0000
+++ Makefile
@@ -72,10 +72,10 @@ QUIET_TAGS = @ echo ' ' ' ' TAGS $@ ;
 QUIET_WINDRES = @ echo ' ' ' ' WINDRES $@ ;
 endif
 
-CC_CMD = $(QUIET_CC) $(CC) $(CFLAGS) -o $@ -c $<
-CXX_CMD = $(QUIET_CXX) $(CXX) $(filter-out -Wdeclaration-after-statement,$(CFLAGS)) -o $@ -c $<
-AR_CMD = $(QUIET_AR) $(AR) cr $@ $^
-LINK_CMD = $(QUIET_LINK) $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+CC_CMD = $(QUIET_CC) ${LIBTOOL} --mode=compile $(CC) $(CFLAGS) -o $@ -c $<
+CXX_CMD = $(QUIET_CXX) ${LIBTOOL} --mode=compile $(CXX) $(CFLAGS) -o $@ -c $<
+AR_CMD = $(QUIET_AR) ${LIBTOOL} --mode=link $(CC) $(LDFLAGS) -o $@ -version-info 0:0:0 -rpath ${PREFIX}/lib $^
+LINK_CMD = $(QUIET_LINK) ${LIBTOOL} --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(LIBS)
 MKDIR_CMD = $(QUIET_MKDIR) mkdir -p $@
 RM_CMD = $(QUIET_RM) rm -f $@
 TAGS_CMD = $(QUIET_TAGS) ctags $^
@@ -86,45 +86,45 @@ WINDRES_CMD = $(QUIET_WINDRES) $(WINDRES
 $(ALL_DIR) $(OUT) generated :
 	$(MKDIR_CMD)
 
-$(OUT)/%.a :
+$(OUT)/%.la :
 	$(RM_CMD)
 	$(AR_CMD)
 	$(RANLIB_CMD)
 
-$(OUT)/%.exe: $(OUT)/%.o | $(ALL_DIR)
+$(OUT)/%.exe: $(OUT)/%.lo | $(ALL_DIR)
 	$(LINK_CMD)
 
-$(OUT)/source/helpers/mu-threads/%.o : source/helpers/mu-threads/%.c | $(ALL_DIR)
+$(OUT)/source/helpers/mu-threads/%.lo : source/helpers/mu-threads/%.c | $(ALL_DIR)
 	$(CC_CMD) $(THREADING_CFLAGS)
 
-$(OUT)/source/helpers/pkcs7/%.o : source/helpers/pkcs7/%.c | $(ALL_DIR)
+$(OUT)/source/helpers/pkcs7/%.lo : source/helpers/pkcs7/%.c | $(ALL_DIR)
 	$(CC_CMD)
 
-$(OUT)/source/tools/%.o : source/tools/%.c | $(ALL_DIR)
+$(OUT)/source/tools/%.lo : source/tools/%.c | $(ALL_DIR)
 	$(CC_CMD) $(THREADING_CFLAGS)
 
-$(OUT)/generated/%.o : generated/%.c | $(ALL_DIR)
-	$(CC_CMD) -O0
+$(OUT)/generated/%.lo : generated/%.c | $(ALL_DIR)
+	$(CC_CMD)
 
-$(OUT)/platform/x11/%.o : platform/x11/%.c | $(ALL_DIR)
+$(OUT)/platform/x11/%.lo : platform/x11/%.c | $(ALL_DIR)
 	$(CC_CMD) $(X11_CFLAGS)
 
-$(OUT)/platform/x11/%.o: platform/x11/%.rc | $(ALL_DIR)
+$(OUT)/platform/x11/%.lo: platform/x11/%.rc | $(ALL_DIR)
 	$(WINDRES_CMD)
 
-$(OUT)/platform/x11/curl/%.o : platform/x11/%.c | $(ALL_DIR)
+$(OUT)/platform/x11/curl/%.lo : platform/x11/%.c | $(ALL_DIR)
 	$(CC_CMD) $(X11_CFLAGS) $(CURL_CFLAGS) -DHAVE_CURL
 
-$(OUT)/platform/gl/%.o : platform/gl/%.c | $(ALL_DIR)
+$(OUT)/platform/gl/%.lo : platform/gl/%.c | $(ALL_DIR)
 	$(CC_CMD) $(GLUT_CFLAGS)
 
-$(OUT)/%.o : %.c | $(ALL_DIR)
+$(OUT)/%.lo : %.c | $(ALL_DIR)
 	$(CC_CMD)
 
-$(OUT)/%.o : %.cpp | $(ALL_DIR)
+$(OUT)/%.lo : %.cpp | $(ALL_DIR)
 	$(CXX_CMD)
 
-.PRECIOUS : $(OUT)/%.o # Keep intermediates from chained rules
+.PRECIOUS : $(OUT)/%.lo # Keep intermediates from chained rules
 
 # --- File lists ---
 
@@ -153,16 +153,16 @@ SVG_SRC_HDR := $(wildcard source/svg/*.h
 HTML_SRC_HDR := $(wildcard source/html/*.h)
 GPRF_SRC_HDR := $(wildcard source/gprf/*.h)
 
-FITZ_OBJ := $(FITZ_SRC:%.c=$(OUT)/%.o)
-PDF_OBJ := $(PDF_SRC:%.c=$(OUT)/%.o)
-XPS_OBJ := $(XPS_SRC:%.c=$(OUT)/%.o)
-SVG_OBJ := $(SVG_SRC:%.c=$(OUT)/%.o)
-CBZ_OBJ := $(CBZ_SRC:%.c=$(OUT)/%.o)
-HTML_OBJ := $(HTML_SRC:%.c=$(OUT)/%.o)
-GPRF_OBJ := $(GPRF_SRC:%.c=$(OUT)/%.o)
-THREAD_OBJ := $(THREAD_SRC:%.c=$(OUT)/%.o)
-PKCS7_OBJ := $(PKCS7_SRC:%.c=$(OUT)/%.o)
-SIGNATURE_OBJ := $(OUT)/platform/x11/pdfapp.o $(OUT)/source/tools/pdfsign.o
+FITZ_OBJ := $(FITZ_SRC:%.c=$(OUT)/%.lo)
+PDF_OBJ := $(PDF_SRC:%.c=$(OUT)/%.lo)
+XPS_OBJ := $(XPS_SRC:%.c=$(OUT)/%.lo)
+SVG_OBJ := $(SVG_SRC:%.c=$(OUT)/%.lo)
+CBZ_OBJ := $(CBZ_SRC:%.c=$(OUT)/%.lo)
+HTML_OBJ := $(HTML_SRC:%.c=$(OUT)/%.lo)
+GPRF_OBJ := $(GPRF_SRC:%.c=$(OUT)/%.lo)
+THREAD_OBJ := $(THREAD_SRC:%.c=$(OUT)/%.lo)
+PKCS7_OBJ := $(PKCS7_SRC:%.c=$(OUT)/%.lo)
+SIGNATURE_OBJ := $(OUT)/platform/x11/pdfapp.lo $(OUT)/source/tools/pdfsign.lo
 
 $(FITZ_OBJ) : $(FITZ_HDR) $(FITZ_SRC_HDR)
 $(PDF_OBJ) : $(FITZ_HDR) $(PDF_HDR) $(PDF_SRC_HDR)
@@ -190,7 +190,7 @@ ifneq "$(CROSSCOMPILE)" "yes"
 $(NAME_GEN) : $(NAMEDUMP_EXE)
 endif
 
-$(OUT)/source/pdf/pdf-object.o : source/pdf/pdf-name-table.h
+$(OUT)/source/pdf/pdf-object.lo : source/pdf/pdf-name-table.h
 
 generate: $(NAME_GEN)
 
@@ -212,7 +212,7 @@ FONT_GEN_SIL := $(subst resources/fonts/
 
 FONT_BIN := $(FONT_BIN_DROID) $(FONT_BIN_NOTO) $(FONT_BIN_HAN) $(FONT_BIN_URW) $(FONT_BIN_SIL)
 FONT_GEN := $(FONT_GEN_DROID) $(FONT_GEN_NOTO) $(FONT_GEN_HAN) $(FONT_GEN_URW) $(FONT_GEN_SIL)
-FONT_OBJ := $(FONT_GEN:%.c=$(OUT)/%.o)
+FONT_OBJ := $(FONT_GEN:%.c=$(OUT)/%.lo)
 
 generated/%.c : resources/fonts/droid/%.ttf $(HEXDUMP_EXE) | generated
 	$(QUIET_GEN) $(HEXDUMP_EXE) -s $@ $<
@@ -242,7 +242,7 @@ generate: $(FONT_GEN)
 
 ICC_BIN := resources/icc/gray.icc resources/icc/rgb.icc resources/icc/cmyk.icc resources/icc/lab.icc
 ICC_GEN := generated/icc-profiles.c
-ICC_OBJ := $(ICC_GEN:%.c=$(OUT)/%.o)
+ICC_OBJ := $(ICC_GEN:%.c=$(OUT)/%.lo)
 
 $(ICC_OBJ) : $(ICC_GEN)
 $(ICC_GEN) : $(ICC_BIN) | generated
@@ -268,7 +268,7 @@ CMAP_GEN := \
 	generated/pdf-cmap-extra.c \
 	generated/pdf-cmap-utf8.c \
 	generated/pdf-cmap-utf32.c
-CMAP_OBJ := $(CMAP_GEN:%.c=$(OUT)/%.o)
+CMAP_OBJ := $(CMAP_GEN:%.c=$(OUT)/%.lo)
 
 generated/pdf-cmap-cjk.c : $(CMAP_CJK_SRC) | generated
 	$(QUIET_GEN) $(CMAPDUMP_EXE) $@ $(CMAP_CJK_SRC)
@@ -287,7 +287,7 @@ endif
 
 generate: $(CMAP_GEN)
 
-$(OUT)/scripts/cmapdump.o : \
+$(OUT)/scripts/cmapdump.lo : \
 	$(NAME_GEN) \
 	include/mupdf/pdf/cmap.h \
 	source/fitz/context.c \
@@ -310,7 +310,7 @@ $(OUT)/scripts/cmapdump.o : \
 
 JAVASCRIPT_SRC := source/pdf/pdf-js-util.js
 JAVASCRIPT_GEN := generated/pdf-js-util.c
-JAVASCRIPT_OBJ := $(JAVASCRIPT_GEN:%.c=$(OUT)/%.o)
+JAVASCRIPT_OBJ := $(JAVASCRIPT_GEN:%.c=$(OUT)/%.lo)
 
 $(JAVASCRIPT_GEN) : $(JAVASCRIPT_SRC) | generated
 	$(QUIET_GEN) $(HEXDUMP_EXE) -0 $@ $(JAVASCRIPT_SRC)
@@ -325,10 +325,10 @@ generate: $(JAVASCRIPT_GEN)
 
 # --- Library ---
 
-MUPDF_LIB = $(OUT)/libmupdf.a
-THIRD_LIB = $(OUT)/libmupdfthird.a
-THREAD_LIB = $(OUT)/libmuthreads.a
-PKCS7_LIB = $(OUT)/libmupkcs7.a
+MUPDF_LIB = $(OUT)/libmupdf.la
+THIRD_LIB = $(OUT)/libmupdfthird.la
+THREAD_LIB = $(OUT)/libmuthreads.la
+PKCS7_LIB = $(OUT)/libmupkcs7.la
 
 MUPDF_OBJ := \
 	$(FITZ_OBJ) \
@@ -360,46 +360,46 @@ $(THIRD_LIB) : $(THIRD_OBJ)
 $(THREAD_LIB) : $(THREAD_OBJ)
 $(PKCS7_LIB) : $(PKCS7_OBJ)
 
-INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB)
+INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB) $(PKCS7_LIB)
 
 # --- Tools and Apps ---
 
 MUTOOL_EXE := $(OUT)/mutool
 MUTOOL_SRC := source/tools/mutool.c source/tools/muconvert.c source/tools/mudraw.c source/tools/murun.c source/tools/mutrace.c
 MUTOOL_SRC += $(sort $(wildcard source/tools/pdf*.c))
-MUTOOL_OBJ := $(MUTOOL_SRC:%.c=$(OUT)/%.o)
+MUTOOL_OBJ := $(MUTOOL_SRC:%.c=$(OUT)/%.lo)
 $(MUTOOL_OBJ) : $(FITZ_HDR) $(PDF_HDR)
 $(MUTOOL_EXE) : $(MUTOOL_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB) $(PKCS7_LIB)
 	$(LINK_CMD) $(THREADING_LIBS)
 
 MURASTER_EXE := $(OUT)/muraster
-MURASTER_OBJ := $(OUT)/source/tools/muraster.o
+MURASTER_OBJ := $(OUT)/source/tools/muraster.lo
 $(MURASTER_OBJ) : $(FITZ_HDR)
 $(MURASTER_EXE) : $(MURASTER_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB)
 	$(LINK_CMD) $(THREADING_LIBS)
 
 MJSGEN_EXE := $(OUT)/mjsgen
-MJSGEN_OBJ := $(OUT)/source/tools/mjsgen.o
+MJSGEN_OBJ := $(OUT)/source/tools/mjsgen.lo
 $(MJSGEN_OBJ) : $(FITZ_HDR) $(PDF_HDR)
 $(MJSGEN_EXE) : $(MJSGEN_OBJ) $(MUPDF_LIB) $(THIRD_LIB)
 	$(LINK_CMD)
 
 MUJSTEST_EXE := $(OUT)/mujstest
-MUJSTEST_OBJ := $(addprefix $(OUT)/platform/x11/, jstest_main.o pdfapp.o)
+MUJSTEST_OBJ := $(addprefix $(OUT)/platform/x11/, jstest_main.lo pdfapp.lo)
 $(MUJSTEST_OBJ) : $(FITZ_HDR) $(PDF_HDR)
 $(MUJSTEST_EXE) : $(MUJSTEST_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
 	$(LINK_CMD)
 
 ifeq "$(HAVE_X11)" "yes"
-MUVIEW_X11_EXE := $(OUT)/mupdf-x11
-MUVIEW_X11_OBJ := $(addprefix $(OUT)/platform/x11/, x11_main.o x11_image.o pdfapp.o)
+MUVIEW_X11_EXE := $(OUT)/platform/x11/mupdf
+MUVIEW_X11_OBJ := $(addprefix $(OUT)/platform/x11/, x11_main.lo x11_image.lo pdfapp.lo)
 $(MUVIEW_X11_OBJ) : $(FITZ_HDR) $(PDF_HDR)
 $(MUVIEW_X11_EXE) : $(MUVIEW_X11_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
 	$(LINK_CMD) $(X11_LIBS)
 
 ifeq "$(HAVE_CURL)" "yes"
-MUVIEW_X11_CURL_EXE := $(OUT)/mupdf-x11-curl
-MUVIEW_X11_CURL_OBJ := $(addprefix $(OUT)/platform/x11/curl/, x11_main.o x11_image.o pdfapp.o curl_stream.o)
+MUVIEW_X11_CURL_EXE := $(OUT)/platform/x11/curl/mupdf
+MUVIEW_X11_CURL_OBJ := $(addprefix $(OUT)/platform/x11/curl/, x11_main.lo x11_image.lo pdfapp.lo curl_stream.lo)
 $(MUVIEW_X11_CURL_OBJ) : $(FITZ_HDR) $(PDF_HDR)
 $(MUVIEW_X11_CURL_EXE) : $(MUVIEW_X11_CURL_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(CURL_LIB) $(PKCS7_LIB)
 	$(LINK_CMD) $(X11_LIBS) $(CURL_LIBS) $(SYS_CURL_DEPS)
@@ -407,8 +407,8 @@ endif
 endif
 
 ifeq "$(HAVE_GLUT)" "yes"
-MUVIEW_GLUT_EXE := $(OUT)/mupdf-gl
-MUVIEW_GLUT_OBJ := $(addprefix $(OUT)/platform/gl/, gl-font.o gl-input.o gl-main.o)
+MUVIEW_GLUT_EXE := $(OUT)/platform/gl/mupdf-gl
+MUVIEW_GLUT_OBJ := $(addprefix $(OUT)/platform/gl/, gl-font.lo gl-input.lo gl-main.lo)
 $(MUVIEW_GLUT_OBJ) : $(FITZ_HDR) $(PDF_HDR) platform/gl/gl-app.h
 $(MUVIEW_GLUT_EXE) : $(MUVIEW_GLUT_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(GLUT_LIB)
 	$(LINK_CMD) $(GLUT_LIB) $(GLUT_LIBS)
@@ -416,7 +416,7 @@ endif
 
 ifeq "$(HAVE_WIN32)" "yes"
 MUVIEW_WIN32_EXE := $(OUT)/mupdf
-MUVIEW_WIN32_OBJ := $(addprefix $(OUT)/platform/x11/, win_main.o pdfapp.o win_res.o)
+MUVIEW_WIN32_OBJ := $(addprefix $(OUT)/platform/x11/, win_main.lo pdfapp.lo win_res.lo)
 $(MUVIEW_WIN32_OBJ) : $(FITZ_HDR) $(PDF_HDR)
 $(MUVIEW_WIN32_EXE) : $(MUVIEW_WIN32_OBJ) $(MUPDF_LIB) $(THIRD_LIB) $(PKCS7_LIB)
 	$(LINK_CMD) $(WIN32_LIBS)
@@ -425,11 +425,21 @@ endif
 MUVIEW_EXE := $(MUVIEW_X11_EXE) $(MUVIEW_WIN32_EXE) $(MUVIEW_GLUT_EXE)
 MUVIEW_CURL_EXE := $(MUVIEW_X11_CURL_EXE) $(MUVIEW_WIN32_CURL_EXE)
 
-INSTALL_APPS := $(MUTOOL_EXE) $(MUVIEW_EXE)
+INSTALL_APPS := $(MUTOOL_EXE)
 EXTRA_APPS += $(MURASTER_EXE)
-EXTRA_APPS += $(MUVIEW_CURL_EXE)
 EXTRA_APPS += $(MUJSTEST_EXE)
 EXTRA_APPS += $(MJSGEN_EXE)
+INSTALL_APPS += $(EXTRA_APPS)
+ 
+ifeq "$(HAVE_CURL)" "yes"
+INSTALL_APPS += $(MUVIEW_CURL_EXE)
+else ifeq "$(HAVE_X11)" "yes"
+INSTALL_APPS += $(MUVIEW_EXE)
+endif
+
+ifeq "$(HAVE_GLUT)" "yes"
+INSTALL_APPS += $(MUVIEW_GLUT_EXE)
+endif
 
 # --- Examples ---
 
@@ -442,10 +452,10 @@ $(OUT)/multi-threaded: docs/examples/mul
 
 # --- Update version string header ---
 
-VERSION = $(shell git describe --tags)
-
-version:
-	sed -i~ -e '/FZ_VERSION /s/".*"/"'$(VERSION)'"/' include/mupdf/fitz/version.h
+#VERSION = $(shell git describe --tags)
+#
+#version:
+#	sed -i~ -e '/FZ_VERSION /s/".*"/"'$(VERSION)'"/' include/mupdf/fitz/version.h
 
 # --- Format man pages ---
 
@@ -474,27 +484,29 @@ extra-apps: $(EXTRA_APPS)
 extra: extra-libs extra-apps
 
 install: libs apps
-	install -d $(DESTDIR)$(incdir)/mupdf
-	install -d $(DESTDIR)$(incdir)/mupdf/fitz
-	install -d $(DESTDIR)$(incdir)/mupdf/pdf
-	install include/mupdf/*.h $(DESTDIR)$(incdir)/mupdf
-	install include/mupdf/fitz/*.h $(DESTDIR)$(incdir)/mupdf/fitz
-	install include/mupdf/pdf/*.h $(DESTDIR)$(incdir)/mupdf/pdf
-
-	install -d $(DESTDIR)$(libdir)
-	install $(INSTALL_LIBS) $(DESTDIR)$(libdir)
-
-	install -d $(DESTDIR)$(bindir)
-	install $(INSTALL_APPS) $(DESTDIR)$(bindir)
-
-	install -d $(DESTDIR)$(mandir)/man1
-	install docs/man/*.1 $(DESTDIR)$(mandir)/man1
-
-	install -d $(DESTDIR)$(docdir)
-	install -d $(DESTDIR)$(docdir)/examples
-	install README COPYING CHANGES $(DESTDIR)$(docdir)
-	install docs/*.html docs/*.css docs/*.png $(DESTDIR)$(docdir)
-	install docs/examples/* $(DESTDIR)$(docdir)/examples
+	${BSD_INSTALL_DATA_DIR} $(DESTDIR)$(incdir) $(DESTDIR)$(incdir)/mupdf $(DESTDIR)$(incdir)/mupdf/fitz $(DESTDIR)$(incdir)/mupdf/pdf
+	${BSD_INSTALL_DATA} include/mupdf/*.h $(DESTDIR)$(incdir)/mupdf
+	${BSD_INSTALL_DATA} include/mupdf/fitz/*.h $(DESTDIR)$(incdir)/mupdf/fitz
+	${BSD_INSTALL_DATA} include/mupdf/pdf/*.h $(DESTDIR)$(incdir)/mupdf/pdf
+
+	${BSD_INSTALL_LIB_DIR} $(DESTDIR)$(libdir)
+	for f in $(INSTALL_LIBS); do \
+		${LIBTOOL} --mode=install ${BSD_INSTALL_LIB} $$f $(DESTDIR)$(libdir); \
+	done
+
+	${BSD_INSTALL_PROGRAM_DIR} $(DESTDIR)$(bindir)
+	for f in $(INSTALL_APPS); do \
+		${LIBTOOL} --mode=install ${BSD_INSTALL_PROGRAM} $$f $(DESTDIR)$(bindir); \
+	done
+
+	${BSD_INSTALL_MAN_DIR} $(DESTDIR)$(mandir)/man1
+	${BSD_INSTALL_MAN} docs/man/*.1 $(DESTDIR)$(mandir)/man1
+
+	${BSD_INSTALL_DATA_DIR} $(DESTDIR)$(docdir)
+	${BSD_INSTALL_DATA_DIR} $(DESTDIR)$(docdir)/examples
+	${BSD_INSTALL_DATA} README COPYING CHANGES $(DESTDIR)$(docdir)
+	${BSD_INSTALL_DATA} docs/*.html docs/*.css docs/*.png $(DESTDIR)$(docdir)
+	${BSD_INSTALL_DATA} docs/examples/* $(DESTDIR)$(docdir)/examples
 
 tarball:
 	bash scripts/archive.sh
