52 строки
1.1 KiB
Makefile
52 строки
1.1 KiB
Makefile
LLVM_VER=3.9
|
|
LLVM_HOME=/usr/bin
|
|
LLVM_CONFIG?=$(LLVM_HOME)/llvm-config-$(LLVM_VER)
|
|
|
|
ifndef VERBOSE
|
|
QUIET:=@
|
|
endif
|
|
|
|
SRC_DIR?=$(PWD)/src
|
|
|
|
CXX=$(LLVM_HOME)/clang++-$(LLVM_VER)
|
|
CC=$(LLVM_HOME)/clang-$(LLVM_VER)
|
|
OPT=$(LLVM_HOME)/opt-$(LLVM_VER)
|
|
DIS=$(LLVM_HOME)/llvm-dis-$(LLVM_VER)
|
|
LNK=$(LLVM_HOME)/llvm-link-$(LLVM_VER)
|
|
|
|
LDFLAGS+=$(shell $(LLVM_CONFIG) --ldflags)
|
|
LDFLAGS+=-shared -Wl,-O1
|
|
|
|
CXXFLAGS+=-I$(shell $(LLVM_CONFIG) --includedir)
|
|
CXXFLAGS+=-std=c++11 -fPIC -fvisibility-inlines-hidden
|
|
CXXFLAGS+=-Wall -Wextra -g -Wno-unused-parameter -Wno-unused-variable
|
|
|
|
CPPFLAGS+=$(shell $(LLVM_CONFIG) --cppflags)
|
|
CPPFLAGS+=-I$(SRC_DIR)
|
|
|
|
PASS=CGSSkel.so
|
|
PASS_OBJECTS=CGSSkel.o
|
|
|
|
default: prep $(PASS)
|
|
|
|
prep:
|
|
$(QUIET)mkdir -p built
|
|
|
|
%.o : $(SRC_DIR)/%.cpp
|
|
@echo Compiling $*.cpp
|
|
$(QUIET)$(CXX) -o built/$*.o -c $(CPPFLAGS) $(CXXFLAGS) $<
|
|
|
|
$(PASS) : $(PASS_OBJECTS)
|
|
@echo Linking $@
|
|
$(QUIET)$(CXX) -o built/$@ $(LDFLAGS) $(CXXFLAGS) built/*.o
|
|
|
|
clean:
|
|
$(QUIET)rm -rf built test/*.bc
|
|
|
|
|
|
tests:
|
|
$(CC) -emit-llvm -o test/foo.bc -c test/foo.c
|
|
|
|
runtests:
|
|
$(OPT) -load built/CGSSkel.so -cgsskel < test/foo.bc
|