From 1ed61df28e31271c2e19b772a27b2e0f82f2fa82 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 | 4 +++- Makefile | 38 ++++++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e2562b3..d42f803 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,8 +21,10 @@ 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} fi + curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.uv/bin" >> $GITHUB_PATH diff --git a/Makefile b/Makefile index c469875..8ecf454 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,38 @@ 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 + +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 := ls + 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) @@ -24,7 +56,7 @@ fuzz: fuzz_target install: libbip32.so install -m755 libbip32.so /usr/local/lib/ install -m755 bip32.h /usr/local/include/ - ldconfig + $(LDCONFIG) .PHONY: clean clean: