From f9fa92e98f1c8eebe79dfbb999fbf3752a9a96e7 Mon Sep 17 00:00:00 2001 From: James O'Beirne Date: Mon, 27 Jan 2025 08:19:15 -0500 Subject: [PATCH] make: multi-os --- .github/workflows/tests.yml | 5 +++++ Makefile | 45 ++++++++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e2562b3..01a4ef1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,7 +22,12 @@ jobs: elif [ "$RUNNER_OS" == "macOS" ]; then brew install secp256k1 libsodium python3 go + sudo mkdir -p /usr/local/{lib,include} + sudo chmod 755 /usr/local/{lib,include} + echo "LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH" >> $GITHUB_ENV + echo "CPATH=/usr/local/include:$CPATH" >> $GITHUB_ENV fi + curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.uv/bin" >> $GITHUB_PATH diff --git a/Makefile b/Makefile index c469875..6888d32 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,41 @@ CC := $(shell command -v clang 2>/dev/null || command -v $(CC) 2>/dev/null || echo cc) -CFLAGS = -DDEBUG -Wall -Werror -LDFLAGS = -lsecp256k1 -lsodium + +CFLAGS = -Wall -Werror +ifdef DEBUG + CFLAGS += -g -DDEBUG +else + CFLAGS += -O2 +endif + +LDCONFIG := ldconfig +INSTALL_PREFIX := /usr/local + +UNAME_S := $(shell uname -s) + +# Set default paths +STD_INCLUDE_PATHS := /usr/local/include +STD_LIB_PATHS := /usr/local/lib + +# Add Homebrew paths for macOS +ifeq ($(UNAME_S),Darwin) + UNAME_MACHINE := $(shell uname -m) + LDCONFIG := test 1 + INSTALL_PREFIX := /usr + ifeq ($(UNAME_MACHINE),arm64) + BREW_PREFIX := /opt/homebrew + else + BREW_PREFIX := /usr/local + endif + INCLUDE_PATHS := $(BREW_PREFIX)/include $(STD_INCLUDE_PATHS) + LIB_PATHS := $(BREW_PREFIX)/lib $(STD_LIB_PATHS) +else + INCLUDE_PATHS := $(STD_INCLUDE_PATHS) + LIB_PATHS := $(STD_LIB_PATHS) +endif + +# Convert paths to compiler flags +CFLAGS += $(foreach path,$(INCLUDE_PATHS),-I$(path)) +LDFLAGS += $(foreach path,$(LIB_PATHS),-L$(path)) -lsecp256k1 -lsodium all: libbip32.so $(CC) $(CFLAGS) -o bip32-cli cli.c libbip32.so $(LDFLAGS) @@ -22,9 +57,9 @@ fuzz: fuzz_target .PHONY: install install: libbip32.so - install -m755 libbip32.so /usr/local/lib/ - install -m755 bip32.h /usr/local/include/ - ldconfig + install -m755 libbip32.so $(INSTALL_PREFIX)/lib/ + install -m755 bip32.h $(INSTALL_PREFIX)/include/ + $(LDCONFIG) .PHONY: clean clean: