blob: 10fed65c7ec5bbac2e029bd9598843fd39348509 [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 Anvin397c1692016-10-04 17:01:59 -07004AC_INIT(config/config.h.in)
5AC_CONFIG_HEADERS(config/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 Anvin4c9132e2016-10-19 13:13:38 -0700122AC_CHECK_HEADERS(sys/types.h)
H. Peter Anvin4627e692016-01-26 12:01:34 -0800123
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000124dnl Checks for library functions.
H. Peter Anvinfe501952007-10-02 21:53:51 -0700125AC_CHECK_FUNCS(strcasecmp stricmp)
126AC_CHECK_FUNCS(strncasecmp strnicmp)
H. Peter Anvin73b22f52016-02-18 14:40:37 -0800127AC_CHECK_FUNCS(strsep)
H. Peter Anvin22538e22016-05-25 05:42:47 -0700128AC_CHECK_FUNCS(strnlen)
H. Peter Anvinfe501952007-10-02 21:53:51 -0700129
H. Peter Anvin038d8612007-04-12 16:54:50 +0000130AC_CHECK_FUNCS(getuid)
131AC_CHECK_FUNCS(getgid)
132
H. Peter Anvin4627e692016-01-26 12:01:34 -0800133AC_CHECK_FUNCS(realpath)
134AC_CHECK_FUNCS(canonicalize_file_name)
135AC_CHECK_FUNCS(_fullpath)
136AC_CHECK_FUNCS(pathconf)
137
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800138AC_FUNC_FSEEKO
H. Peter Anvinec82d7a2016-02-21 21:20:45 -0800139AC_CHECK_FUNCS([_fseeki64])
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800140AC_CHECK_FUNCS([ftruncate _chsize _chsize_s])
H. Peter Anvin397c1692016-10-04 17:01:59 -0700141AC_CHECK_FUNCS([fileno _fileno])
H. Peter Anvine65e81b2016-02-18 14:24:40 -0800142
H. Peter Anvin397c1692016-10-04 17:01:59 -0700143AC_CHECK_FUNCS(_filelengthi64)
144AC_CHECK_FUNCS([stat _stati64])
H. Peter Anvind81a2352016-09-21 14:03:18 -0700145AC_CHECK_FUNCS(fstat)
146AC_CHECK_FUNCS(mmap)
147AC_CHECK_FUNCS(getpagesize)
148AC_CHECK_FUNCS(sysconf)
149
H. Peter Anvin397c1692016-10-04 17:01:59 -0700150AC_CHECK_FUNCS([access _access faccessat])
H. Peter Anvind81a2352016-09-21 14:03:18 -0700151
H. Peter Anvind338b372016-02-18 00:54:30 -0800152PA_HAVE_FUNC(__builtin_ctz, (0U))
153PA_HAVE_FUNC(__builtin_ctzl, (0UL))
154PA_HAVE_FUNC(__builtin_ctzll, (0ULL))
155
156dnl Functions for which we have replacements available in lib/
H. Peter Anvincc147f72016-03-08 02:06:39 -0800157AC_CHECK_FUNCS([vsnprintf _vsnprintf])
158AC_CHECK_FUNCS([snprintf _snprintf])
159AC_CHECK_FUNCS([strlcpy])
H. Peter Anvind338b372016-02-18 00:54:30 -0800160
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700161dnl Check for functions that might not be declared in the headers for
162dnl various idiotic reasons (mostly because of library authors
163dnl abusing the meaning of __STRICT_ANSI__)
164AC_CHECK_DECLS(strcasecmp)
165AC_CHECK_DECLS(stricmp)
166AC_CHECK_DECLS(strncasecmp)
167AC_CHECK_DECLS(strnicmp)
168AC_CHECK_DECLS(strsep)
H. Peter Anvineaa68f12009-08-10 15:56:52 -0700169AC_CHECK_DECLS(strlcpy)
H. Peter Anvin22538e22016-05-25 05:42:47 -0700170AC_CHECK_DECLS(strnlen)
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700171
H. Peter Anvind81a2352016-09-21 14:03:18 -0700172dnl Check for missing types
173AC_TYPE_UINTPTR_T
174
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000175if test $ac_cv_prog_make_vpathok = no; then
176 echo Copying generated srcs into build directory to compensate for VPATH breakage
H. Peter Anvin1170eb62002-05-19 02:26:38 +0000177 for file in macros.c insnsa.c insnsd.c insnsn.c insnsi.h version.h version.mac; do
178 if test ! -f $file; then cp -p ${srcdir}/${file} .; fi
179 done
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000180fi
181
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300182dnl
183dnl support cchace
184dnl
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800185AC_ARG_ENABLE([ccache],
186[AC_HELP_STRING([--with-ccache], [compile with ccache])],
187[CC="ccache $CC"],
188[])
Cyrill Gorcunov325768e2010-11-11 11:18:44 +0300189
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -0800190dnl If we have gcc, add appropriate code cleanliness options
H. Peter Anvind338b372016-02-18 00:54:30 -0800191PA_ADD_CFLAGS([-W])
192PA_ADD_CFLAGS([-Wall])
H. Peter Anvinb9c1ca72016-03-01 21:51:40 -0800193PA_ADD_CFLAGS([-std=c99])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800194PA_ADD_CFLAGS([-pedantic])
H. Peter Anvinc9fd7b22016-05-16 21:35:48 -0700195dnl LLVM doesn't error out on invalid -W options unless this option is
196dnl specified first. Enable this so this script can actually discover
197dnl which -W options are possible for this compiler.
198PA_ADD_CFLAGS([-Werror=unknown-warning-option])
H. Peter Anvin25da6ea2016-03-01 22:20:10 -0800199dnl Suppress format warning on Windows targets due to their <inttypes.h>
200PA_ADD_CFLAGS([-Wpedantic-ms-format],[-Wno-pedantic-ms-format])
201PA_ADD_CFLAGS([-Wc90-c99-compat])
202PA_ADD_CFLAGS([-Wlong-long],[-Wno-long-long])
H. Peter Anvincfd56eb2016-03-06 21:44:14 -0800203dnl PA_ADD_CFLAGS([-Wwrite-strings])
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800204AC_ARG_ENABLE([werror],
205[AC_HELP_STRING([--enable-werror],
206[compile with -Werror to error out on any warning])],
H. Peter Anvinfdf0d072016-03-03 12:39:02 -0800207[], [enable_werror=no])
208AS_IF([test x"$enable_werror" != xno],
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800209[PA_ADD_CFLAGS([-Werror])],
210[PA_ADD_CFLAGS([-Werror=implicit])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800211PA_ADD_CFLAGS([-Werror=missing-braces])
212PA_ADD_CFLAGS([-Werror=return-type])
213PA_ADD_CFLAGS([-Werror=trigraphs])
214PA_ADD_CFLAGS([-Werror=pointer-arith])
215PA_ADD_CFLAGS([-Werror=strict-prototypes])
216PA_ADD_CFLAGS([-Werror=missing-prototypes])
217PA_ADD_CFLAGS([-Werror=missing-declarations])
218PA_ADD_CFLAGS([-Werror=comment])
H. Peter Anvin44a609b2016-02-18 12:09:31 -0800219PA_ADD_CFLAGS([-Werror=vla])])
Ozkan Sezerec3d4262016-02-12 23:49:49 -0800220
H. Peter Anvin397c1692016-10-04 17:01:59 -0700221AC_OUTPUT_COMMANDS([mkdir -p config nasmlib nsis output stdlib x86 asm disasm])
H. Peter Anvin0fcdade2002-05-19 01:57:54 +0000222AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)