Mercurial > octave
view build-aux/mk-octave-config-h.sh @ 21240:7af5ca01ecac
allow octave-config.h to be included unconditionally
* oct-conf-post.in.h (OCTAVE_AUTOCONFIG_H_INCLUDED): Rename from
OCTAVE_CONFIG_H_INCLUDED.
* mk-octave-config-h.sh: Protect contents of generated file with
OCTAVE_AUTOCONFIG_H_INCLUDED.
* oct-refcount.h: Simply include octave-config.h instead of checking
OCTAVE_CONFIG_H_INCLUDED.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Feb 2016 11:57:17 -0500 |
parents | ffc9806bb300 |
children | 1bca6c72d2b1 |
line wrap: on
line source
#! /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/>. # Generate a header file that provides the public symbols from Octave's # autoconf-generated config.h file. See the notes at the top of the # generated octave-config.h file for more details. 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/>. */ /* All Octave source files should begin with #if defined (HAVE_CONFIG_H) # include <config.h> #endif All public Octave header files should have the form #if ! defined (INCLUSION_GUARD_SYMBOL) #define INCLUSION_GUARD_SYMBOL 1 #include "octave-config.h" // Contents of header file. #endif In Octave source files, INCLUSION_GUARD_SYMBOL should have the form octave_NAME_h with NAME formed from the header file name with '-' replaced by '_'. It is safe to include octave-config.h unconditionally since it will expand to an empty file if it is included after Octave's autoconf-generated config.h file. Users of Octave's libraries should not need to include octave-config.h since all of Octave's header files already include it. */ #if ! defined (octave_octave_config_h) #define octave_octave_config_h 1 #if ! defined (OCTAVE_AUTOCONFIG_H_INCLUDED) #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 #endif EOF