diff --git a/configure/os/CONFIG_SITE.darwinCommon.darwinCommon b/configure/os/CONFIG_SITE.darwinCommon.darwinCommon index 297fd8e4f..6cc9a9de0 100644 --- a/configure/os/CONFIG_SITE.darwinCommon.darwinCommon +++ b/configure/os/CONFIG_SITE.darwinCommon.darwinCommon @@ -3,21 +3,24 @@ # Site specific definitions for darwin builds #------------------------------------------------------- -# Note the dir/firstword/wildcard functions below are used -# to avoid warnings about missing directories. +# These settings are designed for users of Homebrew. +# Users of other third-party package managers are welcome to +# provide patches appropriate for their manager. +ifneq (,$(wildcard /opt/homebrew)) + # Default location on aarch64 + HOMEBREW_DIR = /opt/homebrew +else ifneq (,$(wildcard /usr/local/Homebrew)) + # Default location on x86_64 + HOMEBREW_DIR = /usr/local +endif -# Mix-and-match of different package systems is probably not advisable, -# but you can try that if you like... - -# Uncomment these definitions when using Homebrew packages: -#OP_SYS_INCLUDES += -I/usr/local/include -#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /usr/local/lib/*)))) - -# Uncomment these definitions when using DarwinPorts packages: -#OP_SYS_INCLUDES += -I/opt/local/include -#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /opt/local/lib/*)))) - -# Uncomment these definitions when using Fink packages: -#OP_SYS_INCLUDES += -I/sw/include -#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /sw/lib/*)))) +# Look for Homebrew's readline +ifneq (,$(wildcard $(HOMEBREW_DIR)/opt/readline)) + READLINE_DIR = $(HOMEBREW_DIR)/opt/readline +endif +# Use GNU readline if it's avaiilable +ifneq (,$(wildcard $(READLINE_DIR)/include/readline/readline.h)) + INCLUDES_READLINE = -I$(READLINE_DIR)/include + LDFLAGS_READLINE = -L$(READLINE_DIR)/lib +endif diff --git a/documentation/RELEASE_NOTES.md b/documentation/RELEASE_NOTES.md index a17b70f83..e4d23e753 100644 --- a/documentation/RELEASE_NOTES.md +++ b/documentation/RELEASE_NOTES.md @@ -41,6 +41,14 @@ using the new `iocshArgStringRecord` and `iocshArgStringPath` argument types. Both function identically to `iocshArgString` but indicate how to suggest completion strings. +Builds on macOS (darwin-x86 or darwin-aarch64 targets) normally use Apple's +libedit library in readline compatibility mode, which doesn't support the tab +completion API that GNU readline provides. You can use Homebrew or some other +third-party package manager to install the GNU readline package, then edit the +configure/os/CONFIG_SITE.darwinCommon.darwinCommon file to have EPICS use the +real thing to get tab completion in the IOC shell. The default settings in that +file currently look for and use a Homebrew-installed readline if present. + ### Add FMOD as CALC Expression The floating point modulo function `FMOD(NUM,DEN)` has been added to the CALC