mirror of
https://github.com/nasa/trick.git
synced 2025-01-31 00:24:03 +00:00
c5d0b2a872
Modified the makefile for ICG to be able to use clang from yum, fink, and manual installs. Removed the requirement for copying the clang friendly header files into Trick. However Trick will be expecting the clang header files to be in it's search path. refs #40
77 lines
2.2 KiB
Makefile
77 lines
2.2 KiB
Makefile
|
|
# The config_${HOST_TYPE}.mk file provides LLVM_HOME
|
|
include ${TRICK_HOME}/share/trick/makefiles/Makefile.common
|
|
|
|
CC := $(shell $(LLVM_HOME)/bin/$(LLVM_CONFIG) --bindir)/clang
|
|
CXX := $(shell $(LLVM_HOME)/bin/$(LLVM_CONFIG) --bindir)/clang++
|
|
CXXFLAGS := -I${LLVM_HOME}/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fno-rtti
|
|
|
|
CLANG_MINOR_GTEQ5 := $(shell expr `$(LLVM_HOME)/bin/$(LLVM_CONFIG) --version | cut -f2 -d. ` \>= 5 )
|
|
|
|
LLVMLDFLAGS := $(shell $(LLVM_HOME)/bin/$(LLVM_CONFIG) --ldflags)
|
|
|
|
OBJ_DIR := object_$(TRICK_HOST_CPU)
|
|
|
|
ifeq ($(IS_CC_CLANG), 0)
|
|
CXXFLAGS += -DGCC_MAJOR=$(GCC_MAJOR) -DGCC_MINOR=$(GCC_MINOR)
|
|
endif
|
|
|
|
ICG := ${TRICK_HOME}/bin/trick-ICG
|
|
|
|
SOURCES = $(wildcard *.cpp)
|
|
OBJECTS = $(addprefix $(OBJ_DIR)/, $(subst .cpp,.o,$(SOURCES)))
|
|
|
|
# Include the units conversion source from trick_utils.
|
|
UNITS_CONV_SRC = ${TRICK_HOME}/trick_source/trick_utils/units/src/units_conv.c
|
|
UNITS_CONV_INCLUDE = -I${TRICK_HOME}/include
|
|
UNITS_CONV_OBJ = $(OBJ_DIR)/units_conv.o
|
|
|
|
CLANGLIBS = \
|
|
-lclangFrontend \
|
|
-lclangDriver \
|
|
-lclangSerialization \
|
|
-lclangParse \
|
|
-lclangSema \
|
|
-lclangAnalysis \
|
|
-lclangEdit \
|
|
-lclangAST \
|
|
-lclangLex \
|
|
-lclangBasic \
|
|
|
|
ifeq ($(TRICK_HOST_TYPE),Linux)
|
|
CLANGLIBS += $(shell $(LLVM_HOME)/bin/$(LLVM_CONFIG) --libs)
|
|
ifeq ($(CLANG_MINOR_GTEQ5),1)
|
|
CXXFLAGS += -std=c++11
|
|
CLANGLIBS += $(shell $(LLVM_HOME)/bin/$(LLVM_CONFIG) --system-libs)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(TRICK_HOST_TYPE),Darwin)
|
|
CXXFLAGS += -std=c++11
|
|
CLANGLIBS += -lLLVMOption -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMSupport $(shell $(LLVM_HOME)/bin/$(LLVM_CONFIG) --system-libs)
|
|
endif
|
|
|
|
all: $(ICG)
|
|
|
|
$(ICG): $(OBJECTS) $(UNITS_CONV_OBJ)
|
|
$(CXX) -o $@ $(OBJECTS) $(UNITS_CONV_OBJ) $(LLVMLDFLAGS) $(CLANGLIBS)
|
|
|
|
# Only FieldDescription.cpp includes the units conversion header.
|
|
$(OBJ_DIR)/FieldDescription.o : CXXFLAGS += $(UNITS_CONV_INCLUDE)
|
|
$(OBJ_DIR)/HeaderSearchDirs.o : CXXFLAGS += -DLLVM_HOME=\"${LLVM_HOME}\"
|
|
$(OBJ_DIR)/main.o : CXXFLAGS += $(UNITS_CONV_INCLUDE)
|
|
|
|
$(OBJECTS): $(OBJ_DIR)/%.o : %.cpp
|
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
|
|
|
$(UNITS_CONV_OBJ): $(UNITS_CONV_SRC)
|
|
$(CC) $(UNITS_CONV_INCLUDE) -c $< -o $@
|
|
|
|
$(OBJECTS) $(UNITS_CONV_OBJ) : | $(OBJ_DIR)
|
|
|
|
$(OBJ_DIR):
|
|
mkdir -p $(OBJ_DIR)
|
|
|
|
clean:
|
|
rm -rf $(OBJ_DIR) $(ICG)
|