blob: febe1b26d57001a49e4ada4cc3d2188c9ee13ca5 [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 Anvin43e02622016-08-02 09:28:22 -070085dnl Don't put things in common if we can avoid it. We don't want to
86dnl assume all compilers support common, and this will help find those
87dnl problems. This also works around an OSX linker problem.
88PA_ADD_CFLAGS([-fno-common])
89
H. Peter Anvineec3b522008-06-19 11:39:23 -070090dnl Look for programs...
H. Peter Anvina9397832013-05-17 12:02:49 -070091AC_CHECK_PROGS(NROFF, nroff, false)
H. Peter Anvind089c222013-10-24 13:22:19 +010092AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
93AC_CHECK_PROGS(XMLTO, xmlto, false)
H. Peter Anvineec3b522008-06-19 11:39:23 -070094AC_CHECK_PROGS(ACRODIST, acrodist, false)
95AC_CHECK_PROGS(PS2PDF, ps2pdf, false)
96AC_CHECK_PROGS(PSTOPDF, pstopdf, false)
H. Peter Anvin620515a2002-04-30 20:57:38 +000097
H. Peter Anvind089c222013-10-24 13:22:19 +010098dnl Check for progs needed for manpage generation
99if test $ASCIIDOC = false; then
H. Peter Anvincc147f72016-03-08 02:06:39 -0800100 AC_MSG_WARN([No asciidoc package found])
H. Peter Anvind089c222013-10-24 13:22:19 +0100101fi
102if test $XMLTO = false; then
103 AC_MSG_WARN([No xmlto package found])
104fi
105
H. Peter Anvincc147f72016-03-08 02:06:39 -0800106dnl Check for host compiler tools
107AC_CHECK_TOOL(AR, ar)
108AC_CHECK_TOOL(RANLIB, ranlib, :)
109AC_CHECK_TOOL(STRIP, strip)
110
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000111dnl Checks for header files.
112AC_HEADER_STDC
H. Peter Anvin3ef4f002016-03-08 12:14:55 -0800113AC_CHECK_HEADERS(inttypes.h)
H. Peter Anvinfe501952007-10-02 21:53:51 -0700114AC_CHECK_HEADERS(strings.h)
H. Peter Anvind338b372016-02-18 00:54:30 -0800115AC_HEADER_STDBOOL
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800116AC_CHECK_HEADERS(io.h)
H. Peter Anvind81a2352016-09-21 14:03:18 -0700117AC_CHECK_HEADERS(fcntl.h)
H. Peter Anvin4627e692016-01-26 12:01:34 -0800118AC_CHECK_HEADERS(unistd.h)
H. Peter Anvin4627e692016-01-26 12:01:34 -0800119AC_CHECK_HEADERS(sys/param.h)
H. Peter Anvind81a2352016-09-21 14:03:18 -0700120AC_CHECK_HEADERS(sys/mman.h)
121AC_CHECK_HEADERS(sys/stat.h)
H. Peter Anvin4627e692016-01-26 12:01:34 -0800122
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000123dnl Checks for library functions.
H. Peter Anvinfe501952007-10-02 21:53:51 -0700124AC_CHECK_FUNCS(strcasecmp stricmp)
125AC_CHECK_FUNCS(strncasecmp strnicmp)
H. Peter Anvin73b22f52016-02-18 14:40:37 -0800126AC_CHECK_FUNCS(strsep)
H. Peter Anvin22538e22016-05-25 05:42:47 -0700127AC_CHECK_FUNCS(strnlen)
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 Anvine65e81b2016-02-18 14:24:40 -0800137AC_FUNC_FSEEKO
H. Peter Anvinec82d7a2016-02-21 21:20:45 -0800138AC_CHECK_FUNCS([_fseeki64])
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800139AC_CHECK_FUNCS([ftruncate _chsize _chsize_s])
140AC_CHECK_FUNCS([fileno])
141
H. Peter Anvind81a2352016-09-21 14:03:18 -0700142AC_CHECK_FUNCS(stat)
143AC_CHECK_FUNCS(fstat)
144AC_CHECK_FUNCS(mmap)
145AC_CHECK_FUNCS(getpagesize)
146AC_CHECK_FUNCS(sysconf)
147
148AC_CHECK_FUNCS([access faccessat])
149
H. Peter Anvind338b372016-02-18 00:54:30 -0800150PA_HAVE_FUNC(__builtin_ctz, (0U))
151PA_HAVE_FUNC(__builtin_ctzl, (0UL))
152PA_HAVE_FUNC(__builtin_ctzll, (0ULL))
153
154dnl Functions for which we have replacements available in lib/
H. Peter Anvincc147f72016-03-08 02:06:39 -0800155AC_CHECK_FUNCS([vsnprintf _vsnprintf])
156AC_CHECK_FUNCS([snprintf _snprintf])
157AC_CHECK_FUNCS([strlcpy])
H. Peter Anvind338b372016-02-18 00:54:30 -0800158
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700159dnl Check for functions that might not be declared in the headers for
160dnl various idiotic reasons (mostly because of library authors
161dnl abusing the meaning of __STRICT_ANSI__)
162AC_CHECK_DECLS(strcasecmp)
163AC_CHECK_DECLS(stricmp)
164AC_CHECK_DECLS(strncasecmp)
165AC_CHECK_DECLS(strnicmp)
166AC_CHECK_DECLS(strsep)
H. Peter Anvineaa68f12009-08-10 15:56:52 -0700167AC_CHECK_DECLS(strlcpy)
H. Peter Anvin22538e22016-05-25 05:42:47 -0700168AC_CHECK_DECLS(strnlen)
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700169
H. Peter Anvind81a2352016-09-21 14:03:18 -0700170dnl Check for missing types
171AC_TYPE_UINTPTR_T
172
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000173if test $ac_cv_prog_make_vpathok = no; then
174 echo Copying generated srcs into build directory to compensate for VPATH breakage
H. Peter Anvin1170eb62002-05-19 02:26:38 +0000175 for file in macros.c insnsa.c insnsd.c insnsn.c insnsi.h version.h version.mac; do
176 if test ! -f $file; then cp -p ${srcdir}/${file} .; fi
177 done
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000178fi
179
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300180dnl
181dnl support cchace
182dnl
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800183AC_ARG_ENABLE([ccache],
184[AC_HELP_STRING([--with-ccache], [compile with ccache])],
185[CC="ccache $CC"],
186[])
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300187
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -0800188dnl If we have gcc, add appropriate code cleanliness options
H. Peter Anvind338b372016-02-18 00:54:30 -0800189PA_ADD_CFLAGS([-W])
190PA_ADD_CFLAGS([-Wall])
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -0800191PA_ADD_CFLAGS([-std=c99])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800192PA_ADD_CFLAGS([-pedantic])
H. Peter Anvinc9fd7b22016-05-16 21:35:48 -0700193dnl LLVM doesn't error out on invalid -W options unless this option is
194dnl specified first. Enable this so this script can actually discover
195dnl which -W options are possible for this compiler.
196PA_ADD_CFLAGS([-Werror=unknown-warning-option])
H. Peter Anvin25da6ea2016-03-01 22:20:10 -0800197dnl Suppress format warning on Windows targets due to their <inttypes.h>
198PA_ADD_CFLAGS([-Wpedantic-ms-format],[-Wno-pedantic-ms-format])
199PA_ADD_CFLAGS([-Wc90-c99-compat])
200PA_ADD_CFLAGS([-Wlong-long],[-Wno-long-long])
H. Peter Anvincfd56eb2016-03-06 21:44:14 -0800201dnl PA_ADD_CFLAGS([-Wwrite-strings])
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800202AC_ARG_ENABLE([werror],
203[AC_HELP_STRING([--enable-werror],
204[compile with -Werror to error out on any warning])],
H. Peter Anvinfdf0d072016-03-03 12:39:02 -0800205[], [enable_werror=no])
206AS_IF([test x"$enable_werror" != xno],
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800207[PA_ADD_CFLAGS([-Werror])],
208[PA_ADD_CFLAGS([-Werror=implicit])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800209PA_ADD_CFLAGS([-Werror=missing-braces])
210PA_ADD_CFLAGS([-Werror=return-type])
211PA_ADD_CFLAGS([-Werror=trigraphs])
212PA_ADD_CFLAGS([-Werror=pointer-arith])
213PA_ADD_CFLAGS([-Werror=strict-prototypes])
214PA_ADD_CFLAGS([-Werror=missing-prototypes])
215PA_ADD_CFLAGS([-Werror=missing-declarations])
216PA_ADD_CFLAGS([-Werror=comment])
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800217PA_ADD_CFLAGS([-Werror=vla])])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800218
H. Peter Anvine1f985c2016-05-25 12:06:29 -0700219AC_OUTPUT_COMMANDS([mkdir -p nasmlib nsis output stdlib x86 asm disasm])
H. Peter Anvin0fcdade2002-05-19 01:57:54 +0000220AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)