Adding support for FreeBSD #354

pull/439/head
René Cannaò 10 years ago
parent 7c5a33dc8e
commit 2a74cc3c46

3
.gitignore vendored

@ -93,6 +93,9 @@ deps/libconfig/libconfig-1.4.9/
#re2
deps/re2/re2/
#protobuf
deps/protobuf/protobuf-2.6.1/
test/.vagrant
.DS_Store
proxysql-tests.ini

@ -26,15 +26,15 @@ debug:
.PHONY: deps
deps:
cd deps && ${MAKE}
cd deps && CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: lib
lib:
cd lib && ${MAKE}
cd lib && CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: src
src:
cd src && ${MAKE}
cd src && CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: clean
clean:

@ -0,0 +1,112 @@
O0=-O0
O2=-O2
O1=-O1
O3=-O3 -mtune=native
#OPTZ=$(O2)
EXTRALINK=#-pg
ALL_DEBUG=-ggdb -DDEBUG
NO_DEBUG=
DEBUG=${ALL_DEBUG}
#export DEBUG
#export OPTZ
#export EXTRALINK
MAKEFILE?=Makefile.BSD
CC?= gcc
CXX?= g++
all:
OPTZ="${O2}" ${MAKE} default
.PHONY: default
default:
${MAKE} deps
${MAKE} lib
${MAKE} src
.PHONY: debug
debug:
OPTZ="${O0}" DEBUG="${ALL_DEBUG}" ${MAKE} default
.PHONY: deps
deps:
cd deps && CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: lib
lib:
cd lib && CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: src
src:
cd src && CC=${CC} CXX=${CXX} ${MAKE} -f Makefile.BSD
.PHONY: clean
clean:
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
packages: centos7 ubuntu12 ubuntu14
.PHONY: packages
centos7: binaries/proxysql-1.0.1-1.x86_64.rpm
.PHONY: centos
ubuntu12: binaries/proxysql_1.0.1-ubuntu12_amd64.deb
.PHONY: ubuntu12
ubuntu14: binaries/proxysql_1.0.1-ubuntu14_amd64.deb
.PHONY: ubuntu14
binaries/proxysql-1.0.1-1.x86_64.rpm:
# Create CentOS 7 rpm file by creating docker image, running a container and extracting the RPM from the temp container
docker build -t centos7_proxysql --no-cache=true ./docker/images/proxysql/centos7-build
docker run -i --name=centos7_build centos7_proxysql bash &
sleep 5
docker cp centos7_build:/root/rpmbuild/RPMS/x86_64/proxysql-1.0.1-1.x86_64.rpm ./binaries
# docker kill centos7_build
docker rm centos7_build
binaries/proxysql_1.0.1-ubuntu12_amd64.deb:
docker build -t ubuntu12_proxysql --no-cache=true ./docker/images/proxysql/ubuntu-12.04-build
docker run -i --name=ubuntu12_build ubuntu12_proxysql bash &
sleep 5
docker cp ubuntu12_build:/opt/proxysql/proxysql_1.0.1_amd64.deb ./binaries/proxysql_1.0.1-ubuntu12_amd64.deb
# docker kill ubuntu12_build
docker rm ubuntu12_build
binaries/proxysql_1.0.1-ubuntu14_amd64.deb:
docker stop ubuntu14_build || true
docker rm ubuntu14_build || true
docker create --name ubuntu14_build renecannao/proxysql:build-ubuntu14 bash -c "while : ; do sleep 10 ; done"
docker start ubuntu14_build
docker exec ubuntu14_build bash -c "cd /opt; git clone https://github.com/sysown/proxysql.git proxysql"
docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j"
docker cp docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl ubuntu14_build:/opt/proxysql/
docker exec ubuntu14_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl"
docker cp ubuntu14_build:/opt/proxysql/proxysql_1.0.1_amd64.deb ./binaries/proxysql_1.0.1-ubuntu14_amd64.deb
docker stop ubuntu14_build
docker rm ubuntu14_build
.PHONY: cleanall
cleanall:
cd deps && ${MAKE} cleanall
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
rm binaries/*deb || true
rm binaries/*rpm || true
install: src/proxysql
install -m 0755 src/proxysql /usr/local/bin
install -m 0600 etc/proxysql.cnf /etc
install -m 0755 etc/init.d/proxysql /etc/init.d
if [ ! -d /var/run/proxysql ]; then mkdir /var/run/proxysql ; fi
update-rc.d proxysql defaults
.PHONY: install
uninstall:
rm /etc/init.d/proxysql
rm /etc/proxysql.cnf
rm /usr/local/bin/proxysql
rmdir /var/run/proxysql 2>/dev/null || true
update-rc.d proxysql remove
.PHONY: uninstall

14
deps/Makefile vendored

@ -8,7 +8,7 @@ libdaemon/libdaemon/libdaemon/.libs/libdaemon.a:
cd libdaemon && rm -rf libdaemon-0.14
cd libdaemon && tar -zxf libdaemon-0.14.tar.gz
cd libdaemon/libdaemon && ./configure
cd libdaemon/libdaemon && ${MAKE}
cd libdaemon/libdaemon && CC=${CC} CXX=${CXX} ${MAKE}
libdaemon: libdaemon/libdaemon/libdaemon/.libs/libdaemon.a
@ -16,7 +16,7 @@ libevent/libevent/.libs/libevent.a:
cd libevent && rm -rf libevent-2.0.22-stable
cd libevent && tar -zxf libevent-2.0.22-stable.tar.gz
cd libevent/libevent && ./configure
cd libevent/libevent && ${MAKE}
cd libevent/libevent && CC=${CC} CXX=${CXX} ${MAKE}
libevent: libevent/libevent/.libs/libevent.a
@ -30,7 +30,7 @@ jemalloc/jemalloc/lib/libjemalloc.a:
cd jemalloc && rm -rf jemalloc-3.6.0
cd jemalloc && tar -jxf jemalloc-3.6.0.tar.bz2
cd jemalloc/jemalloc && ./configure --enable-xmalloc
cd jemalloc/jemalloc && ${MAKE}
cd jemalloc/jemalloc && CC=${CC} CXX=${CXX} ${MAKE}
jemalloc: jemalloc/jemalloc/lib/libjemalloc.a
@ -42,7 +42,7 @@ mariadb-client-library/mariadb_client/include/my_config.h:
cd mariadb-client-library/mariadb_client && cmake .
cd mariadb-client-library/mariadb_client && patch libmariadb/libmariadb.c < ../libmariadb.c.patch
cd mariadb-client-library/mariadb_client && patch include/mysql.h < ../mysql.h.patch
cd mariadb-client-library/mariadb_client && ${MAKE}
cd mariadb-client-library/mariadb_client && CC=${CC} CXX=${CXX} ${MAKE}
# cd mariadb-client-library/mariadb_client/include && make my_config.h
mariadb_client: mariadb-client-library/mariadb_client/include/my_config.h
@ -58,8 +58,8 @@ mariadb_client: mariadb-client-library/mariadb_client/include/my_config.h
libconfig/libconfig/lib/.libs/libconfig++.a:
cd libconfig && rm -rf libconfig-1.4.9
cd libconfig && tar -zxf libconfig-1.4.9.tar.gz
cd libconfig/libconfig && ./configure
cd libconfig/libconfig && ${MAKE}
cd libconfig/libconfig && ./configure --disable-examples
cd libconfig/libconfig && CC=${CC} CXX=${CXX} ${MAKE}
libconfig: libconfig/libconfig/lib/.libs/libconfig++.a
@ -69,7 +69,7 @@ re2/re2/obj/libre2.a:
cd re2 && tar -zxf re2-20140304.tgz
cd re2/re2 && sed -i -e 's/-O3 -g /-O3 -fPIC /' Makefile
# cd re2 && patch re2/util/mutex.h < mutex.h.patch
cd re2/re2 && ${MAKE}
cd re2/re2 && CC=${CC} CXX=${CXX} ${MAKE}
re2: re2/re2/obj/libre2.a

@ -0,0 +1,72 @@
DEPS_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-1.4.9
LIBCONFIG_IDIR=-I$(LIBCONFIG_PATH)/lib
INJECTION_PATH=$(DEPS_PATH)/libinjection
INJECTION_IDIR=$(INJECTION_PATH)
LIBEVENT_PATH=$(DEPS_PATH)/libevent/libevent
LIBEVENT_IDIR=$(LIBEVENT_PATH)/include
RE2_PATH=$(DEPS_PATH)/re2/re2
RE2_IDIR=$(RE2_PATH)
IDIR=../include
IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(LIBEVENT_IDIR)
LDIRS=-L$(JEMALLOC_PATH)/lib -L$(RE2_PATH)/obj -L$(INJECTION_PATH)
LIBS=-rdynamic -Wl,-Bstatic -ljemalloc_pic -lre2 -Wl,-Bdynamic -ldl -lpthread -lz -lrt -lc -lc++ -lstdc++ $(EXTRALINK)
ODIR= obj
CC=gcc
CPP=g++
#CC=clang
CFLAGS=$(IDIRS) $(OPTZ) $(DEBUG) -Wall #-lcrypto
CPPFLAGS=-std=c++11 -D_GLIBCXX_USE_C99 $(CFLAGS) $(LDIRS) $(LIBS)
default: libproxysql.a
.PHONY: default
_OBJ = sqlite3.o c_tokenizer.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
_OBJ_CPP = ProxySQL_GloVars.oo network.oo debug.oo configfile.oo Query_Cache.oo SpookyV2.oo MySQL_Authentication.oo gen_utils.oo simple_kv.oo sqlite3db.oo global_variables.oo proxysql_mem.oo mysql_connection.oo MySQL_HostGroups_Manager.oo mysql_data_stream.oo MySQL_Thread.oo MySQL_Session.oo MySQL_Protocol.oo mysql_backend.oo Query_Processor.oo ProxySQL_Admin.oo MySQL_Monitor.oo
OBJ_CPP = $(patsubst %,$(ODIR)/%,$(_OBJ_CPP))
%.ko: %.cpp
$(CPP) -fPIC -c -o $@ $< $(CPPFLAGS)
$(ODIR)/%.o: %.c
$(CC) -fPIC -c -o $@ $< $(CFLAGS)
$(ODIR)/%.oo: %.cpp
$(CPP) -fPIC -c -o $@ $< $(CPPFLAGS)
libproxysql.a: $(ODIR) $(OBJ) $(OBJ_CPP) $(INJECTION_PATH)/libinjection.a $(RE2_PATH)/obj/libre2.a $(LIBEVENT_PATH)/.libs/libevent.a
ar rcs $@ $(OBJ) $(OBJ_CPP) $(INJECTION_PATH)/libinjection.a $(RE2_PATH)/obj/libre2.a $(LIBEVENT_PATH)/.libs/libevent.a
$(ODIR):
mkdir $(ODIR)
#all: $(EXECUTABLE)
clean:
rm -f *.pid $(ODIR)/*.oo $(ODIR)/*.o *.ko *.so *~ core libproxysql.a

@ -0,0 +1,90 @@
DEPS_PATH=../deps
MARIADB_PATH=$(DEPS_PATH)/mariadb-client-library/mariadb_client
MARIADB_IDIR=$(MARIADB_PATH)/include
MARIADB_LDIR=$(MARIADB_PATH)/libmariadb
DAEMONPATH=$(DEPS_PATH)/libdaemon/libdaemon
DAEMONPATH_IDIR=$(DAEMONPATH)
DAEMONPATH_LDIR=$(DAEMONPATH)/libdaemon/.libs
#LIBEVENT_PATH=$(DEPS_PATH)/libevent/libevent
#LIBEVENT_IDIR=$(LIBEVENT_PATH)/include
#LIBEVENT_LDIR=$(LIBEVENT_PATH)/.libs
JEMALLOC_PATH=$(DEPS_PATH)/jemalloc/jemalloc
JEMALLOC_IDIR=$(JEMALLOC_PATH)/include/jemalloc
JEMALLOC_LDIR=$(JEMALLOC_PATH)/lib
#GLIB_PATH=$(DEPS_PATH)/glib/glib
#GLIB_IDIRS=-I$(GLIB_PATH) -I$(GLIB_PATH)/glib
#GLIB_LDIRS=-L$(GLIB_PATH)/glib/.libs -L$(GLIB_PATH)/gthread/.libs
#GLIB_LIB=-pthread -lgthread-2.0 -lglib-2.0
#GLIB_LDIRS=-L$(GLIB_PATH)/glib/.libs -L$(GLIB_PATH)/gthread/.libs -L$(GLIB_PATH)/gmodule/.libs
#GLIB_LIB=-pthread -lgmodule-2.0 -lgthread-2.0 -lglib-2.0
LIBCONFIG_PATH=$(DEPS_PATH)/libconfig/libconfig-1.4.9
LIBCONFIG_IDIR=-I$(LIBCONFIG_PATH)/lib
LIBCONFIG_LDIR=-L$(LIBCONFIG_PATH)/lib/.libs
INJECTION_PATH=$(DEPS_PATH)/libinjection
INJECTION_IDIR=$(INJECTION_PATH)
LIBEVENT_PATH=$(DEPS_PATH)/libevent/libevent
LIBEVENT_IDIR=$(LIBEVENT_PATH)/include
LIBEVENT_LDIR=$(LIBEVENT_PATH)/.libs
RE2_PATH=$(DEPS_PATH)/re2/re2
RE2_IDIR=$(RE2_PATH)
IDIR=../include
LDIR=../lib
#IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(LIBEVENT_IDIR) $(GLIB_IDIRS) $(LIBCONFIG_IDIR)
#LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) -L$(MARIADB_LDIR) -L$(LIBEVENT_LDIR) $(GLIB_LDIRS) $(LIBCONFIG_LDIR)
IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(DAEMONPATH_IDIR)
LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) $(LIBCONFIG_LDIR) -L$(RE2_PATH)/obj -L$(INJECTION_PATH) -L$(LIBEVENT_LDIR) -L$(MARIADB_LDIR) -L$(DAEMONPATH_LDIR)
#LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) -L$(MARIADB_LDIR) $(GLIB_LDIRS) $(LIBCONFIG_LDIR)
CFLAGS=-std=c++11 -D_GLIBCXX_USE_C99 $(IDIRS) $(OPTZ) $(DEBUG)
LIBS=-rdynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -ljemalloc -lconfig++ -lre2 -linjection -levent -lmariadbclient -Wl,-Bdynamic -lpthread -lm -lz -lrt -lc -lc++ -lcrypto -lstdc++ -lssl -liconv -lexecinfo $(EXTRALINK)
#LIBS=-rdynamic -Wl,-Bstatic -lproxysql -ljemalloc -levent $(GLIB_LIB) -Wl,-Bdynamic -ldl -lpthread -lm -lz -lrt
LIBPROXYSQLAR=$(LDIR)/libproxysql.a
ODIR= obj
#CC=gcc
CC=g++
#CC=clang
EXECUTABLE=proxysql
_OBJ = main.o proxysql_global.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.cpp
$(CC) -c -o $@ $< $(CFLAGS) -Wall
proxysql: $(ODIR) $(OBJ) $(LIBPROXYSQLAR)
$(CC) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(CFLAGS) $(LDIRS) $(LIBS)
$(ODIR):
mkdir $(ODIR)
$(LIBPROXYSQLAR):
cd $(LDIR) && ${MAKE}
default: $(EXECUTABLE)
clean:
rm -f *.pid $(ODIR)/*.o *~ core $(EXECUTABLE)
Loading…
Cancel
Save