From 605fa0b69114c0834cad3eb152007bc225e16d74 Mon Sep 17 00:00:00 2001 From: Michael Kuc Date: Wed, 26 Jun 2019 12:26:27 +0100 Subject: [PATCH] Improved build for cross-compilation. --- Makefile | 32 +++++++++++++++++++++++--------- Scripts/cpp-base64-Makefile | 12 +++++------- Scripts/uECC-Makefile | 11 +++++------ 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 20711c3..0a16c6e 100755 --- a/Makefile +++ b/Makefile @@ -2,15 +2,29 @@ SRC_DIR := . OBJ_DIR := obj -LDFLAGS := -lmbedcrypto -CXXFLAGS := --std=c++14 +CXXFLAGS := -std=c++11 -MMD -MP -Wall -Wfatal-errors -Wextra -fPIE +LDFLAGS := -fPIE -CXXFLAGS += -MMD -MP -Wall -Wfatal-errors -Wextra -MODULES := $(wildcard $(SRC_DIR)/*.cpp) -OBJECTS := $(MODULES:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) +ifdef CROSS_COMPILE +$(info Doing a cross-compilation) +STATIC := -static +CXX := $(CROSS_COMPILE)g++ +CC := $(CROSS_COMPILE)gcc +LDFLAGS += -L /opt/lib +CROSS_CFLAGS := -I /opt/include +CXXFLAGS += $(CROSS_CFLAGS) +export CROSS_CFLAGS +export CXX +export CC +export STATIC +endif + +override LDFLAGS += -lmbedcrypto +MODULES := $(wildcard $(SRC_DIR)/*.cpp) +OBJECTS := $(MODULES:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) U2FDevice: $(OBJECTS) libuECC.a libcppb64.a - $(CXX) $(LDFLAGS) -o $@ $^ + $(CXX) -o $@ $^ $(LDFLAGS) $(STATIC) install: U2FDevice install -m775 -t /usr/bin U2FDevice @@ -18,7 +32,7 @@ install: U2FDevice install -d /usr/share/U2FDevice/ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $< + $(CXX) $(STATIC) $(CXXFLAGS) -c -o $@ $< $(OBJ_DIR): mkdir $(OBJ_DIR) @@ -26,8 +40,8 @@ $(OBJ_DIR): -include $(OBJECTS:.o=.d) clean: - rm $(OBJ_DIR)/* - rm U2FDevice libuECC.a libcppb64.a + rm -f $(OBJ_DIR)/* + rm -f U2FDevice libuECC.a libcppb64.a $(MAKE) -C micro-ecc clean $(MAKE) -C cpp-base64 clean diff --git a/Scripts/cpp-base64-Makefile b/Scripts/cpp-base64-Makefile index 2eccf8c..17272c7 100755 --- a/Scripts/cpp-base64-Makefile +++ b/Scripts/cpp-base64-Makefile @@ -1,11 +1,9 @@ #!/usr/bin/env make SRC_DIR := . -OBJ_DIR := . -CPPFLAGS := -CXXFLAGS := --std=c++14 +OBJ_DIR := obj +CXXFLAGS := --std=c++11 -fPIE -MMD -MP $(CROSS_CFLAGS) -CXXFLAGS += -MMD -MP MODULESC := $(SRC_DIR)/base64.cpp OBJECTS := $(MODULESC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) @@ -14,10 +12,10 @@ libcppb64.a: $(OBJECTS) $(OBJECTS): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp @mkdir -p $(@D) - @$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $< + @$(CXX) $(STATIC) $(CXXFLAGS) -c -o $@ $< clean: - rm obj/* - rm libcppb64.a + rm -f obj/* + rm -f libcppb64.a -include $(OBJECTS:.o=.d) diff --git a/Scripts/uECC-Makefile b/Scripts/uECC-Makefile index 1b50f1d..d64ae30 100755 --- a/Scripts/uECC-Makefile +++ b/Scripts/uECC-Makefile @@ -2,9 +2,8 @@ SRC_DIR := . OBJ_DIR := obj -CPPFLAGS := -CFLAGS := -MMD -MP +CFLAGS := -MMD -MP -fPIE $(CROSS_CFLAGS) MODULESC := $(wildcard $(SRC_DIR)/*.c) MODULESI := $(SRC_DIR)/curve-specific.inc OBJECTSC := $(MODULESC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) @@ -16,15 +15,15 @@ libuECC.a: $(OBJECTS) $(OBJECTSC): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(@D) - @$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + @$(CC) $(STATIC) $(CFLAGS) -c -o $@ $< $(OBJECTSI): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.inc @mkdir -p $(@D) - @$(CC) -x c $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + @$(CC) -x c $(STATIC) $(CFLAGS) -c -o $@ $< clean: - rm obj/* - rm libuECC.a + rm -f obj/* + rm -f libuECC.a .PHONY: clean