Merge pull request #657 from pcercuei/update-lightrec-20220529
[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],,)
139 CFLAGS="$save_CFLAGS"
140 if test "x$ac_cv_test_new_disassembler" != "xno"; then
141 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DBINUTILS_2_29=1"
142 fi
143fi
144
145AC_ARG_ENABLE(devel-disassembler,
146 AS_HELP_STRING([--enable-devel-disassembler],
147 [Enable extra disassembly options]),
148 [DEVEL_DISASSEMBLER=$enableval], [DEVEL_DISASSEMBLER=no])
149if test "x$DEVEL_DISASSEMBLER" != "xno"; then
150 if test "x$DISASSEMBLER" = "xno"; then
151 AC_MSG_ERROR(devel-disassembler needs disassembler enabled)
152 fi
153 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DDEVEL_DISASSEMBLER=1"
154fi
155
156AC_ARG_ENABLE(assertions,
157 AS_HELP_STRING([--enable-assertions],
158 [Enable runtime code generation assertions]),
159 [DEBUG=$enableval], [DEBUG=auto])
160if test "x$DEBUG" = xyes; then
161 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DDEBUG=1"
162else
163 LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DNDEBUG"
164 DEBUG=no
165fi
166
167# This option is only useful during development.
168AC_ARG_ENABLE(devel-get-jit-size,
169 AS_HELP_STRING([--enable-devel-get-jit-size],
170 [Devel mode to regenerate jit size information]),
171 [GET_JIT_SIZE=$enableval], [GET_JIT_SIZE=no])
172AM_CONDITIONAL(get_jit_size, [test $GET_JIT_SIZE = yes])
173
174case "$host_os" in
175 *bsd*|osf*) SHLIB="" ;;
176 *hpux*) SHLIB="-ldld" ;;
177 *) SHLIB="-ldl" ;;
178esac
179AC_SUBST(SHLIB)
180
181cpu=
182case "$target_cpu" in
183 i?86|x86_64|amd64) cpu=x86 ;;
184 *arm*) cpu=arm ;;
185 *mips*) cpu=mips ;;
186 *powerpc*) cpu=ppc ;;
187 *sparc*) cpu=sparc ;;
188 ia64) cpu=ia64 ;;
189 hppa*) cpu=hppa ;;
190 aarch64) cpu=aarch64 ;;
191 s390*) cpu=s390 ;;
192 alpha*) cpu=alpha ;;
193 riscv*) cpu=riscv ;;
194 *) ;;
195esac
196AM_CONDITIONAL(cpu_arm, [test cpu-$cpu = cpu-arm])
197AM_CONDITIONAL(cpu_mips, [test cpu-$cpu = cpu-mips])
198AM_CONDITIONAL(cpu_ppc, [test cpu-$cpu = cpu-ppc])
199AM_CONDITIONAL(cpu_sparc, [test cpu-$cpu = cpu-sparc])
200AM_CONDITIONAL(cpu_x86, [test cpu-$cpu = cpu-x86])
201AM_CONDITIONAL(cpu_ia64, [test cpu-$cpu = cpu-ia64])
202AM_CONDITIONAL(cpu_hppa, [test cpu-$cpu = cpu-hppa])
203AM_CONDITIONAL(cpu_aarch64, [test cpu-$cpu = cpu-aarch64])
204AM_CONDITIONAL(cpu_s390, [test cpu-$cpu = cpu-s390])
205AM_CONDITIONAL(cpu_alpha, [test cpu-$cpu = cpu-alpha])
206AM_CONDITIONAL(cpu_riscv, [test cpu-$cpu = cpu-riscv])
207
208# Test x87 if both, x87 and sse2 available
209ac_cv_test_x86_x87=
210# Test arm instruction set if thumb instruction set available
211ac_cv_test_arm_arm=
212# Test sofware float if vfp available and not using hard float abi
213ac_cv_test_arm_swf=
214
215save_CFLAGS=$CFLAGS
216CFLAGS="$CFLAGS -I$PWD/include -D_GNU_SOURCE"
217if test x$cpu = x; then
218 AC_MSG_ERROR([cpu $target_cpu not supported])
219elif test $cpu = x86; then
220 AC_RUN_IFELSE([AC_LANG_SOURCE([[
221 #include <lightning.h>
222 int main(void) {
223 int ac, flags;
224 unsigned int eax, ebx, ecx, edx;
225 if (__WORDSIZE == 64)
226 return 1;
227 __asm__ volatile ("pushfl;\n\t"
228 "popl %0;\n\t"
229 "movl \$0x240000, %1;\n\t"
230 "xorl %0, %1;\n\t"
231 "pushl %1;\n\t"
232 "popfl;\n\t"
233 "pushfl;\n\t"
234 "popl %1;\n\t"
235 "xorl %0, %1;\n\t"
236 "pushl %0;\n\t"
237 "popfl"
238 : "=r" (flags), "=r" (ac));
239 if ((ac & (1 << 21)) == 0)
240 return 1;
241 __asm__ volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
242 : "=a" (eax), "=r" (ebx),
243 "=c" (ecx), "=d" (edx)
244 : "0" (1));
245 return (edx & 1 << 26) ? 0 : 1;
246 }
247 ]])],[ac_cv_test_x86_x87=yes],[],[ac_cv_test_x86_x87=no])
248elif test $cpu = arm; then
249 AC_RUN_IFELSE([AC_LANG_SOURCE([[
250 #include <stdio.h>
251 int main(void) {
252 #if defined(__linux__)
253 FILE *fp;
254 char buf[128];
255 if ((fp = fopen("/proc/cpuinfo", "r")) == NULL)
256 return 1;
257 while (fgets(buf, sizeof(buf), fp)) {
258 if (strncmp(buf, "Features\t:", 10) == 0 &&
259 strstr(buf + 10, "thumb")) {
260 fclose(fp);
261 return 0;
262 }
263 }
264 fclose(fp);
265 #elif defined(__thumb2__)
266 return 0;
267 #endif
268 return 1;
269 }
270 ]])],[ac_cv_test_arm_arm=yes],[],[ac_cv_test_arm_arm=no])
271 AC_RUN_IFELSE([AC_LANG_SOURCE([[
272 #include <stdio.h>
273 int main(void) {
274 #if defined(__linux__)
275 FILE *fp;
276 char buf[128];
277 # if !defined(__ARM_PCS_VFP)
278 if ((fp = fopen("/proc/cpuinfo", "r")) == NULL)
279 return 1;
280 while (fgets(buf, sizeof(buf), fp)) {
281 if (strncmp(buf, "Features\t:", 10) == 0 &&
282 strstr(buf + 10, "vfp")) {
283 fclose(fp);
284 return 0;
285 }
286 }
287 fclose(fp);
288 # endif
289 #endif
290 return 1;
291 }
292 ]])],[ac_cv_test_arm_swf=yes],[],[ac_cv_test_arm_swf=no])
293elif test $cpu = ppc; then
294 if test "x$DISASSEMBLER" != "xno"; then
295 save_LIBS="$LIBS"
296 LIBS="$LIBS $SHLIB"
297 AC_CHECK_FUNCS(disassemble_init_for_target disassemble_init_powerpc)
298 LIBS="$save_LIBS"
299 fi
300fi
301CFLAGS=$save_CFLAGS
302
303AM_CONDITIONAL(test_x86_x87, [test x$ac_cv_test_x86_x87 = xyes])
304AM_CONDITIONAL(test_arm_arm, [test x$ac_cv_test_arm_arm = xyes])
305AM_CONDITIONAL(test_arm_swf, [test x$ac_cv_test_arm_swf = xyes])
306
307AM_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])
308
309if test $cpu = arm; then
310 AC_CHECK_LIB(m, sqrtf, ,
311 [AC_MSG_ERROR([sqrtf required but not available])])
312fi
313AC_SUBST(cpu)
314
315AC_SUBST([LIGHTNING_CFLAGS])
316
317if test $ac_cv_header_stdint_h = yes; then
318 AC_SUBST(MAYBE_INCLUDE_STDINT_H, ["#include <stdint.h>"])
319fi
320
321AC_OUTPUT([Makefile
322 lightning.pc
519a9ea1 323 gnulib-lib/Makefile
4a71579b
PC
324 doc/Makefile
325 include/Makefile
326 include/lightning/Makefile
327 include/lightning.h
328 lib/Makefile
329 check/Makefile])