# 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 LDFLAGS = -lgtest # 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)