1AC_INIT([cpuminer], [2.5.0])
2
3AC_PREREQ([2.59c])
4AC_CANONICAL_SYSTEM
5AC_CONFIG_SRCDIR([cpu-miner.c])
6AM_INIT_AUTOMAKE([gnu])
7AC_CONFIG_HEADERS([cpuminer-config.h])
8
9dnl Make sure anyone changing configure.ac/Makefile.am has a clue
10AM_MAINTAINER_MODE
11
12dnl Checks for programs
13AC_PROG_CC_C99
14AC_PROG_GCC_TRADITIONAL
15AM_PROG_CC_C_O
16AM_PROG_AS
17AC_PROG_RANLIB
18
19dnl Checks for header files
20AC_HEADER_STDC
21AC_CHECK_HEADERS([sys/endian.h sys/param.h syslog.h])
22# sys/sysctl.h requires sys/types.h on FreeBSD
23# sys/sysctl.h requires sys/param.h on OpenBSD
24AC_CHECK_HEADERS([sys/sysctl.h], [], [],
25[#include <sys/types.h>
26#ifdef HAVE_SYS_PARAM_H
27#include <sys/param.h>
28#endif
29])
30
31AC_CHECK_DECLS([be32dec, le32dec, be32enc, le32enc], [], [],
32[AC_INCLUDES_DEFAULT
33#ifdef HAVE_SYS_ENDIAN_H
34#include <sys/endian.h>
35#endif
36])
37
38AC_FUNC_ALLOCA
39AC_CHECK_FUNCS([getopt_long])
40
41case $target in
42  i*86-*-*)
43    have_x86=true
44    ;;
45  x86_64-*-*|amd64-*-*)
46    have_x86_64=true
47    ;;
48  arm*-*-*)
49    have_arm=true
50    ;;
51  powerpc*-*-*)
52    have_ppc=true
53    ;;
54esac
55
56PTHREAD_FLAGS="-pthread"
57WS2_LIBS=""
58
59case $target in
60  *-*-mingw*)
61    have_win32=true
62    PTHREAD_FLAGS=""
63    WS2_LIBS="-lws2_32"
64    ;;
65esac
66
67AC_ARG_ENABLE([assembly],
68  AS_HELP_STRING([--disable-assembly], [disable assembly-language routines]))
69if test x$enable_assembly != xno; then
70  AC_DEFINE([USE_ASM], [1], [Define to 1 if assembly routines are wanted.])
71fi
72
73if test x$enable_assembly != xno -a x$have_x86_64 = xtrue
74then
75  AC_MSG_CHECKING(whether we can compile AVX code)
76  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vmovdqa %ymm0, %ymm1");])],
77    AC_DEFINE(USE_AVX, 1, [Define to 1 if AVX assembly is available.])
78    AC_MSG_RESULT(yes)
79    AC_MSG_CHECKING(whether we can compile XOP code)
80    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vprotd \$7, %xmm0, %xmm1");])],
81      AC_DEFINE(USE_XOP, 1, [Define to 1 if XOP assembly is available.])
82      AC_MSG_RESULT(yes)
83    ,
84      AC_MSG_RESULT(no)
85      AC_MSG_WARN([The assembler does not support the XOP instruction set.])
86    )
87    AC_MSG_CHECKING(whether we can compile AVX2 code)
88    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vpaddd %ymm0, %ymm1, %ymm2");])],
89      AC_DEFINE(USE_AVX2, 1, [Define to 1 if AVX2 assembly is available.])
90      AC_MSG_RESULT(yes)
91    ,
92      AC_MSG_RESULT(no)
93      AC_MSG_WARN([The assembler does not support the AVX2 instruction set.])
94    )
95  ,
96    AC_MSG_RESULT(no)
97    AC_MSG_WARN([The assembler does not support the AVX instruction set.])
98  )
99fi
100
101AC_CHECK_LIB(jansson, json_loads, request_jansson=false, request_jansson=true)
102AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",
103  AC_CHECK_LIB([pthreadGC2], [pthread_create], PTHREAD_LIBS="-lpthreadGC2",
104    AC_CHECK_LIB([pthreadGC1], [pthread_create], PTHREAD_LIBS="-lpthreadGC1",
105      AC_CHECK_LIB([pthreadGC], [pthread_create], PTHREAD_LIBS="-lpthreadGC"
106))))
107
108AM_CONDITIONAL([WANT_JANSSON], [test x$request_jansson = xtrue])
109AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue])
110AM_CONDITIONAL([USE_ASM], [test x$enable_assembly != xno])
111AM_CONDITIONAL([ARCH_x86], [test x$have_x86 = xtrue])
112AM_CONDITIONAL([ARCH_x86_64], [test x$have_x86_64 = xtrue])
113AM_CONDITIONAL([ARCH_ARM], [test x$have_arm = xtrue])
114AM_CONDITIONAL([ARCH_PPC], [test x$have_ppc = xtrue])
115
116if test x$request_jansson = xtrue
117then
118	JANSSON_LIBS="compat/jansson/libjansson.a"
119else
120	JANSSON_LIBS=-ljansson
121fi
122
123LIBCURL_CHECK_CONFIG(, 7.15.2, ,
124  [AC_MSG_ERROR([Missing required libcurl >= 7.15.2])])
125
126AC_SUBST(JANSSON_LIBS)
127AC_SUBST(PTHREAD_FLAGS)
128AC_SUBST(PTHREAD_LIBS)
129AC_SUBST(WS2_LIBS)
130
131AC_CONFIG_FILES([
132	Makefile
133	compat/Makefile
134	compat/jansson/Makefile
135	])
136AC_OUTPUT
137