-
Notifications
You must be signed in to change notification settings - Fork 11
/
makefile
43 lines (29 loc) · 921 Bytes
/
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
42
43
SHELL = /bin/bash
EXENAME = simulator
SRCDIR = src
OBJDIR = obj
LLVM_CONFIG ?= llvm-config
override CXXFLAGS += -g -Wall -O3 -std=c++1y `$(LLVM_CONFIG) --cppflags`
override LDFLAGS += `$(LLVM_CONFIG) --ldflags --libs core support target executionengine jit native`
UNAME := $(shell uname)
ifeq ($(UNAME), Linux)
override LDFLAGS += -ltinfo -ldl
endif
SRCS := $(shell find $(SRCDIR) -name '*.cpp')
OBJS := $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCS))
DEPS := $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.d,$(SRCS))
NODEPS := clean
.PHONY: clean
all: $(EXENAME)
ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS))))
-include $(DEPS)
endif
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@mkdir -p $(dir $@)
$(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MT '$@' -MF '$(patsubst $(OBJDIR)/%.o,$(OBJDIR)/%.d,$@)'
$(EXENAME): $(OBJS)
@mkdir -p $(dir $@)
$(CXX) $(OBJS) -o $@ $(LDFLAGS)
clean:
rm -rf $(OBJDIR)
rm -rf $(EXENAME)