blob: c23bac1d1e07c34f6cce9599436de391ab09dcad [file] [log] [blame]
H. Peter Anvin2f0f9ea2008-06-08 20:53:29 -07001dnl Process this file with autoconf 2.61 or later to produce
H. Peter Anvin1170eb62002-05-19 02:26:38 +00002dnl a configure script.
H. Peter Anvin2f0f9ea2008-06-08 20:53:29 -07003AC_PREREQ(2.61)
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 Anvin87bc6192002-04-30 20:53:16 +000052AC_PROG_CC
53AC_PROG_LN_S
54AC_PROG_MAKE_SET
55if test -f nasm.c; then
56 # we're building in the source dir, so we don't need this check at all
57 ac_cv_prog_make_vpathok=yes
58else
59 AC_PROG_MAKE_VPATHOK
60fi
61AC_PROG_INSTALL
62
H. Peter Anvin1ed03872007-04-15 22:45:25 +000063dnl If we have gcc, add appropriate options
64PA_ADD_CFLAGS([-W])
65PA_ADD_CFLAGS([-Wall])
66PA_ADD_CFLAGS([-std=c99])
67PA_ADD_CFLAGS([-pedantic])
H. Peter Anvin87bc6192002-04-30 20:53:16 +000068
H. Peter Anvineec3b522008-06-19 11:39:23 -070069dnl Look for programs...
70AC_CHECK_PROGS(NROFF, nroff, echo)
71AC_CHECK_PROGS(ACRODIST, acrodist, false)
72AC_CHECK_PROGS(PS2PDF, ps2pdf, false)
73AC_CHECK_PROGS(PSTOPDF, pstopdf, false)
H. Peter Anvin620515a2002-04-30 20:57:38 +000074
H. Peter Anvin87bc6192002-04-30 20:53:16 +000075dnl Checks for header files.
76AC_HEADER_STDC
77if test $ac_cv_header_stdc = no; then
78 AC_MSG_ERROR([NASM requires ANSI C header files to compile])
79fi
80
81AC_CHECK_HEADERS(limits.h)
82if test $ac_cv_header_limits_h = no; then
83 AC_MSG_ERROR([NASM requires '<limits.h>' to compile])
84fi
85
H. Peter Anvin52daec52007-06-21 19:00:12 +000086dnl Check for <inttypes.h> or add a substitute version
87AC_CHECK_HEADERS(inttypes.h, , CFLAGS="$CFLAGS -I\$(top_srcdir)/inttypes")
88
H. Peter Anvinfe501952007-10-02 21:53:51 -070089dnl The standard header for str*casecmp is <strings.h>
90AC_CHECK_HEADERS(strings.h)
91
H. Peter Anvin6867acc2007-10-10 14:58:45 -070092dnl Look for <stdbool.h>
93AC_CHECK_HEADERS(stdbool.h)
94
H. Peter Anvin87bc6192002-04-30 20:53:16 +000095dnl Checks for typedefs, structures, and compiler characteristics.
96AC_C_CONST
H. Peter Anvin253a4e72008-06-10 13:00:27 -070097AC_C_INLINE
98AC_C_RESTRICT
H. Peter Anvin87bc6192002-04-30 20:53:16 +000099AC_TYPE_SIZE_T
H. Peter Anvin1fb908c2009-03-01 13:57:40 -0800100PA_WORKING_BOOL
H. Peter Anvin2f0f9ea2008-06-08 20:53:29 -0700101AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN))
102AH_TEMPLATE(WORDS_BIGENDIAN,
103[Define to 1 if your processor stores words with the most significant
104byte first (like Motorola and SPARC, unlike Intel and VAX).])
105AH_TEMPLATE(WORDS_LITTLEENDIAN,
H. Peter Anvin11e6c852008-06-10 14:41:43 -0700106[Define to 1 if your processor stores words with the least significant
H. Peter Anvin2f0f9ea2008-06-08 20:53:29 -0700107byte first (like Intel and VAX, unlike Motorola and SPARC).])
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000108
109dnl Checks for library functions.
H. Peter Anvina3d1ccd2007-09-28 20:17:12 -0700110AC_SUBST(XOBJS)
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000111
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700112AC_CHECK_FUNCS(strcspn, ,
113 AC_MSG_ERROR([NASM requires ANSI C (specifically, "strcspn")]))
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000114
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700115AC_CHECK_FUNCS(strspn, ,
116 AC_MSG_ERROR([NASM requires ANSI C (specifically, "strspn")]))
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000117
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700118missing=true
H. Peter Anvin304b6052007-09-28 10:50:20 -0700119AC_CHECK_FUNCS([vsnprintf _vsnprintf], missing=false)
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700120if $missing; then
H. Peter Anvin304b6052007-09-28 10:50:20 -0700121 XOBJS="$XOBJS lib/vsnprintf.o"
Ed Beroseta5d29452004-12-15 23:02:20 +0000122fi
123
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700124missing=true
H. Peter Anvin304b6052007-09-28 10:50:20 -0700125AC_CHECK_FUNCS([snprintf _snprintf], missing=false)
H. Peter Anvinb8af9aa2007-09-17 13:53:14 -0700126if $missing; then
H. Peter Anvin304b6052007-09-28 10:50:20 -0700127 XOBJS="$XOBJS lib/snprintf.o"
Ed Beroseta5d29452004-12-15 23:02:20 +0000128fi
129
H. Peter Anvinfe501952007-10-02 21:53:51 -0700130AC_CHECK_FUNCS(strcasecmp stricmp)
131AC_CHECK_FUNCS(strncasecmp strnicmp)
132AC_CHECK_FUNCS(strsep)
H. Peter Anvineaa68f12009-08-10 15:56:52 -0700133AC_CHECK_FUNCS(strlcpy)
H. Peter Anvinfe501952007-10-02 21:53:51 -0700134
H. Peter Anvin038d8612007-04-12 16:54:50 +0000135AC_CHECK_FUNCS(getuid)
136AC_CHECK_FUNCS(getgid)
137
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700138dnl Check for functions that might not be declared in the headers for
139dnl various idiotic reasons (mostly because of library authors
140dnl abusing the meaning of __STRICT_ANSI__)
141AC_CHECK_DECLS(strcasecmp)
142AC_CHECK_DECLS(stricmp)
143AC_CHECK_DECLS(strncasecmp)
144AC_CHECK_DECLS(strnicmp)
145AC_CHECK_DECLS(strsep)
H. Peter Anvineaa68f12009-08-10 15:56:52 -0700146AC_CHECK_DECLS(strlcpy)
H. Peter Anvinc13d31a2007-10-26 18:49:29 -0700147
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000148if test $ac_cv_prog_make_vpathok = no; then
149 echo Copying generated srcs into build directory to compensate for VPATH breakage
H. Peter Anvin1170eb62002-05-19 02:26:38 +0000150 for file in macros.c insnsa.c insnsd.c insnsn.c insnsi.h version.h version.mac; do
151 if test ! -f $file; then cp -p ${srcdir}/${file} .; fi
152 done
H. Peter Anvin87bc6192002-04-30 20:53:16 +0000153fi
154
H. Peter Anvin4b563af2002-05-04 00:15:02 +0000155AC_OUTPUT_COMMANDS([mkdir -p output])
H. Peter Anvin0fcdade2002-05-19 01:57:54 +0000156AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)