mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Fixed compiling for Apple Silicon arm64 w/HomeBrew
This commit is contained in:
27
CHANGES
27
CHANGES
@@ -1,4 +1,29 @@
|
|||||||
The following are the changes from calc version 2.14.0.7 to date:
|
The following are the changes from calc version 2.14.0.9 to date:
|
||||||
|
|
||||||
|
Due to issues with clang and Apple Silicon, ARCH_CFLAGS is now,
|
||||||
|
by default, empty:
|
||||||
|
|
||||||
|
ARCH_CFLAGS=
|
||||||
|
|
||||||
|
If you want to use, say, -march=native, then either change
|
||||||
|
the Makefile or make with:
|
||||||
|
|
||||||
|
make all ARCH_CFLAGS='-march=native'
|
||||||
|
|
||||||
|
Added arch and hardware as GNU Makefile computed values.
|
||||||
|
As with ${target}, ${arch} and ${hardware} is computed by uname:
|
||||||
|
|
||||||
|
target: uname -a
|
||||||
|
arch: uname -p
|
||||||
|
hardware: uname -m
|
||||||
|
|
||||||
|
Fixed compiling calc on Apple Silicon with homebrew. On Apple
|
||||||
|
Silicon, HomeBrew installs on into a different location. The
|
||||||
|
Makefile checks if ${hardware} is arm64 and adjusts the location
|
||||||
|
of libraries such as readline and history accordingly.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.14.0.7 to 2.14.0.8:
|
||||||
|
|
||||||
Fizzbin is a better word. :-)
|
Fizzbin is a better word. :-)
|
||||||
|
|
||||||
|
22
Makefile
22
Makefile
@@ -46,6 +46,12 @@
|
|||||||
ifeq ($(target),)
|
ifeq ($(target),)
|
||||||
target=$(shell uname -s 2>/dev/null)
|
target=$(shell uname -s 2>/dev/null)
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(arch),)
|
||||||
|
arch=$(shell uname -p 2>/dev/null)
|
||||||
|
endif
|
||||||
|
ifeq ($(hardware),)
|
||||||
|
hardware=$(shell uname -m 2>/dev/null)
|
||||||
|
endif
|
||||||
|
|
||||||
# The shell used by this Makefile
|
# The shell used by this Makefile
|
||||||
#
|
#
|
||||||
@@ -135,15 +141,27 @@ USE_READLINE= -DUSE_READLINE
|
|||||||
#READLINE_LIB= -L/usr/gnu/lib -lreadline -lhistory -lncurses
|
#READLINE_LIB= -L/usr/gnu/lib -lreadline -lhistory -lncurses
|
||||||
#READLINE_LIB= -L${PREFIX}/lib -lreadline -lhistory -lncurses
|
#READLINE_LIB= -L${PREFIX}/lib -lreadline -lhistory -lncurses
|
||||||
ifeq ($(target),Darwin)
|
ifeq ($(target),Darwin)
|
||||||
# homebrew installs readline & history libs in ${PREFIX}/opt/readline/lib
|
ifeq ($(hardware),arm64)
|
||||||
|
# Darwin arm64 homebrew installs readline & history libs in /opt/homebrew/opt/readline/lib
|
||||||
|
READLINE_LIB= -L/opt/homebrew/opt/readline/lib -lreadline -lhistory -lncurses
|
||||||
|
else
|
||||||
|
# Assume Darwin non-arm64 is x86_64
|
||||||
|
# Darwin x86_64 homebrew installs readline & history libs in ${PREFIX}/opt/readline/lib
|
||||||
READLINE_LIB= -L${PREFIX}/opt/readline/lib -lreadline -lhistory -lncurses
|
READLINE_LIB= -L${PREFIX}/opt/readline/lib -lreadline -lhistory -lncurses
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
READLINE_LIB= -lreadline -lhistory -lncurses
|
READLINE_LIB= -lreadline -lhistory -lncurses
|
||||||
endif
|
endif
|
||||||
#
|
#
|
||||||
ifeq ($(target),Darwin)
|
ifeq ($(target),Darwin)
|
||||||
# homebrew installs readline & history *.h under ${PREFIX}/opt/readline/include
|
ifeq ($(hardware),arm64)
|
||||||
|
# Darwin arm64 homebrew installs readline & history *.h under /opt/homebrew/opt/readline/include
|
||||||
|
READLINE_INCLUDE= -I${PREFIX}/opt/homebrew/opt/readline/include
|
||||||
|
else
|
||||||
|
# Assume Darwin non-arm64 is x86_64
|
||||||
|
# Darwin x86_64 homebrew installs readline & history *.h under ${PREFIX}/opt/readline/include
|
||||||
READLINE_INCLUDE= -I${PREFIX}/opt/readline/include
|
READLINE_INCLUDE= -I${PREFIX}/opt/readline/include
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
READLINE_INCLUDE=
|
READLINE_INCLUDE=
|
||||||
endif
|
endif
|
||||||
|
@@ -79,6 +79,12 @@ SHELL= /bin/sh
|
|||||||
ifeq ($(target),)
|
ifeq ($(target),)
|
||||||
target=$(shell uname -s 2>/dev/null)
|
target=$(shell uname -s 2>/dev/null)
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(arch),)
|
||||||
|
arch=$(shell uname -p 2>/dev/null)
|
||||||
|
endif
|
||||||
|
ifeq ($(hardware),)
|
||||||
|
hardware=$(shell uname -m 2>/dev/null)
|
||||||
|
endif
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
#endif /* end of skip for non-Gnu makefiles */
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@@ -1280,8 +1286,8 @@ EXTRA_LDFLAGS=
|
|||||||
# The ARCH_CFLAGS are ${CC} when compiling C files. They follow
|
# The ARCH_CFLAGS are ${CC} when compiling C files. They follow
|
||||||
# CCMISC and precede EXTRA_CFLAGS.
|
# CCMISC and precede EXTRA_CFLAGS.
|
||||||
#
|
#
|
||||||
ARCH_CFLAGS= -march=native
|
ARCH_CFLAGS=
|
||||||
#ARCH_CFLAGS=
|
#ARCH_CFLAGS= -march=native
|
||||||
|
|
||||||
# COMMON_CFLAGS are the common ${CC} flags used for all programs, both
|
# COMMON_CFLAGS are the common ${CC} flags used for all programs, both
|
||||||
# intermediate and final calc and calc related programs
|
# intermediate and final calc and calc related programs
|
||||||
|
Reference in New Issue
Block a user