New backend interface - assembler internals #1
[nasm.git] / configure.ac
blobabc29a7f12d9aea77003e0e77ccb06b6e2f7f137
1 dnl Process this file with autoconf 2.63 or later to produce
2 dnl a configure script.
3 AC_PREREQ(2.63)
4 AC_INIT(config.h.in)
5 AC_CONFIG_HEADERS(config.h)
7 dnl Check for broken VPATH handling on older NetBSD makes.
8 AC_DEFUN(AC_PROG_MAKE_VPATHOK,
9 [AC_MSG_CHECKING(whether ${MAKE-make} has sane VPATH handling)
10 set dummy ${MAKE-make}; ac_make=`echo "[$]2" | sed 'y%./+-%__p_%'`
11 AC_CACHE_VAL(ac_cv_prog_make_vpathok,
12 [mkdir conftestdir
13 cat > conftestdir/conftestmake <<\EOF
14 VPATH = ..
15 conftestfoo: conftestbar
16         @echo ac_make2temp=ok
17 conftestbar: conftestbaz
18         @echo ac_maketemp=broken
19         @touch conftestbar
20 EOF
21 echo > conftestbaz # these two lines need to be...
22 echo > conftestbar # ... in this order not the other
23 changequote(, )dnl
24 unset ac_maketemp
25 unset ac_make2temp
26 # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
27 eval `cd conftestdir; ${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
28 changequote([, ])dnl
29 if test -n "$ac_maketemp"; then
30   ac_cv_prog_make_vpathok=no
31 else
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
38 rm -rf conftestdir
39 rm -f conftestbar conftestbaz])dnl
40 if test $ac_cv_prog_make_vpathok = yes; then
41   AC_MSG_RESULT(yes)
42 else
43   AC_MSG_RESULT(no)
47 AC_PREFIX_PROGRAM(nasm)
49 dnl Checks for programs.
50 dnl Consider AC_USE_SYSTEM_EXTENSIONS if autoconf 2.61 is OK in the future
51 AC_USE_SYSTEM_EXTENSIONS
52 AC_SYS_LARGEFILE
53 AC_PROG_CC
54 AC_PROG_CC_STDC
55 AC_PROG_LN_S
56 AC_PROG_MAKE_SET
57 if 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
60 else
61   AC_PROG_MAKE_VPATHOK
63 AC_PROG_INSTALL
65 dnl Check for library extension
66 PA_LIBEXT
68 dnl Checks for typedefs, structures, and compiler characteristics.
69 AC_C_CONST
70 AC_C_INLINE
71 AC_C_RESTRICT
72 AC_TYPE_SIZE_T
73 AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN),,)
74 AH_TEMPLATE(WORDS_BIGENDIAN,
75 [Define to 1 if your processor stores words with the most significant
76 byte first (like Motorola and SPARC, unlike Intel and VAX).])
77 AH_TEMPLATE(WORDS_LITTLEENDIAN,
78 [Define to 1 if your processor stores words with the least significant
79 byte first (like Intel and VAX, unlike Motorola and SPARC).])
81 dnl Force gcc and gcc-compatible compilers treat signed integers
82 dnl as 2's complement
83 PA_ADD_CFLAGS([-fwrapv])
85 dnl Don't put things in common if we can avoid it.  We don't want to
86 dnl assume all compilers support common, and this will help find those
87 dnl problems.  This also works around an OSX linker problem.
88 PA_ADD_CFLAGS([-fno-common])
90 dnl Look for programs...
91 AC_CHECK_PROGS(NROFF,    nroff,    false)
92 AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
93 AC_CHECK_PROGS(XMLTO,    xmlto,    false)
94 AC_CHECK_PROGS(ACRODIST, acrodist, false)
95 AC_CHECK_PROGS(PS2PDF,   ps2pdf,   false)
96 AC_CHECK_PROGS(PSTOPDF,  pstopdf,  false)
98 dnl Check for progs needed for manpage generation
99 if test $ASCIIDOC = false; then
100   AC_MSG_WARN([No asciidoc package found])
102 if test $XMLTO = false; then
103   AC_MSG_WARN([No xmlto package found])
106 dnl Check for host compiler tools
107 AC_CHECK_TOOL(AR, ar)
108 AC_CHECK_TOOL(RANLIB, ranlib, :)
109 AC_CHECK_TOOL(STRIP, strip)
111 dnl Checks for header files.
112 AC_HEADER_STDC
113 AC_CHECK_HEADERS(inttypes.h)
114 AC_CHECK_HEADERS(strings.h)
115 AC_HEADER_STDBOOL
116 AC_CHECK_HEADERS(io.h)
117 AC_CHECK_HEADERS(unistd.h)
118 AC_CHECK_HEADERS(sys/param.h)
120 dnl Checks for library functions.
121 AC_CHECK_FUNCS(strcasecmp stricmp)
122 AC_CHECK_FUNCS(strncasecmp strnicmp)
123 AC_CHECK_FUNCS(strsep)
124 AC_CHECK_FUNCS(strnlen)
126 AC_CHECK_FUNCS(getuid)
127 AC_CHECK_FUNCS(getgid)
129 AC_CHECK_FUNCS(realpath)
130 AC_CHECK_FUNCS(canonicalize_file_name)
131 AC_CHECK_FUNCS(_fullpath)
132 AC_CHECK_FUNCS(pathconf)
134 AC_FUNC_FSEEKO
135 AC_CHECK_FUNCS([_fseeki64])
136 AC_CHECK_FUNCS([ftruncate _chsize _chsize_s])
137 AC_CHECK_FUNCS([fileno])
139 PA_HAVE_FUNC(__builtin_ctz, (0U))
140 PA_HAVE_FUNC(__builtin_ctzl, (0UL))
141 PA_HAVE_FUNC(__builtin_ctzll, (0ULL))
143 dnl Functions for which we have replacements available in lib/
144 AC_CHECK_FUNCS([vsnprintf _vsnprintf])
145 AC_CHECK_FUNCS([snprintf _snprintf])
146 AC_CHECK_FUNCS([strlcpy])
148 dnl Check for functions that might not be declared in the headers for
149 dnl various idiotic reasons (mostly because of library authors
150 dnl abusing the meaning of __STRICT_ANSI__)
151 AC_CHECK_DECLS(strcasecmp)
152 AC_CHECK_DECLS(stricmp)
153 AC_CHECK_DECLS(strncasecmp)
154 AC_CHECK_DECLS(strnicmp)
155 AC_CHECK_DECLS(strsep)
156 AC_CHECK_DECLS(strlcpy)
157 AC_CHECK_DECLS(strnlen)
159 if test $ac_cv_prog_make_vpathok = no; then
160   echo Copying generated srcs into build directory to compensate for VPATH breakage
161   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
167 dnl support cchace
169 AC_ARG_ENABLE([ccache],
170 [AC_HELP_STRING([--with-ccache], [compile with ccache])],
171 [CC="ccache $CC"],
174 dnl If we have gcc, add appropriate code cleanliness options
175 PA_ADD_CFLAGS([-W])
176 PA_ADD_CFLAGS([-Wall])
177 PA_ADD_CFLAGS([-std=c99])
178 PA_ADD_CFLAGS([-pedantic])
179 dnl LLVM doesn't error out on invalid -W options unless this option is
180 dnl specified first.  Enable this so this script can actually discover
181 dnl which -W options are possible for this compiler.
182 PA_ADD_CFLAGS([-Werror=unknown-warning-option])
183 dnl Suppress format warning on Windows targets due to their <inttypes.h>
184 PA_ADD_CFLAGS([-Wpedantic-ms-format],[-Wno-pedantic-ms-format])
185 PA_ADD_CFLAGS([-Wc90-c99-compat])
186 PA_ADD_CFLAGS([-Wlong-long],[-Wno-long-long])
187 dnl PA_ADD_CFLAGS([-Wwrite-strings])
188 AC_ARG_ENABLE([werror],
189 [AC_HELP_STRING([--enable-werror],
190 [compile with -Werror to error out on any warning])],
191 [], [enable_werror=no])
192 AS_IF([test x"$enable_werror" != xno],
193 [PA_ADD_CFLAGS([-Werror])],
194 [PA_ADD_CFLAGS([-Werror=implicit])
195 PA_ADD_CFLAGS([-Werror=missing-braces])
196 PA_ADD_CFLAGS([-Werror=return-type])
197 PA_ADD_CFLAGS([-Werror=trigraphs])
198 PA_ADD_CFLAGS([-Werror=pointer-arith])
199 PA_ADD_CFLAGS([-Werror=strict-prototypes])
200 PA_ADD_CFLAGS([-Werror=missing-prototypes])
201 PA_ADD_CFLAGS([-Werror=missing-declarations])
202 PA_ADD_CFLAGS([-Werror=comment])
203 PA_ADD_CFLAGS([-Werror=vla])])
205 AC_OUTPUT_COMMANDS([mkdir -p nasmlib nsis output stdlib x86 asm disasm])
206 AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)