blob: 42eee15ccfb96018599be04b3beeff786942851d [file] [log] [blame]
H. Peter Anvind338b372016-02-18 00:54:30 -08001dnl Process this file with autoconf 2.63 or later to produce
H. Peter Anvin1170eb62002-05-19 02:26:38 +00002dnl a configure script.
H. Peter Anvind338b372016-02-18 00:54:30 -08003AC_PREREQ(2.63)
H. Peter Anvineea6b7a2003-09-08 20:02:10 +00004AC_INIT(config.h.in)
H. Peter Anvin2ef2f062003-09-01 04:19:37 +00005AC_CONFIG_HEADERS(config.h)
H. Peter Anvin87bc6192002-04-30 20:53:16 +00006
7dnl Check for broken VPATH handling on older NetBSD makes.
8AC_DEFUN(AC_PROG_MAKE_VPATHOK,
9[AC_MSG_CHECKING(whether ${MAKE-make} has sane VPATH handling)
10set dummy ${MAKE-make}; ac_make=`echo "[$]2" | sed 'y%./+-%__p_%'`
11AC_CACHE_VAL(ac_cv_prog_make_vpathok,
12[mkdir conftestdir
13cat > conftestdir/conftestmake <<\EOF
14VPATH = ..
15conftestfoo: conftestbar
16 @echo ac_make2temp=ok
17conftestbar: conftestbaz
18 @echo ac_maketemp=broken
19 @touch conftestbar
20EOF
21echo > conftestbaz # these two lines need to be...
22echo > conftestbar # ... in this order not the other
23changequote(, )dnl
24unset ac_maketemp
25unset ac_make2temp
26# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
27eval `cd conftestdir; ${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
28changequote([, ])dnl
29if test -n "$ac_maketemp"; then
30 ac_cv_prog_make_vpathok=no
31else
32 if test -n "$ac_make2temp"; then
33 ac_cv_prog_make_vpathok=yes
34 else
35 ac_cv_prog_make_vpathok=no
36 fi
37fi
38rm -rf conftestdir
39rm -f conftestbar conftestbaz])dnl
40if test $ac_cv_prog_make_vpathok = yes; then
41 AC_MSG_RESULT(yes)
42else
43 AC_MSG_RESULT(no)
44fi
45])
46
47AC_PREFIX_PROGRAM(nasm)
48
49dnl Checks for programs.
H. Peter Anvin70a5d142007-10-13 23:12:46 -070050dnl Consider AC_USE_SYSTEM_EXTENSIONS if autoconf 2.61 is OK in the future
H. Peter Anvin87bc6192002-04-30 20:53:16 +000051AC_PROG_CC
H. Peter Anvind338b372016-02-18 00:54:30 -080052AC_PROG_CC_STDC
53AC_USE_SYSTEM_EXTENSIONS
H. Peter Anvin87bc6192002-04-30 20:53:16 +000054AC_PROG_LN_S
55AC_PROG_MAKE_SET
56if test -f nasm.c; then
57 # we're building in the source dir, so we don't need this check at all
58 ac_cv_prog_make_vpathok=yes
59else
60 AC_PROG_MAKE_VPATHOK
61fi
62AC_PROG_INSTALL
63
Cyrill Gorcunov7729edf2014-12-20 11:35:51 +030064dnl Checks for typedefs, structures, and compiler characteristics.
65AC_C_CONST
H. Peter Anvin03f229c2015-11-04 11:29:09 -080066AC_C_INLINE
Cyrill Gorcunov7729edf2014-12-20 11:35:51 +030067AC_C_RESTRICT
68AC_TYPE_SIZE_T
Cyrill Gorcunov7729edf2014-12-20 11:35:51 +030069AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN))
70AH_TEMPLATE(WORDS_BIGENDIAN,
71[Define to 1 if your processor stores words with the most significant
72byte first (like Motorola and SPARC, unlike Intel and VAX).])
73AH_TEMPLATE(WORDS_LITTLEENDIAN,
74[Define to 1 if your processor stores words with the least significant
75byte first (like Intel and VAX, unlike Motorola and SPARC).])
76
H. Peter Anvineec3b522008-06-19 11:39:23 -070077dnl Look for programs...
H. Peter Anvina9397832013-05-17 12:02:49 -070078AC_CHECK_PROGS(NROFF, nroff, false)
H. Peter Anvind089c222013-10-24 13:22:19 +010079AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
80AC_CHECK_PROGS(XMLTO, xmlto, false)
H. Peter Anvineec3b522008-06-19 11:39:23 -070081AC_CHECK_PROGS(ACRODIST, acrodist, false)
82AC_CHECK_PROGS(PS2PDF, ps2pdf, false)
83AC_CHECK_PROGS(PSTOPDF, pstopdf, false)
H. Peter Anvin620515a2002-04-30 20:57:38 +000084
H. Peter Anvind089c222013-10-24 13:22:19 +010085dnl Check for progs needed for manpage generation
86if test $ASCIIDOC = false; then
87 AC_MSG_WARN([No acsciidoc package found])
88fi
89if test $XMLTO = false; then
90 AC_MSG_WARN([No xmlto package found])
91fi
92
H. Peter Anvin87bc6192002-04-30 20:53:16 +000093dnl Checks for header files.
94AC_HEADER_STDC
95if test $ac_cv_header_stdc = no; then
96 AC_MSG_ERROR([NASM requires ANSI C header files to compile])
97fi
98
99AC_CHECK_HEADERS(limits.h)
100if test $ac_cv_header_limits_h = no; then
101 AC_MSG_ERROR([NASM requires '<limits.h>' to compile])
102fi
103
H. Peter Anvin52daec52007-06-21 19:00:12 +0000104dnl Check for <inttypes.h> or add a substitute version
105AC_CHECK_HEADERS(inttypes.h, , CFLAGS="$CFLAGS -I\$(top_srcdir)/inttypes")
106
H. Peter Anvinfe501952007-10-02 21:53:51 -0700107dnl The standard header for str*casecmp is <strings.h>
108AC_CHECK_HEADERS(strings.h)
109
H. Peter Anvin6867acc2007-10-10 14:58:45 -0700110dnl Look for <stdbool.h>
H. Peter Anvind338b372016-02-18 00:54:30 -0800111AC_HEADER_STDBOOL
H. Peter Anvin6867acc2007-10-10 14:58:45 -0700112
H. Peter Anvin4627e692016-01-26 12:01:34 -0800113dnl Look for <unistd.h>
114AC_CHECK_HEADERS(unistd.h)
115
116dnl Look for <sys/param.h>
117AC_CHECK_HEADERS(sys/param.h)
118
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000119dnl Checks for library functions.
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700120AC_CHECK_FUNCS(strcspn, ,
121 AC_MSG_ERROR([NASM requires ANSI C (specifically, "strcspn")]))
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000122
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700123AC_CHECK_FUNCS(strspn, ,
124 AC_MSG_ERROR([NASM requires ANSI C (specifically, "strspn")]))
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000125
H. Peter Anvinfe501952007-10-02 21:53:51 -0700126AC_CHECK_FUNCS(strcasecmp stricmp)
127AC_CHECK_FUNCS(strncasecmp strnicmp)
H. Peter Anvinfe501952007-10-02 21:53:51 -0700128
H. Peter Anvin038d8612007-04-12 16:54:50 +0000129AC_CHECK_FUNCS(getuid)
130AC_CHECK_FUNCS(getgid)
131
H. Peter Anvin4627e692016-01-26 12:01:34 -0800132AC_CHECK_FUNCS(realpath)
133AC_CHECK_FUNCS(canonicalize_file_name)
134AC_CHECK_FUNCS(_fullpath)
135AC_CHECK_FUNCS(pathconf)
136
H. Peter Anvind338b372016-02-18 00:54:30 -0800137PA_HAVE_FUNC(__builtin_ctz, (0U))
138PA_HAVE_FUNC(__builtin_ctzl, (0UL))
139PA_HAVE_FUNC(__builtin_ctzll, (0ULL))
140
141dnl Functions for which we have replacements available in lib/
142AC_CONFIG_LIBOBJ_DIR([lib])
143AC_SUBST([LIBOBJDIR], [lib/])
144PA_REPLACE_FUNC([vsnprintf _vsnprintf])
145PA_REPLACE_FUNC([snprintf _snprintf])
146PA_REPLACE_FUNC([strlcpy])
147PA_REPLACE_FUNC([strsep])
148
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700149dnl Check for functions that might not be declared in the headers for
150dnl various idiotic reasons (mostly because of library authors
151dnl abusing the meaning of __STRICT_ANSI__)
152AC_CHECK_DECLS(strcasecmp)
153AC_CHECK_DECLS(stricmp)
154AC_CHECK_DECLS(strncasecmp)
155AC_CHECK_DECLS(strnicmp)
156AC_CHECK_DECLS(strsep)
H. Peter Anvineaa68f12009-08-10 15:56:52 -0700157AC_CHECK_DECLS(strlcpy)
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700158
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000159if test $ac_cv_prog_make_vpathok = no; then
160 echo Copying generated srcs into build directory to compensate for VPATH breakage
H. Peter Anvin1170eb62002-05-19 02:26:38 +0000161 for file in macros.c insnsa.c insnsd.c insnsn.c insnsi.h version.h version.mac; do
162 if test ! -f $file; then cp -p ${srcdir}/${file} .; fi
163 done
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000164fi
165
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300166dnl
167dnl support cchace
168dnl
169AC_ARG_WITH([ccache],
170 [AC_HELP_STRING([--with-ccache],
171 [Compile with ccache])],
172 [CC="ccache $CC"],
173 [])
174
H. Peter Anvind338b372016-02-18 00:54:30 -0800175dnl If we have gcc, add appropriate options
176PA_ADD_CFLAGS([-W])
177PA_ADD_CFLAGS([-Wall])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800178PA_ADD_CFLAGS([-pedantic])
179PA_ADD_CFLAGS([-Werror=implicit])
180PA_ADD_CFLAGS([-Werror=missing-braces])
181PA_ADD_CFLAGS([-Werror=return-type])
182PA_ADD_CFLAGS([-Werror=trigraphs])
183PA_ADD_CFLAGS([-Werror=pointer-arith])
184PA_ADD_CFLAGS([-Werror=strict-prototypes])
185PA_ADD_CFLAGS([-Werror=missing-prototypes])
186PA_ADD_CFLAGS([-Werror=missing-declarations])
187PA_ADD_CFLAGS([-Werror=comment])
188PA_ADD_CFLAGS([-Werror=vla])
189
H. Peter Anvin4b563af2002-05-04 00:15:02 +0000190AC_OUTPUT_COMMANDS([mkdir -p output])
H. Peter Anvin0fcdade2002-05-19 01:57:54 +0000191AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)