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.
AQuery/Makefile

149 lines
4.4 KiB

3 years ago
OS_SUPPORT =
MonetDB_LIB =
MonetDB_INC =
Defines =
2 years ago
CXXFLAGS = --std=c++1z
ifeq ($(AQ_DEBUG), 1)
OPTFLAGS = -g3 -fsanitize=address -fsanitize=leak
LINKFLAGS =
else
OPTFLAGS = -O3 -DNDEBUG -fno-stack-protector
LINKFLAGS = -flto -s
endif
SHAREDFLAGS = -shared
FPIC = -fPIC
COMPILER = $(shell $(CXX) --version | grep -q clang && echo clang|| echo gcc)
LIBTOOL = ar rcs
USELIB_FLAG = -Wl,--whole-archive,libaquery.a -Wl,-no-whole-archive
2 years ago
LIBAQ_SRC = server/monetdb_conn.cpp server/libaquery.cpp server/dragonbox/dragonbox_to_chars.cpp
LIBAQ_OBJ = monetdb_conn.o libaquery.o dragonbox_to_chars.o
SEMANTIC_INTERPOSITION = -fno-semantic-interposition
RANLIB = ranlib
ifeq ($(COMPILER), clang )
CLANG_GE_10 = $(shell expr `$(CXX) -dumpversion | cut -f1 -d.` \>= 10)
ifneq ($(CLANG_GE_10), 1)
SEMANTIC_INTERPOSITION =
endif
ifneq (, $(shell which llvm-ranlib))
RANLIB = llvm-ranlib
endif
else
RANLIB = echo
2 years ago
LIBTOOL = ar rcs
ifneq (, $(shell which gcc-ar))
LIBTOOL = gcc-ar rcs
endif
endif
OPTFLAGS += $(SEMANTIC_INTERPOSITION)
2 years ago
ifeq ($(PCH), 1)
PCHFLAGS = -include server/pch.hpp
2 years ago
else
PCHFLAGS =
2 years ago
endif
2 years ago
3 years ago
ifeq ($(OS),Windows_NT)
2 years ago
NULL_DEVICE = NUL
3 years ago
OS_SUPPORT += server/winhelper.cpp
LIBAQ_OBJ += winhelper.o
MonetDB_LIB += msc-plugin/monetdbe.dll
MonetDB_INC += -Imonetdb/msvc
LIBTOOL = gcc-ar rcs
ifeq ($(COMPILER), clang )
FPIC =
endif
else
UNAME_S = $(shell uname -s)
UNAME_M = $(shell uname -m)
2 years ago
NULL_DEVICE = /dev/null
MonetDB_LIB =
ifeq ($(UNAME_S),Darwin)
USELIB_FLAG = -Wl,-force_load
MonetDB_LIB += -L$(shell brew --prefix monetdb)/lib
MonetDB_INC += -I$(shell brew --prefix monetdb)/include/monetdb
ifeq ($(COMPILER), clang )
LIBTOOL = libtool -static -o
endif
ifneq ($(UNAME_M),arm64)
OPTFLAGS += -march=native
endif
else
OPTFLAGS += -march=native
MonetDB_LIB += $(AQ_MONETDB_LIB)
MonetDB_INC += $(AQ_MONETDB_INC)
MonetDB_INC += -I/usr/local/include/monetdb -I/usr/include/monetdb
endif
MonetDB_LIB += -lmonetdbe
3 years ago
endif
ifeq ($(THREADING),1)
LIBAQ_SRC += server/threading.cpp
LIBAQ_OBJ += threading.o
Defines += -DTHREADING
endif
ifeq ($(AQUERY_ITC_USE_SEMPH), 1)
Defines += -D__AQUERY_ITC_USE_SEMPH__
endif
CXXFLAGS += $(OPTFLAGS) $(Defines) $(MonetDB_INC)
BINARYFLAGS = $(CXXFLAGS) $(LINKFLAGS) $(MonetDB_LIB)
SHAREDFLAGS += $(FPIC) $(BINARYFLAGS)
info:
$(info This makefile script is used in AQuery to automatically build required libraries and executables.)
$(info Run it manually only for debugging purposes.)
$(info Targets (built by `make <target>`):)
$(info $" pch: generate precompiled header)
$(info $" libaquery.a: build static library)
$(info $" server.so: build execution engine)
$(info $" snippet: build generated query snippet)
$(info $" server_uselib: build execution engine using shared library and pch)
$(info $" snippet_uselib: build generated query snippet using shared library and pch)
$(info $" docker: build docker image with name aquery)
$(info $" launcher: build launcher for aquery ./aq)
$(info $" clean: remove all generated binaraies and caches)
$(info )
$(info Variables:)
$(info $" OPTFLAGS: $(OPTFLAGS))
$(info $" OS_SUPPORT: $(OS_SUPPORT))
$(info $" OS: $(OS))
$(info $" Defines: $(Defines))
$(info $" LIBTOOL: $(LIBTOOL))
$(info $" MonetDB_INC: $(MonetDB_INC))
$(info $" COMPILER: $(COMPILER))
$(info $" CXX: $(CXX))
$(info $" FPIC: $(FPIC))
pch:
$(CXX) -x c++-header server/pch.hpp $(FPIC) $(CXXFLAGS)
2 years ago
libaquery:
$(CXX) -c $(FPIC) $(PCHFLAGS) $(LIBAQ_SRC) $(OS_SUPPORT) $(CXXFLAGS) &&\
$(LIBTOOL) libaquery.a $(LIBAQ_OBJ) &&\
$(RANLIB) libaquery.a
warmup:
$(CXX) $(SHAREDFLAGS) msc-plugin/dummy.cpp libaquery.a -o dll.so
3 years ago
server.bin:
$(CXX) $(LIBAQ_SRC) $(BINARYFLAGS) $(OS_SUPPORT) -o server.bin
launcher:
$(CXX) -D__AQ_BUILD_LAUNCHER__ $(LIBAQ_SRC) $(OS_SUPPORT) $(BINARYFLAGS) -o aq
3 years ago
server.so:
# $(CXX) -z muldefs server/server.cpp server/monetdb_conn.cpp -fPIC -shared $(OS_SUPPORT) monetdb/msvc/monetdbe.dll --std=c++1z -O3 -march=native -o server.so -I./monetdb/msvc
2 years ago
$(CXX) $(SHAREDFLAGS) $(PCHFLAGS) $(LIBAQ_SRC) server/server.cpp $(OS_SUPPORT) -o server.so
server_uselib:
2 years ago
$(CXX) $(SHAREDFLAGS) server/server.cpp libaquery.a -o server.so
3 years ago
snippet:
$(CXX) $(SHAREDFLAGS) $(PCHFLAGS) out.cpp $(LIBAQ_SRC) -o dll.so
snippet_uselib:
$(CXX) $(SHAREDFLAGS) $(PCHFLAGS) out.cpp libaquery.a -o dll.so
2 years ago
docker:
docker build -t aquery .
3 years ago
clean:
rm .cached *.shm *.o dll.so server.so server.bin libaquery.a libaquery.lib -rf 2> $(NULL_DEVICE) || true
2 years ago
.PHONY: clean