From fbe03679bd185b86a5d9057b07875a425bc4021e Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Tue, 24 Jul 2018 19:31:23 +0200
Subject: [PATCH] [Makefile] Moves definitions of transitioning functions
 closer to their use

`configure` should not be bothered with defining macros for generating
`transitioning.ml`. This belongs to `Makefile.generating`
---
 Makefile.generating      | 12 ++++++++++++
 configure.in             | 29 ++++++++---------------------
 share/Makefile.config.in |  6 +-----
 3 files changed, 21 insertions(+), 26 deletions(-)

diff --git a/Makefile.generating b/Makefile.generating
index eb802f07195..e8248203739 100644
--- a/Makefile.generating
+++ b/Makefile.generating
@@ -122,6 +122,18 @@ endif
 
 GENERATED+= src/libraries/utils/json.ml src/libraries/stdlib/transitioning.ml
 
+ifeq ($(HAS_OCAML403),yes)
+  STACK_FOLD=Stack.fold
+else
+  STACK_FOLD=stack_fold
+endif
+
+ifeq ($(HAS_OCAML404),yes)
+  SPLIT_ON_CHAR=String.split_on_char
+else
+  SPLIT_ON_CHAR=split_on_char
+endif
+
 src/libraries/stdlib/transitioning.ml: \
   src/libraries/stdlib/transitioning.ml.in \
   Makefile.generating share/Makefile.config
diff --git a/configure.in b/configure.in
index 7dc81018123..0c8da690508 100644
--- a/configure.in
+++ b/configure.in
@@ -113,29 +113,12 @@ case $OCAMLVERSION in
      OCAML_ANNOT_OPTION="-bin-annot";;
 esac
 
-AC_SUBST(SPLIT_ON_CHAR)
-AC_SUBST(STACK_FOLD)
-
-case $OCAMLVERSION in
- 4.02.*)
-  SPLIT_ON_CHAR=split_on_char;
-  STACK_FOLD=stack_fold
- ;;
- 4.03.*)
-  SPLIT_ON_CHAR=split_on_char;
-  STACK_FOLD=Stack.fold
- ;;
- *)
-  SPLIT_ON_CHAR=String.split_on_char;
-  STACK_FOLD=Stack.fold
- ;;
-esac
-
 AC_SUBST(OCAMLMAJORNB)
 AC_SUBST(OCAMLMINORNB)
 AC_SUBST(OCAMLPATCHNB)
 
 AC_SUBST(HAS_OCAML403)
+AC_SUBST(HAS_OCAML404)
 AC_SUBST(HAS_OCAML407)
 
 OCAMLMAJORNB=$(echo $OCAMLVERSION | cut -f 1 -d .)
@@ -150,13 +133,17 @@ else if test $OCAMLMINORNB -lt 3; then
   HAS_OCAML407=no;
 else
   HAS_OCAML403=yes;
-  if test $OCAMLMINORNB -lt 7; then
+  if test $OCAMLMINORNB -lt 4; then
+     HAS_OCAML404=no;
+     HAS_OCAML407=no;
+  else if test $OCAMLMINORNB -lt 7; then
     HAS_OCAML407=no;
   else
     HAS_OCAML407=yes;
   fi;
-fi;
-fi;
+  fi; # 404
+fi;   # 403
+fi;   # MAJORNB -gt 4
 
 # Ocaml library path
 AC_MSG_CHECKING(OCaml library path)
diff --git a/share/Makefile.config.in b/share/Makefile.config.in
index ad081789b77..13ec84dc7c8 100644
--- a/share/Makefile.config.in
+++ b/share/Makefile.config.in
@@ -84,6 +84,7 @@ OCAMLMINORNB    ?=@OCAMLMINORNB@
 OCAMLPATCHNB    ?=@OCAMLPATCHNB@
 
 HAS_OCAML403    ?=@HAS_OCAML403@
+HAS_OCAML404    ?=@HAS_OCAML404@
 HAS_OCAML407    ?=@HAS_OCAML407@
 
 NATIVE_THREADS	?=@HAS_NATIVE_THREADS@
@@ -92,11 +93,6 @@ PTESTSBEST      ?=@PTESTSBEST@
 
 DEVELOPMENT	?=@DEVELOPMENT@
 
-# Compatibility across OCaml versions
-
-SPLIT_ON_CHAR ?= @SPLIT_ON_CHAR@
-STACK_FOLD ?= @STACK_FOLD@
-
 #############
 # Libraries #
 #############
-- 
GitLab