From 30049f9ef44ff8e218d4787a342bd381c3434f27 Mon Sep 17 00:00:00 2001 From: rudy Date: Fri, 6 May 2022 11:15:12 +0200 Subject: [PATCH] fix(ci): Makefile work from any dir and others fixes --- concrete-optimizer-cpp/Makefile | 47 ++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/concrete-optimizer-cpp/Makefile b/concrete-optimizer-cpp/Makefile index b5c09c906..fa668f35c 100644 --- a/concrete-optimizer-cpp/Makefile +++ b/concrete-optimizer-cpp/Makefile @@ -3,39 +3,48 @@ CARGO_PROFILE ?= release # debug or release PROFILE_SUBDIR ?= release -ROOT = .. -TARGET_DIR = $(ROOT)/target -PROFILE_DIR = $(TARGET_DIR)/$(PROFILE_SUBDIR) -CXXBRIDGE_DIR = $(TARGET_DIR)/cxxbridge/concrete-optimizer-cpp/src +MAKEFILE_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) +ROOT = $(shell readlink -f $(MAKEFILE_DIR)/..) +CXXBRIDGE_DIR = $(ROOT)/target/cxxbridge/concrete-optimizer-cpp/src -INTERFACE_LIB = $(TARGET_DIR)/libconcrete_optimizer_cpp.a +# In target intermediate files +INTERFACE_LIB_ORIG = $(ROOT)/target/$(PROFILE_SUBDIR)/libconcrete_optimizer_cpp.a +INTERFACE_HEADER_ORIG = $(CXXBRIDGE_DIR)/concrete-optimizer.rs.h +INTERFACE_CPP_ORIG = $(CXXBRIDGE_DIR)/concrete-optimizer.rs.cc + +# Final files +INTERFACE_LIB = $(ROOT)/target/libconcrete_optimizer_cpp.a INTERFACE_HEADER = src/cpp/concrete-optimizer.hpp INTERFACE_CPP = src/cpp/concrete-optimizer.cpp -INTERFACE_SOURCES = $(INTERFACE_HEADER) $(INTERFACE_CPP) SOURCES = $(shell find $(ROOT)/concrete-optimizer/src) \ $(shell find $(ROOT)/concrete-optimizer-cpp/src -name '*.rs') + +build: $(INTERFACE_LIB) + +$(INTERFACE_LIB_ORIG) $(INTERFACE_HEADER_ORIG) $(INTERFACE_CPP_ORIG): $(SOURCES) + cd $(ROOT) && cargo build -p concrete-optimizer-cpp --profile $(CARGO_PROFILE) + +$(INTERFACE_HEADER): $(INTERFACE_HEADER_ORIG) + cp $< $@ + +$(INTERFACE_CPP): $(INTERFACE_CPP_ORIG) + cp $< $@ + +$(INTERFACE_LIB): $(INTERFACE_LIB_ORIG) + cp $< $@ + TESTS_SOURCES = tests/src/main.cpp TEST_DEP_LIBS = -l pthread -ldl - -$(INTERFACE_SOURCES) $(INTERFACE_LIB): $(SOURCES) - cd $(ROOT) && cargo build -p concrete-optimizer-cpp --profile $(CARGO_PROFILE) - cp $(CXXBRIDGE_DIR)/concrete-optimizer.rs.h $(INTERFACE_HEADER) - cp $(CXXBRIDGE_DIR)/concrete-optimizer.rs.cc $(INTERFACE_CPP) - cp $(PROFILE_DIR)/libconcrete_optimizer_cpp.a $(TARGET_DIR) - -tests/tests_exe: $(INTERFACE_SOURCES) $(INTERFACE_LIB) $(TESTS_SOURCES) +tests/tests_exe: $(INTERFACE_LIB) $(INTERFACE_HEADER) $(INTERFACE_CPP) $(TESTS_SOURCES) g++ -o $@ $(TESTS_SOURCES) $(INTERFACE_CPP) $(INTERFACE_LIB) -I $(shell dirname $(INTERFACE_HEADER)) $(TEST_DEP_LIBS) chmod +x $@ -build: $(INTERFACE_SOURCES) $(INTERFACE_LIB) - test: tests/tests_exe ./tests/tests_exe test-ci: + # force regeneration of sources + rm -rf $(INTERFACE_HEADER) $(INTERFACE_CPP) $(INTERFACE_HEADER_ORIG) $(INTERFACE_CPP_ORIG) $(MAKE) CARGO_PROFILE=dev PROFILE_SUBDIR=debug test git diff --check src/cpp || echo Please commit the new version of generated files - -clean: - rm -f $(INTERFACE_LIB) tests/tests_exe