1PKGNAME=	librdkafka
2LIBNAME=	librdkafka
3LIBVER=		1
4
5-include ../Makefile.config
6
7ifneq ($(wildcard ../.git),)
8# Add librdkafka version string from git tag if this is a git checkout
9CPPFLAGS += -DLIBRDKAFKA_GIT_VERSION="\"$(shell git describe --abbrev=6 --dirty --tags 2>/dev/null)\""
10endif
11
12SRCS_$(WITH_SASL_CYRUS) += rdkafka_sasl_cyrus.c
13SRCS_$(WITH_SASL_SCRAM) += rdkafka_sasl_scram.c
14SRCS_$(WITH_SASL_OAUTHBEARER) += rdkafka_sasl_oauthbearer.c
15SRCS_$(WITH_SNAPPY) += snappy.c
16SRCS_$(WITH_ZLIB) += rdgz.c
17SRCS_$(WITH_ZSTD) += rdkafka_zstd.c
18SRCS_$(WITH_HDRHISTOGRAM) += rdhdrhistogram.c
19SRCS_$(WITH_SSL) += rdkafka_ssl.c
20
21SRCS_LZ4 = rdxxhash.c
22ifneq ($(WITH_LZ4_EXT), y)
23# Use built-in liblz4
24SRCS_LZ4 += lz4.c lz4frame.c lz4hc.c
25endif
26SRCS_y += rdkafka_lz4.c $(SRCS_LZ4)
27
28SRCS_$(WITH_LIBDL) += rddl.c
29SRCS_$(WITH_PLUGINS) += rdkafka_plugin.c
30
31ifneq ($(HAVE_REGEX), y)
32SRCS_y += regexp.c
33endif
34
35SRCS=		rdkafka.c rdkafka_broker.c rdkafka_msg.c rdkafka_topic.c \
36		rdkafka_conf.c rdkafka_timer.c rdkafka_offset.c \
37		rdkafka_transport.c rdkafka_buf.c rdkafka_queue.c rdkafka_op.c \
38		rdkafka_request.c rdkafka_cgrp.c rdkafka_pattern.c \
39		rdkafka_partition.c rdkafka_subscription.c \
40		rdkafka_assignment.c \
41		rdkafka_assignor.c rdkafka_range_assignor.c \
42		rdkafka_roundrobin_assignor.c rdkafka_sticky_assignor.c \
43		rdkafka_feature.c \
44		rdcrc32.c crc32c.c rdmurmur2.c rdfnv1a.c \
45		rdaddr.c rdrand.c rdlist.c \
46		tinycthread.c tinycthread_extra.c \
47		rdlog.c rdstring.c rdkafka_event.c rdkafka_metadata.c \
48		rdregex.c rdports.c rdkafka_metadata_cache.c rdavl.c \
49		rdkafka_sasl.c rdkafka_sasl_plain.c rdkafka_interceptor.c \
50		rdkafka_msgset_writer.c rdkafka_msgset_reader.c \
51		rdkafka_header.c rdkafka_admin.c rdkafka_aux.c \
52		rdkafka_background.c rdkafka_idempotence.c rdkafka_cert.c \
53		rdkafka_txnmgr.c rdkafka_coord.c \
54		rdvarint.c rdbuf.c rdmap.c rdunittest.c \
55		rdkafka_mock.c rdkafka_mock_handlers.c rdkafka_mock_cgrp.c \
56		rdkafka_error.c \
57		$(SRCS_y)
58
59HDRS=		rdkafka.h rdkafka_mock.h
60
61OBJS=		$(SRCS:.c=.o)
62
63
64all: lib check
65
66include ../mklove/Makefile.base
67
68CHECK_FILES+= $(LIBFILENAME) $(LIBNAME).a
69
70file-check: lib
71check: file-check
72	@(printf "%-30s " "Symbol visibility" ; \
73		(($(SYMDUMPER) $(LIBFILENAME) | grep rd_kafka_new >/dev/null) && \
74		($(SYMDUMPER) $(LIBFILENAME) | grep -v rd_kafka_destroy >/dev/null) && \
75		printf "$(MKL_GREEN)OK$(MKL_CLR_RESET)\n") || \
76		printf "$(MKL_RED)FAILED$(MKL_CLR_RESET)\n")
77
78install: lib-install
79uninstall: lib-uninstall
80
81clean: lib-clean
82
83# Compile LZ4 with -O3
84$(SRCS_LZ4:.c=.o): CFLAGS:=$(CFLAGS) -O3
85
86ifeq ($(WITH_LDS),y)
87# Enable linker script if supported by platform
88LIB_LDFLAGS+= $(LDFLAG_LINKERSCRIPT)$(LIBNAME_LDS)
89
90$(LIBNAME_LDS): $(HDRS)
91	@(printf "$(MKL_YELLOW)Generating linker script $@ from $(HDRS)$(MKL_CLR_RESET)\n" ; \
92	  cat $(HDRS) | ../lds-gen.py > $@)
93endif
94
95-include $(DEPS)
96