Files
2026-10-23 10:26:45 +02:00

44 lines
1.5 KiB
Plaintext

CXX ?= c++
CXXFLAGS ?= -O2 -std=c++17 -Wall -Wextra -pedantic
ECMC_ROOT ?= ../ecmc
ECMCCFG_ROOT ?= ../ecmccfg
PYTHON ?= python3
UNAME := $(shell uname -s)
ifeq ($(UNAME),Darwin)
SHARED := -dynamiclib
EXT := dylib
else
SHARED := -shared
EXT := so
endif
.PHONY: all test logic pvs clean
all: build/libhexapod.$(EXT) build/test_kinematics
build:
mkdir -p build
build/libhexapod.$(EXT): src/c_api.cpp src/kinematics.hpp | build
$(CXX) $(CXXFLAGS) -fPIC $(SHARED) -o $@ src/c_api.cpp
build/test_kinematics: tests/test_kinematics.cpp src/kinematics.hpp | build
$(CXX) $(CXXFLAGS) -Isrc -o $@ tests/test_kinematics.cpp
test: all
./build/test_kinematics
$(PYTHON) python/viewer.py --self-test
logic: build/libhexapod_logic.$(EXT) pvs
build/libhexapod_logic.$(EXT): src/logic.cpp src/kinematics.hpp | build
$(CXX) $(CXXFLAGS) -fPIC $(SHARED) -I$(ECMC_ROOT)/devEcmcSup/logic -o $@ src/logic.cpp
pvs:
$(PYTHON) $(ECMCCFG_ROOT)/examples/PSI/plugins/cpp_logic/utils/ecmcCppLogicSourceSubstGen.py --source src/logic.cpp --logic-name hexapod --output cfg/libhexapod_logic.so_cpp_logic.subs
clean:
rm -rf build
.PHONY: test-logic
test-logic: build/test_logic
./build/test_logic
build/test_logic: tests/test_logic.cpp src/logic.cpp src/kinematics.hpp | build
$(CXX) $(CXXFLAGS) -I$(ECMC_ROOT)/devEcmcSup/logic -o $@ tests/test_logic.cpp
.PHONY: bench
bench: build/kinematics_bench
./build/kinematics_bench
build/kinematics_bench: bench/kinematics_bench.cpp src/kinematics.hpp | build
$(CXX) $(CXXFLAGS) -Isrc -o $@ bench/kinematics_bench.cpp