cpputil/Makefile

59 lines
1.4 KiB
Makefile

# assembler
AS = /home/selim/blob/fasm/fasm
ASFLAGS =
#LINKER = ld
#ASLDFLAGS = -lc -e main -dynamic-linker /lib64/ld-linux-x86-64.so.2
# Target platform
ARCH = x86_64
OS = linux
# C++ compier
CXX = g++
CXXFLAGS = -MMD -c -g -Og -Wall -Werror -std=c++11 -Iinclude -Isrc/asm/include -fno-strict-aliasing -fsanitize=thread -fPIE
LDFLAGS = -lgtest -ltsan -pie
# Archiver
AR = ar
BINDIR = bin
LIBDIR = lib
OBJDIR = obj
CPPUTIL_CXX_SOURCES = $(wildcard src/*.cpp)
CPPUTIL_ASM_SOURCES = $(wildcard src/asm/$(OS)/$(ARCH)/*.s)
CPPUTIL_OBJECTS = $(CPPUTIL_CXX_SOURCES:%.cpp=$(OBJDIR)/%.o) $(CPPUTIL_ASM_SOURCES:%.s=$(OBJDIR)/%.o)
CPPUTIL_DEPS = $(CPPUTIL_CXX_SOURCES:%.cpp=$(OBJDIR)/%.d)
TEST_SOURCES = $(wildcard test/*.cpp)
TEST_OBJECTS = $(TEST_SOURCES:%.cpp=$(OBJDIR)/%.o)
TEST_DEPS = $(TEST_SOURCES:%.cpp=$(OBJDIR)/%.d)
all: $(BINDIR)/cpputil_test $(LIBDIR)/libcpputil.a
$(BINDIR)/cpputil_test: bindir $(TEST_OBJECTS) lib/libcpputil.a
$(CXX) $(LDFLAGS) -o $(BINDIR)/cpputil_test $(TEST_OBJECTS) $(LIBDIR)/libcpputil.a
$(LIBDIR)/libcpputil.a: libdir $(CPPUTIL_OBJECTS)
$(AR) rcs $(LIBDIR)/libcpputil.a $(CPPUTIL_OBJECTS)
-include $(CPPUTIL_DEPS) $(TEST_DEPS)
$(OBJDIR)/%.o: %.cpp
$(CXX) $(CXXFLAGS) $< -o $@
$(OBJDIR)/%.o: %.s
$(AS) $(ASFLAGS) $< $@
bindir: objdir
mkdir -p $(BINDIR)
libdir: objdir
mkdir -p $(LIBDIR)
objdir:
mkdir -p $(dir $(CPPUTIL_OBJECTS) $(TEST_OBJECTS))
clean:
rm -rf $(LIBDIR) $(BINDIR) $(OBJDIR)