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