From: Sylvain Le Gall <gildor@debian.org>
Date: Thu, 4 Aug 2016 13:48:13 +0200
Subject: Makefile changes

Patching the makefile for several purposes:
 - bytecode compilation
 - str variant
 - fix lintian stray-cmo
 - fix lintian dangling-cmi
 - compile and install toplevels

Signed-off-by: Sylvain Le Gall <gildor@debian.org>
Signed-off-by: Hendrik Tews <hendrik@askra.de>
---
 Makefile      |  2 ++
 pcre/Makefile |  7 +++++--
 str/Makefile  | 42 ++++++++++++++++++++++++++++++++----------
 3 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index 539cc5c..c7ea295 100644
--- a/Makefile
+++ b/Makefile
@@ -23,8 +23,10 @@ reinstall:
 ## GODIVA/GODI targets
 all: common
 	cd pcre && $(MAKE) all-bc
+	cd str && $(MAKE) all-bc
 opt: common
 	cd pcre && $(MAKE) all-nc
+	cd str && $(MAKE) all-nc
 
 ## end of GODIVA targets
 
diff --git a/pcre/Makefile b/pcre/Makefile
index e5cdccf..436b55f 100644
--- a/pcre/Makefile
+++ b/pcre/Makefile
@@ -29,9 +29,9 @@ USE_CAMLP4 = yes
 
 COMMON_LIBINSTALL_FILES = \
   pa_mikmatch_pcre.cma pa_mikmatch_pcre.cmo pa_mikmatch_pcre.cmi \
-  run_mikmatch_pcre.cmi mikmatch.cmi mikmatch.mli
+  run_mikmatch_pcre.cmi run_mikmatch_pcre.ml mikmatch.cmi mikmatch.mli
 BC_LIBINSTALL_FILES = \
-  run_mikmatch_pcre.cma run_mikmatch_pcre.cmo 
+  run_mikmatch_pcre.cma
 NC_LIBINSTALL_FILES = \
   run_mikmatch_pcre.cmxa run_mikmatch_pcre.cmx \
   run_mikmatch_pcre.a run_mikmatch_pcre.o mikmatch.cmx
@@ -87,6 +87,9 @@ install: topinstall
 uninstall:
 	$(MAKE) libuninstall
 
+topinstall:
+	install -m 0755 mikmatch_pcre.top $(DESTDIR)$(BINDIR)/mikmatch_pcre
+
 misc-bc:
 	ocamlc -c mikmatch.mli
 	ocamlc -a -o run_mikmatch_pcre.cma -I $(PCRE_DIR) \
diff --git a/str/Makefile b/str/Makefile
index 688ca2b..1cd70c5 100644
--- a/str/Makefile
+++ b/str/Makefile
@@ -24,21 +24,30 @@ INCDIRS = ../common
 
 USE_CAMLP4 = yes
 
-LIBINSTALL_FILES := \
+COMMON_LIBINSTALL_FILES := \
   pa_mikmatch_str.cma pa_mikmatch_str.cmo pa_mikmatch_str.cmi \
-  run_mikmatch_str.cma run_mikmatch_str.cmo run_mikmatch_str.cmi \
-  mikmatch.cmi mikmatch.cmo mikmatch.cmx mikmatch.mli \
+  run_mikmatch_str.cmi run_mikmatch_str.ml \
+  mikmatch.cmi mikmatch.mli
+BC_LIBINSTALL_FILES := \
+  run_mikmatch_str.cma mikmatch.cmo
+NC_LIBINSTALL_FILES := \
+  mikmatch.cmx \
   run_mikmatch_str.cmxa run_mikmatch_str.cmx \
   run_mikmatch_str.a run_mikmatch_str.o
+ALL_LIBINSTALL_FILES := \
+  $(COMMON_LIBINSTALL_FILES) $(BC_LIBINSTALL_FILES) $(NC_LIBINSTALL_FILES)
 
 .PHONY: default force all links 
 
-default: links pa_lib misc
+default: all-nc all-bc
 force:
 	touch $(SOURCES)
 	$(MAKE)
 
-all:
+all-bc: links pa_lib misc-bc
+	touch bytecode
+all-nc: links pa_lib misc-nc
+	touch nativecode
 
 links: mikmatch.mli mikmatch.ml match.ml syntax_common.ml mm_util.ml \
 	global_def.mli global_def.ml
@@ -58,23 +67,35 @@ global_def.mli: ../common/global_def.mli
 global_def.ml: ../common/global_def.ml
 	ln -s $< $@
 
-.PHONY: pa_lib install uninstall topinstall misc
+.PHONY: pa_lib install uninstall topinstall misc all-nc all-bc misc-bc misc-nc
 
 pa_lib:
 	$(MAKE) RESULT=pa_mikmatch_str pabc bcl
 
 #install: libinstall topinstall
-install: libinstall
+install: topinstall
+	if test -f nativecode; \
+	then \
+		$(MAKE) "LIBINSTALL_FILES=$(ALL_LIBINSTALL_FILES)" libinstall;\
+	else \
+		$(MAKE) "LIBINSTALL_FILES=$(COMMON_LIBINSTALL_FILES) $(BC_LIBINSTALL_FILES)" libinstall; \
+	fi
 uninstall: libuninstall
 	rm -f $(BINDIR)/mikmatch_str.top $(BINDIR)/mikmatch_str
 
 topinstall:
-	install -m 0755 mikmatch_str.top mikmatch_str $(BINDIR)
+	install -m 0755 mikmatch_str.top $(DESTDIR)$(BINDIR)/mikmatch_str
 
-misc:
+misc-bc:
 	ocamlc -c mikmatch.mli
 	ocamlc -a -o run_mikmatch_str.cma \
 		mikmatch.ml run_mikmatch_str.ml
+	ocamlmktop -o mikmatch_str.top -I +camlp4 \
+		dynlink.cma \
+		camlp4o.cma \
+		pa_mikmatch_str.cma str.cma unix.cma run_mikmatch_str.cma
+
+misc-nc: misc-bc
 	ocamlopt -a -o run_mikmatch_str.cmxa \
 		mikmatch.ml run_mikmatch_str.ml
 
@@ -107,7 +128,8 @@ test-install:
 
 TRASH = \
  *~ *.ppo *.cm[ioxa] *.cmxa *.o *.a *.top \
- *.test test1 test1.more mikmatch_str mikmatch_str.ml
+ *.test test1 test1.more mikmatch_str mikmatch_str.ml \
+ bytecode nativecode
 
 
 OCAMLMAKEFILE = ../OCamlMakefile
