-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathmakefile
41 lines (35 loc) · 1.16 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
CC := g++
SRCDIR := src
BUILDDIR := build
BINDIR := bin
TESTDIR := test
STD := -std=c++17
SOURCES := $(shell find $(SRCDIR) -type f -name *.cpp)
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.cpp=.o))
LIB_DIR = external/lib
INCLUDE_DIR = external/include
LIB := -lbarvinok -lisl -lntl -lpolylibgmp -lgmp
INC := -I include -I . -I ${INCLUDE_DIR}
LOAD := -L ${LIB_DIR}
MAIN = main.cpp
TARGET = alexnet
LOG = $(TARGET)_log
$(BUILDDIR)/%.o: $(SRCDIR)/%.cpp
@mkdir -p $(BUILDDIR)
@echo "compile $< into object file..."
@echo "$(CC) $(STD) -c $(INC) -o $@ $<" >> $(LOG)
@$(CC) $(STD) -c $(INC) -o $@ $< >> $(LOG) 2>&1
clean:
@echo "clean up bin, build directory"
@rm -rf $(BUILDDIR)
@rm -rf $(BINDIR)
@rm -f "config.h"
@echo "clean up $(TARGET) log file"
@rm -rf $(LOG)
all: $(OBJECTS)
@mkdir -p $(BINDIR)
@echo "compile entry file and link with tenet and external library..."
@echo "#define EXPERIMENT_PREFIX \"${TARGET}\"" > config.h
@echo "$(CC) $(STD) $(INC) $(LOAD) $(OBJECTS) $(TESTDIR)/$(MAIN) -o $(BINDIR)/$(TARGET) $(LIB) " > $(LOG)
@$(CC) $(STD) $(INC) $(LOAD) $(OBJECTS) $(TESTDIR)/$(MAIN) -o $(BINDIR)/$(TARGET) $(LIB) >> $(LOG) 2>&1
.PHONY: clean all