From d020f577b2dad0a2030b97e229692c1e1efbbda8 Mon Sep 17 00:00:00 2001 From: Miro Stauder Date: Thu, 16 Oct 2025 09:22:33 +0000 Subject: [PATCH] reduce duplication in makefiles, use include for common stuff --- deps/Makefile | 66 +++--- include/makefiles_paths.mk | 125 +++++++++++ include/makefiles_vars.mk | 56 +++++ lib/Makefile | 158 +++---------- src/Makefile | 209 ++++++------------ test/Makefile | 84 ++----- test/tap/tap/Makefile | 73 +----- test/tap/tests/Makefile | 195 ++++------------ test/tap/tests_with_deps/common_defs.Makefile | 88 -------- .../deprecate_eof_support/Makefile | 150 +++---------- tools/Makefile | 15 +- 11 files changed, 433 insertions(+), 786 deletions(-) create mode 100644 include/makefiles_paths.mk create mode 100644 include/makefiles_vars.mk delete mode 100644 test/tap/tests_with_deps/common_defs.Makefile diff --git a/deps/Makefile b/deps/Makefile index 1c90b5f2c..09bf1525e 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -1,23 +1,9 @@ #!/bin/make -f +PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) -GIT_VERSION ?= $(shell git describe --long --abbrev=7) -ifndef GIT_VERSION - $(error GIT_VERSION is not set) -endif - -UNAME_S := $(shell uname -s) -UNAME_M := $(shell uname -m) - -DISTRO := $(shell grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"') - -CENTOSVER := Unknown -ifneq (,$(wildcard /etc/system-release)) - CENTOSVER := $(shell rpm --eval %rhel) -endif +include $(PROXYSQL_PATH)/include/makefiles_vars.mk -IS_ARM := $(if $(findstring aarch64, $(UNAME_M)),true,false) -IS_CENTOS := $(if $(findstring Unknown, $(CENTOSVER)),false,true) # to compile libmariadb_client with support for valgrind enabled, run: # export USEVALGRIND=1 @@ -34,21 +20,30 @@ ifeq ($(and $(IS_ARM),$(IS_CENTOS)),true) endif -### detect compiler support for c++11/17 -CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201703L) - CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201103L) - $(error Compiler must support at least c++11) -endif -endif -STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) +targets := check_openssl_version \ + libconfig \ + libdaemon \ + jemalloc \ + mariadb_client \ + re2 \ + sqlite3 \ + pcre \ + lz4 \ + cityhash \ + microhttpd \ + curl \ + ev \ + libhttpserver \ + libinjection \ + prometheus-cpp \ + postgresql \ + libusual \ + libscram - -targets := check_openssl_version libconfig libdaemon jemalloc mariadb_client re2 sqlite3 pcre lz4 cityhash microhttpd curl ev libhttpserver libinjection prometheus-cpp postgresql libusual libscram ifeq ($(UNAME_S),Linux) targets += coredumper endif + ifeq ($(PROXYSQLCLICKHOUSE),1) targets += clickhouse-cpp endif @@ -60,6 +55,10 @@ default: $(targets) ### deps targets +include $(PROXYSQL_PATH)/common_mk/openssl_flags.mk +include $(PROXYSQL_PATH)/common_mk/openssl_version_check.mk + + libinjection/libinjection/src/libinjection.a: cd libinjection && rm -rf libinjection-*/ || true cd libinjection && tar -zxf libinjection-3.10.0.tar.gz @@ -76,8 +75,6 @@ endif libinjection: libinjection/libinjection/src/libinjection.a -include ../common_mk/openssl_flags.mk -include ../common_mk/openssl_version_check.mk libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a: libmicrohttpd/libmicrohttpd/src/microhttpd/.libs/libmicrohttpd.a re2/re2/obj/libre2.a cd libhttpserver && rm -rf libhttpserver-*/ || true @@ -111,11 +108,12 @@ ev: libev/libev/.libs/libev.a coredumper/coredumper/src/libcoredumper.a: cd coredumper && rm -rf coredumper-*/ || true cd coredumper && tar -zxf coredumper-*.tar.gz - cd coredumper/coredumper && patch -p1 < ../includes.patch cd coredumper/coredumper && cmake . -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug cd coredumper/coredumper && CC=${CC} CXX=${CXX} ${MAKE} + coredumper: coredumper/coredumper/src/libcoredumper.a + curl/curl/lib/.libs/libcurl.a: cd curl && rm -rf curl-*/ || true cd curl && tar -zxf curl-*.tar.gz @@ -300,20 +298,21 @@ pcre/pcre/.libs/libpcre.a: pcre: pcre/pcre/.libs/libpcre.a + postgresql/postgresql/src/interfaces/libpq/libpq.a: cd postgresql && rm -rf postgresql-*/ || true cd postgresql && tar -zxf postgresql-*.tar.gz cd postgresql/postgresql && patch -p0 < ../get_result_from_pgconn.patch cd postgresql/postgresql && patch -p0 < ../handle_row_data.patch cd postgresql/postgresql && patch -p0 < ../fmt_err_msg.patch - cd postgresql/postgresql && patch -p0 < ../bind_fmt_text.patch - #cd postgresql/postgresql && LD_LIBRARY_PATH="$(SSL_LDIR)" ./configure --with-ssl=openssl --with-includes="$(SSL_IDIR)" --with-libraries="$(SSL_LDIR)" --without-readline --enable-debug CFLAGS="-ggdb -O0 -fno-omit-frame-pointer" CPPFLAGS="-g -O0" + #cd postgresql/postgresql && LD_LIBRARY_PATH="$(shell pwd)/libssl/openssl" ./configure --with-ssl=openssl --with-includes="$(shell pwd)/libssl/openssl/include/" --with-libraries="$(shell pwd)/libssl/openssl/" --without-readline --enable-debug CFLAGS="-ggdb -O0 -fno-omit-frame-pointer" CPPFLAGS="-g -O0" cd postgresql/postgresql && LD_LIBRARY_PATH="$(SSL_LDIR)" ./configure --with-ssl=openssl --with-includes="$(SSL_IDIR)" --with-libraries="$(SSL_LDIR)" --without-readline cd postgresql/postgresql/src/interfaces/libpq && CC=${CC} CXX=${CXX} ${MAKE} MAKELEVEL=0 #cd postgresql/postgresql && CC=${CC} CXX=${CXX} ${MAKE} -f src/interfaces/libpq/Makefile all postgresql: postgresql/postgresql/src/interfaces/libpq/libpq.a + libusual/libusual/.libs/libusual.a: cd libusual && rm -rf libusual-*/ || true cd libusual && tar -zxf libusual-*.tar.gz @@ -323,12 +322,14 @@ libusual/libusual/.libs/libusual.a: libusual: libusual/libusual/.libs/libusual.a + libscram/lib/libscram.a:postgresql/postgresql/src/interfaces/libpq/libpq.a cd libscram && rm -rf lib/* || true cd libscram && CC=${CC} CXX=${CXX} ${MAKE} LIBOPENSSL_DIR="$(SSL_IDIR)" POSTGRESQL_DIR="$(shell pwd)/postgresql/postgresql/" libscram: libscram/lib/libscram.a + ### clean targets cleanpart: @@ -362,5 +363,6 @@ cleanall: cd postgresql && rm -rf postgres-*/ || true cd libusual && rm -rf libusual-*/ || true cd libscram && rm -rf lib/* obj/* || true + cd json && rm -rf json-*/ || true .PHONY: cleanall diff --git a/include/makefiles_paths.mk b/include/makefiles_paths.mk new file mode 100644 index 000000000..97aa95a18 --- /dev/null +++ b/include/makefiles_paths.mk @@ -0,0 +1,125 @@ +#!/bin/make -f + + +SYS_LOC_IDIR := /usr/local/include + +PROXYSQL_PATH ?= $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) +PROXYSQL_IDIR := $(PROXYSQL_PATH)/include +PROXYSQL_LDIR := $(PROXYSQL_PATH)/lib + +DEPS_PATH := $(PROXYSQL_PATH)/deps + + +include $(PROXYSQL_PATH)/common_mk/openssl_flags.mk + + +MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client +MARIADB_IDIR := $(MARIADB_PATH)/include +MARIADB_LDIR := $(MARIADB_PATH)/libmariadb + +LIBDAEMON_PATH := $(DEPS_PATH)/libdaemon/libdaemon +LIBDAEMON_IDIR := $(LIBDAEMON_PATH) +LIBDAEMON_LDIR := $(LIBDAEMON_PATH)/libdaemon/.libs + +JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc +JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc +JEMALLOC_LDIR := $(JEMALLOC_PATH)/lib + +LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig +LIBCONFIG_IDIR := $(LIBCONFIG_PATH)/lib +LIBCONFIG_LDIR := $(LIBCONFIG_PATH)/out + +PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp +PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include +PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib + +JSON_PATH := $(DEPS_PATH)/json +JSON_IDIR := $(JSON_PATH) + +RE2_PATH := $(DEPS_PATH)/re2/re2 +RE2_IDIR := $(RE2_PATH) +RE2_LDIR := $(RE2_PATH)/obj + +PCRE_PATH := $(DEPS_PATH)/pcre/pcre +PCRE_IDIR := $(PCRE_PATH) +PCRE_LDIR := $(PCRE_PATH)/.libs + +SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3 +SQLITE3_IDIR := $(SQLITE3_PATH) +SQLITE3_LDIR := $(SQLITE3_PATH) + +CITYHASH_PATH := $(DEPS_PATH)/cityhash/cityhash +CITYHASH_LDIR := $(CITYHASH_PATH)/src/.libs + +LZ4_PATH := $(DEPS_PATH)/lz4/lz4 +LZ4_LDIR := $(LZ4_PATH)/lib + +CLICKHOUSE_CPP_PATH := $(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp +CLICKHOUSE_CPP_IDIR := $(CLICKHOUSE_CPP_PATH) -I$(CLICKHOUSE_CPP_PATH)/contrib/absl +CLICKHOUSE_CPP_LDIR := $(CLICKHOUSE_CPP_PATH)/clickhouse + +LIBINJECTION_PATH := $(DEPS_PATH)/libinjection/libinjection +LIBINJECTION_IDIR := $(LIBINJECTION_PATH)/src +LIBINJECTION_LDIR := $(LIBINJECTION_PATH)/src + +LIBHTTPSERVER_PATH := $(DEPS_PATH)/libhttpserver/libhttpserver +LIBHTTPSERVER_IDIR := $(LIBHTTPSERVER_PATH)/src +LIBHTTPSERVER_LDIR := $(LIBHTTPSERVER_PATH)/build/src/.libs + +MICROHTTPD_PATH := $(DEPS_PATH)/libmicrohttpd/libmicrohttpd +MICROHTTPD_IDIR := $(MICROHTTPD_PATH) -I$(MICROHTTPD_PATH)/src/include +MICROHTTPD_LDIR := $(MICROHTTPD_PATH)/src/microhttpd/.libs + +COREDUMPER_PATH := $(DEPS_PATH)/coredumper/coredumper +COREDUMPER_IDIR := $(COREDUMPER_PATH)/include +COREDUMPER_LDIR := $(COREDUMPER_PATH)/src + +CURL_PATH := $(DEPS_PATH)/curl/curl +CURL_IDIR := $(CURL_PATH)/include +CURL_LDIR := $(CURL_PATH)/lib/.libs + +EV_PATH := $(DEPS_PATH)/libev/libev +EV_IDIR := $(EV_PATH) +EV_LDIR := $(EV_PATH)/.libs + +POSTGRESQL_PATH := $(DEPS_PATH)/postgresql/postgresql/src +POSTGRESQL_IDIR := $(POSTGRESQL_PATH)/include -I$(POSTGRESQL_PATH)/interfaces/libpq +POSTGRESQL_LDIR := $(POSTGRESQL_PATH)/interfaces/libpq -L$(POSTGRESQL_PATH)/common -L$(POSTGRESQL_PATH)/port + +LIBUSUAL_PATH := $(DEPS_PATH)/libusual/libusual +LIBUSUAL_IDIR := $(LIBUSUAL_PATH) +LIBUSUAL_LDIR := $(LIBUSUAL_PATH)/.libs + +LIBSCRAM_PATH := $(DEPS_PATH)/libscram +LIBSCRAM_IDIR := $(LIBSCRAM_PATH)/include +LIBSCRAM_LDIR := $(LIBSCRAM_PATH)/lib + + +TAP_PATH := $(PROXYSQL_PATH)/test/tap/tap +TAP_IDIR := $(TAP_PATH) +TAP_LDIR := $(TAP_PATH) + +DOTENV_PATH := $(TAP_PATH)/cpp-dotenv/static/cpp-dotenv +DOTENV_IDIR := $(DOTENV_PATH)/include +DOTENV_LDIR := $(DOTENV_PATH) + +DOTENV_DYN_PATH := $(TAP_LDIR)/cpp-dotenv/dynamic/cpp-dotenv +DOTENV_DYN_IDIR := $(DOTENV_DYN_PATH)/include +DOTENV_DYN_LDIR := $(TAP_LDIR) + + +TEST_DEPS_PATH := $(PROXYSQL_PATH)/test/deps + +TEST_MARIADB_PATH := $(TEST_DEPS_PATH)/mariadb-connector-c/mariadb-connector-c +TEST_MARIADB_IDIR := $(TEST_MARIADB_PATH)/include +TEST_MARIADB_LDIR := $(TEST_MARIADB_PATH)/libmariadb + +TEST_MYSQL_PATH := $(TEST_DEPS_PATH)/mysql-connector-c/mysql-connector-c +TEST_MYSQL_IDIR := $(TEST_MYSQL_PATH)/include +TEST_MYSQL_EDIR := $(TEST_MYSQL_PATH)/libbinlogevents/export/ +TEST_MYSQL_LDIR := $(TEST_MYSQL_PATH)/libmysql + +TEST_MYSQL8_PATH := $(TEST_DEPS_PATH)/mysql-connector-c-8.4.0/mysql-connector-c +TEST_MYSQL8_IDIR := $(TEST_MYSQL8_PATH)/include +TEST_MYSQL8_EDIR := $(TEST_MYSQL8_PATH)/libbinlogevents/export/ +TEST_MYSQL8_LDIR := $(TEST_MYSQL8_PATH)/libmysql diff --git a/include/makefiles_vars.mk b/include/makefiles_vars.mk new file mode 100644 index 000000000..50a6da5b0 --- /dev/null +++ b/include/makefiles_vars.mk @@ -0,0 +1,56 @@ +#!/bin/make -f + + +GIT_VERSION ?= $(shell git describe --long --abbrev=7) +ifndef GIT_VERSION + $(error GIT_VERSION is not set) +endif + +UNAME_S := $(shell uname -s) +UNAME_M := $(shell uname -m) + +DISTRO := $(shell grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"') + +CENTOSVER := Unknown +ifneq (,$(wildcard /etc/system-release)) + CENTOSVER := $(shell rpm --eval %rhel) +endif + +IS_ARM := $(if $(findstring aarch64, $(UNAME_M)),true,false) +IS_CENTOS := $(if $(findstring Unknown, $(CENTOSVER)),false,true) + + +### detect compiler support for c++11/17 +CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') +ifneq ($(CPLUSPLUS),201703L) + CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') +ifneq ($(CPLUSPLUS),201103L) + $(error Compiler must support at least c++11) +endif +endif +STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) + + +WGCOV := +ifeq ($(WITHGCOV),1) + WGCOV := -DWITHGCOV -lgcov --coverage +endif + +WASAN := +ifeq ($(WITHASAN),1) + WASAN := -fsanitize=address + # Force the disable of JEMALLOC, since ASAN isn't compatible. + export NOJEMALLOC=1 + # workaroud ASAN limitation ASLR > 28bits + # https://github.com/google/sanitizers/issues/1716 + # sudo sysctl vm.mmap_rnd_bits=28 + $(warning ASAN needs ASLR =< 28bits, make sure 'sysctl vm.mmap_rnd_bits=28' is set.) +endif +ifeq ($(TEST_WITHASAN),1) + WASAN += -DTEST_WITHASAN +endif + +NOJEM := +ifeq ($(NOJEMALLOC),1) + NOJEM := -DNOJEM +endif diff --git a/lib/Makefile b/lib/Makefile index e987839d3..8653118f0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,143 +1,52 @@ #!/bin/make -f -GIT_VERSION ?= $(shell git describe --long --abbrev=7) -ifndef GIT_VERSION - $(error GIT_VERSION is not set) -endif - -UNAME_S := $(shell uname -s) -UNAME_M := $(shell uname -m) - -DISTRO := $(shell grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"') - -CENTOSVER := Unknown -ifneq (,$(wildcard /etc/system-release)) - CENTOSVER := $(shell rpm --eval %rhel) -endif - -IS_ARM := $(if $(findstring aarch64, $(UNAME_M)),true,false) -IS_CENTOS := $(if $(findstring Unknown, $(CENTOSVER)),false,true) - - -PROXYSQL_PATH := .. -PROXYSQL_IDIR := $(PROXYSQL_PATH)/include -PROXYSQL_LDIR := $(PROXYSQL_PATH)/lib - -DEPS_PATH := $(PROXYSQL_PATH)/deps - -MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR := $(MARIADB_PATH)/include - -JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc - -LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig -LIBCONFIG_IDIR := -I$(LIBCONFIG_PATH)/lib - -#INJECTION_PATH := $(DEPS_PATH)/libinjection -#INJECTION_IDIR := $(INJECTION_PATH) - -RE2_PATH := $(DEPS_PATH)/re2/re2 -RE2_IDIR := $(RE2_PATH) - -PCRE_PATH := $(DEPS_PATH)/pcre/pcre - -SQLITE3_DIR := $(DEPS_PATH)/sqlite3/sqlite3 - -CLICKHOUSE_CPP_PATH := $(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp -CLICKHOUSE_CPP_IDIR := $(CLICKHOUSE_CPP_PATH) -I$(CLICKHOUSE_CPP_PATH)/contrib/absl -CLICKHOUSE_CPP_LDIR := $(CLICKHOUSE_CPP_PATH)/clickhouse - -LIBINJECTION_DIR := $(DEPS_PATH)/libinjection/libinjection -LIBINJECTION_IDIR := -I$(LIBINJECTION_DIR)/src - -LIBHTTPSERVER_DIR := $(DEPS_PATH)/libhttpserver/libhttpserver -LIBHTTPSERVER_IDIR := -I$(LIBHTTPSERVER_DIR)/src - -MICROHTTPD_DIR := $(DEPS_PATH)/libmicrohttpd/libmicrohttpd -MICROHTTPD_IDIR := -I$(MICROHTTPD_DIR) -I$(MICROHTTPD_DIR)/src/include - -COREDUMPER_DIR := $(DEPS_PATH)/coredumper/coredumper -COREDUMPER_IDIR := $(COREDUMPER_DIR)/include - -CURL_DIR := $(DEPS_PATH)/curl/curl -CURL_IDIR := $(CURL_DIR)/include +PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) + +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk + + +IDIRS := -I$(PROXYSQL_IDIR) \ + -I$(JEMALLOC_IDIR) \ + -I$(MARIADB_IDIR) \ + -I$(LIBCONFIG_IDIR) \ + -I$(LIBDAEMON_IDIR) \ + -I$(RE2_IDIR) \ + -I$(PCRE_IDIR) \ + -I$(CLICKHOUSE_CPP_IDIR) \ + -I$(MICROHTTPD_IDIR) \ + -I$(LIBHTTPSERVER_IDIR) \ + -I$(LIBINJECTION_IDIR) \ + -I$(CURL_IDIR) \ + -I$(EV_IDIR) \ + -I$(PROMETHEUS_IDIR) \ + -I$(LIBUSUAL_IDIR) \ + -I$(LIBSCRAM_IDIR) \ + -I$(SQLITE3_IDIR) \ + -I$(POSTGRESQL_IDIR) \ + -I$(JSON_IDIR) \ + -I$(SSL_IDIR) \ -include ../common_mk/openssl_flags.mk - -EV_DIR := $(DEPS_PATH)/libev/libev/ -EV_IDIR := $(EV_DIR) - -PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp -PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include -PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib - -LIBUSUAL_PATH=$(DEPS_PATH)/libusual/libusual -LIBUSUAL_IDIR=$(LIBUSUAL_PATH) -LIBUSUAL_LDIR=$(LIBUSUAL_PATH)/.libs/ - -LIBSCRAM_PATH=$(DEPS_PATH)/libscram/ -LIBSCRAM_IDIR=$(LIBSCRAM_PATH)/include/ -LIBSCRAM_LDIR=$(LIBSCRAM_PATH)/lib/ - -POSTGRES_PATH=$(DEPS_PATH)/postgresql/postgresql/src/ -POSTGRES_IFACE=$(POSTGRES_PATH)/interfaces/libpq/ -I$(POSTGRES_PATH)/include -POSTGRES_LDIR=$(POSTGRES_IFACES)/libpq/ - -IDIR := ../include - -IDIRS := -I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_IDIR) $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_DIR) -I$(PROMETHEUS_IDIR) -I$(LIBUSUAL_IDIR) -I$(LIBSCRAM_IDIR) -I$(POSTGRES_IFACE) -I$(SSL_IDIR) ifeq ($(UNAME_S),Linux) IDIRS += -I$(COREDUMPER_IDIR) endif -LDIRS := -L$(JEMALLOC_PATH)/lib -L$(RE2_PATH)/obj -L$(INJECTION_PATH) -L$(PROMETHEUS_LDIR) + +LDIRS := -L$(JEMALLOC_LDIR) \ + -L$(RE2_LDIR) \ + -L$(LIBINJECTION_LDIR) \ + -L$(PROMETHEUS_LDIR) #LIBS := -rdynamic -Wl,-Bstatic -ljemalloc_pic -lre2 -Wl,-Bdynamic -ldl -lpthread -lm -lz -lrt $(EXTRALINK) #LIBS := -Wl,--export-dynamic -Wl,-Bstatic -ljemalloc_pic -lre2 -Wl,-Bdynamic -ldl -lpthread -lm -lz -lrt $(EXTRALINK) ODIR := obj - -WASAN := -ifeq ($(WITHASAN),1) - WASAN := -fsanitize=address - # Force the disable of JEMALLOC, since ASAN isn't compatible. - export NOJEMALLOC=1 - # workaroud ASAN limitation ASLR > 28bits - # https://github.com/google/sanitizers/issues/1716 - # sudo sysctl vm.mmap_rnd_bits=28 - $(warning ASAN needs ASLR =< 28bits, make sure 'sysctl vm.mmap_rnd_bits=28' is set.) -endif - -NOJEM := -ifeq ($(NOJEMALLOC),1) - NOJEM := -DNOJEM -endif - -WGCOV := -ifeq ($(WITHGCOV),1) - WGCOV := -DWITHGCOV --coverage -lgcov -endif - - -### detect compiler support for c++11/17 -CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201703L) - CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201103L) - $(error Compiler must support at least c++11) -endif -endif -STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) - - PSQLCH := ifeq ($(PROXYSQLCLICKHOUSE),1) PSQLCH := -DPROXYSQLCLICKHOUSE endif - # 'libhttpserver': Add 'ENABLE_EPOLL' by default for all platforms except # for 'Darwin'. This is required when compiling 'libhttpserver' for avoiding # internal use of 'SELECT' in favor of 'EPOLL'. See #3591. @@ -146,6 +55,7 @@ ifeq ($(UNAME_S),Darwin) ENABLE_EPOLL := endif + MYCFLAGS := $(IDIRS) $(OPTZ) $(DEBUG) -Wall -DGITVERSION=\"$(GIT_VERSION)\" $(NOJEM) $(WGCOV) $(WASAN) MYCXXFLAGS := $(STDCPP) $(MYCFLAGS) $(PSQLCH) $(ENABLE_EPOLL) @@ -178,8 +88,8 @@ HEADERS := ../include/*.h ../include/*.hpp $(ODIR)/%.oo: %.cpp $(HEADERS) $(CXX) -fPIC -c -o $@ $< $(MYCXXFLAGS) $(CXXFLAGS) -libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CXX) $(SQLITE3_DIR)/sqlite3.o - ar rcs $@ $(OBJ) $(OBJ_CXX) $(SQLITE3_DIR)/sqlite3.o +libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CXX) $(SQLITE3_LDIR)/sqlite3.o + ar rcs $@ $(OBJ) $(OBJ_CXX) $(SQLITE3_LDIR)/sqlite3.o $(ODIR): mkdir $(ODIR) diff --git a/src/Makefile b/src/Makefile index 534c2762f..d4b3fe837 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,115 +1,50 @@ #!/bin/make -f -GIT_VERSION ?= $(shell git describe --long --abbrev=7) -ifndef GIT_VERSION - $(error GIT_VERSION is not set) -endif - -UNAME_S := $(shell uname -s) -UNAME_M := $(shell uname -m) - -DISTRO := $(shell grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"') - -CENTOSVER := Unknown -ifneq (,$(wildcard /etc/system-release)) - CENTOSVER := $(shell rpm --eval %rhel) -endif - -IS_ARM := $(if $(findstring aarch64, $(UNAME_M)),true,false) -IS_CENTOS := $(if $(findstring Unknown, $(CENTOSVER)),false,true) - - -PROXYSQL_PATH := .. -PROXYSQL_IDIR := $(PROXYSQL_PATH)/include -PROXYSQL_LDIR := $(PROXYSQL_PATH)/lib - -DEPS_PATH := $(PROXYSQL_PATH)/deps - -MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR := $(MARIADB_PATH)/include -MARIADB_LDIR := $(MARIADB_PATH)/libmariadb - -LIBDAEMON_PATH := $(DEPS_PATH)/libdaemon/libdaemon -LIBDAEMON_IDIR := $(LIBDAEMON_PATH) -LIBDAEMON_LDIR := $(LIBDAEMON_PATH)/libdaemon/.libs - -JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc -JEMALLOC_LDIR := $(JEMALLOC_PATH)/lib - -LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig -LIBCONFIG_IDIR := $(LIBCONFIG_PATH)/lib -LIBCONFIG_LDIR := $(LIBCONFIG_PATH)/out - -PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp -PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include -PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib - -RE2_PATH := $(DEPS_PATH)/re2/re2 -RE2_IDIR := $(RE2_PATH) -RE2_LDIR := $(RE2_PATH)/obj - -PCRE_PATH := $(DEPS_PATH)/pcre/pcre -PCRE_IDIR := $(PCRE_PATH) -PCRE_LDIR := $(PCRE_PATH)/.libs - -SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3 -SQLITE3_IDIR := $(SQLITE3_PATH) -SQLITE3_LDIR := $(SQLITE3_PATH) - -CITYHASH_PATH := $(DEPS_PATH)/cityhash/cityhash -CITYHASH_LDIR := $(CITYHASH_PATH)/src/.libs - -LZ4_PATH := $(DEPS_PATH)/lz4/lz4 -LZ4_LDIR := $(LZ4_PATH)/lib - -CLICKHOUSE_CPP_PATH := $(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp -CLICKHOUSE_CPP_CDIR := $(CLICKHOUSE_CPP_PATH)/contrib -CLICKHOUSE_CPP_IDIR := $(CLICKHOUSE_CPP_PATH) -I$(CLICKHOUSE_CPP_PATH)/contrib/absl -CLICKHOUSE_CPP_LDIR := $(CLICKHOUSE_CPP_PATH)/clickhouse - -LIBINJECTION_PATH := $(DEPS_PATH)/libinjection/libinjection -LIBINJECTION_IDIR := $(LIBINJECTION_PATH)/src -LIBINJECTION_LDIR := $(LIBINJECTION_PATH)/src - -LIBHTTPSERVER_PATH := $(DEPS_PATH)/libhttpserver/libhttpserver -LIBHTTPSERVER_IDIR := $(LIBHTTPSERVER_PATH)/src -LIBHTTPSERVER_LDIR := $(LIBHTTPSERVER_PATH)/build/src/.libs/ - -MICROHTTPD_PATH := $(DEPS_PATH)/libmicrohttpd/libmicrohttpd/src -MICROHTTPD_IDIR := $(MICROHTTPD_PATH)/include -MICROHTTPD_LDIR := $(MICROHTTPD_PATH)/microhttpd/.libs - -COREDUMPER_PATH := $(DEPS_PATH)/coredumper/coredumper -COREDUMPER_IDIR := $(COREDUMPER_PATH)/include -COREDUMPER_LDIR := $(COREDUMPER_PATH)/src - -CURL_PATH := $(DEPS_PATH)/curl/curl -CURL_IDIR := $(CURL_PATH)/include -CURL_LDIR := $(CURL_PATH)/lib/.libs - -include ../common_mk/openssl_flags.mk - -EV_PATH := $(DEPS_PATH)/libev/libev/ -EV_IDIR := $(EV_PATH) -EV_LDIR := $(EV_PATH)/.libs - -POSTGRESQL_PATH := $(DEPS_PATH)/postgresql/postgresql/src -POSTGRESQL_IDIR := $(POSTGRESQL_PATH)/include -I$(POSTGRESQL_PATH)/interfaces/libpq -POSTGRESQL_LDIR := $(POSTGRESQL_PATH)/interfaces/libpq -L$(POSTGRESQL_PATH)/common -L$(POSTGRESQL_PATH)/port - -LIBUSUAL_PATH=$(DEPS_PATH)/libusual/libusual -LIBUSUAL_IDIR=$(LIBUSUAL_PATH) -LIBUSUAL_LDIR=$(LIBUSUAL_PATH)/.libs/ - -LIBSCRAM_PATH=$(DEPS_PATH)/libscram/ -LIBSCRAM_IDIR=$(LIBSCRAM_PATH)/include/ -LIBSCRAM_LDIR=$(LIBSCRAM_PATH)/lib/ - -IDIRS := -I$(PROXYSQL_IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(LIBCONFIG_IDIR) -I$(LIBDAEMON_IDIR) -I$(RE2_IDIR) -L$(PCRE_IDIR) -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(PROMETHEUS_IDIR) -I$(POSTGRESQL_IDIR) -I$(LIBSCRAM_IDIR) -I$(SQLITE3_IDIR) -I$(CLICKHOUSE_CPP_IDIR) -I$(CLICKHOUSE_CPP_CDIR) -I$(SSL_IDIR) -I$(0) -LDIRS := -L$(PROXYSQL_LDIR) -L$(JEMALLOC_LDIR) -L$(MARIADB_LDIR) -L$(LIBCONFIG_LDIR) -L$(LIBDAEMON_LDIR) -L$(RE2_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(PROMETHEUS_LDIR) -L$(POSTGRESQL_LDIR) -L$(LIBUSUAL_LDIR) -L$(LIBSCRAM_LDIR) -L$(SSL_LDIR) - +PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) + +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk + + +IDIRS := -I$(PROXYSQL_IDIR) \ + -I$(JEMALLOC_IDIR) \ + -I$(MARIADB_IDIR) \ + -I$(LIBCONFIG_IDIR) \ + -I$(LIBDAEMON_IDIR) \ + -I$(RE2_IDIR) \ + -I$(PCRE_IDIR) \ + -I$(CLICKHOUSE_CPP_IDIR) \ + -I$(MICROHTTPD_IDIR) \ + -I$(LIBHTTPSERVER_IDIR) \ + -I$(LIBINJECTION_IDIR) \ + -I$(CURL_IDIR) \ + -I$(EV_IDIR) \ + -I$(PROMETHEUS_IDIR) \ + -I$(LIBUSUAL_IDIR) \ + -I$(LIBSCRAM_IDIR) \ + -I$(SQLITE3_IDIR) \ + -I$(POSTGRESQL_IDIR) \ + -I$(JSON_IDIR) \ + -I$(SSL_IDIR) \ + +LDIRS := -L$(PROXYSQL_LDIR) \ + -L$(JEMALLOC_LDIR) \ + -L$(MARIADB_LDIR) \ + -L$(LIBCONFIG_LDIR) \ + -L$(LIBDAEMON_LDIR) \ + -L$(RE2_LDIR) \ + -L$(PCRE_LDIR) \ + -L$(MICROHTTPD_LDIR) \ + -L$(LIBHTTPSERVER_LDIR) \ + -L$(LIBINJECTION_LDIR) \ + -L$(CURL_LDIR) \ + -L$(EV_LDIR) \ + -L$(PROMETHEUS_LDIR) \ + -L$(POSTGRESQL_LDIR) \ + -L$(LIBUSUAL_LDIR) \ + -L$(LIBSCRAM_LDIR) \ + -L$(SSL_LDIR) ifeq ($(UNAME_S),Linux) LDIRS += -L$(COREDUMPER_LDIR) @@ -120,17 +55,6 @@ ifeq ($(UNAME_S),Darwin) endif -### detect compiler support for c++11/17 -CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201703L) - CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201103L) - $(error Compiler must support at least c++11) -endif -endif -STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) - - ### handle clang issue https://bugs.llvm.org/show_bug.cgi?id=16404 CLANGFIX := ifeq ($(CXX),clang++) @@ -146,31 +70,7 @@ ifeq ($(PROXYSQLCLICKHOUSE),1) PSQLCH := -DPROXYSQLCLICKHOUSE endif -WGCOV := -ifeq ($(WITHGCOV),1) - WGCOV := -DWITHGCOV -lgcov --coverage -endif - -WASAN := -ifeq ($(WITHASAN),1) - WASAN := -fsanitize=address - # Force the disable of JEMALLOC, since ASAN isn't compatible. - export NOJEMALLOC=1 - # workaroud ASAN limitation ASLR > 28bits - # https://github.com/google/sanitizers/issues/1716 - # sudo sysctl vm.mmap_rnd_bits=28 - $(warning ASAN needs ASLR =< 28bits, make sure 'sysctl vm.mmap_rnd_bits=28' is set.) -endif -ifeq ($(TEST_WITHASAN),1) - WASAN += -DTEST_WITHASAN -endif -NOJEMALLOC := $(shell echo $(NOJEMALLOC)) -ifeq ($(NOJEMALLOC),1) -NOJEM=-DNOJEM -else -NOJEM= -endif MYCXXFLAGS := $(STDCPP) ifeq ($(CXX),clang++) @@ -179,7 +79,26 @@ endif MYCXXFLAGS += $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) -DGITVERSION=\"$(GIT_VERSION)\" $(NOJEM) $(WGCOV) $(WASAN) -STATICMYLIBS := -Wl,-Bstatic -lconfig -lproxysql -ldaemon -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lhttpserver -lmicrohttpd -linjection -lcurl -lev -lscram -lusual -lpq -lpgcommon -lpgport +STATICMYLIBS := -Wl,-Bstatic \ + -lconfig \ + -lproxysql \ + -ldaemon \ + -lconfig++ \ + -lre2 \ + -lpcrecpp \ + -lpcre \ + -lmariadbclient \ + -lhttpserver \ + -lmicrohttpd \ + -linjection \ + -lcurl \ + -lev \ + -lscram \ + -lusual \ + -lpq \ + -lpgcommon \ + -lpgport + ifneq ($(NOJEMALLOC),1) STATICMYLIBS += -ljemalloc endif diff --git a/test/Makefile b/test/Makefile index 7239c1761..d2669242c 100644 --- a/test/Makefile +++ b/test/Makefile @@ -2,71 +2,27 @@ PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) -PROXYSQL_IDIR := $(PROXYSQL_PATH)/include -DEPS_PATH := $(PROXYSQL_PATH)/deps - - -MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR := $(MARIADB_PATH)/include - -JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc - -LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig -LIBCONFIG_IDIR := $(LIBCONFIG_PATH)/lib - -#INJECTION_PATH := $(DEPS_PATH)/libinjection -#INJECTION_IDIR := $(INJECTION_PATH) - -RE2_PATH := $(DEPS_PATH)/re2/re2 -RE2_IDIR := $(RE2_PATH) - -PCRE_PATH := $(DEPS_PATH)/pcre/pcre -PCRE_IDIR := $(PCRE_PATH) - -SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3 -SQLITE3_IDIR := $(SQLITE3_PATH) - -CLICKHOUSE_CPP_PATH := $(DEPS_PATH)/clickhouse-cpp/clickhouse-cpp -CLICKHOUSE_CPP_IDIR := $(CLICKHOUSE_CPP_PATH) - -LIBINJECTION_PATH := $(DEPS_PATH)/libinjection/libinjection -LIBINJECTION_IDIR := -I$(LIBINJECTION_PATH)/src - -LIBHTTPSERVER_PATH := $(DEPS_PATH)/libhttpserver/libhttpserver -LIBHTTPSERVER_IDIR := -I$(LIBHTTPSERVER_PATH)/src - -MICROHTTPD_PATH := $(DEPS_PATH)/libmicrohttpd/libmicrohttpd -MICROHTTPD_IDIR := $(MICROHTTPD_PATH)/src/include - -CURL_PATH := $(DEPS_PATH)/curl/curl -CURL_IDIR := -I$(CURL_PATH)/include - -include ../common_mk/openssl_flags.mk - -EV_PATH := $(DEPS_PATH)/libev/libev/ -EV_IDIR := $(EV_PATH) - -LOCAL_IDIR := /usr/local/include - - -IDIRS := -I$(PROXYSQL_IDIR) -IDIRS += -I$(JEMALLOC_IDIR) -IDIRS += -I$(MARIADB_IDIR) -IDIRS += -I$(LIBCONFIG_IDIR) -IDIRS += -I$(RE2_IDIR) -IDIRS += -I$(SQLITE3_IDIR) -IDIRS += -I$(PCRE_IDIR) -IDIRS += -I$(LOCAL_IDIR) -IDIRS += -I$(CLICKHOUSE_CPP_DIR) -IDIRS += -I$(MICROHTTPD_PATH) -IDIRS += -I$(MICROHTTPD_IDIR) -IDIRS += -I$(LIBHTTPSERVER_IDIR) -IDIRS += -I$(LIBINJECTION_IDIR) -IDIRS += -I$(CURL_IDIR) -IDIRS += -I$(EV_DIR) -IDIRS += -I$(SSL_IDIR) +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk + + +IDIRS := -I$(PROXYSQL_IDIR) \ + -I$(JEMALLOC_IDIR) \ + -I$(MARIADB_IDIR) \ + -I$(LIBCONFIG_IDIR) \ + -I$(RE2_IDIR) \ + -I$(SQLITE3_IDIR) \ + -I$(PCRE_IDIR) \ + -I$(SYS_LOC_IDIR) \ + -I$(CLICKHOUSE_CPP_IDIR) \ + -I$(MICROHTTPD_IDIR) \ + -I$(LIBHTTPSERVER_IDIR) \ + -I$(LIBINJECTION_IDIR) \ + -I$(CURL_IDIR) \ + -I$(EV_IDIR) \ + -I$(JSON_IDIR) \ + -I$(SSL_IDIR) sqlite_history_convert: sqlite_history_convert.cpp diff --git a/test/tap/tap/Makefile b/test/tap/tap/Makefile index a39395352..ca7d27e72 100644 --- a/test/tap/tap/Makefile +++ b/test/tap/tap/Makefile @@ -1,77 +1,22 @@ #!/bin/make -f -GIT_VERSION ?= $(shell git describe --long --abbrev=7) -ifndef GIT_VERSION - $(error GIT_VERSION is not set) -endif - - -PROXYSQL_PATH := ../../.. -PROXYSQL_IDIR := $(PROXYSQL_PATH)/include -PROXYSQL_LDIR := $(PROXYSQL_PATH)/lib - -DEPS_PATH := $(PROXYSQL_PATH)/deps - -JSON_PATH := $(DEPS_PATH)/json -JSON_IDIR := $(JSON_PATH) - -MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR := $(MARIADB_PATH)/include -MARIADB_LDIR := $(MARIADB_PATH)/libmariadb - -TEST_DEPS_PATH := $(PROXYSQL_PATH)/test/deps +PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) -TEST_MYSQL_PATH := $(TEST_DEPS_PATH)/mysql-connector-c/mysql-connector-c -TEST_MYSQL_IDIR := $(TEST_MYSQL_PATH)/include -TEST_MYSQL_EDIR := $(TEST_MYSQL_PATH)/libbinlogevents/export/ -TEST_MYSQL_LDIR := $(TEST_MYSQL_PATH)/libmysql +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk -TEST_MYSQL8_PATH := $(TEST_DEPS_PATH)/mysql-connector-c-8.4.0/mysql-connector-c -TEST_MYSQL8_IDIR := $(TEST_MYSQL8_PATH)/include -TEST_MYSQL8_EDIR := $(TEST_MYSQL8_PATH)/libbinlogevents/export/ -TEST_MYSQL8_LDIR := $(TEST_MYSQL8_PATH)/libmysql -CURL_PATH := $(DEPS_PATH)/curl/curl -CURL_IDIR := $(CURL_PATH)/include -CURL_LDIR := $(CURL_PATH)/lib/.libs +IDIRS := -I$(PROXYSQL_IDIR) \ + -I$(JSON_IDIR) \ + -I${CURL_IDIR} \ + -I${SQLITE3_IDIR} \ + -I$(DOTENV_IDIR) \ + -I$(RE2_IDIR) -SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3 -SQLITE3_IDIR := $(SQLITE3_PATH) -SQLITE3_LDIR := $(SQLITE3_PATH) - -DOTENV_PATH := ./cpp-dotenv/static/cpp-dotenv -DOTENV_IDIR := $(DOTENV_PATH)/include -DOTENV_LDIR := $(DOTENV_PATH) - -RE2_PATH := $(DEPS_PATH)/re2/re2 -RE2_IDIR := $(RE2_PATH) -RE2_LDIR := $(RE2_PATH)/obj LIBPROXYSQLAR := $(PROXYSQL_LDIR)/libproxysql.a -IDIRS := -I$(PROXYSQL_IDIR) -I$(JSON_IDIR) -I${CURL_IDIR} -I${SQLITE3_IDIR} -I$(DOTENV_IDIR) -I$(RE2_IDIR) - -### detect compiler support for c++11/17 -CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201703L) - CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201103L) - $(error Compiler must support at least c++11) -endif -endif -STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) - -WASAN := -ifeq ($(WITHASAN),1) - WASAN := -fsanitize=address - # Force the disable of JEMALLOC, since ASAN isn't compatible. - export NOJEMALLOC=1 - # workaroud ASAN limitation ASLR > 28bits - # https://github.com/google/sanitizers/issues/1716 - # sudo sysctl vm.mmap_rnd_bits=28 - $(warning ASAN needs ASLR =< 28bits, make sure 'sysctl vm.mmap_rnd_bits=28' is set.) -endif OPT := $(STDCPP) -O2 -ggdb -Wl,--no-as-needed $(WASAN) diff --git a/test/tap/tests/Makefile b/test/tap/tests/Makefile index 80d6c85ec..082923fed 100644 --- a/test/tap/tests/Makefile +++ b/test/tap/tests/Makefile @@ -1,120 +1,54 @@ #!/bin/make -f -GIT_VERSION ?= $(shell git describe --long --abbrev=7) -ifndef GIT_VERSION - $(error GIT_VERSION is not set) -endif - - PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) -PROXYSQL_IDIR := $(PROXYSQL_PATH)/include -PROXYSQL_LDIR := $(PROXYSQL_PATH)/lib - -DEPS_PATH := $(PROXYSQL_PATH)/deps - -MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR := $(MARIADB_PATH)/include -MARIADB_LDIR := $(MARIADB_PATH)/libmariadb - -POSTGRESQL_PATH := $(DEPS_PATH)/postgresql/postgresql/src -POSTGRESQL_IDIR := $(POSTGRESQL_PATH)/include -I$(POSTGRESQL_PATH)/interfaces/libpq -POSTGRESQL_LDIR := $(POSTGRESQL_PATH)/interfaces/libpq -L$(POSTGRESQL_PATH)/common -L$(POSTGRESQL_PATH)/port - -JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc -JEMALLOC_LDIR := $(JEMALLOC_PATH)/lib - -JSON_IDIR := $(DEPS_PATH)/json - -RE2_PATH := $(DEPS_PATH)/re2/re2 -RE2_IDIR := $(RE2_PATH) -RE2_LDIR := $(RE2_PATH)/obj - -SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3 -SQLITE3_IDIR := $(SQLITE3_PATH) -SQLITE3_LDIR := $(SQLITE3_PATH) - -LIBHTTPSERVER_DIR := $(DEPS_PATH)/libhttpserver/libhttpserver -LIBHTTPSERVER_IDIR := $(LIBHTTPSERVER_DIR)/src -LIBHTTPSERVER_LDIR := $(LIBHTTPSERVER_DIR)/build/src/.libs/ - -LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig -LIBCONFIG_IDIR := $(LIBCONFIG_PATH)/lib -LIBCONFIG_LDIR := $(LIBCONFIG_PATH)/out - -CURL_DIR := $(DEPS_PATH)/curl/curl -CURL_IDIR := $(CURL_DIR)/include -CURL_LDIR := $(CURL_DIR)/lib/.libs - -DAEMONPATH := $(DEPS_PATH)/libdaemon/libdaemon -DAEMONPATH_IDIR := $(DAEMONPATH) -DAEMONPATH_LDIR := $(DAEMONPATH)/libdaemon/.libs - -PCRE_PATH := $(DEPS_PATH)/pcre/pcre -PCRE_LDIR := $(PCRE_PATH)/.libs - -MICROHTTPD_DIR := $(DEPS_PATH)/libmicrohttpd/libmicrohttpd/src -MICROHTTPD_IDIR := $(MICROHTTPD_DIR)/include -MICROHTTPD_LDIR := $(MICROHTTPD_DIR)/microhttpd/.libs - -LIBINJECTION_DIR := $(DEPS_PATH)/libinjection/libinjection -LIBINJECTION_IDIR := $(LIBINJECTION_DIR)/src -LIBINJECTION_LDIR := $(LIBINJECTION_DIR)/src - -include ../../../common_mk/openssl_flags.mk - -EV_DIR := $(DEPS_PATH)/libev/libev/ -EV_IDIR := $(EV_DIR) -EV_LDIR := $(EV_DIR)/.libs - -PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp -PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include -PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib - -CITYHASH_DIR := $(DEPS_PATH)/cityhash/cityhash/ -CITYHASH_IDIR := $(CITYHASH_DIR) -CITYHASH_LDIR := $(CITYHASH_DIR)/src/.libs - -COREDUMPER_DIR := $(DEPS_PATH)/coredumper/coredumper -COREDUMPER_IDIR := $(COREDUMPER_DIR)/include -COREDUMPER_LDIR := $(COREDUMPER_DIR)/src -TAP_PATH := ../tap -TAP_IDIR := ../tap -TAP_LDIR := ../tap +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk + + +IDIRS := -I$(TAP_IDIR) \ + -I$(RE2_IDIR) \ + -I$(PROXYSQL_IDIR) \ + -I$(JEMALLOC_IDIR) \ + -I$(LIBCONFIG_IDIR) \ + -I$(MARIADB_IDIR) \ + -I$(LIBDAEMON_IDIR) \ + -I$(MICROHTTPD_IDIR) \ + -I$(LIBHTTPSERVER_IDIR) \ + -I$(CURL_IDIR) -I$(EV_IDIR)\ + -I$(PROMETHEUS_IDIR) \ + -I$(DOTENV_DYN_IDIR) \ + -I$(SQLITE3_IDIR) \ + -I$(JSON_IDIR) \ + -I$(POSTGRESQL_IDIR)\ + -I$(LIBSCRAM_IDIR) \ + -I$(LIBUSUAL_IDIR) \ + -I$(SSL_IDIR) + +LDIRS := -L$(TAP_LDIR) \ + -L$(RE2_LDIR) \ + -L$(PROXYSQL_LDIR) \ + -L$(JEMALLOC_LDIR) \ + -L$(LIBCONFIG_LDIR) \ + -L$(MARIADB_LDIR) \ + -L$(LIBDAEMON_LDIR) \ + -L$(MICROHTTPD_LDIR) \ + -L$(LIBHTTPSERVER_LDIR) \ + -L$(CURL_LDIR) -L$(EV_LDIR) \ + -L$(PROMETHEUS_LDIR) \ + -L$(DOTENV_DYN_LDIR) \ + -L$(PCRE_LDIR) \ + -L$(LIBINJECTION_LDIR) \ + -L$(POSTGRESQL_LDIR)\ + -L$(LIBSCRAM_LDIR) \ + -L$(LIBUSUAL_LDIR) \ + -L$(SSL_LDIR) -DOTENV_DYN_PATH := $(TAP_LDIR)/cpp-dotenv/dynamic/cpp-dotenv -DOTENV_DYN_IDIR := $(DOTENV_DYN_PATH)/include -DOTENV_DYN_LDIR := $(TAP_LDIR) - -TEST_DEPS_PATH := $(PROXYSQL_PATH)/test/deps - -TEST_MARIADB_PATH := $(TEST_DEPS_PATH)/mariadb-connector-c/mariadb-connector-c -TEST_MARIADB_IDIR := $(TEST_MARIADB_PATH)/include -TEST_MARIADB_LDIR := $(TEST_MARIADB_PATH)/libmariadb - -TEST_MYSQL_PATH := $(TEST_DEPS_PATH)/mysql-connector-c/mysql-connector-c -TEST_MYSQL_IDIR := $(TEST_MYSQL_PATH)/include -TEST_MYSQL_EDIR := $(TEST_MYSQL_PATH)/libbinlogevents/export/ -TEST_MYSQL_LDIR := $(TEST_MYSQL_PATH)/libmysql - -POSTGRESQL_PATH := $(DEPS_PATH)/postgresql/postgresql/src -POSTGRESQL_IDIR := $(POSTGRESQL_PATH)/include -I$(POSTGRESQL_PATH)/interfaces/libpq -POSTGRESQL_LDIR := $(POSTGRESQL_PATH)/interfaces/libpq -L$(POSTGRESQL_PATH)/common -L$(POSTGRESQL_PATH)/port - -LIBUSUAL_PATH := $(DEPS_PATH)/libusual/libusual -LIBUSUAL_IDIR := $(LIBUSUAL_PATH) -LIBUSUAL_LDIR := $(LIBUSUAL_PATH)/.libs/ - -LIBSCRAM_PATH := $(DEPS_PATH)/libscram/ -LIBSCRAM_IDIR := $(LIBSCRAM_PATH)/include/ -LIBSCRAM_LDIR := $(LIBSCRAM_PATH)/lib/ +ifeq ($(UNAME_S),Linux) + LDIRS += -L$(COREDUMPER_LDIR) +endif -TEST_MYSQL8_PATH := $(TEST_DEPS_PATH)/mysql-connector-c-8.4.0/mysql-connector-c -TEST_MYSQL8_IDIR := $(TEST_MYSQL8_PATH)/include -TEST_MYSQL8_EDIR := $(TEST_MYSQL8_PATH)/libbinlogevents/export/ -TEST_MYSQL8_LDIR := $(TEST_MYSQL8_PATH)/libmysql LIBPROXYSQLAR := $(PROXYSQL_LDIR)/libproxysql.a @@ -124,24 +58,8 @@ EXECUTABLE := proxysql OBJ := $(PROXYSQL_PATH)/src/obj/proxysql_global.o $(PROXYSQL_PATH)/src/obj/main.o $(PROXYSQL_PATH)/src/obj/proxy_tls.o -IDIRS := -I$(TAP_IDIR) -I$(RE2_IDIR) -I$(PROXYSQL_IDIR) -I$(JEMALLOC_IDIR) -I$(LIBCONFIG_IDIR) -I$(MARIADB_IDIR)\ - -I$(DAEMONPATH_IDIR) -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR)\ - -I$(PROMETHEUS_IDIR) -I$(DOTENV_DYN_IDIR) -I$(SQLITE3_IDIR) -I$(JSON_IDIR) -I$(POSTGRESQL_IDIR)\ - -I$(LIBSCRAM_IDIR) -I$(LIBUSUAL_IDIR) -I$(SSL_IDIR) - -LDIRS := -L$(TAP_LDIR) -L$(RE2_LDIR) -L$(PROXYSQL_LDIR) -L$(JEMALLOC_LDIR) -L$(LIBCONFIG_LDIR) -L$(MARIADB_LDIR)\ - -L$(DAEMONPATH_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR)\ - -L$(PROMETHEUS_LDIR) -L$(DOTENV_DYN_LDIR) -L$(PCRE_LDIR) -L$(LIBINJECTION_LDIR) -L$(POSTGRESQL_LDIR)\ - -L$(LIBSCRAM_LDIR) -L$(LIBUSUAL_LDIR) -L$(SSL_LDIR) - #SOURCES := ../tap/utils.cpp -UNAME_S := $(shell uname -s) - -ifeq ($(UNAME_S),Linux) - LDIRS += -L$(COREDUMPER_LDIR) -endif - MYLIBS_DYNAMIC_PART := -Wl,--export-dynamic -Wl,-Bdynamic -lgnutls -ltap -lcpp_dotenv -lcurl -lssl -lcrypto -luuid MYLIBS_STATIC_PART := -Wl,-Bstatic -lconfig -lproxysql -ldaemon -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lhttpserver -lmicrohttpd -linjection -lev -lprometheus-cpp-pull -lprometheus-cpp-core MYLIBS_PG_PART := -Wl,-Bstatic -lpq -lpgcommon -lpgport @@ -159,31 +77,6 @@ ifeq ($(UNAME_S),Linux) STATIC_LIBS += $(LIBCOREDUMPERAR) endif -### detect compiler support for c++11/17 -CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201703L) - CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201103L) - $(error Compiler must support at least c++11) -endif -endif -STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) - -WGCOV := -ifeq ($(WITHGCOV),1) - WGCOV := -DWITHGCOV --coverage -lgcov -endif - -WASAN := -ifeq ($(WITHASAN),1) - WASAN := -fsanitize=address -DTEST_WITHASAN - # Force the disable of JEMALLOC, since ASAN isn't compatible. - export NOJEMALLOC=1 - # workaroud ASAN limitation ASLR > 28bits - # https://github.com/google/sanitizers/issues/1716 - # sudo sysctl vm.mmap_rnd_bits=28 - $(warning ASAN needs ASLR =< 28bits, make sure 'sysctl vm.mmap_rnd_bits=28' is set.) -endif OPT := $(STDCPP) -O2 -ggdb -Wl,--no-as-needed -Wl,-rpath,$(TAP_LDIR) $(WGCOV) $(WASAN) -DGITVERSION=\"$(GIT_VERSION)\" diff --git a/test/tap/tests_with_deps/common_defs.Makefile b/test/tap/tests_with_deps/common_defs.Makefile deleted file mode 100644 index 937bebd19..000000000 --- a/test/tap/tests_with_deps/common_defs.Makefile +++ /dev/null @@ -1,88 +0,0 @@ -PROXYSQL_PATH=../../../.. -PROXYSQL_IDIR=$(PROXYSQL_PATH)/include - -DEPS_PATH=$(PROXYSQL_PATH)/deps - -MARIADB_PATH=$(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR=$(MARIADB_PATH)/include -MARIADB_LDIR=$(MARIADB_PATH)/libmariadb - -JEMALLOC_PATH=$(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR=$(JEMALLOC_PATH)/include/jemalloc - -JSON_IDIR=$(DEPS_PATH)/json - -RE2_PATH=$(DEPS_PATH)/re2/re2 -RE2_IDIR=$(RE2_PATH) - -SQLITE3_DIR=$(DEPS_PATH)/sqlite3/sqlite3 - -LIBHTTPSERVER_DIR=$(DEPS_PATH)/libhttpserver/libhttpserver -LIBHTTPSERVER_IDIR=$(LIBHTTPSERVER_DIR)/src -LIBHTTPSERVER_LDIR=$(LIBHTTPSERVER_DIR)/build/src/.libs/ - -LIBCONFIG_PATH=$(DEPS_PATH)/libconfig/libconfig -LIBCONFIG_IDIR=$(LIBCONFIG_PATH)/lib -LIBCONFIG_LDIR=-L$(LIBCONFIG_PATH)/lib/.libs - -CURL_DIR=$(DEPS_PATH)/curl/curl -CURL_IDIR=$(CURL_DIR)/include -CURL_LDIR=$(CURL_DIR)/lib/.libs - -DAEMONPATH=$(DEPS_PATH)/libdaemon/libdaemon -DAEMONPATH_IDIR=$(DAEMONPATH) -DAEMONPATH_LDIR=$(DAEMONPATH)/libdaemon/.libs - -PCRE_PATH=$(DEPS_PATH)/pcre/pcre -PCRE_LDIR=$(PCRE_PATH)/.libs - -MICROHTTPD_DIR=$(DEPS_PATH)/libmicrohttpd/libmicrohttpd/src -MICROHTTPD_IDIR=$(MICROHTTPD_DIR)/include -MICROHTTPD_LDIR=$(MICROHTTPD_DIR)/microhttpd/.libs - -LIBINJECTION_DIR=$(DEPS_PATH)/libinjection/libinjection -LIBINJECTION_IDIR=$(LIBINJECTION_DIR)/src -LIBINJECTION_LDIR=$(LIBINJECTION_DIR)/src - -include ../../../common_mk/openssl_flags.mk - -EV_DIR=$(DEPS_PATH)/libev/libev/ -EV_IDIR=$(EV_DIR) -EV_LDIR=$(EV_DIR)/.libs - -PROMETHEUS_PATH=$(DEPS_PATH)/prometheus-cpp/prometheus-cpp -PROMETHEUS_IDIR=$(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include -PROMETHEUS_LDIR=$(PROMETHEUS_PATH)/lib - -JEMALLOC_PATH=$(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR=$(JEMALLOC_PATH)/include/jemalloc -JEMALLOC_LDIR=$(JEMALLOC_PATH)/lib - -IDIR=$(PROXYSQL_PATH)/include -LDIR=$(PROXYSQL_PATH)/lib -TAP_LIBDIR=$(PROXYSQL_PATH)/test/tap/tap - -TAP_DEPS_IDIR=$(CURL_LDIR) -TAP_DEPS_LIBS=$(CURL_LDIR) - -ODIR=$(PROXYSQL_PATH)/obj - -EXECUTABLE=proxysql - -OBJ=$(PROXYSQL_PATH)/proxysql_global.o $(PROXYSQL_PATH)/src/obj/main.o - -PROXYLDIR=$(PROXYSQL_PATH)/lib -LIBPROXYSQLAR=$(PROXYSQL_PATH)/lib/libproxysql.a - -INCLUDEDIRS=-I../tap -I$(RE2_PATH) -I$(IDIR) -I$(JEMALLOC_IDIR) -I$(SQLITE3_DIR) -I$(LIBHTTPSERVER_IDIR)\ - -I$(CURL_IDIR) -I$(DAEMONPATH_IDIR) -I$(MARIADB_IDIR) -I$(SSL_IDIR) -I$(JSON_IDIR)\ - -I$(LIBCONFIG_IDIR) -I$(PROMETHEUS_IDIR) -LDIRS=-L$(TAP_LIBDIR) -L$(LDIR) -L$(JEMALLOC_LDIR) $(LIBCONFIG_LDIR) -L$(RE2_PATH)/obj -L$(MARIADB_LDIR)\ - -L$(DAEMONPATH_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR)\ - -L$(CURL_LDIR) -L$(EV_LDIR) -L$(SSL_LDIR) -L$(PROMETHEUS_LDIR) - -MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lmariadbclient -lcurl -lssl -lcrypto -Wl,-Bdynamic -lgnutls -lpthread -lm -lz -lrt -STATIC_LIBS= $(SSL_LDIR)/libssl.a $(SSL_LDIR)/libcrypto.a - -# Root directory for the deps used for testing purposes -TEST_DEPS=$(JENKINS_SCRIPTS_PATH)/test-scripts/deps diff --git a/test/tap/tests_with_deps/deprecate_eof_support/Makefile b/test/tap/tests_with_deps/deprecate_eof_support/Makefile index 672bcef56..44c372b74 100644 --- a/test/tap/tests_with_deps/deprecate_eof_support/Makefile +++ b/test/tap/tests_with_deps/deprecate_eof_support/Makefile @@ -1,126 +1,44 @@ #!/bin/make -f -GIT_VERSION ?= $(shell git describe --long --abbrev=7) -ifndef GIT_VERSION - $(error GIT_VERSION is not set) -endif - - PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) -PROXYSQL_IDIR := $(PROXYSQL_PATH)/include -PROXYSQL_LDIR := $(PROXYSQL_PATH)/lib - -DEPS_PATH := $(PROXYSQL_PATH)/deps - -MARIADB_PATH := $(DEPS_PATH)/mariadb-client-library/mariadb_client -MARIADB_IDIR := $(MARIADB_PATH)/include -MARIADB_LDIR := $(MARIADB_PATH)/libmariadb - -JEMALLOC_PATH := $(DEPS_PATH)/jemalloc/jemalloc -JEMALLOC_IDIR := $(JEMALLOC_PATH)/include/jemalloc -JEMALLOC_LDIR := $(JEMALLOC_PATH)/lib - -JSON_IDIR := $(DEPS_PATH)/json - -RE2_PATH := $(DEPS_PATH)/re2/re2 -RE2_IDIR := $(RE2_PATH) -RE2_LDIR := $(RE2_PATH)/obj - -SQLITE3_PATH := $(DEPS_PATH)/sqlite3/sqlite3 -SQLITE3_IDIR := $(SQLITE3_PATH) -SQLITE3_LDIR := $(SQLITE3_PATH) - -LIBHTTPSERVER_DIR := $(DEPS_PATH)/libhttpserver/libhttpserver -LIBHTTPSERVER_IDIR := $(LIBHTTPSERVER_DIR)/src -LIBHTTPSERVER_LDIR := $(LIBHTTPSERVER_DIR)/build/src/.libs/ - -LIBCONFIG_PATH := $(DEPS_PATH)/libconfig/libconfig -LIBCONFIG_IDIR := $(LIBCONFIG_PATH)/lib -LIBCONFIG_LDIR := $(LIBCONFIG_PATH)/lib/.libs - -CURL_DIR := $(DEPS_PATH)/curl/curl -CURL_IDIR := $(CURL_DIR)/include -CURL_LDIR := $(CURL_DIR)/lib/.libs - -PCRE_PATH := $(DEPS_PATH)/pcre/pcre -PCRE_LDIR := $(PCRE_PATH)/.libs - -MICROHTTPD_DIR := $(DEPS_PATH)/libmicrohttpd/libmicrohttpd/src -MICROHTTPD_IDIR := $(MICROHTTPD_DIR)/include -MICROHTTPD_LDIR := $(MICROHTTPD_DIR)/microhttpd/.libs - -include ../../../../common_mk/openssl_flags.mk - -EV_DIR := $(DEPS_PATH)/libev/libev/ -EV_IDIR := $(EV_DIR) -EV_LDIR := $(EV_DIR)/.libs - -PROMETHEUS_PATH := $(DEPS_PATH)/prometheus-cpp/prometheus-cpp -PROMETHEUS_IDIR := $(PROMETHEUS_PATH)/pull/include -I$(PROMETHEUS_PATH)/core/include -PROMETHEUS_LDIR := $(PROMETHEUS_PATH)/lib - -CITYHASH_DIR := $(DEPS_PATH)/cityhash/cityhash/ -CITYHASH_IDIR := $(CITYHASH_DIR) -CITYHASH_LDIR := $(CITYHASH_DIR)/src/.libs - -COREDUMPER_DIR := $(DEPS_PATH)/coredumper/coredumper -COREDUMPER_IDIR := $(COREDUMPER_DIR)/include -COREDUMPER_LDIR := $(COREDUMPER_DIR)/src - -TAP_PATH := $(PROXYSQL_PATH)/test/tap/tap -TAP_IDIR := $(TAP_PATH) -TAP_LDIR := $(TAP_PATH) - -TEST_DEPS_PATH := $(PROXYSQL_PATH)/test/deps - -TEST_MARIADB_PATH := $(TEST_DEPS_PATH)/mariadb-connector-c/mariadb-connector-c -TEST_MARIADB_IDIR := $(TEST_MARIADB_PATH)/include -TEST_MARIADB_LDIR := $(TEST_MARIADB_PATH)/libmariadb - -TEST_MYSQL_PATH := $(TEST_DEPS_PATH)/mysql-connector-c/mysql-connector-c -TEST_MYSQL_IDIR := $(TEST_MYSQL_PATH)/include -TEST_MYSQL_EDIR := $(TEST_MYSQL_PATH)/libbinlogevents/export -TEST_MYSQL_LDIR := $(TEST_MYSQL_PATH)/libmysql - -POSTGRESQL_PATH := $(DEPS_PATH)/postgresql/postgresql/src -POSTGRESQL_IDIR := $(POSTGRESQL_PATH)/include -I$(POSTGRESQL_PATH)/interfaces/libpq -POSTGRESQL_LDIR := $(POSTGRESQL_PATH)/interfaces/libpq -L$(POSTGRESQL_PATH)/common -L$(POSTGRESQL_PATH)/port - -### detect compiler support for c++11/17 -CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201703L) - CPLUSPLUS := $(shell ${CC} -std=c++11 -dM -E -x c++ /dev/null 2>/dev/null| grep -F __cplusplus | egrep -o '[0-9]{6}L') -ifneq ($(CPLUSPLUS),201103L) - $(error Compiler must support at least c++11) -endif -endif -STDCPP := -std=c++$(shell echo $(CPLUSPLUS) | cut -c3-4) -DCXX$(shell echo $(CPLUSPLUS) | cut -c3-4) - -WGCOV := -ifeq ($(WITHGCOV),1) - WGCOV := -DWITHGCOV --coverage -lgcov -endif - -WASAN := -ifeq ($(WITHASAN),1) - WASAN := -fsanitize=address - # Force the disable of JEMALLOC, since ASAN isn't compatible. - export NOJEMALLOC=1 - # workaroud ASAN limitation ASLR > 28bits - # https://github.com/google/sanitizers/issues/1716 - # sudo sysctl vm.mmap_rnd_bits=28 - $(warning ASAN needs ASLR =< 28bits, make sure 'sysctl vm.mmap_rnd_bits=28' is set.) -endif + +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk + + +IDIRS := -I$(TAP_IDIR) \ + -I$(RE2_IDIR) \ + -I$(PROXYSQL_IDIR) \ + -I$(JEMALLOC_IDIR) \ + -I$(LIBCONFIG_IDIR) \ + -I$(MICROHTTPD_IDIR) \ + -I$(LIBHTTPSERVER_IDIR) \ + -I$(CURL_IDIR) \ + -I$(EV_IDIR) \ + -I$(PROMETHEUS_IDIR) \ + -I$(SQLITE3_IDIR) \ + -I$(JSON_IDIR) \ + -I$(POSTGRESQL_IDIR) \ + -I$(SSL_IDIR) + +LDIRS := -L$(TAP_LDIR) \ + -L$(RE2_LDIR) \ + -L$(PROXYSQL_LDIR) \ + -L$(JEMALLOC_LDIR) \ + -L$(LIBCONFIG_LDIR) \ + -L$(MICROHTTPD_LDIR) \ + -L$(LIBHTTPSERVER_LDIR) \ + -L$(CURL_LDIR) \ + -L$(EV_LDIR) \ + -L$(PROMETHEUS_LDIR) \ + -L$(SQLITE3_LDIR) \ + -L$(PCRE_LDIR) \ + -L$(POSTGRESQL_LDIR) \ + -L$(SSL_LDIR) OPT := $(STDCPP) -O2 -ggdb -Wl,--no-as-needed -Wl,-rpath,"../../tap" $(WGCOV) $(WASAN) -IDIRS := -I$(TAP_IDIR) -I$(RE2_IDIR) -I$(PROXYSQL_IDIR) -I$(JEMALLOC_IDIR) -I$(LIBCONFIG_IDIR)\ - -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(PROMETHEUS_IDIR)\ - -I$(SQLITE3_IDIR) -I$(JSON_IDIR) -I$(POSTGRESQL_IDIR) -I$(SSL_IDIR) -LDIRS := -L$(TAP_LDIR) -L$(RE2_LDIR) -L$(PROXYSQL_LDIR) -L$(JEMALLOC_LDIR) -L$(LIBCONFIG_LDIR)\ - -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(PROMETHEUS_LDIR)\ - -L$(SQLITE3_LDIR) -L$(PCRE_LDIR) -L$(POSTGRESQL_LDIR) -L$(SSL_LDIR) ### main targets diff --git a/tools/Makefile b/tools/Makefile index 08abe0ee0..c442cc26d 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,11 +1,22 @@ -IDIR := -I../deps/json/ +#!/bin/make -f + + +PROXYSQL_PATH := $(shell while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done; pwd) + +include $(PROXYSQL_PATH)/include/makefiles_vars.mk +include $(PROXYSQL_PATH)/include/makefiles_paths.mk + + +IDIRS := -I$(JSON_IDIR) + eventslog_reader_sample: eventslog_reader_sample.cpp $(CXX) -ggdb -o eventslog_reader_sample eventslog_reader_sample.cpp # Build target for eventlog_reader_to_json eventlog_reader_to_json: eventlog_reader_to_json.cpp - $(CXX) -std=c++17 -ggdb -o $@ $< $(IDIR) + $(CXX) -std=c++17 -ggdb -o $@ $< $(IDIRS) + .PHONY: clean clean: