forked from confluentinc/librdkafka
-
Notifications
You must be signed in to change notification settings - Fork 0
/
configure.librdkafka
137 lines (107 loc) · 4.58 KB
/
configure.librdkafka
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
#
mkl_meta_set "description" "name" "librdkafka"
mkl_meta_set "description" "oneline" "The Apache Kafka C/C++ library"
mkl_meta_set "description" "long" "Full Apache Kafka protocol support, including producer and consumer"
mkl_meta_set "description" "copyright" "Copyright (c) 2012-2015 Magnus Edenhill"
# Enable generation of pkg-config .pc file
mkl_mkvar_set "" GEN_PKG_CONFIG y
mkl_require cxx
mkl_require lib
mkl_require pic
mkl_require atomics
mkl_require good_cflags
mkl_require socket
# Generate version variables from rdkafka.h hex version define
# so we can use it as string version when generating a pkg-config file.
verdef=$(grep '^#define *RD_KAFKA_VERSION *0x' src/rdkafka.h | sed 's/^#define *RD_KAFKA_VERSION *\(0x[a-f0-9]*\)\.*$/\1/')
mkl_require parseversion hex2str "%d.%d.%d" "$verdef" RDKAFKA_VERSION_STR
mkl_toggle_option "Development" ENABLE_DEVEL "--enable-devel" "Enable development asserts, checks, etc" "n"
mkl_toggle_option "Development" ENABLE_VALGRIND "--enable-valgrind" "Enable in-code valgrind suppressions" "n"
mkl_toggle_option "Development" ENABLE_REFCNT_DEBUG "--enable-refcnt-debug" "Enable refcnt debugging" "n"
mkl_toggle_option "Development" ENABLE_SHAREDPTR_DEBUG "--enable-sharedptr-debug" "Enable sharedptr debugging" "n"
mkl_toggle_option "Feature" ENABLE_LZ4 "--enable-lz4" "Enable LZ4 support" "y"
mkl_toggle_option "Feature" ENABLE_SSL "--enable-ssl" "Enable SSL support" "y"
mkl_toggle_option "Feature" ENABLE_SASL "--enable-sasl" "Enable SASL support" "y"
function checks {
# required libs
mkl_lib_check "libpthread" "" fail CC "-lpthread" \
"#include <pthread.h>"
# optional libs
mkl_lib_check "zlib" "WITH_ZLIB" disable CC "-lz" \
"#include <zlib.h>"
mkl_lib_check "libcrypto" "" disable CC "-lcrypto"
if [[ "$ENABLE_LZ4" == "y" ]]; then
mkl_lib_check --static=-llz4 "liblz4" "WITH_LZ4" disable CC "-llz4" \
"#include <lz4frame.h>"
fi
# Snappy support is built-in
mkl_allvar_set WITH_SNAPPY WITH_SNAPPY y
# Enable sockem (tests)
mkl_allvar_set WITH_SOCKEM WITH_SOCKEM y
if [[ "$ENABLE_SSL" == "y" ]]; then
mkl_meta_set "libssl" "deb" "libssl-dev"
if [[ $MKL_DISTRO == "osx" ]]; then
# Add brew's OpenSSL pkg-config path on OSX
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig"
fi
mkl_lib_check "libssl" "WITH_SSL" disable CC "-lssl" \
"#include <openssl/ssl.h>"
fi
if [[ "$ENABLE_SASL" == "y" ]]; then
mkl_meta_set "libsasl2" "deb" "libsasl2-dev"
if ! mkl_lib_check "libsasl2" "WITH_SASL" disable CC "-lsasl2" "#include <sasl/sasl.h>" ; then
mkl_lib_check "libsasl" "WITH_SASL" disable CC "-lsasl" \
"#include <sasl/sasl.h>"
fi
fi
# Check for libc regex
mkl_compile_check "regex" "HAVE_REGEX" disable CC "" \
"
#include <stddef.h>
#include <regex.h>
void foo (void) {
regcomp(NULL, NULL, 0);
regexec(NULL, NULL, 0, NULL, 0);
regerror(0, NULL, NULL, 0);
regfree(NULL);
}"
# -lrt is needed on linux for clock_gettime: link it if it exists.
mkl_lib_check "librt" "" cont CC "-lrt"
# Older g++ (<=4.1?) gives invalid warnings for the C++ code.
mkl_mkvar_append CXXFLAGS CXXFLAGS "-Wno-non-virtual-dtor"
# Required on SunOS
if [[ $MKL_DISTRO == "SunOS" ]]; then
mkl_mkvar_append CPPFLAGS CPPFLAGS "-D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D__EXTENSIONS__"
fi
# Check if strndup() is available (isn't on Solaris 10)
mkl_compile_check "strndup" "HAVE_STRNDUP" disable CC "" \
"#include <string.h>
int foo (void) {
return strndup(\"hi\", 2) ? 0 : 1;
}"
# Figure out what tool to use for dumping public symbols.
# We rely on configure.cc setting up $NM if it exists.
if mkl_env_check "nm" "" cont "NM" ; then
# nm by future mk var
if [[ $MKL_DISTRO == "osx" || $MKL_DISTRO == "AIX" ]]; then
mkl_mkvar_set SYMDUMPER SYMDUMPER '$(NM) -g'
else
mkl_mkvar_set SYMDUMPER SYMDUMPER '$(NM) -D'
fi
else
# Fake symdumper
mkl_mkvar_set SYMDUMPER SYMDUMPER 'echo'
fi
# The linker-script generator (lds-gen.py) requires python
if [[ $WITH_LDS == y ]]; then
if ! mkl_command_check python "HAVE_PYTHON" "disable" "python -V"; then
mkl_err "disabling linker-script since python is not available"
mkl_mkvar_set WITH_LDS WITH_LDS "n"
fi
fi
if [[ "$ENABLE_VALGRIND" == "y" ]]; then
mkl_compile_check valgrind WITH_VALGRIND disable CC "" \
"#include <valgrind/memcheck.h>"
fi
}