67 lines
2.0 KiB
Makefile
67 lines
2.0 KiB
Makefile
include /ioc/tools/sls_ioc.makefile
|
|
|
|
# The offline build also creates a build/ directory. Always run the IOC
|
|
# build recipe so the source Makefile can check its own dependencies.
|
|
.PHONY: default build clean
|
|
|
|
IOC_STARTUP_FILE := $(notdir $(firstword $(wildcard *_startup.script)))
|
|
IOC_PARAMS_FILE := $(notdir $(firstword $(wildcard *_parameters.yaml)))
|
|
IOC_NAME ?= $(patsubst %_startup.script,%,$(IOC_STARTUP_FILE))
|
|
ifeq ($(IOC_NAME),)
|
|
IOC_NAME := $(patsubst %_parameters.yaml,%,$(IOC_PARAMS_FILE))
|
|
endif
|
|
|
|
CPP_LOGIC_ROOT ?= $(abspath ../..)
|
|
PYTHON ?= python3
|
|
GENERATE_QT ?= 1
|
|
IOC_QT_PANEL := qt/$(IOC_NAME)_cpp_logic.ui
|
|
IOC_QTGEN := $(CPP_LOGIC_ROOT)/utils/cpp_logic_ioc_qtgen.py
|
|
IOC_SUBS_FILE := cfg/libmain.so_cpp_logic.subs
|
|
|
|
# Python's ctypes library is built locally, independently of the IOC module.
|
|
CXX ?= c++
|
|
VIEWER_CXXFLAGS ?= -O2 -std=c++17 -Wall -Wextra -pedantic
|
|
ifeq ($(shell uname -s),Darwin)
|
|
VIEWER_LIBRARY := build/libarm.dylib
|
|
VIEWER_SHARED := -dynamiclib
|
|
else
|
|
VIEWER_LIBRARY := build/libarm.so
|
|
VIEWER_SHARED := -shared
|
|
endif
|
|
|
|
.PHONY: viewer-lib
|
|
viewer-lib: $(VIEWER_LIBRARY)
|
|
|
|
$(VIEWER_LIBRARY): src/c_api.cpp src/kinematics.hpp
|
|
mkdir -p $(@D)
|
|
$(CXX) $(VIEWER_CXXFLAGS) -fPIC $(VIEWER_SHARED) -o $@ src/c_api.cpp
|
|
|
|
.PHONY: pvs ui
|
|
|
|
pvs:
|
|
$(MAKE) -C src stage
|
|
|
|
ui: pvs
|
|
if [ "$(GENERATE_QT)" = "1" ]; then $(PYTHON) $(IOC_QTGEN) --input $(IOC_SUBS_FILE) --output $(IOC_QT_PANEL) --pv-prefix "$(IOC_NAME):" --title "$(IOC_NAME) cpp_logic PVs"; fi
|
|
|
|
# Local numerical checks are independent of the PSI IOC build.
|
|
ECMC_ROOT ?= ../ecmc
|
|
.PHONY: test test-logic logic
|
|
logic: build
|
|
|
|
build/test_kinematics: tests/test_kinematics.cpp src/kinematics.hpp
|
|
mkdir -p $(@D)
|
|
$(CXX) $(VIEWER_CXXFLAGS) -Isrc -o $@ $<
|
|
|
|
test: viewer-lib build/test_kinematics
|
|
./build/test_kinematics
|
|
$(PYTHON) python/viewer.py --self-test
|
|
$(PYTHON) tests/test_epics_source.py
|
|
|
|
build/test_logic: tests/test_logic.cpp src/logic.cpp src/kinematics.hpp
|
|
mkdir -p $(@D)
|
|
$(CXX) $(VIEWER_CXXFLAGS) -I$(ECMC_ROOT)/devEcmcSup/logic -o $@ $<
|
|
|
|
test-logic: build/test_logic
|
|
./build/test_logic
|