Some distributions place libpq headers under /usr/include/postgresql which is why it's added to the include path. And even though we don't support it yet, the same happens with MariaDB, with headers being placed under /usr/include/mariadb.
84 lines
2.5 KiB
Makefile
84 lines
2.5 KiB
Makefile
SRCDIR = src
|
|
BUILDDIR = build
|
|
OUTPUTEXE = querymanager
|
|
|
|
CC = gcc
|
|
CXX = g++
|
|
CFLAGS = -m64 -fno-strict-aliasing -pedantic -Wall -Wextra -pthread
|
|
CXXFLAGS = $(CFLAGS) --std=c++11
|
|
LFLAGS = -Wl,-t
|
|
|
|
# IMPORTANT(fusion): Using TABS outside recipes may cause errors in some cases.
|
|
# This is because .RECIPEPREFIX defaults to it and any line starting with it is
|
|
# assumed to introduce another recipe command. If indentation is needed before
|
|
# any target is specified, use SPACES.
|
|
|
|
DEBUG ?= 0
|
|
ifneq ($(DEBUG), 0)
|
|
CFLAGS += -g -Og -DENABLE_ASSERTIONS=1
|
|
else
|
|
CFLAGS += -O2
|
|
endif
|
|
|
|
DATABASE ?= sqlite
|
|
ifeq ($(DATABASE), sqlite)
|
|
DATABASEOBJ = $(BUILDDIR)/database_sqlite.obj $(BUILDDIR)/sqlite3.obj
|
|
CFLAGS += -DDATABASE_SQLITE=1
|
|
else ifeq ($(DATABASE), postgres)
|
|
DATABASEOBJ = $(BUILDDIR)/database_postgres.obj
|
|
CFLAGS += -DDATABASE_POSTGRESQL=1 -I/usr/include/postgresql
|
|
LFLAGS += -lpq
|
|
else ifeq ($(DATABASE), mariadb)
|
|
DATABASEOBJ = $(BUILDDIR)/database_mariadb.obj
|
|
CFLAGS += -DDATABASE_MARIADB=1 -I/usr/include/mariadb
|
|
LFLAGS += -lmariadb
|
|
else
|
|
$(error Unsupported DATABASE: `$(DATABASE)`. Valid options are `sqlite`, `postgres`, or `mariadb`)
|
|
endif
|
|
|
|
$(BUILDDIR)/$(OUTPUTEXE): $(BUILDDIR)/connections.obj $(BUILDDIR)/hostcache.obj $(BUILDDIR)/query.obj $(BUILDDIR)/querymanager.obj $(BUILDDIR)/sha256.obj $(DATABASEOBJ)
|
|
@mkdir -p $(@D)
|
|
$(CXX) $(CXXFLAGS) -o $@ $^ $(LFLAGS)
|
|
|
|
$(BUILDDIR)/connections.obj: $(SRCDIR)/connections.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/hostcache.obj: $(SRCDIR)/hostcache.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/query.obj: $(SRCDIR)/query.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/querymanager.obj: $(SRCDIR)/querymanager.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/sha256.obj: $(SRCDIR)/sha256.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/database_sqlite.obj: $(SRCDIR)/database_sqlite.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/database_postgres.obj: $(SRCDIR)/database_postgres.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/database_mariadb.obj: $(SRCDIR)/database_mariadb.cc $(SRCDIR)/querymanager.hh
|
|
@mkdir -p $(@D)
|
|
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/sqlite3.obj: $(SRCDIR)/sqlite3.c $(SRCDIR)/sqlite3.h
|
|
@mkdir -p $(@D)
|
|
$(CC) -c $(CFLAGS) -o $@ $<
|
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
|
@rm -rf $(BUILDDIR)
|
|
|