summaryrefslogtreecommitdiff
path: root/macros/texinfo/texinfo/tp/Texinfo/XS/configure.ac
blob: 932e20f7469f129952df7ef84c4d9c52b45b36df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# configure.ac for XSParagraph
#
# Copyright 2015-2019 Free Software Foundation, Inc.
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
AC_INIT([texinfo], [0])
AM_INIT_AUTOMAKE
AC_CONFIG_MACRO_DIR([gnulib/m4])

b='\'
d='$'
o='@<:@' dnl quadrigraph for [ - see autoconf documentatoin
c='@:>@' dnl quadrigraph for ]

# This turns a string like "cc='cc';" into a string like "cc".
# Afterwards, convert \ into / in case \ is a path separator,
# so it is not interpreted as a special character by the shell.

sed_script="
s/^$o^=$c*= *//
s/^'//
s/ *; *$//
s/'$d//
s/$b$b/$b//g"

fetch_conf ()
{
          conf_value=`${PERL} -V:$1`
          conf_value=`echo $conf_value | sed "$sed_script"`
} 

AC_DEFUN([lookup_perl_conf],
         [AC_MSG_CHECKING([Perl configuration value $1])
          fetch_conf $1
          AC_MSG_RESULT([$conf_value])
          AC_SUBST([PERL_CONF_$1], [$conf_value])
])

AC_DEFUN([lookup_perl_conf_values],
          [m4_foreach([var], [$1], [lookup_perl_conf(var)])
])

AC_ARG_ENABLE([perl-xs],
    AC_HELP_STRING([--enable-perl-xs],
              [build Perl XS modules for speed (default: yes)]),
    [if test $enableval = 'no'; then
       disable_xs=yes
     else
       disable_xs=no
     fi],
     [disable_xs=no])

# See (automake)Conditional Subdirectories.  Even if --disable-perl-xs
# is given, we still need to configure this directory minimally, so that
# "make dist" will work.
if test x$disable_xs != xyes; then
  AC_PATH_PROG([PERL], [perl])

  # PERL_EXT_var are user variables, allowing configuring at the top-level 
  # with e.g. "./configure CFLAGS='-g -O0' PERL_EXT_CFLAGS='-g'".
  
  if test -n "$PERL_EXT_CC" ; then
    CC=$PERL_EXT_CC
  else
    # It's essential that we use the same compiler that was used to build
    # Perl.  Otherwise Perl's "config.h" will be incorrect.  This overrides
    # the check in AC_PROG_CC below.
    lookup_perl_conf([cc])
    CC=$conf_value
  fi

  # Override these variables set by configure at the top level, because 
  # the compiler used in this subdirectory might be different.  Change 
  # these now so they are used in the gnulib checks.
  
  CFLAGS=$PERL_EXT_CFLAGS
  CPPFLAGS=$PERL_EXT_CPPFLAGS
  LDFLAGS=$PERL_EXT_LDFLAGS

  # Wipe cache values in case -C was given at the top level
  ac_cv_prog_CC= ; unset ac_cv_prog_CC
  ac_cv_prog_ac_ct_CC= ; unset ac_cv_prog_ac_ct_CC
fi

AC_PROG_CC

gl_EARLY

AM_GNU_GETTEXT([external])
AM_MISSING_PROG([XSUBPP], [xsubpp])

gl_INIT

LT_INIT([disable-static])

# The above are still necessary for --disable-perl-xs even though they 
# aren't really used: otherwise, configure complains about undefined
# variables.

host_needs_no_undefined=no
case "$host" in *-mingw32 | *-mingw64 | *-msdosdjgpp | *-cygwin )
  host_needs_no_undefined=yes ;;
esac     
AM_CONDITIONAL([HOST_NEEDS_NO_UNDEFINED],
               [test "x$host_needs_no_undefined" = "xyes"])

AM_CONDITIONAL([HAVE_ICONV],
               [test "x$am_func_iconv" = "xyes"])

# User variables for a Perl XS extension, which may be different, for
# example if the Perl interpreter being used was compiled with a
# different compiler.  Also in top-level configure.ac.
AC_ARG_VAR([PERL_EXT_CFLAGS], [Compiler flags for a Perl extension])
AC_ARG_VAR([PERL_EXT_CPPFLAGS], [C preprocessor flags for a Perl extension])
AC_ARG_VAR([PERL_EXT_LDFLAGS], [Linker flags for a Perl extension])
AC_ARG_VAR([PERL_EXT_CC], [Compiler for a Perl extension])

if test x$disable_xs != xyes; then
    lookup_perl_conf_values([[ccflags], [cccdlflags], [optimize]])
    
    # flags for linking the extension, e.g. -rpath.
    lookup_perl_conf([ccdlflags])
    
    lookup_perl_conf([libperl])
    # Change libperl.so into -lperl to indicate a library dependency to 
    # libtool.
    # Special case for Cygwin to change e.g. cygperl5_22.dll into -lperl
    PERL_CONF_libperl=`echo $PERL_CONF_libperl \
               | sed -e 's/^lib/-l/' \
                     -e 's/\..*//' \
                     -e 's/^cygperl.*/-lperl/' `
    
    lookup_perl_conf_values([[archlibexp], [privlibexp]])
    
    AC_CONFIG_HEADERS([config.h:config.in])
fi # not disable_xs

AC_CONFIG_FILES([Makefile gnulib/lib/Makefile])
AC_OUTPUT