blob: d42d40e3e23f4a4cd24484786ad51c422652b188 [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 Anvin2f0f9ea2008-06-08 20:53:29 -070051AC_USE_SYSTEM_EXTENSIONS
H. Peter Anvinb423c022016-02-18 11:57:53 -080052AC_SYS_LARGEFILE
H. Peter Anvin87bc6192002-04-30 20:53:16 +000053AC_PROG_CC
H. Peter Anvind338b372016-02-18 00:54:30 -080054AC_PROG_CC_STDC
H. Peter Anvin87bc6192002-04-30 20:53:16 +000055AC_PROG_LN_S
56AC_PROG_MAKE_SET
57if test -f nasm.c; then
58 # we're building in the source dir, so we don't need this check at all
59 ac_cv_prog_make_vpathok=yes
60else
61 AC_PROG_MAKE_VPATHOK
62fi
63AC_PROG_INSTALL
64
H. Peter Anvin89c17702016-03-09 14:11:40 -080065dnl Check for library extension
66PA_LIBEXT
67
Cyrill Gorcunov7729edf2014-12-20 11:35:51 +030068dnl Checks for typedefs, structures, and compiler characteristics.
69AC_C_CONST
H. Peter Anvin03f229c2015-11-04 11:29:09 -080070AC_C_INLINE
Cyrill Gorcunov7729edf2014-12-20 11:35:51 +030071AC_C_RESTRICT
72AC_TYPE_SIZE_T
H. Peter Anvinef635882016-03-01 21:53:09 -080073AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN),,)
Cyrill Gorcunov7729edf2014-12-20 11:35:51 +030074AH_TEMPLATE(WORDS_BIGENDIAN,
75[Define to 1 if your processor stores words with the most significant
76byte first (like Motorola and SPARC, unlike Intel and VAX).])
77AH_TEMPLATE(WORDS_LITTLEENDIAN,
78[Define to 1 if your processor stores words with the least significant
79byte first (like Intel and VAX, unlike Motorola and SPARC).])
80
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -080081dnl Force gcc and gcc-compatible compilers treat signed integers
82dnl as 2's complement
H. Peter Anvin8d9f5912016-02-27 00:15:13 -080083PA_ADD_CFLAGS([-fwrapv])
H. Peter Anvin87bc6192002-04-30 20:53:16 +000084
H. Peter Anvineec3b522008-06-19 11:39:23 -070085dnl Look for programs...
H. Peter Anvina9397832013-05-17 12:02:49 -070086AC_CHECK_PROGS(NROFF, nroff, false)
H. Peter Anvind089c222013-10-24 13:22:19 +010087AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
88AC_CHECK_PROGS(XMLTO, xmlto, false)
H. Peter Anvineec3b522008-06-19 11:39:23 -070089AC_CHECK_PROGS(ACRODIST, acrodist, false)
90AC_CHECK_PROGS(PS2PDF, ps2pdf, false)
91AC_CHECK_PROGS(PSTOPDF, pstopdf, false)
H. Peter Anvin620515a2002-04-30 20:57:38 +000092
H. Peter Anvind089c222013-10-24 13:22:19 +010093dnl Check for progs needed for manpage generation
94if test $ASCIIDOC = false; then
H. Peter Anvincc147f72016-03-08 02:06:39 -080095 AC_MSG_WARN([No asciidoc package found])
H. Peter Anvind089c222013-10-24 13:22:19 +010096fi
97if test $XMLTO = false; then
98 AC_MSG_WARN([No xmlto package found])
99fi
100
H. Peter Anvincc147f72016-03-08 02:06:39 -0800101dnl Check for host compiler tools
102AC_CHECK_TOOL(AR, ar)
103AC_CHECK_TOOL(RANLIB, ranlib, :)
104AC_CHECK_TOOL(STRIP, strip)
105
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000106dnl Checks for header files.
107AC_HEADER_STDC
H. Peter Anvin3ef4f002016-03-08 12:14:55 -0800108AC_CHECK_HEADERS(inttypes.h)
H. Peter Anvinfe501952007-10-02 21:53:51 -0700109AC_CHECK_HEADERS(strings.h)
H. Peter Anvind338b372016-02-18 00:54:30 -0800110AC_HEADER_STDBOOL
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800111AC_CHECK_HEADERS(io.h)
H. Peter Anvin4627e692016-01-26 12:01:34 -0800112AC_CHECK_HEADERS(unistd.h)
H. Peter Anvin4627e692016-01-26 12:01:34 -0800113AC_CHECK_HEADERS(sys/param.h)
114
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000115dnl Checks for library functions.
H. Peter Anvinfe501952007-10-02 21:53:51 -0700116AC_CHECK_FUNCS(strcasecmp stricmp)
117AC_CHECK_FUNCS(strncasecmp strnicmp)
H. Peter Anvin73b22f52016-02-18 14:40:37 -0800118AC_CHECK_FUNCS(strsep)
H. Peter Anvin22538e22016-05-25 05:42:47 -0700119AC_CHECK_FUNCS(strnlen)
H. Peter Anvinfe501952007-10-02 21:53:51 -0700120
H. Peter Anvin038d8612007-04-12 16:54:50 +0000121AC_CHECK_FUNCS(getuid)
122AC_CHECK_FUNCS(getgid)
123
H. Peter Anvin4627e692016-01-26 12:01:34 -0800124AC_CHECK_FUNCS(realpath)
125AC_CHECK_FUNCS(canonicalize_file_name)
126AC_CHECK_FUNCS(_fullpath)
127AC_CHECK_FUNCS(pathconf)
128
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800129AC_FUNC_FSEEKO
H. Peter Anvinec82d7a2016-02-21 21:20:45 -0800130AC_CHECK_FUNCS([_fseeki64])
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800131AC_CHECK_FUNCS([ftruncate _chsize _chsize_s])
132AC_CHECK_FUNCS([fileno])
133
H. Peter Anvind338b372016-02-18 00:54:30 -0800134PA_HAVE_FUNC(__builtin_ctz, (0U))
135PA_HAVE_FUNC(__builtin_ctzl, (0UL))
136PA_HAVE_FUNC(__builtin_ctzll, (0ULL))
137
138dnl Functions for which we have replacements available in lib/
H. Peter Anvincc147f72016-03-08 02:06:39 -0800139AC_CHECK_FUNCS([vsnprintf _vsnprintf])
140AC_CHECK_FUNCS([snprintf _snprintf])
141AC_CHECK_FUNCS([strlcpy])
H. Peter Anvind338b372016-02-18 00:54:30 -0800142
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700143dnl Check for functions that might not be declared in the headers for
144dnl various idiotic reasons (mostly because of library authors
145dnl abusing the meaning of __STRICT_ANSI__)
146AC_CHECK_DECLS(strcasecmp)
147AC_CHECK_DECLS(stricmp)
148AC_CHECK_DECLS(strncasecmp)
149AC_CHECK_DECLS(strnicmp)
150AC_CHECK_DECLS(strsep)
H. Peter Anvineaa68f12009-08-10 15:56:52 -0700151AC_CHECK_DECLS(strlcpy)
H. Peter Anvin22538e22016-05-25 05:42:47 -0700152AC_CHECK_DECLS(strnlen)
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700153
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000154if test $ac_cv_prog_make_vpathok = no; then
155 echo Copying generated srcs into build directory to compensate for VPATH breakage
H. Peter Anvin1170eb62002-05-19 02:26:38 +0000156 for file in macros.c insnsa.c insnsd.c insnsn.c insnsi.h version.h version.mac; do
157 if test ! -f $file; then cp -p ${srcdir}/${file} .; fi
158 done
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000159fi
160
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300161dnl
162dnl support cchace
163dnl
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800164AC_ARG_ENABLE([ccache],
165[AC_HELP_STRING([--with-ccache], [compile with ccache])],
166[CC="ccache $CC"],
167[])
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300168
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -0800169dnl If we have gcc, add appropriate code cleanliness options
H. Peter Anvind338b372016-02-18 00:54:30 -0800170PA_ADD_CFLAGS([-W])
171PA_ADD_CFLAGS([-Wall])
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -0800172PA_ADD_CFLAGS([-std=c99])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800173PA_ADD_CFLAGS([-pedantic])
H. Peter Anvinc9fd7b22016-05-16 21:35:48 -0700174dnl LLVM doesn't error out on invalid -W options unless this option is
175dnl specified first. Enable this so this script can actually discover
176dnl which -W options are possible for this compiler.
177PA_ADD_CFLAGS([-Werror=unknown-warning-option])
H. Peter Anvin25da6ea2016-03-01 22:20:10 -0800178dnl Suppress format warning on Windows targets due to their <inttypes.h>
179PA_ADD_CFLAGS([-Wpedantic-ms-format],[-Wno-pedantic-ms-format])
180PA_ADD_CFLAGS([-Wc90-c99-compat])
181PA_ADD_CFLAGS([-Wlong-long],[-Wno-long-long])
H. Peter Anvincfd56eb2016-03-06 21:44:14 -0800182dnl PA_ADD_CFLAGS([-Wwrite-strings])
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800183AC_ARG_ENABLE([werror],
184[AC_HELP_STRING([--enable-werror],
185[compile with -Werror to error out on any warning])],
H. Peter Anvinfdf0d072016-03-03 12:39:02 -0800186[], [enable_werror=no])
187AS_IF([test x"$enable_werror" != xno],
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800188[PA_ADD_CFLAGS([-Werror])],
189[PA_ADD_CFLAGS([-Werror=implicit])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800190PA_ADD_CFLAGS([-Werror=missing-braces])
191PA_ADD_CFLAGS([-Werror=return-type])
192PA_ADD_CFLAGS([-Werror=trigraphs])
193PA_ADD_CFLAGS([-Werror=pointer-arith])
194PA_ADD_CFLAGS([-Werror=strict-prototypes])
195PA_ADD_CFLAGS([-Werror=missing-prototypes])
196PA_ADD_CFLAGS([-Werror=missing-declarations])
197PA_ADD_CFLAGS([-Werror=comment])
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800198PA_ADD_CFLAGS([-Werror=vla])])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800199
H. Peter Anvina87c5e42016-05-16 21:24:26 -0700200AC_OUTPUT_COMMANDS([mkdir -p nasmlib nsis output stdlib])
H. Peter Anvin0fcdade2002-05-19 01:57:54 +0000201AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)