c++11: step 2
[jackhill/mal.git] / cpp / Makefile
CommitLineData
9ddaa0b9
ST
1uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
2
3ifeq ($(uname_S),Darwin)
4 # Native build on yosemite. Requires: brew install readline
5 CXX=g++
6 READLINE=/usr/local/Cellar/readline/6.3.8
7 INCPATHS=-I$(READLINE)/include
8 LIBPATHS=-L$(READLINE)/lib
9else
10 # Ubuntu 14.10 / docker
11 CXX=clang++-3.5
12endif
13
14LD=$(CXX)
15AR=ar
16
17DEBUG=-ggdb
18CXXFLAGS=-O3 -Wall $(DEBUG) $(INCPATHS) -std=c++11
19LDFLAGS=-O3 $(DEBUG) $(LIBPATHS) -L. -lreadline -lhistory
20
179e8eaf
ST
21LIBSOURCES=Environment.cpp Reader.cpp ReadLine.cpp String.cpp \
22 Types.cpp Validation.cpp
9ddaa0b9
ST
23LIBOBJS=$(LIBSOURCES:%.cpp=%.o)
24
25MAINS=$(wildcard step*.cpp)
26TARGETS=$(MAINS:%.cpp=%)
27
28.PHONY: all clean
29
30.SUFFIXES: .cpp .o
31
32all: $(TARGETS)
33
34.deps: *.cpp *.h
35 $(CXX) $(CXXFLAGS) -MM *.cpp > .deps
36
37$(TARGETS): %: %.o libmal.a
38 $(LD) $(LDFLAGS) $^ -o $@
39
40libmal.a: $(LIBOBJS)
41 $(AR) rcs $@ $^
42
43.cpp.o:
44 $(CXX) $(CXXFLAGS) -c $< -o $@
45
46clean:
47 rm -rf *.o $(TARGETS) libmal.a .deps
48
49-include .deps