105 lines
3.7 KiB
Makefile
105 lines
3.7 KiB
Makefile
#
|
|
# Jan Chrin
|
|
# Version: July 2019 - Qt5
|
|
#
|
|
# makefile to build mocha mex file
|
|
# printenv | grep MATLAB to reveal your MATLAB Directory
|
|
#
|
|
#
|
|
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
|
# where the MATLAB version is grepped from $(MATLAB)
|
|
|
|
MATLAB_ROOT=${MATLAB}
|
|
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
|
|
|
##### CHANGE AS APPROPRIATE #################
|
|
#Mocha Version to install
|
|
MOCHA_VERSION=mocha-1.16.1-gcc-7.3.0
|
|
#CAFE version to link to
|
|
CAFE_VERSION=cafe-1.16.1-gcc-7.3.0
|
|
|
|
EPICS_BASE=${EPICS}/base-7.0.6
|
|
#CAFE project base
|
|
CAFE_BASE=/opt/gfa/cafe
|
|
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
|
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
|
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
|
|
|
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/$(EPICS_HOST_ARCH)/libcafe.a
|
|
|
|
#if qt5 has libQt5Core.so link
|
|
#QT5_DIR= /opt/psi/Cafe/cafe-matlab/${MATLAB_VERSION}/libexec
|
|
QT5_DIR= ${MATLAB_ROOT}/bin/glnxa64
|
|
|
|
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(EPICS_HOST_ARCH)/$(MATLAB_VERSION)
|
|
#############################################
|
|
|
|
|
|
#First deteremine if we are on a 32/64 bit machine
|
|
#as mex file extensions are named differently
|
|
pattern64=x86_64
|
|
pattern32=i386
|
|
|
|
PWD=$(shell pwd)
|
|
#hardware platform
|
|
HW=$(shell uname -i)
|
|
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
|
MEXE=mexa64
|
|
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
|
else
|
|
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
|
MEXE=mexglx
|
|
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
|
endif
|
|
endif
|
|
|
|
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
|
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
|
|
|
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
|
-I$(CAFE_CPP_BASE)/include -I./ \
|
|
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
|
|
-I$(EPICS_BASE)/include/compiler/gcc
|
|
|
|
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
|
|
|
|
|
# linkage to qt5 required if cafe built with Qt5
|
|
#-lboost_system -lboost_thread-mt
|
|
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQt5Core -lQt5Xml
|
|
#LIBS += -lmx -lmex -lmat
|
|
|
|
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
|
mex CXXFLAGS='$(CXXFLAGS) -v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++1z' \
|
|
'LDFLAGS=-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} -Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} -L${QT5_DIR} -Wl,-rpath,${QT5_DIR} -L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) $(LIBS)' \
|
|
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) \
|
|
-outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
|
$(INCLUDEPATH_MOCHA)
|
|
|
|
|
|
|
|
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
|
macchinetta.h containerMochaccino.h
|
|
mex CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++1z' \
|
|
-c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) 'LDFLAGS=-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} -Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} -L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) $(LIBS)' -outdir $(OBJ_DIR)
|
|
|
|
install: $(OBJ_DIR)/mocha.$(MEXE)
|
|
mkdir -p $(INSTALL_PATH)
|
|
mex CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++1z' \
|
|
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) $(INCLUDEPATH_MOCHA) \
|
|
'LDFLAGS=-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} -Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} -L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) $(LIBS)'
|
|
|
|
cp example.m $(INSTALL_PATH)
|
|
cp scripts/monitorAction.m $(INSTALL_PATH)
|
|
cp scripts/pvtable.m $(INSTALL_PATH)
|
|
cp scripts/test.xml $(INSTALL_PATH)
|
|
|
|
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
|
mkdir -p $(INSTALL_PATH)
|
|
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
|
|
|
clean:
|
|
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
|
|
|
print-% : ; @echo $* = $($*)
|