mirror of https://github.com/sysown/proxysql
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
5.6 KiB
216 lines
5.6 KiB
#!/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$(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) \
|
|
-I$(ZSTD_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)
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
IDIRS += -I/usr/local/include -I/opt/homebrew/include
|
|
LDIRS += -L/usr/local/lib -L/opt/homebrew/lib
|
|
endif
|
|
|
|
|
|
### handle clang issue https://bugs.llvm.org/show_bug.cgi?id=16404
|
|
CLANGFIX :=
|
|
ifeq ($(CXX),clang++)
|
|
# CLANG_VERSION := $(shell clang -dumpversion | tr '.' ' ' | awk '{ printf("%04d.%04d.%04d", $$1, $$2, $$3) }')
|
|
# CLANG_MIN_VER := $(shell echo 14.0 | tr '.' ' ' | awk '{ printf("%04d.%04d.%04d", $$1, $$2, $$3) }')
|
|
#ifneq ($(CLANG_MIN_VER),$(firstword $(sort $(CLANG_VERSION) $(CLANG_MIN_VER))))
|
|
CLANGFIX := --rtlib=compiler-rt --unwindlib=libgcc
|
|
#endif
|
|
endif
|
|
|
|
PSQLCH :=
|
|
ifeq ($(PROXYSQLCLICKHOUSE),1)
|
|
PSQLCH := -DPROXYSQLCLICKHOUSE
|
|
endif
|
|
|
|
PSQLGA :=
|
|
ifeq ($(PROXYSQLGENAI),1)
|
|
PSQLGA := -DPROXYSQLGENAI
|
|
endif
|
|
|
|
PSQL31 :=
|
|
ifeq ($(PROXYSQL31),1)
|
|
PSQL31 := -DPROXYSQL31
|
|
endif
|
|
|
|
PSQLFFTO :=
|
|
ifeq ($(PROXYSQLFFTO),1)
|
|
PSQLFFTO := -DPROXYSQLFFTO
|
|
endif
|
|
|
|
PSQLTSDB :=
|
|
ifeq ($(PROXYSQLTSDB),1)
|
|
PSQLTSDB := -DPROXYSQLTSDB
|
|
endif
|
|
|
|
|
|
|
|
MYCXXFLAGS := $(STDCPP)
|
|
ifeq ($(CXX),clang++)
|
|
MYCXXFLAGS += -fuse-ld=lld
|
|
endif
|
|
MYCXXFLAGS += $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) $(PSQLGA) $(PSQL31) $(PSQLFFTO) $(PSQLTSDB) -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
|
|
|
|
ifneq ($(NOJEMALLOC),1)
|
|
STATICMYLIBS += -ljemalloc
|
|
endif
|
|
ifeq ($(UNAME_S),Linux)
|
|
STATICMYLIBS += -lcoredumper
|
|
endif
|
|
|
|
MYLIBS := -Wl,--export-dynamic $(STATICMYLIBS) -Wl,-Bdynamic -lgnutls -lpthread -lssl -lcrypto -lm -lz -lrt -lprometheus-cpp-pull -lprometheus-cpp-core -luuid $(EXTRALINK)
|
|
ifeq ($(DISTRO),almalinux)
|
|
ifeq ($(CENTOSVER),8)
|
|
MYLIBS := -Wl,--export-dynamic $(STATICMYLIBS) -Wl,-Bdynamic -lgnutls -lpthread $(LIB_SSL_PATH) $(LIB_CRYPTO_PATH) -lm -lz -lrt -lprometheus-cpp-pull -lprometheus-cpp-core -luuid $(EXTRALINK)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
MYLIBS :=-lre2 -lmariadbclient -lssl -lcrypto -lpthread -lm -lz -liconv -lgnutls -lprometheus-cpp-pull -lprometheus-cpp-core -luuid
|
|
else
|
|
CURL_DIR := $(DEPS_PATH)/curl/curl
|
|
IDIRS += -L$(CURL_DIR)/include
|
|
LDIRS += -L$(CURL_DIR)/lib/.libs
|
|
endif
|
|
ifeq ($(UNAME_S),Linux)
|
|
MYLIBS += -ldl
|
|
endif
|
|
ifeq ($(UNAME_S),FreeBSD)
|
|
MYLIBS += -lexecinfo
|
|
endif
|
|
ifeq ($(CENTOSVER),6)
|
|
MYLIBS += -lgcrypt
|
|
endif
|
|
|
|
SQLITE_VEC_OBJ := $(DEPS_PATH)/sqlite3/sqlite3/vec.o
|
|
LIBPROXYSQLAR := $(PROXYSQL_LDIR)/libproxysql.a
|
|
ifeq ($(UNAME_S),Darwin)
|
|
LIBPROXYSQLAR += $(JEMALLOC_LDIR)/libjemalloc.a
|
|
LIBPROXYSQLAR += $(MICROHTTPD_LDIR)/libmicrohttpd.a
|
|
LIBPROXYSQLAR += $(LIBHTTPSERVER_LDIR)/libhttpserver.a
|
|
LIBPROXYSQLAR += $(PCRE_LDIR)/libpcre.a
|
|
LIBPROXYSQLAR += $(PCRE_LDIR)/libpcrecpp.a
|
|
LIBPROXYSQLAR += $(LIBDAEMON_LDIR)/libdaemon.a
|
|
LIBPROXYSQLAR += $(LIBCONFIG_LDIR)/libconfig++.a
|
|
LIBPROXYSQLAR += $(LIBCONFIG_LDIR)/libconfig.a
|
|
LIBPROXYSQLAR += $(CURL_LDIR)/libcurl.a
|
|
LIBPROXYSQLAR += $(SQLITE3_LDIR)/sqlite3.o
|
|
LIBPROXYSQLAR += $(LIBINJECTION_LDIR)/libinjection.a
|
|
LIBPROXYSQLAR += $(EV_LDIR)/libev.a
|
|
LIBPROXYSQLAR += $(LIBSCRAM_LDIR)/libscram.a
|
|
LIBPROXYSQLAR += $(LIBUSUAL_LDIR)/libusual.a
|
|
LIBPROXYSQLAR += $(POSTGRESQL_PATH)/interfaces/libpq/libpq.a
|
|
LIBPROXYSQLAR += $(POSTGRESQL_PATH)/common/libpgcommon.a
|
|
LIBPROXYSQLAR += $(POSTGRESQL_PATH)/port/libpgport.a
|
|
endif
|
|
LIBPROXYSQLAR += $(ZSTD_LDIR)/libzstd.a
|
|
LIBPROXYSQLAR += $(CITYHASH_LDIR)/libcityhash.a
|
|
ifeq ($(PROXYSQLGENAI),1)
|
|
LIBPROXYSQLAR += $(SQLITE_VEC_OBJ)
|
|
endif
|
|
|
|
ODIR := obj
|
|
|
|
EXECUTABLE := proxysql
|
|
|
|
_OBJ := main.o proxysql_global.o SQLite3_Server.o proxy_tls.o
|
|
OBJ := $(patsubst %,$(ODIR)/%,$(_OBJ))
|
|
|
|
$(ODIR)/%.o: %.cpp
|
|
$(CXX) -c -o $@ $< $(MYCXXFLAGS) $(CXXFLAGS) -Wall
|
|
|
|
$(EXECUTABLE): $(ODIR) $(OBJ) $(LIBPROXYSQLAR)
|
|
ifeq ($(PROXYSQLCLICKHOUSE),1)
|
|
$(CXX) -o $@ $(OBJ) $(CLANGFIX) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_LDIR)/libclickhouse-cpp-lib.a $(LZ4_LDIR)/liblz4.a $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(MYLIBS)
|
|
else
|
|
$(CXX) -o $@ $(OBJ) $(CLANGFIX) $(LIBPROXYSQLAR) $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(MYLIBS)
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
shasum $(EXECUTABLE) > $(EXECUTABLE).sha1
|
|
else
|
|
sha1sum $(EXECUTABLE) > $(EXECUTABLE).sha1
|
|
endif
|
|
|
|
$(ODIR):
|
|
mkdir $(ODIR)
|
|
|
|
$(LIBPROXYSQLAR):
|
|
cd $(PROXYSQL_LDIR) && ${MAKE}
|
|
|
|
|
|
### main targets
|
|
|
|
default: $(EXECUTABLE)
|
|
|
|
clean:
|
|
rm -rf *.pid $(ODIR)/*.o $(ODIR)/*.gcno $(ODIR)/*.gcda *~ core perf.data* heaptrack.proxysql.* $(EXECUTABLE) $(EXECUTABLE).sha1 $(ODIR)
|