1AC_PREREQ([2.61])
2AC_REVISION([1])
3AC_INIT([YAPET],[2.3],[https://github.com/RafaelOstertag/yapet/issues])
4AC_CONFIG_AUX_DIR([build-aux])
5AC_CONFIG_SRCDIR([config.h.in])
6AC_CONFIG_HEADERS([config.h])
7AC_CONFIG_MACRO_DIR([m4])
8AC_CONFIG_SUBDIRS([libyacurs])
9
10AM_INIT_AUTOMAKE([check-news dist-xz dist-bzip2 color-tests])
11AM_SILENT_RULES([yes])
12
13# Progs
14AC_MSG_NOTICE([Checking required programs])
15AC_PROG_CC
16AC_PROG_CXX
17AC_PROG_INSTALL
18AC_PROG_SED
19AC_PROG_MKDIR_P
20AM_PROG_AR
21
22LT_INIT
23LT_LANG([C++])
24AC_LANG([C++])
25
26AX_CXX_COMPILE_STDCXX([14], [noext], [mandatory])
27
28# "Enables"
29AC_ARG_ENABLE([debug],
30	[AS_HELP_STRING([--enable-debug],[enable debug code (Default: no)])],
31	[my_debug=$enableval],
32	[my_debug=no])
33AC_ARG_ENABLE([install-doc],
34	[AS_HELP_STRING([--disable-install-doc],[disable installation of documentation (man pages, text and html files; Default: no)])],
35	[if test x$enableval = xno ; then
36	my_disableinstalldoc=yes
37	else
38	my_disableinstalldoc=no
39	fi],
40	[my_disableinstalldoc=no])
41
42# Libs
43AX_CHECK_OPENSSL(,[AC_MSG_ERROR([openssl not found])])
44
45# Headers
46AC_MSG_NOTICE([Checking C headers])
47AC_CHECK_HEADERS([fcntl.h getopt.h libgen.h libintl.h locale.h strings.h termios.h])
48
49# Types
50AC_MSG_NOTICE([Checking types])
51AC_TYPE_MODE_T
52AC_TYPE_OFF_T
53AC_TYPE_SIZE_T
54AC_TYPE_SSIZE_T
55AC_TYPE_UID_T
56
57# library functions
58AC_MSG_NOTICE([Checking functions])
59AC_FUNC_ALLOCA
60AC_CHECK_FUNCS([basename isblank isspace setlocale strcasestr tcgetattr tcsetattr tolower towlower])
61
62AC_CHECK_FUNCS([getopt strchr strdup strerror strstr],,[AC_MSG_ERROR([required function not found])])
63
64LIBS_SAVE="$LIBS"
65LDFLAGS_SAVE="$LDFLAGS"
66CPPFLAGS_SAVE="$CPPFLAGS"
67
68LIBS="$LIBS $OPENSSL_LIBS"
69LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS"
70CPPFLAGS="$CPPFLAGS $OPENSSL_INCLUDES"
71AC_MSG_NOTICE([Checking encryption functions])
72AC_CHECK_FUNCS([EVP_bf_cbc EVP_CIPHER_CTX_set_key_length EVP_CipherInit_ex EVP_DigestFinal_ex EVP_DigestInit_ex EVP_DigestUpdate EVP_md5 EVP_ripemd160 EVP_sha1 EVP_sha256 EVP_aes_256_cbc RAND_bytes],
73	[],
74	[AC_MSG_ERROR([You are missing a crucial function required for $PACKAGE_NAME])])
75AC_CHECK_FUNCS([EVP_CIPHER_CTX_cleanup EVP_CIPHER_CTX_free EVP_CIPHER_CTX_init EVP_CIPHER_CTX_new EVP_MD_CTX_destroy EVP_MD_CTX_create EVP_MD_CTX_free EVP_MD_CTX_new])
76AC_MSG_NOTICE([Checking support functions])
77AC_CHECK_FUNCS([SSLeay_version OpenSSL_version])
78LIBS="$LIBS_SAVE"
79LDFLAGS="$LDFLAGS_SAVE"
80CPPFLAGS="$CPPFLAGS_SAVE"
81
82AC_MSG_NOTICE([Checking miscellaneous properties of platform])
83AC_CHECK_SIZEOF([int *])
84AC_CHECK_SIZEOF([int])
85AC_CHECK_SIZEOF([long])
86AC_C_BIGENDIAN
87# Mainly used by the RNG test in tests/rng*
88AC_CHECK_FILES([/dev/urandom /dev/random])
89
90AC_MSG_NOTICE([Preparing NLS])
91AM_GNU_GETTEXT([external])
92AM_GNU_GETTEXT_VERSION([0.18.1])
93
94PKG_CHECK_MODULES([CPPUNIT], [cppunit])
95PKG_CHECK_MODULES([ARGON2], [libargon2])
96
97# Some conditionals for the makefileS
98AM_CONDITIONAL([USE_NLS], [test x$USE_NLS = xyes])
99AM_CONDITIONAL([DISABLEINSTALLDOC], [test x$my_disableinstalldoc = xyes])
100AM_CONDITIONAL([DISABLE_DEBUG], [test x$my_debug = xno])
101AC_CONFIG_FILES([
102	doc/Makefile
103	doc/Makefile.doc
104	Makefile
105	po/Makefile.in
106	src/converters/csv/Makefile
107	src/converters/csv2yapet/Makefile
108	src/converters/Makefile
109	src/converters/yapet2csv/Makefile
110	src/libs/cfg/Makefile
111	src/libs/consts/Makefile
112	src/libs/crypt/Makefile
113	src/libs/exceptions/Makefile
114	src/libs/file/Makefile
115	src/libs/globals/Makefile
116	src/libs/glue/Makefile
117	src/libs/interfaces/Makefile
118	src/libs/Makefile
119	src/libs/metadata/Makefile
120	src/libs/passwordrecord/Makefile
121	src/libs/pwgen/Makefile
122	src/libs/ui/Makefile
123	src/libs/utils/Makefile
124	src/Makefile
125	src/yapet/Makefile
126	tests/cfg/Makefile
127	tests/cfg/testpaths.h
128	tests/converters/csv/Makefile
129	tests/converters/import/Makefile
130	tests/converters/import/testpaths.h
131	tests/converters/Makefile
132	tests/crypt/Makefile
133	tests/crypt/testpaths.h
134	tests/file/Makefile
135	tests/file/testpaths.h
136	tests/Makefile
137	tests/metadata/Makefile
138	tests/passwordrecord/Makefile
139	tests/preload/Makefile
140	tests/pwgen/Makefile
141	tests/utils/Makefile
142	])
143# Inject --disable-install which is used by libyacurs.
144ac_configure_args="$ac_configure_args --disable-install"
145AC_OUTPUT
146
147echo "******************************************************************"
148echo ""
149echo "Prefix              : $prefix"
150echo "CPPFLAGS            : $CPPFLAGS"
151echo "CFLAGS              : $CFLAGS"
152echo "CXXFLAGS            : $CXXFLAGS"
153echo "LDFLAGS             : $LDFLAGS"
154echo ""
155echo "Enable debug code   : $my_debug"
156echo "Disable install Doc.: $my_disableinstalldoc"
157echo ""
158echo "Use NLS             : $USE_NLS"
159echo ""
160echo "******************************************************************"
161echo ""
162echo "Looks good."
163echo ""
164