Update lightrec 20220910 (#686)
[pcsx_rearmed.git] / deps / lightning / configure.ac
CommitLineData
4a71579b
PC
1dnl
2dnl Copyright 2000, 2001, 2002, 2012-2019 Free Software Foundation, Inc.
3dnl
4dnl This file is part of GNU lightning.
5dnl
6dnl GNU lightning is free software; you can redistribute it and/or modify it
7dnl under the terms of the GNU Lesser General Public License as published
8dnl by the Free Software Foundation; either version 3, or (at your option)
9dnl any later version.
519a9ea1 10dnl
4a71579b
PC
11dnl GNU lightning is distributed in the hope that it will be useful, but
12dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14dnl License for more details.
15dnl
16
519a9ea1 17AC_PREREQ(2.64)
4a71579b 18AC_INIT([GNU lightning], 2.1.3, pcpa@gnu.org, lightning)
519a9ea1 19AC_CONFIG_AUX_DIR([build-aux])
4a71579b
PC
20AC_CANONICAL_TARGET
21AC_CONFIG_SRCDIR([Makefile.am])
22AM_INIT_AUTOMAKE([dist-bzip2])
23m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
519a9ea1 24AC_CONFIG_MACRO_DIR([m4])
4a71579b 25
519a9ea1 26AC_CONFIG_HEADERS([config.h])
4a71579b
PC
27
28AC_PROG_CC
519a9ea1
PC
29gl_EARLY
30AM_PROG_AR
31LT_INIT
32gl_INIT
4a71579b
PC
33
34case "$target_cpu" in
35 ia64)
36 case "$host_os" in
37 # Only supported mode
38 *hpux*)
39 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -mlp64" ;;
40 *) ;;
41 esac ;;
42 *mips*)
43 case "$host_os" in
44 # (Hack) Flags to pass configure with gcc 3.x
45 # Should not set LIGHTNINT_CFLAGS
46 *irix*)
47 CFLAGS="$CFLAGS -D__c99 -Drestrict=";;
48 *) ;;
49 esac ;;
50 alpha*)
51 case "$host_os" in
52 osf*)
53 # Get proper varargs and mmap prototypes and definitions
54 CFLAGS="$CFLAGS -D_ANSI_C_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE -D_POSIX_C_SOURCE=199309L"
55 # Want to generate NaN with 0.0/0.0 and Inf with 1.0/0.0
56 if test x$GCC = "xyes"; then
57 CFLAGS="$CFLAGS -mieee"
58 else
59 CFLAGS="$CFLAGS -ieee_with_no_inexact"
60 fi ;;
61 *) ;;
62 esac ;;
63 *) ;;
64esac
65
40a44dcb 66AC_CHECK_FUNCS(mmap mremap ffsl getopt_long_only isnan isinf,,)
4a71579b
PC
67
68AC_CHECK_HEADERS([getopt.h stdint.h],,,)
69
70AC_ARG_ENABLE(disassembler,
71 AS_HELP_STRING([--enable-disassembler],
72 [Enable jit disassembler using binutils]),
73 [DISASSEMBLER=$enableval], [DISASSEMBLER=auto])
74if test "x$DISASSEMBLER" != "xno"; then
40a44dcb 75
4a71579b
PC
76 AC_CHECK_LIB(iberty, htab_try_create, ,
77 [HAVE_IBERTY="no"])
78 AC_CHECK_LIB(bfd, bfd_init, ,
79 [HAVE_BFD="no"])
80 AC_CHECK_LIB(z, compressBound, ,
81 [HAVE_Z="no"])
82 AC_CHECK_LIB(opcodes, init_disassemble_info, ,
83 [HAVE_OPCODES="no"])
40a44dcb
PC
84
85 if test "x$HAVE_IBERTY" = "xno"; then
86 if test "x$DISASSEMBLER" = "xyes"; then
87 AC_MSG_ERROR([libiberty not found])
88 else
89 AC_MSG_WARN([libiberty not found])
90 DISASSEMBLER="no"
91 fi
4a71579b 92 fi
40a44dcb
PC
93
94 if test "x$HAVE_BFD" = "xno"; then
95 if test "x$DISASSEMBLER" = "xyes"; then
96 AC_MSG_ERROR([binutils BFD not found, see http://www.gnu.org/software/binutils/])
97 else
98 AC_MSG_WARN([binutils BFD not found, see http://www.gnu.org/software/binutils/])
99 DISASSEMBLER="no"
100 fi
101 fi
102
103 if test "x$HAVE_Z" = "xno"; then
104 if test "x$DISASSEMBLER" = "xyes"; then
105 AC_MSG_ERROR([zlib not found, see https://zlib.net/])
106 else
107 AC_MSG_WARN([zlib not found, see https://zlib.net/])
108 DISASSEMBLER="no"
109 fi
110 fi
111
112 if test "x$HAVE_OPCODES" = "xno"; then
113 if test "x$DISASSEMBLER" = "xyes"; then
114 AC_MSG_ERROR([binutils opcodes not found, see https://www.gnu.org/software/binutils/])
115 else
116 AC_MSG_WARN([binutils opcodes not found, see https://www.gnu.org/software/binutils/])
117 DISASSEMBLER="no"
118 fi
119 fi
120
4a71579b
PC
121fi
122AM_CONDITIONAL(with_disassembler, [test "x$DISASSEMBLER" != "xno"])
123if test "x$DISASSEMBLER" != "xno"; then
124 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DDISASSEMBLER=1"
125 save_CFLAGS=$CFLAGS
126 CFLAGS="$CFLAGS -I$PWD/include -D_GNU_SOURCE"
127 AC_COMPILE_IFELSE([AC_LANG_SOURCE(
128 #include <lightning.h>
129 #include <lightning/jit_private.h>
130 #include <dis-asm.h>
131 int main(int argc, char *argv[])
132 {
133 disassembler_ftype print;
134 bfd *abfd;
135 print = disassembler(abfd);
136 return 0;
137 }
138 )], [ac_cv_test_new_disassembler=no],,)
ba3814c1
PC
139 AC_COMPILE_IFELSE([AC_LANG_SOURCE(
140 #include <dis-asm.h>
141 int main(int argc, char *argv[])
142 {
143 struct disassemble_info dinfo;
144 INIT_DISASSEMBLE_INFO(dinfo, NULL, NULL, NULL);
145 return 0;
146 }
147 )], [ac_cv_test_new_disassemble_info=yes],[ac_cv_test_new_disassemble_info=no],)
4a71579b
PC
148 CFLAGS="$save_CFLAGS"
149 if test "x$ac_cv_test_new_disassembler" != "xno"; then
150 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DBINUTILS_2_29=1"
151 fi
ba3814c1
PC
152 if test "x$ac_cv_test_new_disassemble_info" != "xno"; then
153 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DBINUTILS_2_38=1"
154 fi
4a71579b
PC
155fi
156
157AC_ARG_ENABLE(devel-disassembler,
158 AS_HELP_STRING([--enable-devel-disassembler],
159 [Enable extra disassembly options]),
160 [DEVEL_DISASSEMBLER=$enableval], [DEVEL_DISASSEMBLER=no])
161if test "x$DEVEL_DISASSEMBLER" != "xno"; then
162 if test "x$DISASSEMBLER" = "xno"; then
163 AC_MSG_ERROR(devel-disassembler needs disassembler enabled)
164 fi
165 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DDEVEL_DISASSEMBLER=1"
166fi
167
168AC_ARG_ENABLE(assertions,
169 AS_HELP_STRING([--enable-assertions],
170 [Enable runtime code generation assertions]),
171 [DEBUG=$enableval], [DEBUG=auto])
172if test "x$DEBUG" = xyes; then
173 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DDEBUG=1"
174else
175 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DNDEBUG"
176 DEBUG=no
177fi
178
179# This option is only useful during development.
180AC_ARG_ENABLE(devel-get-jit-size,
181 AS_HELP_STRING([--enable-devel-get-jit-size],
182 [Devel mode to regenerate jit size information]),
183 [GET_JIT_SIZE=$enableval], [GET_JIT_SIZE=no])
184AM_CONDITIONAL(get_jit_size, [test $GET_JIT_SIZE = yes])
185
186case "$host_os" in
187 *bsd*|osf*) SHLIB="" ;;
188 *hpux*) SHLIB="-ldld" ;;
189 *) SHLIB="-ldl" ;;
190esac
191AC_SUBST(SHLIB)
192
193cpu=
194case "$target_cpu" in
195 i?86|x86_64|amd64) cpu=x86 ;;
196 *arm*) cpu=arm ;;
197 *mips*) cpu=mips ;;
198 *powerpc*) cpu=ppc ;;
199 *sparc*) cpu=sparc ;;
200 ia64) cpu=ia64 ;;
201 hppa*) cpu=hppa ;;
202 aarch64) cpu=aarch64 ;;
203 s390*) cpu=s390 ;;
204 alpha*) cpu=alpha ;;
205 riscv*) cpu=riscv ;;
206 *) ;;
207esac
208AM_CONDITIONAL(cpu_arm, [test cpu-$cpu = cpu-arm])
209AM_CONDITIONAL(cpu_mips, [test cpu-$cpu = cpu-mips])
210AM_CONDITIONAL(cpu_ppc, [test cpu-$cpu = cpu-ppc])
211AM_CONDITIONAL(cpu_sparc, [test cpu-$cpu = cpu-sparc])
212AM_CONDITIONAL(cpu_x86, [test cpu-$cpu = cpu-x86])
213AM_CONDITIONAL(cpu_ia64, [test cpu-$cpu = cpu-ia64])
214AM_CONDITIONAL(cpu_hppa, [test cpu-$cpu = cpu-hppa])
215AM_CONDITIONAL(cpu_aarch64, [test cpu-$cpu = cpu-aarch64])
216AM_CONDITIONAL(cpu_s390, [test cpu-$cpu = cpu-s390])
217AM_CONDITIONAL(cpu_alpha, [test cpu-$cpu = cpu-alpha])
218AM_CONDITIONAL(cpu_riscv, [test cpu-$cpu = cpu-riscv])
219
220# Test x87 if both, x87 and sse2 available
221ac_cv_test_x86_x87=
222# Test arm instruction set if thumb instruction set available
223ac_cv_test_arm_arm=
224# Test sofware float if vfp available and not using hard float abi
225ac_cv_test_arm_swf=
226
227save_CFLAGS=$CFLAGS
228CFLAGS="$CFLAGS -I$PWD/include -D_GNU_SOURCE"
229if test x$cpu = x; then
230 AC_MSG_ERROR([cpu $target_cpu not supported])
231elif test $cpu = x86; then
232 AC_RUN_IFELSE([AC_LANG_SOURCE([[
233 #include <lightning.h>
234 int main(void) {
235 int ac, flags;
236 unsigned int eax, ebx, ecx, edx;
237 if (__WORDSIZE == 64)
238 return 1;
239 __asm__ volatile ("pushfl;\n\t"
240 "popl %0;\n\t"
241 "movl \$0x240000, %1;\n\t"
242 "xorl %0, %1;\n\t"
243 "pushl %1;\n\t"
244 "popfl;\n\t"
245 "pushfl;\n\t"
246 "popl %1;\n\t"
247 "xorl %0, %1;\n\t"
248 "pushl %0;\n\t"
249 "popfl"
250 : "=r" (flags), "=r" (ac));
251 if ((ac & (1 << 21)) == 0)
252 return 1;
253 __asm__ volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
254 : "=a" (eax), "=r" (ebx),
255 "=c" (ecx), "=d" (edx)
256 : "0" (1));
257 return (edx & 1 << 26) ? 0 : 1;
258 }
259 ]])],[ac_cv_test_x86_x87=yes],[],[ac_cv_test_x86_x87=no])
260elif test $cpu = arm; then
261 AC_RUN_IFELSE([AC_LANG_SOURCE([[
262 #include <stdio.h>
263 int main(void) {
264 #if defined(__linux__)
265 FILE *fp;
266 char buf[128];
267 if ((fp = fopen("/proc/cpuinfo", "r")) == NULL)
268 return 1;
269 while (fgets(buf, sizeof(buf), fp)) {
270 if (strncmp(buf, "Features\t:", 10) == 0 &&
271 strstr(buf + 10, "thumb")) {
272 fclose(fp);
273 return 0;
274 }
275 }
276 fclose(fp);
277 #elif defined(__thumb2__)
278 return 0;
279 #endif
280 return 1;
281 }
282 ]])],[ac_cv_test_arm_arm=yes],[],[ac_cv_test_arm_arm=no])
283 AC_RUN_IFELSE([AC_LANG_SOURCE([[
284 #include <stdio.h>
285 int main(void) {
286 #if defined(__linux__)
287 FILE *fp;
288 char buf[128];
289 # if !defined(__ARM_PCS_VFP)
290 if ((fp = fopen("/proc/cpuinfo", "r")) == NULL)
291 return 1;
292 while (fgets(buf, sizeof(buf), fp)) {
293 if (strncmp(buf, "Features\t:", 10) == 0 &&
294 strstr(buf + 10, "vfp")) {
295 fclose(fp);
296 return 0;
297 }
298 }
299 fclose(fp);
300 # endif
301 #endif
302 return 1;
303 }
304 ]])],[ac_cv_test_arm_swf=yes],[],[ac_cv_test_arm_swf=no])
305elif test $cpu = ppc; then
306 if test "x$DISASSEMBLER" != "xno"; then
307 save_LIBS="$LIBS"
308 LIBS="$LIBS $SHLIB"
309 AC_CHECK_FUNCS(disassemble_init_for_target disassemble_init_powerpc)
310 LIBS="$save_LIBS"
311 fi
312fi
313CFLAGS=$save_CFLAGS
314
315AM_CONDITIONAL(test_x86_x87, [test x$ac_cv_test_x86_x87 = xyes])
316AM_CONDITIONAL(test_arm_arm, [test x$ac_cv_test_arm_arm = xyes])
317AM_CONDITIONAL(test_arm_swf, [test x$ac_cv_test_arm_swf = xyes])
318
319AM_CONDITIONAL(test_nodata, [test cpu-$cpu = cpu-mips -o cpu-$cpu = cpu-ppc -o cpu-$cpu = cpu-sparc -o cpu-$cpu = cpu-x86 -o cpu-$cpu = cpu-ia64 -o cpu-$cpu = cpu-hppa -o cpu-$cpu = cpu-s390 -o cpu-$cpu = cpu-alpha])
320
321if test $cpu = arm; then
322 AC_CHECK_LIB(m, sqrtf, ,
323 [AC_MSG_ERROR([sqrtf required but not available])])
324fi
325AC_SUBST(cpu)
326
327AC_SUBST([LIGHTNING_CFLAGS])
328
329if test $ac_cv_header_stdint_h = yes; then
330 AC_SUBST(MAYBE_INCLUDE_STDINT_H, ["#include <stdint.h>"])
331fi
332
333AC_OUTPUT([Makefile
334 lightning.pc
519a9ea1 335 gnulib-lib/Makefile
4a71579b
PC
336 doc/Makefile
337 include/Makefile
338 include/lightning/Makefile
339 include/lightning.h
340 lib/Makefile
341 check/Makefile])