http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/examples/rdkafka_zookeeper_example.c ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/examples/rdkafka_zookeeper_example.c b/thirdparty/librdkafka-0.11.1/examples/rdkafka_zookeeper_example.c deleted file mode 100644 index 2f9a61e..0000000 --- a/thirdparty/librdkafka-0.11.1/examples/rdkafka_zookeeper_example.c +++ /dev/null @@ -1,728 +0,0 @@ -/* - * librdkafka - Apache Kafka C library - * - * Copyright (c) 2012, Magnus Edenhill - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Apache Kafka consumer & producer example programs - * using the Kafka driver from librdkafka - * (https://github.com/edenhill/librdkafka) - */ - -#include <ctype.h> -#include <signal.h> -#include <string.h> -#include <unistd.h> -#include <stdlib.h> -#include <syslog.h> -#include <sys/time.h> -#include <errno.h> - -/* Typical include path would be <librdkafka/rdkafka.h>, but this program - * is builtin from within the librdkafka source tree and thus differs. */ -#include "rdkafka.h" /* for Kafka driver */ - -#include <zookeeper.h> -#include <zookeeper.jute.h> -#include <jansson.h> - -#define BROKER_PATH "/brokers/ids" - -static int run = 1; -static rd_kafka_t *rk; -static int exit_eof = 0; -static int quiet = 0; -static enum { - OUTPUT_HEXDUMP, - OUTPUT_RAW, -} output = OUTPUT_HEXDUMP; - -static void stop (int sig) { - run = 0; - fclose(stdin); /* abort fgets() */ -} - - -static void hexdump (FILE *fp, const char *name, const void *ptr, size_t len) { - const char *p = (const char *)ptr; - int of = 0; - - - if (name) - fprintf(fp, "%s hexdump (%zd bytes):\n", name, len); - - for (of = 0 ; of < len ; of += 16) { - char hexen[16*3+1]; - char charen[16+1]; - int hof = 0; - - int cof = 0; - int i; - - for (i = of ; i < of + 16 && i < len ; i++) { - hof += sprintf(hexen+hof, "%02x ", p[i] & 0xff); - cof += sprintf(charen+cof, "%c", - isprint((int)p[i]) ? p[i] : '.'); - } - fprintf(fp, "%08x: %-48s %-16s\n", - of, hexen, charen); - } -} - -/** - * Kafka logger callback (optional) - */ -static void logger (const rd_kafka_t *rk, int level, - const char *fac, const char *buf) { - struct timeval tv; - gettimeofday(&tv, NULL); - fprintf(stderr, "%u.%03u RDKAFKA-%i-%s: %s: %s\n", - (int)tv.tv_sec, (int)(tv.tv_usec / 1000), - level, fac, rd_kafka_name(rk), buf); -} - -/** - * Message delivery report callback. - * Called once for each message. - * See rdkafka.h for more information. - */ -static void msg_delivered (rd_kafka_t *rk, - void *payload, size_t len, - int error_code, - void *opaque, void *msg_opaque) { - - if (error_code) - fprintf(stderr, "%% Message delivery failed: %s\n", - rd_kafka_err2str(error_code)); - else if (!quiet) - fprintf(stderr, "%% Message delivered (%zd bytes)\n", len); -} - - -static void msg_consume (rd_kafka_message_t *rkmessage, - void *opaque) { - if (rkmessage->err) { - if (rkmessage->err == RD_KAFKA_RESP_ERR__PARTITION_EOF) { - fprintf(stderr, - "%% Consumer reached end of %s [%"PRId32"] " - "message queue at offset %"PRId64"\n", - rd_kafka_topic_name(rkmessage->rkt), - rkmessage->partition, rkmessage->offset); - - if (exit_eof) - run = 0; - - return; - } - - fprintf(stderr, "%% Consume error for topic \"%s\" [%"PRId32"] " - "offset %"PRId64": %s\n", - rd_kafka_topic_name(rkmessage->rkt), - rkmessage->partition, - rkmessage->offset, - rd_kafka_message_errstr(rkmessage)); - return; - } - - if (!quiet) - fprintf(stdout, "%% Message (offset %"PRId64", %zd bytes):\n", - rkmessage->offset, rkmessage->len); - - if (rkmessage->key_len) { - if (output == OUTPUT_HEXDUMP) - hexdump(stdout, "Message Key", - rkmessage->key, rkmessage->key_len); - else - printf("Key: %.*s\n", - (int)rkmessage->key_len, (char *)rkmessage->key); - } - - if (output == OUTPUT_HEXDUMP) - hexdump(stdout, "Message Payload", - rkmessage->payload, rkmessage->len); - else - printf("%.*s\n", - (int)rkmessage->len, (char *)rkmessage->payload); -} - - -static void metadata_print (const char *topic, - const struct rd_kafka_metadata *metadata) { - int i, j, k; - - printf("Metadata for %s (from broker %"PRId32": %s):\n", - topic ? : "all topics", - metadata->orig_broker_id, - metadata->orig_broker_name); - - - /* Iterate brokers */ - printf(" %i brokers:\n", metadata->broker_cnt); - for (i = 0 ; i < metadata->broker_cnt ; i++) - printf(" broker %"PRId32" at %s:%i\n", - metadata->brokers[i].id, - metadata->brokers[i].host, - metadata->brokers[i].port); - - /* Iterate topics */ - printf(" %i topics:\n", metadata->topic_cnt); - for (i = 0 ; i < metadata->topic_cnt ; i++) { - const struct rd_kafka_metadata_topic *t = &metadata->topics[i]; - printf(" topic \"%s\" with %i partitions:", - t->topic, - t->partition_cnt); - if (t->err) { - printf(" %s", rd_kafka_err2str(t->err)); - if (t->err == RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE) - printf(" (try again)"); - } - printf("\n"); - - /* Iterate topic's partitions */ - for (j = 0 ; j < t->partition_cnt ; j++) { - const struct rd_kafka_metadata_partition *p; - p = &t->partitions[j]; - printf(" partition %"PRId32", " - "leader %"PRId32", replicas: ", - p->id, p->leader); - - /* Iterate partition's replicas */ - for (k = 0 ; k < p->replica_cnt ; k++) - printf("%s%"PRId32, - k > 0 ? ",":"", p->replicas[k]); - - /* Iterate partition's ISRs */ - printf(", isrs: "); - for (k = 0 ; k < p->isr_cnt ; k++) - printf("%s%"PRId32, - k > 0 ? ",":"", p->isrs[k]); - if (p->err) - printf(", %s\n", rd_kafka_err2str(p->err)); - else - printf("\n"); - } - } -} - - -static void set_brokerlist_from_zookeeper(zhandle_t *zzh, char *brokers) -{ - if (zzh) - { - struct String_vector brokerlist; - if (zoo_get_children(zzh, BROKER_PATH, 1, &brokerlist) != ZOK) - { - fprintf(stderr, "No brokers found on path %s\n", BROKER_PATH); - return; - } - - int i; - char *brokerptr = brokers; - for (i = 0; i < brokerlist.count; i++) - { - char path[255], cfg[1024]; - sprintf(path, "/brokers/ids/%s", brokerlist.data[i]); - int len = sizeof(cfg); - zoo_get(zzh, path, 0, cfg, &len, NULL); - - if (len > 0) - { - cfg[len] = '\0'; - json_error_t jerror; - json_t *jobj = json_loads(cfg, 0, &jerror); - if (jobj) - { - json_t *jhost = json_object_get(jobj, "host"); - json_t *jport = json_object_get(jobj, "port"); - - if (jhost && jport) - { - const char *host = json_string_value(jhost); - const int port = json_integer_value(jport); - sprintf(brokerptr, "%s:%d", host, port); - - brokerptr += strlen(brokerptr); - if (i < brokerlist.count - 1) - { - *brokerptr++ = ','; - } - } - json_decref(jobj); - } - } - } - deallocate_String_vector(&brokerlist); - printf("Found brokers %s\n", brokers); - } -} - - -static void watcher(zhandle_t *zh, int type, int state, const char *path, void *watcherCtx) -{ - char brokers[1024]; - if (type == ZOO_CHILD_EVENT && strncmp(path, BROKER_PATH, sizeof(BROKER_PATH) - 1) == 0) - { - brokers[0] = '\0'; - set_brokerlist_from_zookeeper(zh, brokers); - if (brokers[0] != '\0' && rk != NULL) - { - rd_kafka_brokers_add(rk, brokers); - rd_kafka_poll(rk, 10); - } - } -} - - -static zhandle_t* initialize_zookeeper(const char * zookeeper, const int debug) -{ - zhandle_t *zh; - if (debug) - { - zoo_set_debug_level(ZOO_LOG_LEVEL_DEBUG); - } - zh = zookeeper_init(zookeeper, watcher, 10000, 0, 0, 0); - if (zh == NULL) - { - fprintf(stderr, "Zookeeper connection not established."); - exit(1); - } - return zh; -} - - -static void sig_usr1 (int sig) { - rd_kafka_dump(stdout, rk); -} - -int main (int argc, char **argv) { - rd_kafka_topic_t *rkt; - char *zookeeper = "localhost:2181"; - zhandle_t *zh = NULL; - char brokers[1024]; - char mode = 'C'; - char *topic = NULL; - int partition = RD_KAFKA_PARTITION_UA; - int opt; - rd_kafka_conf_t *conf; - rd_kafka_topic_conf_t *topic_conf; - char errstr[512]; - const char *debug = NULL; - int64_t start_offset = 0; - int do_conf_dump = 0; - - memset(brokers, 0, sizeof(brokers)); - quiet = !isatty(STDIN_FILENO); - - /* Kafka configuration */ - conf = rd_kafka_conf_new(); - - /* Topic configuration */ - topic_conf = rd_kafka_topic_conf_new(); - - while ((opt = getopt(argc, argv, "PCLt:p:k:z:qd:o:eX:A")) != -1) { - switch (opt) { - case 'P': - case 'C': - case 'L': - mode = opt; - break; - case 't': - topic = optarg; - break; - case 'p': - partition = atoi(optarg); - break; - case 'k': - zookeeper = optarg; - break; - case 'z': - if (rd_kafka_conf_set(conf, "compression.codec", - optarg, - errstr, sizeof(errstr)) != - RD_KAFKA_CONF_OK) { - fprintf(stderr, "%% %s\n", errstr); - exit(1); - } - break; - case 'o': - if (!strcmp(optarg, "end")) - start_offset = RD_KAFKA_OFFSET_END; - else if (!strcmp(optarg, "beginning")) - start_offset = RD_KAFKA_OFFSET_BEGINNING; - else if (!strcmp(optarg, "stored")) - start_offset = RD_KAFKA_OFFSET_STORED; - else - start_offset = strtoll(optarg, NULL, 10); - break; - case 'e': - exit_eof = 1; - break; - case 'd': - debug = optarg; - break; - case 'q': - quiet = 1; - break; - case 'A': - output = OUTPUT_RAW; - break; - case 'X': - { - char *name, *val; - rd_kafka_conf_res_t res; - - if (!strcmp(optarg, "list") || - !strcmp(optarg, "help")) { - rd_kafka_conf_properties_show(stdout); - exit(0); - } - - if (!strcmp(optarg, "dump")) { - do_conf_dump = 1; - continue; - } - - name = optarg; - if (!(val = strchr(name, '='))) { - fprintf(stderr, "%% Expected " - "-X property=value, not %s\n", name); - exit(1); - } - - *val = '\0'; - val++; - - res = RD_KAFKA_CONF_UNKNOWN; - /* Try "topic." prefixed properties on topic - * conf first, and then fall through to global if - * it didnt match a topic configuration property. */ - if (!strncmp(name, "topic.", strlen("topic."))) - res = rd_kafka_topic_conf_set(topic_conf, - name+ - strlen("topic."), - val, - errstr, - sizeof(errstr)); - - if (res == RD_KAFKA_CONF_UNKNOWN) - res = rd_kafka_conf_set(conf, name, val, - errstr, sizeof(errstr)); - - if (res != RD_KAFKA_CONF_OK) { - fprintf(stderr, "%% %s\n", errstr); - exit(1); - } - } - break; - - default: - goto usage; - } - } - - - if (do_conf_dump) { - const char **arr; - size_t cnt; - int pass; - - for (pass = 0 ; pass < 2 ; pass++) { - int i; - - if (pass == 0) { - arr = rd_kafka_conf_dump(conf, &cnt); - printf("# Global config\n"); - } else { - printf("# Topic config\n"); - arr = rd_kafka_topic_conf_dump(topic_conf, - &cnt); - } - - for (i = 0 ; i < cnt ; i += 2) - printf("%s = %s\n", - arr[i], arr[i+1]); - - printf("\n"); - - rd_kafka_conf_dump_free(arr, cnt); - } - - exit(0); - } - - - if (optind != argc || (mode != 'L' && !topic)) { - usage: - fprintf(stderr, - "Usage: %s -C|-P|-L -t <topic> " - "[-p <partition>] [-b <host1:port1,host2:port2,..>]\n" - "\n" - "librdkafka version %s (0x%08x)\n" - "\n" - " Options:\n" - " -C | -P Consumer or Producer mode\n" - " -L Metadata list mode\n" - " -t <topic> Topic to fetch / produce\n" - " -p <num> Partition (random partitioner)\n" - " -k <zookeepers> Zookeeper address (localhost:2181)\n" - " -z <codec> Enable compression:\n" - " none|gzip|snappy\n" - " -o <offset> Start offset (consumer)\n" - " -e Exit consumer when last message\n" - " in partition has been received.\n" - " -d [facs..] Enable debugging contexts:\n" - " -q Be quiet\n" - " -A Raw payload output (consumer)\n" - " %s\n" - " -X <prop=name> Set arbitrary librdkafka " - "configuration property\n" - " Properties prefixed with \"topic.\" " - "will be set on topic object.\n" - " Use '-X list' to see the full list\n" - " of supported properties.\n" - "\n" - " In Consumer mode:\n" - " writes fetched messages to stdout\n" - " In Producer mode:\n" - " reads messages from stdin and sends to broker\n" - " In List mode:\n" - " queries broker for metadata information, " - "topic is optional.\n" - "\n" - "\n" - "\n", - argv[0], - rd_kafka_version_str(), rd_kafka_version(), - RD_KAFKA_DEBUG_CONTEXTS); - exit(1); - } - - - signal(SIGINT, stop); - signal(SIGUSR1, sig_usr1); - - if (debug && - rd_kafka_conf_set(conf, "debug", debug, errstr, sizeof(errstr)) != - RD_KAFKA_CONF_OK) { - fprintf(stderr, "%% Debug configuration failed: %s: %s\n", - errstr, debug); - exit(1); - } - - /* Set logger */ - rd_kafka_conf_set_log_cb(conf, logger); - - /** Initialize zookeeper */ - zh = initialize_zookeeper(zookeeper, debug != NULL); - - /* Add brokers */ - set_brokerlist_from_zookeeper(zh, brokers); - if (rd_kafka_conf_set(conf, "metadata.broker.list", - brokers, errstr, sizeof(errstr) != - RD_KAFKA_CONF_OK)) { - fprintf(stderr, "%% Failed to set brokers: %s\n", errstr); - exit(1); - } - - if (debug) { - printf("Broker list from zookeeper cluster %s: %s\n", zookeeper, brokers); - } - - if (mode == 'P') { - /* - * Producer - */ - char buf[2048]; - int sendcnt = 0; - - /* Set up a message delivery report callback. - * It will be called once for each message, either on successful - * delivery to broker, or upon failure to deliver to broker. */ - rd_kafka_conf_set_dr_cb(conf, msg_delivered); - - /* Create Kafka handle */ - if (!(rk = rd_kafka_new(RD_KAFKA_PRODUCER, conf, - errstr, sizeof(errstr)))) { - fprintf(stderr, - "%% Failed to create new producer: %s\n", - errstr); - exit(1); - } - - /* Create topic */ - rkt = rd_kafka_topic_new(rk, topic, topic_conf); - - if (!quiet) - fprintf(stderr, - "%% Type stuff and hit enter to send\n"); - - while (run && fgets(buf, sizeof(buf), stdin)) { - size_t len = strlen(buf); - if (buf[len-1] == '\n') - buf[--len] = '\0'; - - /* Send/Produce message. */ - if (rd_kafka_produce(rkt, partition, - RD_KAFKA_MSG_F_COPY, - /* Payload and length */ - buf, len, - /* Optional key and its length */ - NULL, 0, - /* Message opaque, provided in - * delivery report callback as - * msg_opaque. */ - NULL) == -1) { - fprintf(stderr, - "%% Failed to produce to topic %s " - "partition %i: %s\n", - rd_kafka_topic_name(rkt), partition, - rd_kafka_err2str( - rd_kafka_errno2err(errno))); - /* Poll to handle delivery reports */ - rd_kafka_poll(rk, 0); - continue; - } - - if (!quiet) - fprintf(stderr, "%% Sent %zd bytes to topic " - "%s partition %i\n", - len, rd_kafka_topic_name(rkt), partition); - sendcnt++; - /* Poll to handle delivery reports */ - rd_kafka_poll(rk, 0); - } - - /* Poll to handle delivery reports */ - rd_kafka_poll(rk, 0); - - /* Wait for messages to be delivered */ - while (run && rd_kafka_outq_len(rk) > 0) - rd_kafka_poll(rk, 100); - - /* Destroy the handle */ - rd_kafka_destroy(rk); - - } else if (mode == 'C') { - /* - * Consumer - */ - - /* Create Kafka handle */ - if (!(rk = rd_kafka_new(RD_KAFKA_CONSUMER, conf, - errstr, sizeof(errstr)))) { - fprintf(stderr, - "%% Failed to create new consumer: %s\n", - errstr); - exit(1); - } - - /* Create topic */ - rkt = rd_kafka_topic_new(rk, topic, topic_conf); - - /* Start consuming */ - if (rd_kafka_consume_start(rkt, partition, start_offset) == -1){ - fprintf(stderr, "%% Failed to start consuming: %s\n", - rd_kafka_err2str(rd_kafka_errno2err(errno))); - exit(1); - } - - while (run) { - rd_kafka_message_t *rkmessage; - - /* Consume single message. - * See rdkafka_performance.c for high speed - * consuming of messages. */ - rkmessage = rd_kafka_consume(rkt, partition, 1000); - if (!rkmessage) /* timeout */ - continue; - - msg_consume(rkmessage, NULL); - - /* Return message to rdkafka */ - rd_kafka_message_destroy(rkmessage); - } - - /* Stop consuming */ - rd_kafka_consume_stop(rkt, partition); - - rd_kafka_topic_destroy(rkt); - - rd_kafka_destroy(rk); - - } else if (mode == 'L') { - rd_kafka_resp_err_t err = RD_KAFKA_RESP_ERR_NO_ERROR; - - /* Create Kafka handle */ - if (!(rk = rd_kafka_new(RD_KAFKA_PRODUCER, conf, - errstr, sizeof(errstr)))) { - fprintf(stderr, - "%% Failed to create new producer: %s\n", - errstr); - exit(1); - } - - /* Create topic */ - if (topic) - rkt = rd_kafka_topic_new(rk, topic, topic_conf); - else - rkt = NULL; - - while (run) { - const struct rd_kafka_metadata *metadata; - - /* Fetch metadata */ - err = rd_kafka_metadata(rk, rkt ? 0 : 1, rkt, - &metadata, 5000); - if (err != RD_KAFKA_RESP_ERR_NO_ERROR) { - fprintf(stderr, - "%% Failed to acquire metadata: %s\n", - rd_kafka_err2str(err)); - run = 0; - break; - } - - metadata_print(topic, metadata); - - rd_kafka_metadata_destroy(metadata); - run = 0; - } - - /* Destroy the handle */ - rd_kafka_destroy(rk); - - /* Exit right away, dont wait for background cleanup, we haven't - * done anything important anyway. */ - exit(err ? 2 : 0); - } - - /* Let background threads clean up and terminate cleanly. */ - rd_kafka_wait_destroyed(2000); - - /** Free the zookeeper data. */ - zookeeper_close(zh); - - return 0; -}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/lds-gen.py ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/lds-gen.py b/thirdparty/librdkafka-0.11.1/lds-gen.py deleted file mode 100755 index 1136580..0000000 --- a/thirdparty/librdkafka-0.11.1/lds-gen.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python -# -# -# Generate linker script to only expose symbols of the public API -# - -import sys -import re - - -if __name__ == '__main__': - - funcs = list() - last_line = '' - - for line in sys.stdin: - m = re.match(r'^(\S+.*\s+\**)?(rd_kafka_\S+)\s*\(', line) - if m: - sym = m.group(2) - # Ignore static (unused) functions - m2 = re.match(r'(RD_UNUSED|__attribute__\(\(unused\)\))', last_line) - if not m2: - funcs.append(sym) - last_line = '' - else: - last_line = line - - print('# Automatically generated by lds-gen.py - DO NOT EDIT') - print('{\n global:') - if len(funcs) == 0: - print(' *;') - else: - for f in sorted(funcs): - print(' %s;' % f) - - print('local:\n *;') - - print('};') http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/mainpage.doxy ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/mainpage.doxy b/thirdparty/librdkafka-0.11.1/mainpage.doxy deleted file mode 100644 index 97f2456..0000000 --- a/thirdparty/librdkafka-0.11.1/mainpage.doxy +++ /dev/null @@ -1,35 +0,0 @@ -/** - * @mainpage librdkafka documentation - * - * librdkafka is the Apache Kafka C/C++ client library. - * - * @section intro Introduction - * - * For an introduction and manual to librdkafka see INTRODUCTION.md - * - * @section conf Configuration - * - * librdkafka is highly configurable to meet any deployment demands. - * It is usually safe to leave most configuration properties to their default - * values. - * - * See CONFIGURATION.md for the full list of supported configuration properties. - * - * @remark Application developers are recommended to provide a non-hardcoded - * interface to librdkafka's string based name-value configuration - * property interface, allowing users to configure any librdkafka - * property directly without alterations to the application. - * This allows for seamless upgrades where linking to a new version - * of librdkafka automatically provides new configuration - * based features. - - * - * @section c_api C API - * - * The C API is documented in rdkafka.h - * - * @section cpp_api C++ API - * - * The C++ API is documented in rdkafkacpp.h - */ - http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/mklove/Makefile.base ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/mklove/Makefile.base b/thirdparty/librdkafka-0.11.1/mklove/Makefile.base deleted file mode 100755 index 5f2b775..0000000 --- a/thirdparty/librdkafka-0.11.1/mklove/Makefile.base +++ /dev/null @@ -1,193 +0,0 @@ -# Base Makefile providing various standard targets -# Part of mklove suite but may be used independently. - -MKL_RED?= \033[031m -MKL_GREEN?= \033[032m -MKL_YELLOW?= \033[033m -MKL_BLUE?= \033[034m -MKL_CLR_RESET?= \033[0m - -DEPS= $(OBJS:%.o=%.d) - -# TOPDIR is "TOPDIR/mklove/../" i.e., TOPDIR. -# We do it with two dir calls instead of /.. to support mklove being symlinked. -MKLOVE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -TOPDIR = $(MKLOVE_DIR:mklove/=.) - - -# Convert LIBNAME ("libxyz") to "xyz" -LIBNAME0=$(LIBNAME:lib%=%) - -# Silence lousy default ARFLAGS (rv) -ARFLAGS= - -ifndef MKL_MAKEFILE_CONFIG --include $(TOPDIR)/Makefile.config -endif - -_UNAME_S := $(shell uname -s) -ifeq ($(_UNAME_S),Darwin) - LIBFILENAME=$(LIBNAME).$(LIBVER)$(SOLIB_EXT) - LIBFILENAMELINK=$(LIBNAME)$(SOLIB_EXT) -else - LIBFILENAME=$(LIBNAME)$(SOLIB_EXT).$(LIBVER) - LIBFILENAMELINK=$(LIBNAME)$(SOLIB_EXT) -endif - -INSTALL?= install -INSTALL_PROGRAM?= $(INSTALL) -INSTALL_DATA?= $(INSTALL) -m 644 - -prefix?= /usr/local -exec_prefix?= $(prefix) -bindir?= $(exec_prefix)/bin -sbindir?= $(exec_prefix)/sbin -libexecdir?= $(exec_prefix)/libexec/ # append PKGNAME on install -datarootdir?= $(prefix)/share -datadir?= $(datarootdir) # append PKGNAME on install -sysconfdir?= $(prefix)/etc -sharedstatedir?=$(prefix)/com -localestatedir?=$(prefix)/var -runstatedir?= $(localestatedir)/run -includedir?= $(prefix)/include -docdir?= $(datarootdir)/doc/$(PKGNAME) -infodir?= $(datarootdir)/info -libdir?= $(prefix)/lib -localedir?= $(datarootdir)/locale -pkgconfigdir?= $(libdir)/pkgconfig -mandir?= $(datarootdir)/man -man1dir?= $(mandir)/man1 -man2dir?= $(mandir)/man2 -man3dir?= $(mandir)/man3 -man4dir?= $(mandir)/man4 -man5dir?= $(mandir)/man5 -man6dir?= $(mandir)/man6 -man7dir?= $(mandir)/man7 -man8dir?= $(mandir)/man8 - - -# Checks that mklove is set up and ready for building -mklove-check: - @if [ ! -f "$(TOPDIR)/Makefile.config" ]; then \ - printf "$(MKL_RED)$(TOPDIR)/Makefile.config missing: please run ./configure$(MKL_CLR_RESET)\n" ; \ - exit 1 ; \ - fi - -%.o: %.c - $(CC) -MD -MP $(CPPFLAGS) $(CFLAGS) -c $< -o $@ - -%.o: %.cpp - $(CXX) -MD -MP $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@ - - -lib: $(LIBFILENAME) $(LIBNAME).a $(LIBFILENAMELINK) lib-gen-pkg-config - -$(LIBNAME).lds: #overridable - -$(LIBFILENAME): $(OBJS) $(LIBNAME).lds - @printf "$(MKL_YELLOW)Creating shared library $@$(MKL_CLR_RESET)\n" - $(CC) $(LDFLAGS) $(LIB_LDFLAGS) $(OBJS) -o $@ $(LIBS) - -$(LIBNAME).a: $(OBJS) - @printf "$(MKL_YELLOW)Creating static library $@$(MKL_CLR_RESET)\n" - $(AR) rcs$(ARFLAGS) $@ $(OBJS) - -$(LIBFILENAMELINK): $(LIBFILENAME) - @printf "$(MKL_YELLOW)Creating $@ symlink$(MKL_CLR_RESET)\n" - rm -f "$@" && ln -s "$^" "$@" - - -# pkg-config .pc file definition -ifeq ($(GEN_PKG_CONFIG),y) -define _PKG_CONFIG_DEF -prefix=$(prefix) -libdir=$(libdir) -includedir=$(includedir) - -Name: $(LIBNAME) -Description: $(MKL_APP_DESC_ONELINE) -Version: $(MKL_APP_VERSION) -Cflags: -I$${includedir} -Libs: -L$${libdir} -l$(LIBNAME0) -Libs.private: $(patsubst -L%,,$(LIBS)) -endef - -export _PKG_CONFIG_DEF - -$(LIBNAME0).pc: $(TOPDIR)/Makefile.config - @printf "$(MKL_YELLOW)Generating pkg-config file $@$(MKL_CLR_RESET)\n" - @echo "$$_PKG_CONFIG_DEF" > $@ - -lib-gen-pkg-config: $(LIBNAME0).pc - -lib-clean-pkg-config: - rm -f $(LIBNAME0).pc -else -lib-gen-pkg-config: -lib-clean-pkg-config: -endif - - -$(BIN): $(OBJS) - @printf "$(MKL_YELLOW)Creating program $@$(MKL_CLR_RESET)\n" - $(CC) $(CPPFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) - - -file-check: - @printf "$(MKL_YELLOW)Checking $(LIBNAME) integrity$(MKL_CLR_RESET)\n" - @RET=true ; \ - for f in $(CHECK_FILES) ; do \ - printf "%-30s " $$f ; \ - if [ -f "$$f" ]; then \ - printf "$(MKL_GREEN)OK$(MKL_CLR_RESET)\n" ; \ - else \ - printf "$(MKL_RED)MISSING$(MKL_CLR_RESET)\n" ; \ - RET=false ; \ - fi ; \ - done ; \ - $$RET - - -lib-install: - @printf "$(MKL_YELLOW)Install $(LIBNAME) to $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" - $(INSTALL) -d $$DESTDIR$(includedir)/$(PKGNAME) ; \ - $(INSTALL) -d $$DESTDIR$(libdir) ; \ - $(INSTALL) $(HDRS) $$DESTDIR$(includedir)/$(PKGNAME) ; \ - $(INSTALL) $(LIBNAME).a $$DESTDIR$(libdir) ; \ - $(INSTALL) $(LIBFILENAME) $$DESTDIR$(libdir) ; \ - [ -f "$(LIBNAME0).pc" ] && ( \ - $(INSTALL) -d $$DESTDIR$(pkgconfigdir) ; \ - $(INSTALL) -m 0644 $(LIBNAME0).pc $$DESTDIR$(pkgconfigdir) \ - ) ; \ - (cd $$DESTDIR$(libdir) && ln -sf $(LIBFILENAME) $(LIBFILENAMELINK)) - -lib-uninstall: - @printf "$(MKL_YELLOW)Uninstall $(LIBNAME) from $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" - for hdr in $(HDRS) ; do \ - rm -f $$DESTDIR$(includedir)/$(PKGNAME)/$$hdr ; done - rm -f $$DESTDIR$(libdir)/$(LIBNAME).a - rm -f $$DESTDIR$(libdir)/$(LIBFILENAME) - rm -f $$DESTDIR$(libdir)/$(LIBFILENAMELINK) - rmdir $$DESTDIR$(includedir)/$(PKGNAME) || true - - - -bin-install: - @printf "$(MKL_YELLOW)Install $(BIN) to $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" - $(INSTALL) -d $$DESTDIR$(bindir) && \ - $(INSTALL) $(BIN) $$DESTDIR$(bindir) - -bin-uninstall: - @printf "$(MKL_YELLOW)Uninstall $(BIN) from $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" - rm -f $$DESTDIR$(bindir)/$(BIN) - - -generic-clean: - rm -f $(OBJS) $(DEPS) - -lib-clean: generic-clean lib-clean-pkg-config - rm -f $(LIBNAME)*.a $(LIBFILENAME) $(LIBFILENAMELINK) \ - $(LIBNAME).lds - -bin-clean: generic-clean - rm -f $(BIN) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/mklove/modules/configure.atomics ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.atomics b/thirdparty/librdkafka-0.11.1/mklove/modules/configure.atomics deleted file mode 100644 index 31639a7..0000000 --- a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.atomics +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/bash -# -# Checks for atomic ops: -# compiler builtin (__sync_..) and portable libatomic's (__atomic_..) -# Will also provide abstraction by defining the prefix to use. -# -# Sets: -# HAVE_ATOMICS -# HAVE_ATOMICS_32 -# HAVE_ATOMICS_64 -# HAVE_ATOMICS_32_ATOMIC __atomic interface -# HAVE_ATOMICS_32_SYNC __sync interface -# HAVE_ATOMICS_64_ATOMIC __atomic interface -# HAVE_ATOMICS_64_SYNC __sync interface -# WITH_LIBATOMIC -# LIBS -# -# ATOMIC_OP(OP1,OP2,PTR,VAL) -# ATOMIC_OP32(OP1,OP2,PTR,VAL) -# ATOMIC_OP64(OP1,OP2,PTR,VAL) -# where op* is 'add,sub,fetch' -# e.g: ATOMIC_OP32(add, fetch, &i, 10) -# becomes __atomic_add_fetch(&i, 10, ..) or -# __sync_add_and_fetch(&i, 10) -# - -function checks { - - - # We prefer the newer __atomic stuff, but 64-bit atomics might - # require linking with -latomic, so we need to perform these tests - # in the proper order: - # __atomic 32 - # __atomic 32 -latomic - # __sync 32 - # - # __atomic 64 - # __atomic 64 -latomic - # __sync 64 - - local _libs= - local _a32="__atomic_ ## OP1 ## _ ## OP2(PTR, VAL, __ATOMIC_SEQ_CST)" - local _a64="__atomic_ ## OP1 ## _ ## OP2(PTR, VAL, __ATOMIC_SEQ_CST)" - - # 32-bit: - # Try fully builtin __atomic - if ! mkl_compile_check __atomic_32 HAVE_ATOMICS_32 cont CC "" \ - " -#include <inttypes.h> -int32_t foo (int32_t i) { - return __atomic_add_fetch(&i, 1, __ATOMIC_SEQ_CST); -}" - then - # Try __atomic with -latomic - if mkl_compile_check --ldflags="-latomic" __atomic_32_lib HAVE_ATOMICS_32 \ - cont CC "" \ - " -#include <inttypes.h> -int32_t foo (int32_t i) { - return __atomic_add_fetch(&i, 1, __ATOMIC_SEQ_CST); -}" - then - _libs="-latomic" - mkl_allvar_set "__atomic_32_lib" "HAVE_ATOMICS_32_ATOMIC" "y" - else - # Try __sync interface - if mkl_compile_check __sync_32 HAVE_ATOMICS_32 disable CC "" \ - " -#include <inttypes.h> -int32_t foo (int32_t i) { - return __sync_add_and_fetch(&i, 1); -}" - then - _a32="__sync_ ## OP1 ## _and_ ## OP2(PTR, VAL)" - mkl_allvar_set "__sync_32" "HAVE_ATOMICS_32_SYNC" "y" - else - _a32="" - fi - fi - else - mkl_allvar_set "__atomic_32" "HAVE_ATOMICS_32_ATOMIC" "y" - fi - - - if [[ ! -z $_a32 ]]; then - mkl_define_set "atomic_32" "ATOMIC_OP32(OP1,OP2,PTR,VAL)" "code:$_a32" - fi - - - - # 64-bit: - # Try fully builtin __atomic - if ! mkl_compile_check __atomic_64 HAVE_ATOMICS_64 cont CC "" \ - " -#include <inttypes.h> -int64_t foo (int64_t i) { - return __atomic_add_fetch(&i, 1, __ATOMIC_SEQ_CST); -}" - then - # Try __atomic with -latomic - if mkl_compile_check --ldflags="-latomic" __atomic_64_lib HAVE_ATOMICS_64 \ - cont CC "" \ - " -#include <inttypes.h> -int64_t foo (int64_t i) { - return __atomic_add_fetch(&i, 1, __ATOMIC_SEQ_CST); -}" - then - _libs="-latomic" - mkl_allvar_set "__atomic_64_lib" "HAVE_ATOMICS_64_ATOMIC" "y" - else - # Try __sync interface - if mkl_compile_check __sync_64 HAVE_ATOMICS_64 disable CC "" \ - " -#include <inttypes.h> -int64_t foo (int64_t i) { - return __sync_add_and_fetch(&i, 1); -}" - then - _a64="__sync_ ## OP1 ## _and_ ## OP2 (PTR, VAL)" - mkl_allvar_set "__sync_64" "HAVE_ATOMICS_64_SYNC" "y" - else - _a64="" - fi - fi - else - mkl_allvar_set "__atomic_64" "HAVE_ATOMICS_64_ATOMIC" "y" - fi - - - if [[ ! -z $_a64 ]]; then - mkl_define_set "atomic_64" "ATOMIC_OP64(OP1,OP2,PTR,VAL)" "code:$_a64" - - # Define generic ATOMIC() macro identical to 64-bit atomics" - mkl_define_set "atomic_64" "ATOMIC_OP(OP1,OP2,PTR,VAL)" "code:$_a64" - fi - - - if [[ ! -z $_libs ]]; then - mkl_mkvar_append LDFLAGS LDFLAGS "-Wl,--as-needed" - mkl_mkvar_append LIBS LIBS "$_libs" - fi - -} http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/mklove/modules/configure.base ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.base b/thirdparty/librdkafka-0.11.1/mklove/modules/configure.base deleted file mode 100644 index df9c779..0000000 --- a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.base +++ /dev/null @@ -1,1772 +0,0 @@ -#!/bin/bash -# -# -# mklove base configure module, implements the mklove configure framework -# - -MKL_MODULES="base" -MKL_CACHEVARS="" -MKL_MKVARS="" -MKL_DEFINES="" -MKL_CHECKS="" -MKL_LOAD_STACK="" - -MKL_IDNEXT=1 - -MKL_OUTMK=_mklout.mk -MKL_OUTH=_mklout.h -MKL_OUTDBG=config.log - -MKL_GENERATORS="base:mkl_generate_late_vars" -MKL_CLEANERS="" - -MKL_FAILS="" -MKL_LATE_VARS="" - -MKL_OPTS_SET="" - -MKL_RED="" -MKL_GREEN="" -MKL_YELLOW="" -MKL_BLUE="" -MKL_CLR_RESET="" - - -MKL_NO_DOWNLOAD=0 - -if [[ -z "$MKL_REPO_URL" ]]; then - MKL_REPO_URL="http://github.com/edenhill/mklove/raw/master" -fi - - - -# Default mklove directory to PWD/mklove -[[ -z "$MKLOVE_DIR" ]] && MKLOVE_DIR=mklove - - -########################################################################### -# -# Variable types: -# env - Standard environment variables. -# var - mklove runtime variable, cached or not. -# mkvar - Makefile variables, also sets runvar -# define - config.h variables/defines -# -########################################################################### - -# Low level variable assignment -# Arguments: -# variable name -# variable value -function mkl_var0_set { - export "$1"="$2" -} - -# Sets a runtime variable (only used during configure) -# If cache=1 these variables are cached to config.cache. -# Arguments: -# variable name -# variable value -# [ "cache" ] -function mkl_var_set { - mkl_var0_set "$1" "$2" - if [[ $3 == "cache" ]]; then - if ! mkl_in_list "$MKL_CACHEVARS" "$1" ; then - MKL_CACHEVARS="$MKL_CACHEVARS $1" - fi - fi -} - -# Unsets a mkl variable -# Arguments: -# variable name -function mkl_var_unset { - unset $1 -} - -# Appends to a mkl variable (space delimited) -# Arguments: -# variable name -# variable value -function mkl_var_append { - if [[ -z ${!1} ]]; then - mkl_var_set "$1" "$2" - else - mkl_var0_set "$1" "${!1} $2" - fi -} - - -# Prepends to a mkl variable (space delimited) -# Arguments: -# variable name -# variable value -function mkl_var_prepend { - if [[ -z ${!1} ]]; then - mkl_var_set "$1" "$2" - else - mkl_var0_set "$1" "$2 ${!1}" - fi -} - -# Shift the first word off a variable. -# Arguments: -# variable name -function mkl_var_shift { - local n="${!1}" - mkl_var0_set "$1" "${n#* }" - return 0 -} - - -# Returns the contents of mkl variable -# Arguments: -# variable name -function mkl_var_get { - echo "${!1}" -} - - - - -# Set environment variable (runtime) -# These variables are not cached nor written to any of the output files, -# its just simply a helper wrapper for standard envs. -# Arguments: -# varname -# varvalue -function mkl_env_set { - mkl_var0_set "$1" "$2" -} - -# Append to environment variable -# Arguments: -# varname -# varvalue -# [ separator (" ") ] -function mkl_env_append { - local sep=" " - if [[ -z ${!1} ]]; then - mkl_env_set "$1" "$2" - else - [ ! -z ${3} ] && sep="$3" - mkl_var0_set "$1" "${!1}${sep}$2" - fi - -} - -# Prepend to environment variable -# Arguments: -# varname -# varvalue -# [ separator (" ") ] -function mkl_env_prepend { - local sep=" " - if [[ -z ${!1} ]]; then - mkl_env_set "$1" "$2" - else - [ ! -z ${3} ] && sep="$3" - mkl_var0_set "$1" "$2${sep}${!1}" - fi - -} - - - - -# Set a make variable (Makefile.config) -# Arguments: -# config name -# variable name -# value -function mkl_mkvar_set { - if [[ ! -z $2 ]]; then - mkl_env_set "$2" "$3" - mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2 - fi -} - - -# Prepends to a make variable (Makefile.config) -# Arguments: -# config name -# variable name -# value -function mkl_mkvar_prepend { - if [[ ! -z $2 ]]; then - mkl_env_prepend "$2" "$3" - mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2 - fi -} - - -# Appends to a make variable (Makefile.config) -# Arguments: -# config name -# variable name -# value -function mkl_mkvar_append { - if [[ ! -z $2 ]]; then - mkl_env_append "$2" "$3" - mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2 - fi -} - - -# Prepends to a make variable (Makefile.config) -# Arguments: -# config name -# variable name -# value -function mkl_mkvar_prepend { - if [[ ! -z $2 ]]; then - mkl_env_prepend "$2" "$3" - mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2 - fi -} - -# Return mkvar variable value -# Arguments: -# variable name -function mkl_mkvar_get { - [[ -z ${!1} ]] && return 1 - echo ${!1} - return 0 -} - - - -# Defines a config header define (config.h) -# Arguments: -# config name -# define name -# define value (optional, default: 1) -# if value starts with code: then no "" are added -function mkl_define_set { - - if [[ -z $2 ]]; then - return 0 - fi - - local stmt="" - local defid= - if [[ $2 = *\(* ]]; then - # macro - defid="def_${2%%(*}" - else - # define - defid="def_$2" - fi - - [[ -z $1 ]] || stmt="// $1\n" - - local val="$3" - if [[ -z "$val" ]]; then - val="$(mkl_def $2 1)" - fi - - # Define as code, string or integer? - if [[ $val == code:* ]]; then - # Code block, copy verbatim without quotes, strip code: prefix - val=${val#code:} - elif [[ ! ( "$val" =~ ^[0-9]+([lL]?[lL][dDuU]?)?$ || \ - "$val" =~ ^0x[0-9a-fA-F]+([lL]?[lL][dDuU]?)?$ ) ]]; then - # String: quote - val="\"$val\"" - fi - # else: unquoted integer/hex - - stmt="${stmt}#define $2 $val" - mkl_env_set "$defid" "$stmt" - mkl_env_append MKL_DEFINES "$defid" -} - - - - - -# Sets "all" configuration variables, that is: -# for name set: Makefile variable, config.h define -# Will convert value "y"|"n" to 1|0 for config.h -# Arguments: -# config name -# variable name -# value -function mkl_allvar_set { - mkl_mkvar_set "$1" "$2" "$3" - local val=$3 - if [[ $3 = "y" ]]; then - val=1 - elif [[ $3 = "n" ]]; then - val=0 - fi - mkl_define_set "$1" "$2" "$val" -} - - - - -########################################################################### -# -# -# Check failure functionality -# -# -########################################################################### - - -# Summarize all fatal failures and then exits. -function mkl_fail_summary { - echo " - -" - - local pkg_cmd="" - local install_pkgs="" - mkl_err "###########################################################" - mkl_err "### Configure failed ###" - mkl_err "###########################################################" - mkl_err "### Accumulated failures: ###" - mkl_err "###########################################################" - local n - for n in $MKL_FAILS ; do - local conf=$(mkl_var_get MKL_FAIL__${n}__conf) - mkl_err " $conf ($(mkl_var_get MKL_FAIL__${n}__define)) $(mkl_meta_get $conf name)" - if mkl_meta_exists $conf desc; then - mkl_err0 " desc: $MKL_YELLOW$(mkl_meta_get $conf desc)$MKL_CLR_RESET" - fi - mkl_err0 " module: $(mkl_var_get MKL_FAIL__${n}__module)" - mkl_err0 " action: $(mkl_var_get MKL_FAIL__${n}__action)" - mkl_err0 " reason: -$(mkl_var_get MKL_FAIL__${n}__reason) -" - # Dig up some metadata to assist the user - case $MKL_DISTRO in - Debian|Ubuntu|*) - local debs=$(mkl_meta_get $conf "deb") - pkg_cmd="sudo apt-get install" - if [[ ${#debs} > 0 ]]; then - install_pkgs="$install_pkgs $debs" - fi - ;; - esac - done - - if [[ ! -z $install_pkgs ]]; then - mkl_err "###########################################################" - mkl_err "### Installing the following packages might help: ###" - mkl_err "###########################################################" - mkl_err0 "$pkg_cmd $install_pkgs" - mkl_err0 "" - fi - exit 1 -} - - -# Checks if there were failures. -# Returns 0 if there were no failures, else calls failure summary and exits. -function mkl_check_fails { - if [[ ${#MKL_FAILS} = 0 ]]; then - return 0 - fi - mkl_fail_summary -} - -# A check has failed but we want to carry on (and we should!). -# We fail it all later. -# Arguments: -# config name -# define name -# action -# reason -function mkl_fail { - local n="$(mkl_env_esc "$1")" - mkl_var_set "MKL_FAIL__${n}__conf" "$1" - mkl_var_set "MKL_FAIL__${n}__module" $MKL_MODULE - mkl_var_set "MKL_FAIL__${n}__define" $2 - mkl_var_set "MKL_FAIL__${n}__action" "$3" - if [[ -z $(mkl_var_get "MKL_FAIL__${n}__reason") ]]; then - mkl_var_set "MKL_FAIL__${n}__reason" "$4" - else - mkl_var_append "MKL_FAIL__${n}__reason" " -And also: -$4" - fi - mkl_in_list "$MKL_FAILS" "$n" || mkl_var_append MKL_FAILS "$n" -} - - -# A check failed, handle it -# Arguments: -# config name -# define name -# action (fail|disable|ignore|cont) -# reason -function mkl_check_failed { - # Override action based on require directives, unless the action is - # set to cont (for fallthrough to sub-sequent tests). - local action="$3" - if [[ $3 != "cont" ]]; then - action=$(mkl_meta_get "MOD__$MKL_MODULE" "override_action" $3) - fi - - # --fail-fatal option - [[ $MKL_FAILFATAL ]] && action="fail" - - mkl_check_done "$1" "$2" "$action" "failed" - - mkl_dbg "Check $1 ($2, action $action (originally $3)) failed: $4" - - - case $action in - fail) - # Check failed fatally, fail everything eventually - mkl_fail "$1" "$2" "$3" "$4$extra" - return 1 - ;; - - disable) - # Check failed, disable - [[ ! -z $2 ]] && mkl_mkvar_set "$1" "$2" "n" - return 1 - ;; - ignore) - # Check failed but we ignore the results and set it anyway. - [[ ! -z $2 ]] && mkl_define_set "$1" "$2" "1" - [[ ! -z $2 ]] && mkl_mkvar_set "$1" "$2" "y" - return 1 - ;; - cont) - # Check failed but we ignore the results and do nothing. - return 0 - ;; - esac -} - - - - -########################################################################### -# -# -# Output generators -# -# -########################################################################### - -# Generate late variables. -# Late variables are those referenced in command line option defaults -# but then never set by --option. -function mkl_generate_late_vars { - local n - for n in $MKL_LATE_VARS ; do - local func=${n%:*} - local safeopt=${func#opt_} - local val=${n#*:} - if mkl_in_list "$MKL_OPTS_SET" "$safeopt" ; then - # Skip options set explicitly with --option - continue - fi - # Expand variable references "\$foo" by calling eval - # and pass it opt_... function. - $func "$(eval echo $val)" - done -} - -# Generate output files. -# Must be called following a succesful configure run. -function mkl_generate { - local mf= - for mf in $MKL_GENERATORS ; do - MKL_MODULE=${mf%:*} - local func=${mf#*:} - $func || exit 1 - done - - mkl_write_mk "# Automatically generated by $0 $*" - mkl_write_mk "# Config variables" - mkl_write_mk "#" - mkl_write_mk "# Generated by:" - mkl_write_mk "# $MKL_CONFIGURE_ARGS" - mkl_write_mk "" - - # This variable is used by Makefile.base to avoid multiple inclusions. - mkl_write_mk "MKL_MAKEFILE_CONFIG=y" - - # Export colors to Makefile.config - mkl_write_mk "MKL_RED=\t${MKL_RED}" - mkl_write_mk "MKL_GREEN=\t${MKL_GREEN}" - mkl_write_mk "MKL_YELLOW=\t${MKL_YELLOW}" - mkl_write_mk "MKL_BLUE=\t${MKL_BLUE}" - mkl_write_mk "MKL_CLR_RESET=\t${MKL_CLR_RESET}" - - local n= - for n in $MKL_MKVARS ; do - # Some special variables should be prefixable by the caller, so - # define them in the makefile as appends. - local op="=" - case $n in - CFLAGS|CPPFLAGS|CXXFLAGS|LDFLAGS|LIBS) - op="+=" - ;; - esac - mkl_write_mk "$n$op\t${!n}" - done - mkl_write_mk "# End of config variables" - - MKL_OUTMK_FINAL=Makefile.config - mv $MKL_OUTMK $MKL_OUTMK_FINAL - - echo "Generated $MKL_OUTMK_FINAL" - - # Generate config.h - mkl_write_h "// Automatically generated by $0 $*" - mkl_write_h "#pragma once" - for n in $MKL_DEFINES ; do - mkl_write_h "${!n}" - done - - MKL_OUTH_FINAL=config.h - mv $MKL_OUTH $MKL_OUTH_FINAL - - echo "Generated $MKL_OUTH_FINAL" -} - -# Remove file noisily, if it exists -function mkl_rm { - if [[ -f $fname ]]; then - echo "Removing $fname" - rm -f "$fname" - fi -} - -# Remove files generated by configure -function mkl_clean { - for fname in Makefile.config config.h config.cache config.log ; do - mkl_rm "$fname" - done - - local mf= - for mf in $MKL_CLEANERS ; do - MKL_MODULE=${mf%:*} - local func=${mf#*:} - $func || exit 1 - done - -} - - -# Print summary of succesful configure run -function mkl_summary { - - echo " -Configuration summary:" - local n= - for n in $MKL_MKVARS ; do - # Skip the boring booleans - if [[ $n == WITH_* || $n == WITHOUT_* || $n == HAVE_* || $n == def_* ]]; then - continue - fi - printf " %-24s %s\n" "$n" "${!n}" - done -} - - - -# Write to mk file -# Argument: -# string .. -function mkl_write_mk { - echo -e "$*" >> $MKL_OUTMK -} - -# Write to header file -# Argument: -# string .. -function mkl_write_h { - echo -e "$*" >> $MKL_OUTH -} - - - -########################################################################### -# -# -# Logging and debugging -# -# -########################################################################### - -# Debug print -# Only visible on terminal if MKL_DEBUG is set. -# Always written to config.log -# Argument: -# string .. -function mkl_dbg { - if [[ ! -z $MKL_DEBUG ]]; then - echo -e "${MKL_BLUE}DBG:$$: $*${MKL_CLR_RESET}" 1>&2 - fi - echo "DBG: $*" >> $MKL_OUTDBG -} - -# Error print (with color) -# Always printed to terminal and config.log -# Argument: -# string .. -function mkl_err { - echo -e "${MKL_RED}$*${MKL_CLR_RESET}" 1>&2 - echo "$*" >> $MKL_OUTDBG -} - -# Same as mkl_err but without coloring -# Argument: -# string .. -function mkl_err0 { - echo -e "$*" 1>&2 - echo "$*" >> $MKL_OUTDBG -} - -# Standard print -# Always printed to terminal and config.log -# Argument: -# string .. -function mkl_info { - echo -e "$*" 1>&2 - echo -e "$*" >> $MKL_OUTDBG -} - - - - - - - -########################################################################### -# -# -# Misc helpers -# -# -########################################################################### - -# Returns the absolute path (but not necesarily canonical) of the first argument -function mkl_abspath { - echo $1 | sed -e "s|^\([^/]\)|$PWD/\1|" -} - -# Returns true (0) if function $1 exists, else false (1) -function mkl_func_exists { - declare -f "$1" > /dev/null - return $? -} - -# Rename function. -# Returns 0 on success or 1 if old function (origname) was not defined. -# Arguments: -# origname -# newname -function mkl_func_rename { - if ! mkl_func_exists $1 ; then - return 1 - fi - local orig=$(declare -f $1) - local new="$2${orig#$1}" - eval "$new" - unset -f "$1" - return 0 -} - - -# Push module function for later call by mklove. -# The function is renamed to an internal name. -# Arguments: -# list variable name -# module name -# function name -function mkl_func_push { - local newfunc="__mkl__f_${2}_$(( MKL_IDNEXT++ ))" - if mkl_func_rename "$3" "$newfunc" ; then - mkl_var_append "$1" "$2:$newfunc" - fi -} - - - -# Returns value, or the default string if value is empty. -# Arguments: -# value -# default -function mkl_def { - if [[ ! -z $1 ]]; then - echo $1 - else - echo $2 - fi -} - - -# Render a string (e.g., evaluate its $varrefs) -# Arguments: -# string -function mkl_render { - if [[ $* == *\$* ]]; then - eval "echo $*" - else - echo "$*" - fi -} - -# Escape a string so that it becomes suitable for being an env variable. -# This is a destructive operation and the original string cannot be restored. -function mkl_env_esc { - echo $* | LC_ALL=C sed -e 's/[^a-zA-Z0-9_]/_/g' -} - -# Convert arguments to upper case -function mkl_upper { - echo "$*" | tr '[:lower:]' '[:upper:]' -} - -# Convert arguments to lower case -function mkl_lower { - echo "$*" | tr '[:upper:]' '[:lower:]' -} - - -# Checks if element is in list -# Arguments: -# list -# element -function mkl_in_list { - local n - for n in $1 ; do - [[ $n == $2 ]] && return 0 - done - return 1 -} - - - - -########################################################################### -# -# -# Cache functionality -# -# -########################################################################### - - -# Write cache file -function mkl_cache_write { - [[ ! -z "$MKL_NOCACHE" ]] && return 0 - echo "# mklove configure cache file generated at $(date)" > config.cache - for n in $MKL_CACHEVARS ; do - echo "$n=${!n}" >> config.cache - done - echo "Generated config.cache" -} - - -# Read cache file -function mkl_cache_read { - [[ ! -z "$MKL_NOCACHE" ]] && return 0 - [ -f config.cache ] || return 1 - - echo "using cache file config.cache" - - local ORIG_IFS=$IFS - IFS="$IFS=" - while read -r n v ; do - [[ -z $n || $n = \#* || -z $v ]] && continue - mkl_var_set $n $v cache - done < config.cache - IFS=$ORIG_IFS -} - - -########################################################################### -# -# -# Config name meta data -# -# -########################################################################### - -# Set metadata for config name -# This metadata is used by mkl in various situations -# Arguments: -# config name -# metadata key -# metadata value (appended) -function mkl_meta_set { - local metaname="mkl__$1__$2" - eval "$metaname=\"\$$metaname $3\"" -} - -# Returns metadata for config name -# Arguments: -# config name -# metadata key -# default (optional) -function mkl_meta_get { - local metaname="mkl__$1__$2" - if [[ ! -z ${!metaname} ]]; then - echo ${!metaname} - else - echo "$3" - fi -} - -# Checks if metadata exists -# Arguments: -# config name -# metadata key -function mkl_meta_exists { - local metaname="mkl__$1__$2" - if [[ ! -z ${!metaname} ]]; then - return 0 - else - return 1 - fi -} - - - - - -########################################################################### -# -# -# Check framework -# -# -########################################################################### - - -# Print that a check is beginning to run -# Returns 0 if a cached result was used (do not continue with your tests), -# else 1. -# -# If the check should not be cachable then specify argument 3 as "no-cache", -# this is useful when a check not only checks but actually sets config -# variables itself (which is not recommended, but desired sometimes). -# -# Arguments: -# [ --verb "verb.." ] (replace "checking for") -# config name -# define name -# action (fail,cont,disable or no-cache) -# [ display name ] -function mkl_check_begin { - local verb="checking for" - if [[ $1 == "--verb" ]]; then - verb="$2" - shift - shift - fi - - local name=$(mkl_meta_get $1 name "$4") - [[ -z $name ]] && name="x:$1" - - echo -n "$verb $name..." - if [[ $3 != "no-cache" ]]; then - local status=$(mkl_var_get "MKL_STATUS_$1") - # Check cache (from previous run or this one). - # Only used cached value if the cached check succeeded: - # it is more likely that a failed check has been fixed than the other - # way around. - if [[ ! -z $status && ( $status = "ok" ) ]]; then - mkl_check_done "$1" "$2" "$3" $status "cached" - return 0 - fi - fi - return 1 -} - -# Print that a check is done -# Arguments: -# config name -# define name -# action -# status (ok|failed) -# extra-info (optional) -function mkl_check_done { - # Clean up configname to be a safe varname - local cname=${1//-/_} - mkl_var_set "MKL_STATUS_$cname" "$4" cache - - local extra="" - if [[ $4 = "failed" ]]; then - local clr=$MKL_YELLOW - extra=" ($3)" - case "$3" in - fail) - clr=$MKL_RED - ;; - cont) - extra="" - ;; - esac - echo -e " $clr$4$MKL_CLR_RESET${extra}" - else - [[ ! -z $2 ]] && mkl_define_set "$cname" "$2" "1" - [[ ! -z $2 ]] && mkl_mkvar_set "$cname" "$2" "y" - [ ! -z "$5" ] && extra=" ($5)" - echo -e " $MKL_GREEN$4${MKL_CLR_RESET}$extra" - fi -} - - -# Perform configure check by compiling source snippet -# Arguments: -# [--ldflags="..." ] (appended after "compiler arguments" below) -# config name -# define name -# action (fail|disable) -# compiler (CC|CXX) -# compiler arguments (optional "", example: "-lzookeeper") -# source snippet -function mkl_compile_check { - local ldf= - if [[ $1 == --ldflags=* ]]; then - ldf=${1#*=} - shift - fi - mkl_check_begin "$1" "$2" "$3" "$1 (by compile)" && return $? - - local cflags= - - if [[ $4 = "CXX" ]]; then - local ext=cpp - cflags="$(mkl_mkvar_get CXXFLAGS)" - else - local ext=c - cflags="$(mkl_mkvar_get CFLAGS)" - fi - - local srcfile=$(mktemp _mkltmpXXXXXX) - mv "$srcfile" "${srcfile}.$ext" - srcfile="$srcfile.$ext" - echo "$6" > $srcfile - echo " -int main () { return 0; } -" >> $srcfile - - local cmd="${!4} $cflags $(mkl_mkvar_get CPPFLAGS) -Wall -Werror $srcfile -o ${srcfile}.o $ldf $(mkl_mkvar_get LDFLAGS) $5"; - mkl_dbg "Compile check $1 ($2): $cmd" - - local output - output=$($cmd 2>&1) - - if [[ $? != 0 ]] ; then - mkl_dbg "compile check for $1 ($2) failed: $cmd: $output" - mkl_check_failed "$1" "$2" "$3" "compile check failed: -CC: $4 -flags: $5 -$cmd: -$output -source: $6" - local ret=1 - else - mkl_check_done "$1" "$2" "$3" "ok" - local ret=0 - fi - - # OSX XCode toolchain creates dSYM directories when -g is set, - # delete them specifically. - rm -rf "$srcfile" "${srcfile}.o" "$srcfile*dSYM" - - return $ret -} - - -# Try to link with a library. -# Arguments: -# config name -# define name -# action (fail|disable) -# linker flags (e.g. "-lpthreads") -function mkl_link_check { - mkl_check_begin "$1" "$2" "$3" "$1 (by linking)" && return $? - - local srcfile=$(mktemp _mktmpXXXXXX) - echo "int main () { return 0; }" > $srcfile - - local cmd="${CC} $(mkl_mkvar_get LDFLAGS) -c $srcfile -o ${srcfile}.o $4"; - mkl_dbg "Link check $1 ($2): $cmd" - - local output - output=$($cmd 2>&1) - - if [[ $? != 0 ]] ; then - mkl_dbg "link check for $1 ($2) failed: $output" - mkl_check_failed "$1" "$2" "$3" "compile check failed: -$output" - local ret=1 - else - mkl_check_done "$1" "$2" "$3" "ok" "$4" - local ret=0 - fi - - rm -f $srcfile* - return $ret -} - - - -# Tries to figure out if we can use a static library or not. -# Arguments: -# library name (e.g. -lrdkafka) -# compiler flags (optional "", e.g: "-lyajl") -# Returns/outputs: -# New list of compiler flags -function mkl_lib_check_static { - local libname=$1 - local libs=$2 - local arfile_var=STATIC_LIB_${libname#-l} - - mkl_dbg "Check $libname for static library (libs $libs, arfile variable $arfile_var=${!arfile_var})" - - # If STATIC_LIB_<libname_without_-l> specifies an existing .a file we - # use that instead. - if [[ -f ${!arfile_var} ]]; then - libs=$(echo $libs | sed -e "s|$libname|${!arfile_var}|g") - elif [[ $HAS_LDFLAGS_STATIC == y ]]; then - libs=$(echo $libs | sed -e "s|$libname|${LDFLAGS_STATIC} $libname ${LDFLAGS_DYNAMIC}|g") - else - mkl_dbg "$libname: Neither $arfile_var specified or static linker flags supported: static linking probably won't work" - fi - - echo $libs -} - - -# Checks that the specified lib is available through a number of methods. -# compiler flags are automatically appended to "LIBS" mkvar on success. -# -# If STATIC_LIB_<libname_without_-l> is set to the path of an <libname>.a file -# it will be used instead of -l<libname>. -# -# Arguments: -# [--static=<lib>] (allows static linking (--enable-static) for the -# library provided, e.g.: --static=-lrdkafka "librdkafka"..) -# [--libname=<lib>] (library name if different from config name, such as -# when the libname includes a dash) -# config name (library name (for pkg-config)) -# define name -# action (fail|disable|cont) -# compiler (CC|CXX) -# compiler flags (optional "", e.g: "-lyajl") -# source snippet -function mkl_lib_check { - - local is_static=0 - local staticopt= - if [[ $1 == --static* ]]; then - staticopt=$1 - shift - fi - - local libnameopt= - local libname=$1 - if [[ $1 == --libname* ]]; then - libnameopt=$1 - libname="${libnameopt#*=}" - shift - fi - - # pkg-config result (0=ok) - local pkg_conf_failed=1 - if [[ $WITH_PKGCONFIG == "y" ]]; then - # Let pkg-config populate CFLAGS, et.al. - mkl_pkg_config_check $staticopt $libnameopt "$1" "" cont - pkg_conf_failed=$? - fi - - local libs="" - if [[ $pkg_conf_failed ]]; then - libs="$5" - if [[ $WITH_STATIC_LINKING == y && ! -z $staticopt ]]; then - libs=$(mkl_lib_check_static "${staticopt#*=}" "$libs") - is_static=1 - fi - fi - - if ! mkl_compile_check "$1" "$2" "$3" "$4" "$libs" "$6"; then - return 1 - fi - - if [[ $pkg_conf_failed == 1 ]]; then - if [[ $is_static == 1 ]]; then - mkl_mkvar_prepend "$1" LIBS "$libs" - else - mkl_mkvar_append "$1" LIBS "$libs" - fi - fi - - return 0 -} - - -# Check for library with pkg-config -# Automatically sets CFLAGS and LIBS from pkg-config information. -# Arguments: -# [--static=<lib>] (allows static linking (--enable-static) for the -# library provided, e.g.: --static=-lrdkafka "librdkafka"..) -# [--libname=<lib>] (library name if different from config name, such as -# when the libname includes a dash) -# config name -# define name -# action (fail|disable|ignore) -function mkl_pkg_config_check { - - local staticopt= - if [[ $1 == --static* ]]; then - staticopt=$1 - shift - fi - - local libname=$1 - if [[ $1 == --libname* ]]; then - libname="${libnameopt#*=}" - shift - fi - - local cname="${1}_PKGCONFIG" - mkl_check_begin "$cname" "$2" "no-cache" "$1 (by pkg-config)" && return $? - - local cflags= - local cmd="${PKG_CONFIG} --short-errors --cflags $libname" - mkl_dbg "pkg-config check $libname ($2): $cmd" - - cflags=$($cmd 2>&1) - if [[ $? != 0 ]]; then - mkl_dbg "'$cmd' failed: $cflags" - mkl_check_failed "$cname" "$2" "$3" "'$cmd' failed: -$cflags" - return 1 - fi - - local libs= - libs=$(${PKG_CONFIG} --short-errors --libs $libname 2>&1) - if [[ $? != 0 ]]; then - mkl_dbg "${PKG_CONFIG} --libs $libname failed: $libs" - mkl_check_failed "$cname" "$2" "$3" "pkg-config --libs failed" - return 1 - fi - - mkl_mkvar_append $1 "CFLAGS" "$cflags" - - if [[ $WITH_STATIC_LINKING == y && ! -z $staticopt ]]; then - libs=$(mkl_lib_check_static "${staticopt#*=}" "$libs") - mkl_mkvar_prepend "$1" LIBS "$libs" - else - mkl_mkvar_append "$1" LIBS "$libs" - fi - - mkl_check_done "$1" "$2" "$3" "ok" - - return 0 -} - - -# Check that a command runs and exits succesfully. -# Arguments: -# config name -# define name (optional, can be empty) -# action -# command -function mkl_command_check { - mkl_check_begin "$1" "$2" "$3" "$1 (by command)" && return $? - - local out= - out=$($4 2>&1) - if [[ $? != 0 ]]; then - mkl_dbg "$1: $2: $4 failed: $out" - mkl_check_failed "$1" "$2" "$3" "command '$4' failed: -$out" - return 1 - fi - - mkl_check_done "$1" "$2" "$3" "ok" - - return 0 -} - - -# Check that a program is executable, but will not execute it. -# Arguments: -# config name -# define name (optional, can be empty) -# action -# program name (e.g, objdump) -function mkl_prog_check { - mkl_check_begin --verb "checking executable" "$1" "$2" "$3" "$1" && return $? - - local out= - out=$(command -v "$4" 2>&1) - if [[ $? != 0 ]]; then - mkl_dbg "$1: $2: $4 is not executable: $out" - mkl_check_failed "$1" "$2" "$3" "$4 is not executable" - return 1 - fi - - mkl_check_done "$1" "$2" "$3" "ok" - - return 0 -} - - - - -# Checks that the check for the given config name passed. -# This does not behave like the other checks, if the given config name passed -# its test then nothing is printed. Else the configure will fail. -# Arguments: -# checked config name -function mkl_config_check { - local status=$(mkl_var_get "MKL_STATUS_$1") - [[ $status = "ok" ]] && return 0 - mkl_fail $1 "" "fail" "$MKL_MODULE requires $1" - return 1 -} - - -# Checks that all provided config names are set. -# Arguments: -# config name -# define name -# action -# check_config_name1 -# check_config_name2.. -function mkl_config_check_all { - local cname= - local res="ok" - echo start this now for $1 - for cname in ${@:4}; do - local st=$(mkl_var_get "MKL_STATUS_$cname") - [[ $status = "ok" ]] && continue - mkl_fail $1 $2 $3 "depends on $cname" - res="failed" - done - - echo "try res $res" - mkl_check_done "$1" "$2" "$3" $res -} - - -# Check environment variable -# Arguments: -# config name -# define name -# action -# environment variable -function mkl_env_check { - mkl_check_begin "$1" "$2" "$3" "$1 (by env $4)" && return $? - - if [[ -z ${!4} ]]; then - mkl_check_failed "$1" "$2" "$3" "environment variable $4 not set" - return 1 - fi - - mkl_check_done "$1" "$2" "$3" "ok" "${!4}" - - return 0 -} - - -# Run all checks -function mkl_checks_run { - # Set up common variables - mkl_allvar_set "" MKL_APP_NAME $(mkl_meta_get description name) - mkl_allvar_set "" MKL_APP_DESC_ONELINE "$(mkl_meta_get description oneline)" - - # Call checks functions in dependency order - local mf - for mf in $MKL_CHECKS ; do - MKL_MODULE=${mf%:*} - local func=${mf#*:} - - if mkl_func_exists $func ; then - $func - else - mkl_err "Check function $func from $MKL_MODULE disappeared ($mf)" - fi - unset MKL_MODULE - done -} - - -# Check for color support in terminal. -# If the terminal supports colors, the function will alter -# MKL_RED -# MKL_GREEN -# MKL_YELLOW -# MKL_BLUE -# MKL_CLR_RESET -function mkl_check_terminal_color_support { - local use_color=false - local has_tput=false - - if [[ -z ${TERM} ]]; then - # tput and dircolors require $TERM - mkl_dbg "\$TERM is not set! Cannot check for color support in terminal." - return 1 - elif hash tput 2>/dev/null; then - has_tput=true - [[ $(tput colors 2>/dev/null) -ge 8 ]] && use_color=true - mkl_dbg "tput reports color support: ${use_color}" - elif hash dircolors 2>/dev/null; then - # Enable color support only on colorful terminals. - # dircolors --print-database uses its own built-in database - # instead of using /etc/DIR_COLORS. Try to use the external file - # first to take advantage of user additions. - local safe_term=${TERM//[^[:alnum:]]/?} - local match_lhs="" - [[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)" - [[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)" - [[ -z ${match_lhs} ]] && match_lhs=$(dircolors --print-database) - [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true - mkl_dbg "dircolors reports color support: ${use_color}" - fi - - if ${use_color}; then - if ${has_tput}; then - # In theory, user could have set different escape sequences - # Because tput is available we can use it to query the right values ... - mkl_dbg "Using color escape sequences from tput" - MKL_RED=$(tput setaf 1) - MKL_GREEN=$(tput setaf 2) - MKL_YELLOW=$(tput setaf 3) - MKL_BLUE=$(tput setaf 4) - MKL_CLR_RESET=$(tput sgr0) - else - mkl_dbg "Using hard-code ANSI color escape sequences" - MKL_RED="\033[031m" - MKL_GREEN="\033[032m" - MKL_YELLOW="\033[033m" - MKL_BLUE="\033[034m" - MKL_CLR_RESET="\033[0m" - fi - else - mkl_dbg "Did not detect color support in \"$TERM\" terminal!" - fi - - return 0 -} - - - - -########################################################################### -# -# -# Module functionality -# -# -########################################################################### - -# Downloads module from repository. -# Arguments: -# module name -# Returns: -# module file name -function mkl_module_download { - local modname="$1" - local url="$MKL_REPO_URL/modules/configure.$modname" - local tmpfile="" - - fname="${MKLOVE_DIR}/modules/configure.$modname" - - if [[ $url != http*://* ]]; then - # Local path, just copy file. - if [[ ! -f $url ]]; then - mkl_err "Module $modname not found at $url" - return 1 - fi - - if ! cp "$url" "$fname" ; then - mkl_err "Failed to copy $url to $fname" - return 1 - fi - - echo "$fname" - return 0 - fi - - # Download - mkl_info "${MKL_BLUE}downloading missing module $modname from $url${MKL_CLR_RESET}" - - tmpfile=$(mktemp _mkltmpXXXXXX) - local out= - out=$(wget -nv -O "$tmpfile" "$url" 2>&1) - - if [[ $? -ne 0 ]]; then - rm -f "$tmpfile" - mkl_err "Failed to download $modname:" - mkl_err0 $out - return 1 - fi - - # Move downloaded file into place replacing the old file. - mv "$tmpfile" "$fname" || return 1 - - # "Return" filename - echo "$fname" - - return 0 -} - - -# Load module by name or filename -# Arguments: -# "require"|"try" -# filename -# [ module arguments ] -function mkl_module_load { - local try=$1 - shift - local fname=$1 - shift - local modname=${fname#*configure.} - local bypath=1 - - # Check if already loaded - if mkl_in_list "$MKL_MODULES" "$modname"; then - return 0 - fi - - if [[ $fname = $modname ]]; then - # Module specified by name, find the file. - bypath=0 - for fname in configure.$modname \ - ${MKLOVE_DIR}/modules/configure.$modname ; do - [[ -s $fname ]] && break - done - fi - - # Calling module - local cmod=$MKL_MODULE - [[ -z $cmod ]] && cmod="base" - - if [[ ! -s $fname ]]; then - # Attempt to download module, if permitted - if [[ $MKL_NO_DOWNLOAD != 0 || $bypath == 1 ]]; then - mkl_err "Module $modname not found at $fname (required by $cmod) and downloads disabled" - if [[ $try = "require" ]]; then - mkl_fail "$modname" "none" "fail" \ - "Module $modname not found (required by $cmod) and downloads disabled" - fi - return 1 - fi - - fname=$(mkl_module_download "$modname") - if [[ $? -ne 0 ]]; then - mkl_err "Module $modname not found (required by $cmod)" - if [[ $try = "require" ]]; then - mkl_fail "$modname" "none" "fail" \ - "Module $modname not found (required by $cmod)" - return 1 - fi - fi - - # Now downloaded, try loading the module again. - mkl_module_load $try "$fname" "$@" - return $? - fi - - # Set current module - local save_MKL_MODULE=$MKL_MODULE - MKL_MODULE=$modname - - mkl_dbg "Loading module $modname (required by $cmod) from $fname" - - # Source module file (positional arguments are available to module) - source $fname - - # Restore current module (might be recursive) - MKL_MODULE=$save_MKL_MODULE - - # Add module to list of modules - mkl_var_append MKL_MODULES $modname - - # Rename module's special functions so we can call them separetely later. - mkl_func_rename "options" "${modname}_options" - mkl_func_push MKL_CHECKS "$modname" "checks" - mkl_func_push MKL_GENERATORS "$modname" "generate" - mkl_func_push MKL_CLEANERS "$modname" "clean" -} - - -# Require and load module -# Must only be called from module file outside any function. -# Arguments: -# [ --try ] Dont fail if module doesn't exist -# module1 -# [ "must" "pass" ] -# [ module arguments ... ] -function mkl_require { - local try="require" - if [[ $1 = "--try" ]]; then - local try="try" - shift - fi - - local mod=$1 - shift - local override_action= - - # Check for cyclic dependencies - if mkl_in_list "$MKL_LOAD_STACK" "$mod"; then - mkl_err "Cyclic dependency detected while loading $mod module:" - local cmod= - local lmod=$mod - for cmod in $MKL_LOAD_STACK ; do - mkl_err " $lmod required by $cmod" - lmod=$cmod - done - mkl_fail base "" fail "Cyclic dependency detected while loading module $mod" - return 1 - fi - - mkl_var_prepend MKL_LOAD_STACK "$mod" - - - if [[ "$1 $2" == "must pass" ]]; then - shift - shift - override_action="fail" - fi - - if [[ ! -z $override_action ]]; then - mkl_meta_set "MOD__$mod" "override_action" "$override_action" - fi - - - mkl_module_load $try $mod "$@" - local ret=$? - - mkl_var_shift MKL_LOAD_STACK - - return $ret -} - - - -########################################################################### -# -# -# Usage options -# -# -########################################################################### - - -MKL_USAGE="Usage: ./configure [OPTIONS...] - - mklove configure script - mklove, not autoconf - Copyright (c) 2014-2015 Magnus Edenhill - https://github.com/edenhill/mklove -" - -function mkl_usage { - echo "$MKL_USAGE" - local name=$(mkl_meta_get description name) - - if [[ ! -z ${name} ]]; then - echo " $name - $(mkl_meta_get description oneline) - $(mkl_meta_get description copyright) -" - fi - - local og - for og in $MKL_USAGE_GROUPS ; do - og="MKL_USAGE_GROUP__$og" - echo "${!og}" - done - - echo "Honoured environment variables: - CC, CPP, CXX, CFLAGS, CPPFLAGS, CXXFLAGS, LDFLAGS, LIBS, - LD, NM, OBJDUMP, STRIP, PKG_CONFIG, PKG_CONFIG_PATH, - STATIC_LIB_<libname>=.../libname.a - -" - -} - - - -# Add usage option informative text -# Arguments: -# text -function mkl_usage_info { - MKL_USAGE="$MKL_USAGE -$1" -} - - -# Add option to usage output -# Arguments: -# option group ("Standard", "Cross-Compilation", etc..) -# variable name -# option ("--foo=feh") -# help -# default (optional) -# assignvalue (optional, default:"y") -# function block (optional) -function mkl_option { - local optgroup=$1 - local varname=$2 - - # Fixed width between option name and help in usage output - local pad=" " - if [[ ${#3} -lt ${#pad} ]]; then - pad=${pad:0:$(expr ${#pad} - ${#3})} - else - pad="" - fi - - # Add to usage output - local optgroup_safe=$(mkl_env_esc $optgroup) - if ! mkl_in_list "$MKL_USAGE_GROUPS" "$optgroup_safe" ; then - mkl_env_append MKL_USAGE_GROUPS "$optgroup_safe" - mkl_env_set "MKL_USAGE_GROUP__$optgroup_safe" "$optgroup options: -" - fi - - local defstr="" - [[ ! -z $5 ]] && defstr=" [$5]" - mkl_env_append "MKL_USAGE_GROUP__$optgroup_safe" " $3 $pad $4$defstr -" - - local optname="${3#--}" - local safeopt= - local optval="" - if [[ $3 == *=* ]]; then - optname="${optname%=*}" - optval="${3#*=}" - fi - - safeopt=$(mkl_env_esc $optname) - - mkl_meta_set "MKL_OPT_ARGS" "$safeopt" "$optval" - - # - # Optional variable scoping by prefix: "env:", "mk:", "def:" - # - local setallvar="mkl_allvar_set ''" - local setmkvar="mkl_mkvar_set ''" - - if [[ $varname = env:* ]]; then - # Set environment variable (during configure runtime only) - varname=${varname#*:} - setallvar=mkl_env_set - setmkvar=mkl_env_set - elif [[ $varname = mk:* ]]; then - # Set Makefile.config variable - varname=${varname#*:} - setallvar="mkl_mkvar_append ''" - setmkvar="mkl_mkvar_append ''" - elif [[ $varname = def:* ]]; then - # Set config.h define - varname=${varname#*:} - setallvar="mkl_define_set ''" - setmkvar="mkl_define_set ''" - fi - - - if [[ ! -z $7 ]]; then - # Function block specified. - eval "function opt_$safeopt { $7 }" - else - # Add default implementation of function simply setting the value. - # Application may override this by redefining the function after calling - # mkl_option. - if [[ $optval = "PATH" ]]; then - # PATH argument: make it an absolute path. - # Only set the make variable (not config.h) - eval "function opt_$safeopt { $setmkvar $varname \"\$(mkl_abspath \$(mkl_render \$1))\"; }" - else - # Standard argument: simply set the value - if [[ -z "$6" ]]; then - eval "function opt_$safeopt { $setallvar $varname \"\$1\"; }" - else - eval "function opt_$safeopt { $setallvar $varname \"$6\"; }" - fi - fi - fi - - # If default value is provided and does not start with "$" (variable ref) - # then set it right away. - # $ variable refs are set after all checks have run during the - # generating step. - if [[ ${#5} != 0 ]] ; then - if [[ $5 = *\$* ]]; then - mkl_var_append "MKL_LATE_VARS" "opt_$safeopt:$5" - else - opt_$safeopt $5 - fi - fi - - if [[ ! -z $varname ]]; then - # Add variable to list - MKL_CONFVARS="$MKL_CONFVARS $varname" - fi - -} - - - -# Adds a toggle (--enable-X, --disable-X) option. -# Arguments: -# option group ("Standard", ..) -# variable name (WITH_FOO) -# option (--enable-foo) -# help ("foo.." ("Enable" and "Disable" will be prepended)) -# default (y or n) - -function mkl_toggle_option { - - # Add option argument - mkl_option "$1" "$2" "$3" "$4" "$5" - - # Add corresponding "--disable-foo" option for "--enable-foo". - local disname="${3/--enable/--disable}" - local dishelp="${4/Enable/Disable}" - mkl_option "$1" "$2" "$disname" "$dishelp" "" "n" -} - -# Adds a toggle (--enable-X, --disable-X) option with builtin checker. -# This is the library version. -# Arguments: -# option group ("Standard", ..) -# config name (foo, must be same as pkg-config name) -# variable name (WITH_FOO) -# action (fail or disable) -# option (--enable-foo) -# help (defaults to "Enable <config name>") -# linker flags (-lfoo) -# default (y or n) - -function mkl_toggle_option_lib { - - local help="$6" - [[ -z "$help" ]] && help="Enable $2" - - # Add option argument - mkl_option "$1" "$3" "$5" "$help" "$8" - - # Add corresponding "--disable-foo" option for "--enable-foo". - local disname="${5/--enable/--disable}" - local dishelp="${help/Enable/Disable}" - mkl_option "$1" "$3" "$disname" "$dishelp" "" "n" - - # Create checks - eval "function _tmp_func { mkl_lib_check \"$2\" \"$3\" \"$4\" CC \"$7\"; }" - mkl_func_push MKL_CHECKS "$MKL_MODULE" _tmp_func -} - - - - - http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/mklove/modules/configure.builtin ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.builtin b/thirdparty/librdkafka-0.11.1/mklove/modules/configure.builtin deleted file mode 100644 index 546cbb2..0000000 --- a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.builtin +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -# -# mklove builtin checks and options -# Sets: -# prefix, etc.. - - -mkl_option "Standard" prefix "--prefix=PATH" \ - "Install arch-independent files in PATH" "/usr/local" -mkl_option "Standard" exec_prefix "--exec-prefix=PATH" \ - "Install arch-dependent files in PATH" "\$prefix" -mkl_option "Standard" bindir "--bindir=PATH" "User executables" "\$exec_prefix/bin" -mkl_option "Standard" sbindir "--sbindir=PATH" "System admin executables" \ - "\$exec_prefix/sbin" -mkl_option "Standard" libexecdir "--libexecdir=PATH" "Program executables" \ - "\$exec_prefix/libexec" -mkl_option "Standard" datadir "--datadir=PATH" "Read-only arch-independent data" \ - "\$prefix/share" -mkl_option "Standard" sysconfdir "--sysconfdir=PATH" "Configuration data" \ - "\$prefix/etc" -mkl_option "Standard" sharedstatedir "--sharedstatedir=PATH" \ - "Modifiable arch-independent data" "\$prefix/com" -mkl_option "Standard" localstatedir "--localstatedir=PATH" \ - "Modifiable local state data" "\$prefix/var" -mkl_option "Standard" libdir "--libdir=PATH" "Libraries" "\$exec_prefix/lib" -mkl_option "Standard" includedir "--includedir=PATH" "C/C++ header files" \ - "\$prefix/include" -mkl_option "Standard" infodir "--infodir=PATH" "Info documentation" "\$prefix/info" -mkl_option "Standard" mandir "--mandir=PATH" "Manual pages" "\$prefix/man" - -mkl_option "Configure tool" "" "--list-modules" "List loaded mklove modules" -mkl_option "Configure tool" "" "--list-checks" "List checks" -mkl_option "Configure tool" env:MKL_FAILFATAL "--fail-fatal" "All failures are fatal" -mkl_option "Configure tool" env:MKL_NOCACHE "--no-cache" "Dont use or generate config.cache" -mkl_option "Configure tool" env:MKL_DEBUG "--debug" "Enable configure debugging" -mkl_option "Configure tool" env:MKL_CLEAN "--clean" "Remove generated configure files" -mkl_option "Configure tool" "" "--reconfigure" "Rerun configure with same arguments as last run" -mkl_option "Configure tool" env:MKL_NO_DOWNLOAD "--no-download" "Disable downloads of required mklove modules" -mkl_option "Configure tool" env:MKL_UPDATE_MODS "--update-modules" "Update modules from global repository" -mkl_option "Configure tool" env:MKL_REPO_URL "--repo-url=URL_OR_PATH" "Override mklove modules repo URL" "$MKL_REPO_URL" -mkl_option "Configure tool" "" "--help" "Show configure usage" - - -mkl_toggle_option "Compatibility" "mk:MKL_MAINT_MODE" "--enable-maintainer-mode" "Maintainer mode (no-op)" - -mkl_option "Configure tool" "mk:PROGRAM_PREFIX" "--program-prefix=PFX" "Program prefix" - -mkl_option "Compatibility" "mk:DISABL_DEP_TRACK" "--disable-dependency-tracking" "Disable dependency tracking (no-op)" -mkl_option "Compatibility" "mk:DISABL_SILENT_RULES" "--disable-silent-rules" "Verbose build output (no-op)" - - -function checks { - - if [[ ! -z $libdir ]]; then - mkl_mkvar_append "libdir" LDFLAGS "-L${libdir}" - fi - - if [[ ! -z $includedir ]]; then - mkl_mkvar_append "includedir" CPPFLAGS "-I${includedir}" - fi - -} http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7528d23e/thirdparty/librdkafka-0.11.1/mklove/modules/configure.cc ---------------------------------------------------------------------- diff --git a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.cc b/thirdparty/librdkafka-0.11.1/mklove/modules/configure.cc deleted file mode 100644 index 79ce7fb..0000000 --- a/thirdparty/librdkafka-0.11.1/mklove/modules/configure.cc +++ /dev/null @@ -1,178 +0,0 @@ -#!/bin/bash -# -# Compiler detection -# Sets: -# CC, CXX, CFLAGS, CPPFLAGS, LDFLAGS, ARFLAGS, PKG_CONFIG, INSTALL, MBITS - - -mkl_require host - -function checks { - - # C compiler - mkl_meta_set "ccenv" "name" "C compiler from CC env" - if ! mkl_command_check "ccenv" "WITH_CC" cont "$CC --version"; then - if mkl_command_check "gcc" "WITH_GCC" cont "gcc --version"; then - CC=gcc - elif mkl_command_check "clang" "WITH_CLANG" cont "clang --version"; then - CC=clang - elif mkl_command_check "cc" "WITH_CC" fail "cc --version"; then - CC=cc - fi - fi - export CC="${CC}" - mkl_mkvar_set CC CC "$CC" - - if [[ $MKL_CC_WANT_CXX == 1 ]]; then - # C++ compiler - mkl_meta_set "cxxenv" "name" "C++ compiler from CXX env" - if ! mkl_command_check "cxxenv" "WITH_CXX" cont "$CXX --version" ; then - mkl_meta_set "gxx" "name" "C++ compiler (g++)" - mkl_meta_set "clangxx" "name" "C++ compiler (clang++)" - mkl_meta_set "cxx" "name" "C++ compiler (c++)" - if mkl_command_check "gxx" "WITH_GXX" cont "g++ --version"; then - CXX=g++ - elif mkl_command_check "clangxx" "WITH_CLANGXX" cont "clang++ --version"; then - CXX=clang++ - elif mkl_command_check "cxx" "WITH_CXX" fail "c++ --version"; then - CXX=c++ - fi - fi - export CXX="${CXX}" - mkl_mkvar_set "CXX" CXX $CXX - fi - - # Handle machine bits, if specified. - if [[ ! -z "$MBITS" ]]; then - mkl_meta_set mbits_m name "mbits compiler flag (-m$MBITS)" - if mkl_compile_check mbits_m "" fail CC "-m$MBITS"; then - mkl_mkvar_append CPPFLAGS CPPFLAGS "-m$MBITS" - mkl_mkvar_append LDFLAGS LDFLAGS "-m$MBITS" - fi - if [[ -z "$ARFLAGS" && $MBITS == 64 && $MKL_DISTRO == "SunOS" ]]; then - # Turn on 64-bit archives on SunOS - mkl_mkvar_append ARFLAGS ARFLAGS "S" - fi - fi - - # Provide prefix and checks for various other build tools. - local t= - for t in LD:ld NM:nm OBJDUMP:objdump STRIP:strip ; do - local tenv=${t%:*} - t=${t#*:} - local tval="${!tenv}" - - [[ -z $tval ]] && tval="$t" - - if mkl_prog_check "$t" "" disable "$tval" ; then - if [[ $tval != ${!tenv} ]]; then - export "$tenv"="$tval" - fi - mkl_mkvar_set $tenv $tenv "$tval" - fi - done - - # Compiler and linker flags - [[ ! -z $CFLAGS ]] && mkl_mkvar_set "CFLAGS" "CFLAGS" "$CFLAGS" - [[ ! -z $CPPFLAGS ]] && mkl_mkvar_set "CPPFLAGS" "CPPFLAGS" "$CPPFLAGS" - [[ ! -z $CXXFLAGS ]] && mkl_mkvar_set "CXXFLAGS" "CXXFLAGS" "$CXXFLAGS" - [[ ! -z $LDFLAGS ]] && mkl_mkvar_set "LDFLAGS" "LDFLAGS" "$LDFLAGS" - [[ ! -z $ARFLAGS ]] && mkl_mkvar_set "ARFLAGS" "ARFLAGS" "$ARFLAGS" - - if [[ $MKL_NO_DEBUG_SYMBOLS != "y" ]]; then - # Add debug symbol flag (-g) - # OSX 10.9 requires -gstrict-dwarf for some reason. - mkl_meta_set cc_g_dwarf name "debug symbols compiler flag (-g...)" - if [[ $MKL_DISTRO == "osx" ]]; then - if mkl_compile_check cc_g_dwarf "" cont CC "-gstrict-dwarf"; then - mkl_mkvar_append CPPFLAGS CPPFLAGS "-gstrict-dwarf" - else - mkl_mkvar_append CPPFLAGS CPPFLAGS "-g" - fi - else - mkl_mkvar_append CPPFLAGS CPPFLAGS "-g" - fi - fi - - - # pkg-config - if [ -z "$PKG_CONFIG" ]; then - PKG_CONFIG=pkg-config - fi - - if mkl_command_check "pkgconfig" "WITH_PKGCONFIG" cont "$PKG_CONFIG --version"; then - export PKG_CONFIG - fi - mkl_mkvar_set "pkgconfig" PKG_CONFIG $PKG_CONFIG - - [[ ! -z "$PKG_CONFIG_PATH" ]] && mkl_env_append PKG_CONFIG_PATH "$PKG_CONFIG_PATH" - - # install - if [ -z "$INSTALL" ]; then - if [[ $MKL_DISTRO == "SunOS" ]]; then - mkl_meta_set ginstall name "GNU install" - if mkl_command_check ginstall "" ignore "ginstall --version"; then - INSTALL=ginstall - else - INSTALL=install - fi - else - INSTALL=install - fi - fi - - if mkl_command_check "install" "WITH_INSTALL" cont "$INSTALL --version"; then - export INSTALL - fi - mkl_mkvar_set "install" INSTALL $INSTALL - - - # Enable profiling if desired - if [[ $WITH_PROFILING == y ]]; then - mkl_allvar_set "" "WITH_PROFILING" "y" - mkl_mkvar_append CPPFLAGS CPPFLAGS "-pg" - mkl_mkvar_append LDFLAGS LDFLAGS "-pg" - fi - - # Optimization - if [[ $WITHOUT_OPTIMIZATION == n ]]; then - mkl_mkvar_append CPPFLAGS CPPFLAGS "-O2" - else - mkl_mkvar_append CPPFLAGS CPPFLAGS "-O0" - fi - - # Static linking - if [[ $WITH_STATIC_LINKING == y ]]; then - # LDFLAGS_STATIC is the LDFLAGS needed to enable static linking - # of sub-sequent libraries, while - # LDFLAGS_DYNAMIC is the LDFLAGS needed to enable dynamic linking. - if [[ $MKL_DISTRO != "osx" ]]; then - mkl_mkvar_set staticlinking LDFLAGS_STATIC "-Wl,-Bstatic" - mkl_mkvar_set staticlinking LDFLAGS_DYNAMIC "-Wl,-Bdynamic" - mkl_mkvar_set staticlinking HAS_LDFLAGS_STATIC y - else - # OSX linker can't enable/disable static linking so we'll - # need to find the .a through STATIC_LIB_libname env var - mkl_mkvar_set staticlinking HAS_LDFLAGS_STATIC n - fi - fi -} - - -mkl_option "Compiler" "env:CC" "--cc=CC" "Build using C compiler CC" "\$CC" -mkl_option "Compiler" "env:CXX" "--cxx=CXX" "Build using C++ compiler CXX" "\$CXX" -mkl_option "Compiler" "ARCH" "--arch=ARCH" "Build for architecture" "$(uname -m)" -mkl_option "Compiler" "CPU" "--cpu=CPU" "Build and optimize for specific CPU" "generic" -mkl_option "Compiler" "MBITS" "--mbits=BITS" "Machine bits (32 or 64)" "" - -for n in CFLAGS CPPFLAGS CXXFLAGS LDFLAGS ARFLAGS; do - mkl_option "Compiler" "mk:$n" "--$n=$n" "Add $n flags" -done - -mkl_option "Compiler" "env:PKG_CONFIG_PATH" "--pkg-config-path" "Extra paths for pkg-config" - -mkl_option "Compiler" "WITH_PROFILING" "--enable-profiling" "Enable profiling" -mkl_option "Compiler" "WITH_STATIC_LINKING" "--enable-static" "Enable static linking" -mkl_option "Compiler" "WITHOUT_OPTIMIZATION" "--disable-optimization" "Disable optimization flag to compiler" "n" -mkl_option "Compiler" "env:MKL_NO_DEBUG_SYMBOLS" "--disable-debug-symbols" "Disable debugging symbols" "n" -mkl_option "Compiler" "env:MKL_WANT_WERROR" "--enable-werror" "Enable compiler warnings as errors" "n"
