Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -261,20 +261,30 @@ man5dir = $(mandir)/man5
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8

ifndef IN_NIX_SHELL
# M1 macos machines with homebrew will install the native libraries in
# /opt/homebrew instead of /usr/local, most likely because they
# emulate x86_64 compatibility via Rosetta, and wanting to keep the
# libraries separate. This however means we also need to switch out
# the paths accordingly when we detect we're on an M1 macos machine.
ifeq ("$(OS)-$(ARCH)", "Darwin-arm64")
CPATH := /opt/homebrew/include
LIBRARY_PATH := /opt/homebrew/lib
CPATH ?= /opt/homebrew/include
LIBRARY_PATH ?= /opt/homebrew/lib
else
CPATH := /usr/local/include
LIBRARY_PATH := /usr/local/lib
CPATH ?= /usr/local/include
LIBRARY_PATH ?= /usr/local/lib
endif
endif

ifneq ($(CPATH),)
CPATH_CFLAGS := -I$(CPATH)
endif
ifneq ($(LIBRARY_PATH),)
LIBRARY_PATH_LDFLAGS := -L$(LIBRARY_PATH)
endif

# Detect OpenSSL and SQLite paths dynamically using brew --prefix
ifndef IN_NIX_SHELL
ifeq ("$(OS)", "Darwin")
OPENSSL_PREFIX := $(shell brew --prefix openssl@3 2>/dev/null || brew --prefix openssl 2>/dev/null || echo "")
SQLITE_PREFIX := $(shell brew --prefix sqlite 2>/dev/null || echo "")
Expand All @@ -288,9 +298,10 @@ CPPFLAGS += -I$(SQLITE_PREFIX)/include
PKG_CONFIG_PATH := $(SQLITE_PREFIX)/lib/pkgconfig:$(PKG_CONFIG_PATH)
endif
endif
endif

CPPFLAGS += -DCLN_NEXT_VERSION="\"$(CLN_NEXT_VERSION)\"" -DPKGLIBEXECDIR="\"$(pkglibexecdir)\"" -DBINDIR="\"$(bindir)\"" -DPLUGINDIR="\"$(plugindir)\"" -DCCAN_TAL_NEVER_RETURN_NULL=1
CFLAGS = $(CPPFLAGS) $(CWARNFLAGS) $(CDEBUGFLAGS) $(COPTFLAGS) -I $(CCANDIR) $(EXTERNAL_INCLUDE_FLAGS) -I . -I$(CPATH) $(SQLITE3_CFLAGS) $(SODIUM_CFLAGS) $(POSTGRES_INCLUDE) $(FEATURES) $(COVFLAGS) $(DEV_CFLAGS) -DSHACHAIN_BITS=48 -DJSMN_PARENT_LINKS $(PIE_CFLAGS) $(COMPAT_CFLAGS) $(CSANFLAGS)
CFLAGS = $(CPPFLAGS) $(CWARNFLAGS) $(CDEBUGFLAGS) $(COPTFLAGS) -I $(CCANDIR) $(EXTERNAL_INCLUDE_FLAGS) -I . $(CPATH_CFLAGS) $(SQLITE3_CFLAGS) $(SODIUM_CFLAGS) $(POSTGRES_INCLUDE) $(FEATURES) $(COVFLAGS) $(DEV_CFLAGS) -DSHACHAIN_BITS=48 -DJSMN_PARENT_LINKS $(PIE_CFLAGS) $(COMPAT_CFLAGS) $(CSANFLAGS)

# If CFLAGS is already set in the environment of make (to whatever value, it
# does not matter) then it would export it to subprocesses with the above value
Expand All @@ -308,9 +319,9 @@ ifeq ($(STATIC),1)
# For MacOS, Jacob Rapoport <jacob@rumblemonkey.com> changed this to:
# -L/usr/local/lib -lsqlite3 -lz -Wl,-lm -lpthread -ldl $(COVFLAGS)
# But that doesn't static link.
LDLIBS = -L$(CPATH) -Wl,-dn $(SQLITE3_LDLIBS) -Wl,-dy -lm -lpthread -ldl $(COVFLAGS)
LDLIBS = $(LIBRARY_PATH_LDFLAGS) -Wl,-dn $(SQLITE3_LDLIBS) -Wl,-dy -lm -lpthread -ldl $(COVFLAGS)
else
LDLIBS = -L$(CPATH) -lm $(SQLITE3_LDLIBS) $(COVFLAGS)
LDLIBS = $(LIBRARY_PATH_LDFLAGS) -lm $(SQLITE3_LDLIBS) $(COVFLAGS)
endif

ifeq ($(HAVE_FUNCTION_SECTIONS),1)
Expand Down
24 changes: 15 additions & 9 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ BASE_WARNFLAGS="-Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstri

OS=$(uname -s)
ARCH=$(uname -m)
if [ "$OS-$ARCH" = "Darwin-arm64" ]; then
CPATH=/opt/homebrew/include
LIBRARY_PATH=/opt/homebrew/lib
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/opt/homebrew/opt/sqlite/lib/pkgconfig
else
CPATH=/usr/local/lib
LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opt/sqlite/lib/pkgconfig
if [ -z "$IN_NIX_SHELL" ]; then
if [ "$OS-$ARCH" = "Darwin-arm64" ]; then
CPATH=${CPATH:-/opt/homebrew/include}
LIBRARY_PATH=${LIBRARY_PATH:-/opt/homebrew/lib}
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/opt/homebrew/opt/sqlite/lib/pkgconfig
else
CPATH=${CPATH:-/usr/local/include}
LIBRARY_PATH=${LIBRARY_PATH:-/usr/local/lib}
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opt/sqlite/lib/pkgconfig
fi
fi

: ${PKG_CONFIG=pkg-config}
Expand Down Expand Up @@ -432,7 +434,11 @@ fi
# Clean up on exit.
trap "rm -f $CONFIG_VAR_FILE.$$*" 0

$CONFIGURATOR --extra-tests --autotools-style --var-file=$CONFIG_VAR_FILE.$$ --header-file=$CONFIG_HEADER.$$ --configurator-cc="$CONFIGURATOR_CC" --wrapper="$CONFIGURATOR_WRAPPER" "$CC" ${CWARNFLAGS-$BASE_WARNFLAGS} $CDEBUGFLAGS $COPTFLAGS $CSANFLAGS -I$CPATH -L$LIBRARY_PATH $SQLITE3_CFLAGS $SODIUM_CFLAGS $POSTGRES_INCLUDE <<EOF
CONFIGURATOR_PATH_FLAGS=
[ -z "$CPATH" ] || CONFIGURATOR_PATH_FLAGS="$CONFIGURATOR_PATH_FLAGS -I$CPATH"
[ -z "$LIBRARY_PATH" ] || CONFIGURATOR_PATH_FLAGS="$CONFIGURATOR_PATH_FLAGS -L$LIBRARY_PATH"

$CONFIGURATOR --extra-tests --autotools-style --var-file=$CONFIG_VAR_FILE.$$ --header-file=$CONFIG_HEADER.$$ --configurator-cc="$CONFIGURATOR_CC" --wrapper="$CONFIGURATOR_WRAPPER" "$CC" ${CWARNFLAGS-$BASE_WARNFLAGS} $CDEBUGFLAGS $COPTFLAGS $CSANFLAGS $CONFIGURATOR_PATH_FLAGS $SQLITE3_CFLAGS $SODIUM_CFLAGS $POSTGRES_INCLUDE <<EOF

var=HAVE_ZLIB
desc=zlib support
Expand Down
38 changes: 36 additions & 2 deletions nix/shells.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,48 @@
system,
...
}:
let
gsed = pkgs.writeShellScriptBin "gsed" ''
exec ${pkgs.gnused}/bin/sed "$@"
'';
libeatmydata = pkgs.libeatmydata.overrideAttrs (_: {
doCheck = false;
nativeCheckInputs = [ ];
});
devTools = [
libeatmydata
pkgs.shellcheck
pkgs.uv
gsed
];
shellHook = ''
_cln_stop_regtest_on_exit() {
if command -v stop_ln >/dev/null 2>&1; then
stop_ln >/dev/null 2>&1 || true
fi
}

trap _cln_stop_regtest_on_exit EXIT
'';
in
{
devShells = {
default = pkgs.mkShell { inputsFrom = [ config.packages.default ]; };
postgres = pkgs.mkShell { inputsFrom = [ config.packages.cln-postgres ]; };
default = pkgs.mkShell {
inputsFrom = [ config.packages.default ];
packages = devTools;
inherit shellHook;
};
postgres = pkgs.mkShell {
inputsFrom = [ config.packages.cln-postgres ];
packages = devTools;
inherit shellHook;
};
rust = pkgs.craneLib.devShell {
checks = {
inherit (self.checks.${system}) rust;
};
packages = devTools;
inherit shellHook;
};
};
};
Expand Down
Loading