Files
2026-10-23 10:51:22 +02:00

46 lines
1.4 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/libhexapod.dylib
VIEWER_SHARED := -dynamiclib
else
VIEWER_LIBRARY := build/libhexapod.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