diff build-aux/mk-octave-config-h.sh @ 21229:a83e7a384ee0

create and install a subset of config.h in octave-config.h * mk-octave-config-h.sh: New file. * Makefile.am (EXTRA_DIST): Add mk-octave-config.h.sh to the list. (octinclude_HEADERS): Add octave-config.h to the list. (octave-config.h): New rule. * common.mk (do_subst_config_vals, do_subst_cross_config_vals): Don't substitute unused ENABLE options. * configure.ac: Note the reason for using oct-conf-post.in.h. Add OCTAVE_ prefix to ENABLE_BOUNDS_CHECK ENABLE_ATOMIC_REFCOUNT, ENABLE_64, ENABLE_OPENMP, and ENABLE_FLOAT_TRUNCATE in calls to AC_DEFINE. Change all uses. * oct-conf-post.in.h: Define HAVE_OCTAVE_DEPRECATED_ATTR instead of HAVE_ATTR_DEPRECATED. Likewise for HAVE_ATTR_NORETURN and HAVE_ATTR_UNUSED. Change all uses.
author John W. Eaton <jwe@octave.org>
date Mon, 08 Feb 2016 17:30:29 -0500
parents
children ffc9806bb300
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build-aux/mk-octave-config-h.sh	Mon Feb 08 17:30:29 2016 -0500
@@ -0,0 +1,178 @@
+#! /bin/sh
+#
+# Copyright (C) 2016 John W. Eaton
+#
+# This file is part of Octave.
+#
+# Octave is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# Octave is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Octave; see the file COPYING.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+if [ $# -ne 1 ]; then
+  echo "usage: mk-octave-config-h.sh CONFIG-FILE" 1>&2
+  exit 1
+fi
+
+config_h_file=$1
+
+cat << EOF
+/* DO NOT EDIT!  Generated by mk-octave-config-h.sh.  */
+/*
+
+Copyright (C) 2016 John W. Eaton
+
+This file is part of Octave.
+
+Octave is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+Octave is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING.  If not, see
+<http://www.gnu.org/licenses/>.
+
+*/
+
+#if ! defined (octave_octave_config_h)
+#define octave_octave_config_h 1
+
+#include <stdint.h>
+
+#if defined (__GNUC__)
+#  define OCTAVE_DEPRECATED(msg) __attribute__ ((__deprecated__ (msg)))
+#  define OCTAVE_NORETURN __attribute__ ((__noreturn__))
+#  define OCTAVE_UNUSED __attribute__ ((__unused__))
+
+#  define HAVE_OCTAVE_DEPRECATED_ATTR 1
+#  define HAVE_OCTAVE_NORETURN_ATTR 1
+#  define HAVE_OCTAVE_UNUSED_ATTR 1
+#else
+#  define OCTAVE_DEPRECATED(msg)
+#  define OCTAVE_NORETURN
+#  define OCTAVE_UNUSED
+
+/* #  undef HAVE_OCTAVE_DEPRECATED_ATTR */
+/* #  undef HAVE_OCTAVE_NORETURN_ATTR */
+/* #  undef HAVE_OCTAVE_UNUSED_ATTR */
+#endif
+
+#if defined (_MSC_VER)
+#  define OCTAVE_API __declspec(dllimport)
+#  define OCTINTERP_API __declspec(dllimport)
+#else
+#  define OCTAVE_API
+#  define OCTINTERP_API
+#endif
+
+#include <stdint.h>
+EOF
+
+octave_idx_type="`sed -n 's/#define OCTAVE_IDX_TYPE \([_a-zA-Z][_a-zA-Z0-9]*\)/\1/p' $config_h_file`"
+
+if test -z "$octave_idx_type"; then
+  echo "mk-octave-config-h.sh: failed to find OCTAVE_IDX_TYPE in $config_h_file" 1>&2
+  exit 1
+fi
+
+cat << EOF
+
+typedef octave_idx_type $octave_idx_type;
+
+EOF
+
+if grep "#define OCTAVE_ENABLE_FLOAT_TRUNCATE 1" $config_h_file > /dev/null;
+then
+  echo "#define OCTAVE_FLOAT_TRUNCATE volatile"
+else
+  echo "#define OCTAVE_FLOAT_TRUNCATE"
+fi
+
+grep "#\(undef\|define\) OCTAVE_ENABLE_64" $config_h_file
+grep "#\(undef\|define\) OCTAVE_ENABLE_ATOMIC_REFCOUNT" $config_h_file
+grep "#\(undef\|define\) OCTAVE_ENABLE_BOUNDS_CHECK" $config_h_file
+grep "#\(undef\|define\) OCTAVE_ENABLE_OPENMP" $config_h_file
+
+if grep "#undef HAVE_DEV_T" $config_h_file > /dev/null;
+then
+  cat << EOF
+
+typedef short dev_t;
+
+EOF
+else
+  cat << EOF
+
+/* typedef short dev_t; */
+
+EOF
+fi
+
+if grep "#undef HAVE_INO_T" $config_h_file > /dev/null;
+then
+    cat << EOF
+
+typedef unsigned long ino_t;
+
+EOF
+else
+    cat << EOF
+
+/* typedef unsigned long ino_t; */
+
+EOF
+fi
+
+have_roundl=no
+if grep "#define HAVE_ROUNDL" $config_h_file > /dev/null;
+then
+  have_roundl=yes
+fi
+
+sizeof_long_double="`sed -n 's/#define SIZEOF_LONG_DOUBLE \([0-9]*\)/\1/p' $config_h_file`"
+
+if test -z "$sizeof_long_double"; then
+  echo "mk-octave-config-h.sh: failed to find SIZEOF_LONG_DOUBLE in $config_h_file" 1>&2
+  exit 1
+fi
+
+if test $sizeof_long_double -ge 10 && test $have_roundl = yes; then
+  echo "#define OCTAVE_INT_USE_LONG_DOUBLE 1"
+  if test $sizeof_long_double -lt 16; then
+    cat << EOF
+
+#if (defined (__i386__) || defined (__x86_64__)) && defined (__GNUC__)
+#  define OCTAVE_ENSURE_LONG_DOUBLE_OPERATIONS_ARE_NOT_TRUNCATED 1
+#endif
+EOF
+  else
+    cat << EOF
+/* #undef OCTAVE_ENSURE_LONG_DOUBLE_OPERATIONS_ARE_NOT_TRUNCATED */
+EOF
+  fi
+else
+  cat << EOF
+/* #undef OCTAVE_INT_USE_LONG_DOUBLE */
+/* #undef OCTAVE_ENSURE_LONG_DOUBLE_OPERATIONS_ARE_NOT_TRUNCATED */
+EOF
+fi
+
+cat << EOF
+
+#endif
+EOF