mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Compare commits
31 Commits
prod-2.14.
...
v2.14.3.5
Author | SHA1 | Date | |
---|---|---|---|
|
28449fd187 | ||
|
d88b128b2d | ||
|
bc048bc029 | ||
|
4d32b138ed | ||
|
3cd8fd7053 | ||
|
b0f19c1011 | ||
|
fe520975cf | ||
|
f097dd7dc1 | ||
|
3a7e763b28 | ||
|
661e99829e | ||
|
faf3a4fab6 | ||
|
7d8d4cb5ea | ||
|
af9b052fe9 | ||
|
40f8654aa4 | ||
|
92c8d89ed1 | ||
|
1e2d02e449 | ||
|
e0df1646fc | ||
|
ee900ec6ec | ||
|
6ee34e709d | ||
|
f81d67b322 | ||
|
21ab25d1c9 | ||
|
06dcb3e51e | ||
|
6e0e48e17e | ||
|
f416973a31 | ||
|
b408b59d8d | ||
|
77405e1d84 | ||
|
da623e13cb | ||
|
f025dcf0d8 | ||
|
3bfcaae767 | ||
|
bf5b56d263 | ||
|
0b044ce972 |
19
.gitignore
vendored
19
.gitignore
vendored
@@ -6,26 +6,27 @@
|
|||||||
#
|
#
|
||||||
.dynamic
|
.dynamic
|
||||||
.hsrc
|
.hsrc
|
||||||
Makefile.our
|
.static
|
||||||
NOTES
|
|
||||||
align32.h
|
align32.h
|
||||||
args.h
|
args.h
|
||||||
cal/.all
|
cal/.all
|
||||||
calc
|
calc
|
||||||
calc.1
|
calc.1
|
||||||
calc.usage
|
|
||||||
calcerr.c
|
calcerr.c
|
||||||
calcerr.h
|
calcerr.h
|
||||||
|
calc.spec
|
||||||
|
calc-static
|
||||||
|
calc.usage
|
||||||
charbit.h
|
charbit.h
|
||||||
conf.h
|
conf.h
|
||||||
cscript/.all
|
|
||||||
cscript/4dsphere
|
cscript/4dsphere
|
||||||
cscript/README
|
cscript/.all
|
||||||
cscript/fproduct
|
cscript/fproduct
|
||||||
cscript/mersenne
|
cscript/mersenne
|
||||||
cscript/piforever
|
cscript/piforever
|
||||||
cscript/plus
|
cscript/plus
|
||||||
cscript/powerterm
|
cscript/powerterm
|
||||||
|
cscript/README
|
||||||
cscript/simple
|
cscript/simple
|
||||||
cscript/square
|
cscript/square
|
||||||
custom/.all
|
custom/.all
|
||||||
@@ -67,8 +68,6 @@ have_unused.h
|
|||||||
have_urandom.h
|
have_urandom.h
|
||||||
have_ustat.h
|
have_ustat.h
|
||||||
help/.all
|
help/.all
|
||||||
help/COPYING
|
|
||||||
help/COPYING-LGPL
|
|
||||||
help/binding
|
help/binding
|
||||||
help/bindings
|
help/bindings
|
||||||
help/bug
|
help/bug
|
||||||
@@ -78,6 +77,8 @@ help/change
|
|||||||
help/changes
|
help/changes
|
||||||
help/contrib
|
help/contrib
|
||||||
help/copy
|
help/copy
|
||||||
|
help/COPYING
|
||||||
|
help/COPYING-LGPL
|
||||||
help/cscript
|
help/cscript
|
||||||
help/custom_cal
|
help/custom_cal
|
||||||
help/errorcode
|
help/errorcode
|
||||||
@@ -98,8 +99,12 @@ libcalc*
|
|||||||
libcustcalc*
|
libcustcalc*
|
||||||
longbits
|
longbits
|
||||||
longbits.h
|
longbits.h
|
||||||
|
Makefile.our
|
||||||
|
NOTES
|
||||||
sample_many
|
sample_many
|
||||||
|
sample_many-static
|
||||||
sample_rand
|
sample_rand
|
||||||
|
sample_rand-static
|
||||||
tags
|
tags
|
||||||
terminal.h
|
terminal.h
|
||||||
ver_calc
|
ver_calc
|
||||||
|
121
CHANGES
121
CHANGES
@@ -1,4 +1,123 @@
|
|||||||
The following are the changes from calc version 2.14.2.1 to date:
|
The following are the changes from calc version 2.14.3.4 to 2.14.3.5:
|
||||||
|
|
||||||
|
Under macOS, to reduce dependency chains, we remove functions
|
||||||
|
and data that are unreachable by the entry point or exported
|
||||||
|
symbols. In particular, the macOS linker is used with both
|
||||||
|
"-dead_strip" and "-dead_strip_dylibs".
|
||||||
|
|
||||||
|
The libcalc shared library is now linked with libcustcalc.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.14.3.0 to 2.14.3.4:
|
||||||
|
|
||||||
|
Fix typo in the `make debug` Makefile rule.
|
||||||
|
|
||||||
|
Improved .gitignore to ignore .static, calc-static,
|
||||||
|
sample_many-static and sample_rand-static.
|
||||||
|
|
||||||
|
Improved error messages when trying to compile with
|
||||||
|
with one calc type (when BLD_TYPE=calc-dynamic-only or
|
||||||
|
BLD_TYPE=calc-static-only) and install with the other.
|
||||||
|
|
||||||
|
When installing with BLD_TYPE=calc-static-only, the
|
||||||
|
installed calc and calc-static are links to each other.
|
||||||
|
Thanks to GitHub user @TurtleWilly for this suggestion.
|
||||||
|
|
||||||
|
The dynamic shared libraries are not installed if they are not
|
||||||
|
built. So when installing with BLD_TYPE=calc-static-only, the
|
||||||
|
install rule will not attempt to install dynamic shared libraries.
|
||||||
|
Thanks to GitHub user @TurtleWilly for bringing to our attention,
|
||||||
|
problems related to building a statically linked calc under macOS.
|
||||||
|
|
||||||
|
Updated comments in Makefile.local for how to Diagnosing memory,
|
||||||
|
thread, and crash issues under RHEL and macOS.
|
||||||
|
|
||||||
|
We no longer support the Makefile variable ${ALLOW_CUSTOM} to be empty.
|
||||||
|
Normally ${ALLOW_CUSTOM} is:
|
||||||
|
|
||||||
|
ALLOW_CUSTOM= -DCUSTOM
|
||||||
|
|
||||||
|
Now, to disable custom disable custom even if -C is given, use:
|
||||||
|
|
||||||
|
ALLOW_CUSTOM="-UCUSTOM"
|
||||||
|
|
||||||
|
Dropped support of Makefile.simple and custom/Makefile.simple.
|
||||||
|
The calc version 2.14.3.0 is the last release that supported
|
||||||
|
the Makefile.simple and custom/Makefile.simple files.
|
||||||
|
Now, a make that supports makefile conditional syntax is required.
|
||||||
|
The simple target, a target that only was used for Makefile.simple
|
||||||
|
was removed.
|
||||||
|
|
||||||
|
Moved makefile variables that configure calc and configure how to
|
||||||
|
compile calc from Makefile into a new Makefile.config file.
|
||||||
|
|
||||||
|
The Makeifle includes the Makefile.config file.
|
||||||
|
The cal/Makeifle includes the Makefile.config file.
|
||||||
|
The cscript/Makeifle includes the Makefile.config file.
|
||||||
|
The custom/Makeifle includes the Makefile.config file.
|
||||||
|
The help/Makeifle includes the Makefile.config file.
|
||||||
|
|
||||||
|
Now, the Makefile.config file will consistently configure
|
||||||
|
calc and how calc is compiled and built by all calc Makefiles.
|
||||||
|
The custom/Makefile no longer includes Makefile.
|
||||||
|
|
||||||
|
The platform target section from the old Makefile has been moved
|
||||||
|
to a new file, Makefile.target. Improved the format and comments
|
||||||
|
in target information.
|
||||||
|
|
||||||
|
The Makeifle includes the Makefile.target file.
|
||||||
|
The cal/Makeifle includes the Makefile.target file.
|
||||||
|
The cscript/Makeifle includes the Makefile.target file.
|
||||||
|
The custom/Makeifle includes the Makefile.target file.
|
||||||
|
The help/Makeifle includes the Makefile.target file.
|
||||||
|
|
||||||
|
Now, the Makefile.target file will consistently set
|
||||||
|
target information for all calc Makefiles.
|
||||||
|
|
||||||
|
The cal/Makeifle includes the Makefile.local file.
|
||||||
|
The cscript/Makeifle includes the Makefile.local file.
|
||||||
|
The custom/Makeifle includes the Makefile.local file.
|
||||||
|
The help/Makeifle includes the Makefile.local file.
|
||||||
|
|
||||||
|
Thus, one may modify or append many Makefile variables
|
||||||
|
in all calc Makefiles.
|
||||||
|
|
||||||
|
Removed the ${CAL_PASSDOWN}, ${HELP_PASSDOWN}, ${HELP_PASSDOWN},
|
||||||
|
${CSCRIPT_PASSDOWN} Makefile variables as the new Makefile
|
||||||
|
include files keep Makefile variables in sync.
|
||||||
|
|
||||||
|
Fixed the ability of calc to compile when CUSTOM is undefined
|
||||||
|
(i.e., -UCUSTOM). The libcustcalc is always built, regardless
|
||||||
|
of the $(ALLOW_CUSTOM} Makefile variable. However when CUSTOM
|
||||||
|
is undefined, the bulk of custom functions are not defined.
|
||||||
|
|
||||||
|
Dropped the use of Makefile variable ${SET_INSTALL_NAME}.
|
||||||
|
Under macOS it was always needed, elsewhere it was not.
|
||||||
|
|
||||||
|
Added Makefile variable ${VER} to hold the calc major release version.
|
||||||
|
The calc major release version is a 3 level version (x.y.z).
|
||||||
|
|
||||||
|
Under macOS, the current version of both libcalc and libcustcalc
|
||||||
|
shared libraries are set to the current calc major release version.
|
||||||
|
|
||||||
|
Under macOS, to reduce dependency chains, we remove functions and
|
||||||
|
data that are unreachable by the entry point or exported symbols.
|
||||||
|
In particular, the macOS linker is used with "-dead_strip" by default.
|
||||||
|
|
||||||
|
While calc on macOS will execute if linker used with "-dead_strip_dylibs"
|
||||||
|
and CUSTOM is defined, other applications that use libcalc but not
|
||||||
|
libcustcalc (such as sample_many and sample_rand) will fail to execute
|
||||||
|
due to missile symbols. Therefore "-dead_strip_dylibs" is not used
|
||||||
|
by default when ALLOW_CUSTOM is "-DCUSTOM" under macOS.
|
||||||
|
Thanks to GitHub user @TurtleWilly for bringing to our attention,
|
||||||
|
problems related to use of "-dead_strip_dylibs".
|
||||||
|
|
||||||
|
When installing shared libraries, libcalc.x.y.z will be a link
|
||||||
|
to the libcalc shared library and libcustcalc.x.y.z will be a link
|
||||||
|
to the libcustcal shared library.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.14.2.1 to 2.14.3.0:
|
||||||
|
|
||||||
Added cal/fnv_tool.cal, a calc resource file defining:
|
Added cal/fnv_tool.cal, a calc resource file defining:
|
||||||
|
|
||||||
|
763
HOWTO.INSTALL
763
HOWTO.INSTALL
@@ -1,495 +1,390 @@
|
|||||||
|
# Installing a pre-compiled calc from an RPM
|
||||||
|
|
||||||
IMPORTANT: Please see the section at the bottom of this file for
|
If your platform supports RPMs, you may want to go to:
|
||||||
some important information on Makefiles used in calc.
|
|
||||||
|
|
||||||
###################################################################
|
https://github.com/lcn2/calc/releases
|
||||||
# IMPORTANT: DO NOT use make in parallel mode!!! #
|
|
||||||
###################################################################
|
|
||||||
# Unfortunately due to the complex dependency issues between #
|
|
||||||
# Makefile, Makefile.ship and custom/Makefile, parallel make #
|
|
||||||
# is NOT recommended. Sorry (tm Canada) :) #
|
|
||||||
###################################################################
|
|
||||||
|
|
||||||
Installing calc from the bzip2-ed tarball: 4 easy steps:
|
and see if there is a pre-compiled version of calc that you may install.
|
||||||
|
|
||||||
(0) If your platform supports i686 RPMs, you may want to go to:
|
Open up the 'Assets' tag below a given release and download these RPMs:
|
||||||
|
|
||||||
https://github.com/lcn2/calc/releases
|
* calc*.rpm
|
||||||
|
|
||||||
Open up the 'Assets' tag below a given release and
|
- all that is needed if you just want to use calc
|
||||||
download these RPMs:
|
|
||||||
|
|
||||||
* calc*.i686.rpm
|
If your platform supports rpm and matches one of the "calc*.rpm" files, you
|
||||||
- all that is needed if you just want to use calc
|
may just install that "calc*.rpm". For exammple on an x86_64 system:
|
||||||
|
|
||||||
* calc-devel-*.i686.rpm
|
dnf install calc-x.y.z.cv-ww.x86_64.rpm
|
||||||
- calc *.h header and *.a lib files for use in other programs
|
|
||||||
|
|
||||||
* calc.*.src.rpm
|
where "calc-x.y.z.cv-ww.x86_64.rpm" is the name of the calc RPM.
|
||||||
- calc source via a SRPM package
|
|
||||||
|
|
||||||
Alternately to the above github link, you might try looking at
|
In addition, if your platform supports rpm and matches one of the
|
||||||
the RPMs under:
|
"calc*.rpm" files, you may also install the calc *.h header and *.a lib
|
||||||
|
files for use in other programs:
|
||||||
|
|
||||||
http://www.isthe.com/chongo/src/calc/
|
* calc-devel-*.rpm
|
||||||
|
|
||||||
=-=
|
- calc *.h header and *.a lib files for use in other programs
|
||||||
|
|
||||||
The following 4 steps apply to calc source tree that comes from either:
|
Alternately to the above github link, you might try looking at the RPMs under:
|
||||||
|
|
||||||
bunzip2 -c calc-*.tar.bz2 | tar -xvf -
|
http://www.isthe.com/chongo/src/calc/
|
||||||
|
|
||||||
or from:
|
|
||||||
|
|
||||||
rpm -ivh calc-*.src.rpm
|
|
||||||
cd /var/tmp
|
|
||||||
bunzip2 -c /usr/src/redhat/SOURCES/calc-*.tar.bz2 | tar -xvf -
|
|
||||||
|
|
||||||
4 steps:
|
|
||||||
|
|
||||||
(1) Look at the makefile, and adjust it to suit your needs.
|
|
||||||
|
|
||||||
The top level Makefile and the custom/Makefile require a modern
|
|
||||||
Make (such as gmake) or an equivalently advanced make. On many
|
|
||||||
targets, the default make is sufficient. On FreeBSD for example,
|
|
||||||
probably want to use gmake instead of make.
|
|
||||||
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! By default, calc assumes you have the readline package installed !
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! macOS does not have readline, so mac users need to make a choice !
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
The readline package (-lreadline, -lhistory, -lncurses) used by and
|
|
||||||
linked into calc by default. If your system does NOT have those
|
|
||||||
libaraies, then you have two options:
|
|
||||||
|
|
||||||
(1-with readline) Install the readline package <- Recommended
|
|
||||||
|
|
||||||
Install the readline package first, then compile calc.
|
|
||||||
|
|
||||||
For information on the readline package, see:
|
|
||||||
|
|
||||||
https://tiswww.case.edu/php/chet/readline/rltop.html
|
|
||||||
|
|
||||||
MacOS users can use MacPorts or HomeBrew to install readline:
|
|
||||||
|
|
||||||
https://www.macports.org
|
|
||||||
https://brew.sh
|
|
||||||
|
|
||||||
Or compile from the readline.git repo:
|
|
||||||
|
|
||||||
http://git.savannah.gnu.org/cgit/readline.git/
|
|
||||||
|
|
||||||
(1-w/o readline) Compile calc without readline (not recommended)
|
|
||||||
|
|
||||||
Why do we not recommend (1b)? Because using calc with readline
|
|
||||||
provides a beter user experience.
|
|
||||||
|
|
||||||
If you feel you must use calc without the readline package, then you
|
|
||||||
will need to change your calc Makefile with this patch:
|
|
||||||
|
|
||||||
--- Makefile.old 2021-12-29 14:57:56.000000000 -0800
|
|
||||||
+++ Makefile 2021-12-29 14:59:13.000000000 -0800
|
|
||||||
@@ -1140,14 +1140,14 @@
|
|
||||||
#
|
|
||||||
# If in doubt, set USE_READLINE, READLINE_LIB and READLINE_INCLUDE to nothing.
|
|
||||||
#
|
|
||||||
-#USE_READLINE=
|
|
||||||
-USE_READLINE= -DUSE_READLINE
|
|
||||||
+USE_READLINE=
|
|
||||||
+#USE_READLINE= -DUSE_READLINE
|
|
||||||
#
|
|
||||||
-#READLINE_LIB=
|
|
||||||
-#READLINE_EXTRAS=
|
|
||||||
+READLINE_LIB=
|
|
||||||
+READLINE_EXTRAS=
|
|
||||||
#
|
|
||||||
-READLINE_LIB= -lreadline
|
|
||||||
-READLINE_EXTRAS= -lhistory -lncurses
|
|
||||||
+#READLINE_LIB= -lreadline
|
|
||||||
+#READLINE_EXTRAS= -lhistory -lncurses
|
|
||||||
#
|
|
||||||
#READLINE_LIB= -L/usr/gnu/lib -lreadline
|
|
||||||
#READLINE_EXTRAS= -lhistory -lncurses
|
|
||||||
@@ -1181,8 +1181,8 @@
|
|
||||||
# # and using the readline, history, and ncurses libraries.
|
|
||||||
# #
|
|
||||||
ifneq ($(HOMEBREW_PREFIX),)
|
|
||||||
-READLINE_LIB:= -L${HOMEBREW_PREFIX}/opt/readline/lib -lreadline
|
|
||||||
-READLINE_INCLUDE:= -I${HOMEBREW_PREFIX}/opt/readline/include
|
|
||||||
+#READLINE_LIB:= -L${HOMEBREW_PREFIX}/opt/readline/lib -lreadline
|
|
||||||
+#READLINE_INCLUDE:= -I${HOMEBREW_PREFIX}/opt/readline/include
|
|
||||||
endif
|
|
||||||
#
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
If your target system does not have a modern Makefile
|
|
||||||
(such as gmake), then you will need to change your
|
|
||||||
Makefile.simple with this patch:
|
|
||||||
|
|
||||||
--- Makefile.simple.orig 2021-12-29 15:00:53.000000000 -0800
|
|
||||||
+++ Makefile.simple 2021-12-29 15:01:00.000000000 -0800
|
|
||||||
@@ -1005,14 +1005,14 @@
|
|
||||||
#
|
|
||||||
# If in doubt, set USE_READLINE, READLINE_LIB and READLINE_INCLUDE to nothing.
|
|
||||||
#
|
|
||||||
-#USE_READLINE=
|
|
||||||
-USE_READLINE= -DUSE_READLINE
|
|
||||||
+USE_READLINE=
|
|
||||||
+#USE_READLINE= -DUSE_READLINE
|
|
||||||
#
|
|
||||||
-#READLINE_LIB=
|
|
||||||
-#READLINE_EXTRAS=
|
|
||||||
+READLINE_LIB=
|
|
||||||
+READLINE_EXTRAS=
|
|
||||||
#
|
|
||||||
-READLINE_LIB= -lreadline
|
|
||||||
-READLINE_EXTRAS= -lhistory -lncurses
|
|
||||||
+#READLINE_LIB= -lreadline
|
|
||||||
+#READLINE_EXTRAS= -lhistory -lncurses
|
|
||||||
#
|
|
||||||
#READLINE_LIB= -L/usr/gnu/lib -lreadline
|
|
||||||
#READLINE_EXTRAS= -lhistory -lncurses
|
|
||||||
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! By default, calc assumes you are using a modern gnu-like make tool !
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
If your target system does not have a modern Makefile (such as gmake),
|
|
||||||
then you should try using the Makefile.simple and custom/Makefile.simple
|
|
||||||
files:
|
|
||||||
|
|
||||||
mv Makefile Makefile.gmake
|
|
||||||
cp Makefile.simple Makefile
|
|
||||||
mv custom/Makefile custom/Makefile.gmake
|
|
||||||
cp custom/Makefile.simple custom/Makefile
|
|
||||||
|
|
||||||
The Makefile, as shipped, is suitable for installation under
|
|
||||||
Linux and Un*x-like environments. For the most part, the default
|
|
||||||
values should work. If in doubt, follow the 'When in doubt'
|
|
||||||
suggestion.
|
|
||||||
|
|
||||||
If you are using a modern make (such as gmake), you may override
|
|
||||||
any values set in the Makefile by adding them to Makefile.local
|
|
||||||
using the := directive. For example:
|
|
||||||
|
|
||||||
HAVE_STRING_H:= YES
|
|
||||||
HAVE_TIMES_H:= YES
|
|
||||||
SED:= /usr/local/bin/nsed
|
|
||||||
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! If you are building under Windows or a Windows-like environment !
|
|
||||||
! (such as Cygwin or DJGPP), read the README.WINDOWS file. !
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
You should determine if these Makefile variables are reasonable:
|
|
||||||
|
|
||||||
INCDIR Where the system include (.h) files are kept.
|
|
||||||
BINDIR Where to install calc binary files.
|
|
||||||
LIBDIR Where to install calc link library (*.a) files.
|
|
||||||
CALC_SHAREDIR Where to install calc help, .cal, startup, and
|
|
||||||
config files.
|
|
||||||
|
|
||||||
You may want to change the default installation locations for
|
|
||||||
these values, which are based on the 4 values listed above:
|
|
||||||
|
|
||||||
HELPDIR where the help directory is installed
|
|
||||||
CALC_INCDIR where the calc include files are installed
|
|
||||||
CUSTOMCALDIR where custom *.cal files are installed
|
|
||||||
CUSTOMHELPDIR where custom help files are installed
|
|
||||||
CUSTOMINCDIR where custom .h files are installed
|
|
||||||
SCRIPTDIR where calc shell scripts are installed
|
|
||||||
|
|
||||||
If you want to install calc files under a top level directory,
|
|
||||||
then set the T value:
|
|
||||||
|
|
||||||
The calc install is performed under ${T}, the calc build is
|
|
||||||
performed under /. The purpose for ${T} is to allow someone
|
|
||||||
to install calc somewhere other than into the system area.
|
|
||||||
|
|
||||||
For example, if:
|
|
||||||
|
|
||||||
BINDIR= /usr/bin
|
|
||||||
LIBDIR= /usr/lib
|
|
||||||
CALC_SHAREDIR= /usr/share/calc
|
|
||||||
|
|
||||||
and if:
|
# Building calc from a source tree
|
||||||
|
|
||||||
T= /var/tmp/testing
|
|
||||||
|
|
||||||
Then the installation locations will be:
|
|
||||||
|
|
||||||
calc binary files: /var/tmp/testing/usr/bin
|
## Step 0: Obtain the calc source tree
|
||||||
calc link library: /var/tmp/testing/usr/lib
|
|
||||||
calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
|
||||||
... etc ... /var/tmp/testing/...
|
|
||||||
|
|
||||||
If ${T} is empty, calc is installed under /, which is the same
|
Go to the site:
|
||||||
top of tree for which it was built. If ${T} is non-empty, then
|
|
||||||
calc is installed under ${T}, as if one had to chroot under
|
|
||||||
${T} for calc to operate.
|
|
||||||
|
|
||||||
Look for the section that starts:
|
https://github.com/lcn2/calc/releases
|
||||||
|
|
||||||
################
|
Look for release with a file of the form:
|
||||||
# compiler set #
|
|
||||||
################
|
|
||||||
|
|
||||||
Select a compiler set by commenting in the appropriate set
|
calc-x.y.z.v.tar.bz2
|
||||||
of cc options. As shipped the Makefile assumes a gcc-like
|
|
||||||
environment such as Linux. If a more appropriate cc set if
|
|
||||||
found below, comment out the Linux set and comment in that
|
|
||||||
set or edit the gcc set or the common cc set as needed.
|
|
||||||
|
|
||||||
You may want to change these Makefile variables from their defaults:
|
A release marked with a green "(Latest)" is a production release
|
||||||
|
that as undergone a fair amount of testing.
|
||||||
|
|
||||||
RANLIB
|
A release marked with an orange "(Pre-release)" is likly to be
|
||||||
|
more stable than the top of the master branch, as they do undergo
|
||||||
|
thru a reasonable level of regression testing, just not to
|
||||||
|
the level of a "(Latest)" production release.
|
||||||
|
|
||||||
You may or may not need RANLIB when building libraries.
|
Use the followig command to uncompress the bzip2 compressed tarball:
|
||||||
As shipped the Makefile assumes RANLIB is needed.
|
|
||||||
Comment the in/out the RANLIB value if ranlib does
|
|
||||||
not work or does not exist.
|
|
||||||
|
|
||||||
CALCPAGER
|
bunzip2 -c calc-*.tar.bz2 | tar -xvf -
|
||||||
|
|
||||||
You may want to change the default pager used by calc.
|
NOTE: An alternate location for calc bzip2 compressed tarballs is:
|
||||||
As shipped the Makefile assumes 'more'. On your system
|
|
||||||
you may find 'less' to be a better pager.
|
|
||||||
|
|
||||||
DEBUG
|
http://www.isthe.com/chongo/src/calc/
|
||||||
|
|
||||||
Some compilers (to put it mildly) have bugs. Sometimes the
|
|
||||||
DEBUG Makefile variable causes the compiler / optimizer to
|
|
||||||
produce bad code. Other compilers do just fine.
|
|
||||||
|
|
||||||
If possible try to use DEBUG=-O3 -g3 (maximum optimization
|
|
||||||
and debug symbols). If the calc test fails (see step 3),
|
|
||||||
try lowering either the -O value and/or the -g3. Also try
|
|
||||||
using -Osomething without -g.
|
|
||||||
|
|
||||||
Adjust other Makefile variables as needed.
|
### Obtaining the experimental top of the master branch calc source
|
||||||
|
|
||||||
(2) build calc:
|
You may also fetch the top of the master branch of the GitHub repo
|
||||||
|
if you wish to see what the latest source code looks like:
|
||||||
|
|
||||||
The top level Makefile and the custom/Makefile require a GNU
|
git clone https://github.com/lcn2/calc.git
|
||||||
Make (such as gmake) or an equivalently advanced make. On many
|
|
||||||
targets, the default make is sufficient. On FreeBSD for example,
|
|
||||||
one must use gmake instead of make.
|
|
||||||
|
|
||||||
If your target system does not have GNU Make (or equivalent), then
|
IMPORTANT:
|
||||||
you should try using the Makefile.simple and custom/Makefile.simple
|
|
||||||
files:
|
|
||||||
|
|
||||||
mv Makefile Makefile.gmake
|
The latest source code may be "experimental in nature". You may be
|
||||||
cp Makefile.simple Makefile
|
better off using a released bzip2 compressed tarball instead.
|
||||||
mv custom/Makefile custom/Makefile.gmake
|
Released bzip2 compressed tarballs tend to be more well tested
|
||||||
cp custom/Makefile.simple custom/Makefile
|
than the top of the master branch.
|
||||||
|
|
||||||
make all
|
|
||||||
|
|
||||||
==> We are interested in any compiler warnings (and errors) that
|
|
||||||
you may find. See the BUGS file if you find any compiler
|
|
||||||
warning or errors.
|
|
||||||
|
|
||||||
NOTE: You can force calc to build with only static libs:
|
## Step 1: Makefile considerations
|
||||||
|
|
||||||
make clobber
|
|
||||||
make calc-static-only BLD_TYPE=calc-static-only
|
|
||||||
|
|
||||||
or force calc to build with only dynamic libs:
|
### IMPORTANT: Make support of conditional syntax required:
|
||||||
|
|
||||||
make clobber
|
To compile calc, you must use a make that supports the use of
|
||||||
make calc-dynamic-only BLD_TYPE=calc-dynamic-only
|
"Conditional syntax". As nearly all modern make tools
|
||||||
|
support "Conditional syntax", thus should not be a problem
|
||||||
|
for you. If for some reason your make tool does not support
|
||||||
|
"Conditional syntax", consider upgraded to a make that does,
|
||||||
|
such as the Gnu Make tool:
|
||||||
|
|
||||||
(3) test calc:
|
https://www.gnu.org/software/make/
|
||||||
|
|
||||||
make check
|
The Gnu Make is not required per-se, just a modern make tool
|
||||||
|
that supports "Conditional syntax".
|
||||||
|
|
||||||
NOTE: For a quiet check which only prints if something goes wrong:
|
|
||||||
|
|
||||||
make chk
|
### Review Makefiles
|
||||||
|
|
||||||
(4) install calc:
|
Review Makefile.config and Makefile.target.
|
||||||
|
|
||||||
make install
|
If you are curious, review Makefile as well, although
|
||||||
|
there may be little in the main Makefile that you may
|
||||||
|
want to change.
|
||||||
|
|
||||||
|
Consider modifying Makefile.local by replace values or
|
||||||
|
appending values found in Makefile.config and Makefile.target.
|
||||||
|
|
||||||
|
If you are adding custom functions, review custom/Makefile
|
||||||
|
and modify custom/Makefile as needed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Suggestion: Modify Makefile.local
|
||||||
|
|
||||||
|
All Makefiles include Makefile.local just before the
|
||||||
|
first and default all rule. So Makefile.local may be
|
||||||
|
used to modify, replace or append values to Makefile variables.
|
||||||
|
|
||||||
|
In most cases, to change the way that calc is made, consider
|
||||||
|
adding lines to Makefile.local instead of modifying other Makefiles.
|
||||||
|
|
||||||
|
A recommended way to adjust it is to add lines to: Makefile.local
|
||||||
|
using the := syntax to replace values such as:
|
||||||
|
|
||||||
|
DEBUG:= -O0 -g
|
||||||
|
|
||||||
|
or by using the += syntax to append to values such as:
|
||||||
|
|
||||||
|
DEBUG+= -ipa
|
||||||
|
|
||||||
|
You can, of course, modify other Makefiles. We only
|
||||||
|
suggest using Makefile.local to minimize the number
|
||||||
|
of source files you modify.
|
||||||
|
|
||||||
|
And finally, you can always just add arguments to your
|
||||||
|
make command line instead of modifying a Makefile. For example:
|
||||||
|
|
||||||
|
make clobber all DEBUG="-O0 -g"
|
||||||
|
|
||||||
|
|
||||||
|
## readline package assumed by default:
|
||||||
|
|
||||||
|
By "readline package" we refer to the combination of the
|
||||||
|
readline library, the history library, and the ncurses library.
|
||||||
|
|
||||||
|
By default, calc assumes you have the readline package installed.
|
||||||
|
The readline package (-lreadline, -lhistory, -lncurses) used by and
|
||||||
|
linked into calc by default.
|
||||||
|
|
||||||
|
If your system (such as macOS) does NOT have those libaraies, then
|
||||||
|
you have two options:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Install the readline package:
|
||||||
|
|
||||||
|
We recommend that you install the readline package first, then compile calc.
|
||||||
|
|
||||||
|
For information on the readline package, see:
|
||||||
|
|
||||||
|
https://tiswww.case.edu/php/chet/readline/rltop.html
|
||||||
|
|
||||||
|
MacOS users can use MacPorts or HomeBrew to install readline:
|
||||||
|
|
||||||
|
https://www.macports.org
|
||||||
|
https://brew.sh
|
||||||
|
|
||||||
|
Or compile from the readline.git repo:
|
||||||
|
|
||||||
|
http://git.savannah.gnu.org/cgit/readline.git/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Compile calc without readline:
|
||||||
|
|
||||||
|
Why do we not recommend this option because using calc with readline
|
||||||
|
provides a beter user experience.
|
||||||
|
|
||||||
|
If you feel you must use calc without the readline package, then you
|
||||||
|
will need to compile with:
|
||||||
|
|
||||||
|
make clobber all USE_READLINE= READLINE_EXTRAS= READLINE_INCLUDE= READLINE_LIB=
|
||||||
|
|
||||||
|
or add to Makefile.local, these lines:
|
||||||
|
|
||||||
|
USE_READLINE=
|
||||||
|
READLINE_EXTRAS=
|
||||||
|
READLINE_INCLUDE=
|
||||||
|
READLINE_LIB=
|
||||||
|
|
||||||
|
See the "Suggestion: Modify Makefile.local" section above for
|
||||||
|
information on the Makefile.local file.
|
||||||
|
|
||||||
|
|
||||||
|
### Windows or a Windows-like environments:
|
||||||
|
|
||||||
|
Currently Windows is not a well supported platform for calc. There are
|
||||||
|
people within Microsoft who plan to assist us in being able to allow
|
||||||
|
the standard Microsoft Windows developor environment to compile calc.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Makefile variables to consider:
|
||||||
|
|
||||||
|
You should determine if these Makefile variables are reasonable:
|
||||||
|
|
||||||
|
INCDIR Where the system include (.h) files are kept.
|
||||||
|
BINDIR Where to install calc binary files.
|
||||||
|
LIBDIR Where to install calc link library (*.a) files.
|
||||||
|
CALC_SHAREDIR Where to install calc help, .cal, startup, and config files.
|
||||||
|
|
||||||
|
You may want to change the default installation locations for
|
||||||
|
these values, which are based on the 4 values listed above:
|
||||||
|
|
||||||
|
HELPDIR where the help directory is installed
|
||||||
|
CALC_INCDIR where the calc include files are installed
|
||||||
|
CUSTOMCALDIR where custom *.cal files are installed
|
||||||
|
CUSTOMHELPDIR where custom help files are installed
|
||||||
|
CUSTOMINCDIR where custom .h files are installed
|
||||||
|
SCRIPTDIR where calc shell scripts are installed
|
||||||
|
|
||||||
|
If you want to install calc files under a top level directory, then set the T value:
|
||||||
|
|
||||||
|
The calc install is performed under ${T}, the calc build is
|
||||||
|
performed under /. The purpose for ${T} is to allow someone
|
||||||
|
to install calc somewhere other than into the system area.
|
||||||
|
|
||||||
|
For example, if:
|
||||||
|
|
||||||
|
BINDIR= /usr/bin
|
||||||
|
LIBDIR= /usr/lib
|
||||||
|
CALC_SHAREDIR= /usr/share/calc
|
||||||
|
|
||||||
|
and if:
|
||||||
|
|
||||||
|
T= /var/tmp/testing
|
||||||
|
|
||||||
|
Then the installation locations will be:
|
||||||
|
|
||||||
|
calc binary files: /var/tmp/testing/usr/bin
|
||||||
|
calc link library: /var/tmp/testing/usr/lib
|
||||||
|
calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
||||||
|
... etc ... /var/tmp/testing/...
|
||||||
|
|
||||||
|
If ${T} is empty, calc is installed under /, which is the same
|
||||||
|
top of tree for which it was built. If ${T} is non-empty, then
|
||||||
|
calc is installed under ${T}, as if one had to chroot under
|
||||||
|
${T} for calc to operate.
|
||||||
|
|
||||||
|
Again, consider adding replacement lines or append linbes to
|
||||||
|
the Makefile.local file. See "Suggestion Modify Makefile.local
|
||||||
|
instead of Makefile" above. For example:
|
||||||
|
|
||||||
|
T:= /var/tmp/testing
|
||||||
|
|
||||||
|
See the "Suggestion: Modify Makefile.local" section above for
|
||||||
|
information on the Makefile.local file.
|
||||||
|
|
||||||
|
|
||||||
|
### platform target section
|
||||||
|
|
||||||
|
The file, Makefile.target, contains information about various platforms.
|
||||||
|
The current list of targets in Makefile.target are:
|
||||||
|
|
||||||
|
- Linux target
|
||||||
|
- Apple macOS / Darwin target
|
||||||
|
- FreeBSD target
|
||||||
|
- OpenBSD target
|
||||||
|
- Cygwin target
|
||||||
|
- simple target
|
||||||
|
- default target (when target is empty)
|
||||||
|
|
||||||
|
If you wish to modiy your target platform, consider doing
|
||||||
|
so via the Makefile.local file. See "Suggestion Modify Makefile.local
|
||||||
|
instead of Makefile" above.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Step 2: compile calc
|
||||||
|
|
||||||
|
Remove any previous compile attempts and compile by default:
|
||||||
|
|
||||||
|
make clobber all
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Force calc to build with only static libs:
|
||||||
|
|
||||||
|
You may force calc to build with only static libs:
|
||||||
|
|
||||||
|
make clobber calc-static-only BLD_TYPE=calc-static-only
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Force calc to build with only dynamic shared libs:
|
||||||
|
|
||||||
|
You may force calc to build with only dynamic libs:
|
||||||
|
|
||||||
|
make clobber calc-dynamic-only BLD_TYPE=calc-dynamic-only
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Reports of compiler warnings (and errors) as welcome
|
||||||
|
|
||||||
|
We are interested learning about any compiler warnings (and errors) that you may find.
|
||||||
|
See the BUGS file if you find any compiler warning or errors.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Step 3: test calc
|
||||||
|
|
||||||
|
You may run the calc regression test suite, after successfully compiling, by:
|
||||||
|
|
||||||
|
make check
|
||||||
|
|
||||||
|
For a more quiet check which only prints if something goes wrong, use:
|
||||||
|
|
||||||
|
make chk
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Step 4: install calc
|
||||||
|
|
||||||
|
Depending on permissions, you may need to become the super-user:
|
||||||
|
|
||||||
|
sudo -s
|
||||||
|
|
||||||
|
before you install:
|
||||||
|
|
||||||
|
make install
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Step n: calc help - getting started
|
||||||
|
|
||||||
|
Calc is distributed with an extensive collection of help files that
|
||||||
|
are accessible from the command line. The following assume that you
|
||||||
|
are running calc from the distribution directory or that you have
|
||||||
|
installed calc. In these examples, the "; " is the calc prompt, not
|
||||||
|
something that you type.
|
||||||
|
|
||||||
|
For list of help topics:
|
||||||
|
|
||||||
|
; help
|
||||||
|
|
||||||
|
For overview of calc overview:
|
||||||
|
|
||||||
|
; help intro
|
||||||
|
; help overview
|
||||||
|
; help command
|
||||||
|
; help define
|
||||||
|
; help statement
|
||||||
|
; help variable
|
||||||
|
; help usage
|
||||||
|
|
||||||
|
For list of builtin functions:
|
||||||
|
|
||||||
|
; help builtin
|
||||||
|
|
||||||
|
C programmers should note some unexpected differences with the calc syntax:
|
||||||
|
|
||||||
|
; help unexpected
|
||||||
|
|
||||||
|
Calc is shipped with a standard collection of calc resource files.
|
||||||
|
For a list of calc standard resource files see:
|
||||||
|
|
||||||
|
; help resource
|
||||||
|
|
||||||
We suggest that you might want to read the README.FIRST file and look at
|
We suggest that you might want to read the README.FIRST file and look at
|
||||||
the calc help subsystem. See also the README.md file.
|
the calc help subsystem. See also the README.md file.
|
||||||
|
|
||||||
In general, if you run into problems, read the BUGS file and follow
|
In general, if you run into problems, read the BUGS file and follow the instructions.
|
||||||
the instructions.
|
|
||||||
|
|
||||||
=-=
|
# IMPORTANT: parallel make not supported
|
||||||
|
|
||||||
On calc Makefiles:
|
We do not support making calc using a parallel make as most parallel
|
||||||
|
make systems fail to understand the depedency relationships between
|
||||||
|
a numner of important make rules and thus fail to properly compile calc.
|
||||||
|
|
||||||
How to tell the origin of of a Makefile:
|
|
||||||
|
|
||||||
The "# SRC: ... - ..." comment line near the top
|
|
||||||
of the file indicates the origin of this file.
|
|
||||||
In each segment below, we indicate what the SRC
|
|
||||||
comment like will read.
|
|
||||||
|
|
||||||
SHELL= ...
|
## Copyright (C) 1999-2007,2021,2023 Landon Curt Noll
|
||||||
|
|
||||||
On some systems, /bin/sh is a rather reduced shell with
|
|
||||||
deprecated behavior.
|
|
||||||
|
|
||||||
If your system has a up to date, bash shell, then
|
|
||||||
you may wish to edit the Makefile to use:
|
|
||||||
|
|
||||||
SHELL= /bin/bash
|
|
||||||
|
|
||||||
On some systems such as macOS, the bash shell is very
|
|
||||||
far behind to the point where is cannot be depended on.
|
|
||||||
On such systems, the sh may be a much better alternative
|
|
||||||
shell for this Makefile to use:
|
|
||||||
|
|
||||||
SHELL= /bin/sh
|
|
||||||
|
|
||||||
Makefile.local
|
|
||||||
|
|
||||||
# SRC: Makefile.local - tweaks to the top level Makefile
|
|
||||||
|
|
||||||
Between releases, Makefile.local at the top of the master branch
|
|
||||||
will contain how we typically build calc and test calc (FYI: we
|
|
||||||
normally enable things such as -Werror -Wextra -pedantic). When we
|
|
||||||
push out a release, Makefile.local will be stripped of non-comment
|
|
||||||
lines. Thus, releases of calc, and, released "calc*.src.rpm"
|
|
||||||
files and the source tarballs, will have a Makefile.local with
|
|
||||||
only comments.
|
|
||||||
|
|
||||||
If the Makefile is not suitable for you (say because you fetch it
|
|
||||||
from the top of the master branch between releases), then you may
|
|
||||||
wish to remove all non-comment lines. I.e., lines that do not start
|
|
||||||
with the # character.
|
|
||||||
|
|
||||||
This Makefile.local assumes you have a modern make command such as
|
|
||||||
the GNU make. See Makefile.simple comment below if you do not
|
|
||||||
have such a modern make command.
|
|
||||||
|
|
||||||
In the calc GitHub repo, Makefile is the calc build environment
|
|
||||||
and Makefile.ship is the top level Makefile:
|
|
||||||
|
|
||||||
https://github.com/lcn2/calc
|
|
||||||
|
|
||||||
Makefile
|
|
||||||
|
|
||||||
# SRC: Makefile.ship - top level Makefile
|
|
||||||
|
|
||||||
This is the main top level Makefile.
|
|
||||||
|
|
||||||
In calc packages such as RPMs, and the tar.bz2 source tarball,
|
|
||||||
Makefile.ship has been moved into Makefile.
|
|
||||||
|
|
||||||
In the calc GitHub repo, Makefile is the calc build environment
|
|
||||||
and Makefile.ship is the top level Makefile:
|
|
||||||
|
|
||||||
https://github.com/lcn2/calc
|
|
||||||
|
|
||||||
The Makefile.simple rule of Makefile.ship, when forming the
|
|
||||||
Makefile.simple file, removes lines from Makefile.ship between
|
|
||||||
pairs of '#if 0' AND '#endif':
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
lines removed when forming Makefile.simple
|
|
||||||
...
|
|
||||||
lines removed when forming Makefile.simple
|
|
||||||
#endif
|
|
||||||
|
|
||||||
The '#if 0' AND '#endif' MUST be at the start of the line.
|
|
||||||
Any text after the '#if 0' OR '#endif' is ignored.
|
|
||||||
|
|
||||||
While they may look like a CPP directives, they are not. The
|
|
||||||
inline awk script of the Makefile.simple rule does NOT allow
|
|
||||||
them to nest:
|
|
||||||
|
|
||||||
#if 0 /* DO NOT DO THIS */
|
|
||||||
lines removed when forming Makefile.simple
|
|
||||||
...
|
|
||||||
#if 0 /* DO NOT DO THIS */
|
|
||||||
...
|
|
||||||
#endif /* DO NOT DO THIS */
|
|
||||||
...
|
|
||||||
#endif /* DO NOT DO THIS */
|
|
||||||
|
|
||||||
Makefile.simple
|
|
||||||
|
|
||||||
# SRC: Makefile.simple - non-GNU version
|
|
||||||
|
|
||||||
This is a non-GNU or simple Makefile designed for environments
|
|
||||||
that do not have a modern make command.
|
|
||||||
|
|
||||||
If you have a Makefile.simple file, use these commands to
|
|
||||||
form a Makefile:
|
|
||||||
|
|
||||||
if [ -f Makefile ]; then mv -f Makefile Makefile.orig; fi
|
|
||||||
cp Makefile.simple Makefile
|
|
||||||
|
|
||||||
The Makefile.simple rule from Makefile.ship is used to construct
|
|
||||||
this file from the contents of Makefile.ship.
|
|
||||||
|
|
||||||
In calc packages such as RPMs, and the tar.bz2 source the
|
|
||||||
Makefile.simple exists. In the calc GitHub repo:
|
|
||||||
|
|
||||||
https://github.com/lcn2/calc
|
|
||||||
|
|
||||||
this file does NOT exist and must be made via the Makefile.simple
|
|
||||||
make rule. Therefore, non-GNU and simple make commands are NOT
|
|
||||||
supported by the calc GitHub repo master branch. Instead, you
|
|
||||||
need to extract Makefile.simple from one of the calc tar.bz2
|
|
||||||
source tarball source from a calc source mirror:
|
|
||||||
|
|
||||||
http://www.isthe.com/chongo/tech/comp/calc/calc-mirror.html
|
|
||||||
|
|
||||||
custom/Makefile
|
|
||||||
|
|
||||||
# SRC: Makefile via make -f Makefile custom/Makefile
|
|
||||||
|
|
||||||
This is the custom directory Makefile.
|
|
||||||
|
|
||||||
custom/Makefile.simple
|
|
||||||
|
|
||||||
# SRC: custom/Makefile.simple - non-GNU version
|
|
||||||
|
|
||||||
This is a non-GNU or simple Makefile for the custom directory
|
|
||||||
that is designed for environments that do not have a modern make
|
|
||||||
command.
|
|
||||||
|
|
||||||
In calc packages such as RPMs, and the tar.bz2 source the
|
|
||||||
Makefile.simple exists. In the calc GitHub repo:
|
|
||||||
|
|
||||||
https://github.com/lcn2/calc
|
|
||||||
|
|
||||||
this file does NOT exist and must be made via the
|
|
||||||
custom/Makefile.simple make rule. Therefore, non-GNU and simple
|
|
||||||
make commands are NOT supported by the calc GitHub repo master
|
|
||||||
branch. Instead, you need to extract custom/Makefile.simple
|
|
||||||
from one of the calc tar.bz2 source tarball source from a calc
|
|
||||||
source mirror:
|
|
||||||
|
|
||||||
http://www.isthe.com/chongo/tech/comp/calc/calc-mirror.html
|
|
||||||
|
|
||||||
cal/Makefile
|
|
||||||
|
|
||||||
# SRC: cal/Makefile
|
|
||||||
|
|
||||||
The Makefile for the cal sub-directory.
|
|
||||||
|
|
||||||
cscript/Makefile
|
|
||||||
|
|
||||||
# SRC: cscript/Makefile
|
|
||||||
|
|
||||||
The Makefile for the cscript sub-directory.
|
|
||||||
|
|
||||||
help/Makefile
|
|
||||||
|
|
||||||
# SRC: help/Makefile
|
|
||||||
|
|
||||||
The Makefile for the help sub-directory.
|
|
||||||
|
|
||||||
## Copyright (C) 1999-2007,2021 Landon Curt Noll
|
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## Calc is open software; you can redistribute it and/or modify it under
|
||||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
|
1410
Makefile.config
Normal file
1410
Makefile.config
Normal file
File diff suppressed because it is too large
Load Diff
109
Makefile.local
109
Makefile.local
@@ -1,14 +1,44 @@
|
|||||||
#!/usr/bin/env make
|
#!/usr/bin/env make
|
||||||
#
|
#
|
||||||
# Makefile.local - local Makefile variables
|
# Makefile.local - modify, replace or append calc Makefile variables
|
||||||
#
|
#
|
||||||
# This file is included by Makefile after the last Makefile is set and
|
# Copyright (C) 2023 Landon Curt Noll
|
||||||
# before the first make rule. This makes this file suitable to override
|
#
|
||||||
# Makefile variables.
|
# Suggestion: Read the HOWTO.INSTALL file.
|
||||||
|
#
|
||||||
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of version 2.1 of the GNU Lesser General Public License
|
||||||
|
# as published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||||
|
# Public License for more details.
|
||||||
|
#
|
||||||
|
# A copy of version 2.1 of the GNU Lesser General Public License is
|
||||||
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
#
|
||||||
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
|
#
|
||||||
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
|
||||||
|
####
|
||||||
|
# This file is included all calc Makefiles after the last Makefile variable
|
||||||
|
# is set and before the first make rule. This makes this file suitable to
|
||||||
|
# modify, replace or append Makefile variables.
|
||||||
#
|
#
|
||||||
# To replace a Makefile variable, use := symbols. For example:
|
# To replace a Makefile variable, use := symbols. For example:
|
||||||
#
|
#
|
||||||
# CCWERR:= -Werror
|
# CCWERR:= -Werror
|
||||||
|
#
|
||||||
|
# You can append to an existing Makefile variable using '+=' symbols.
|
||||||
|
# For example:
|
||||||
|
#
|
||||||
|
# CFLAGS+= -Ofast
|
||||||
|
####
|
||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
# NOTE: For this and other commended out examples in this file, #
|
# NOTE: For this and other commended out examples in this file, #
|
||||||
@@ -17,24 +47,65 @@
|
|||||||
# Comments start with a #-character. #
|
# Comments start with a #-character. #
|
||||||
###################################################################
|
###################################################################
|
||||||
|
|
||||||
# You can append to an existing Makefile variable using '+=' symbols.
|
####
|
||||||
# For example:
|
# RHEL Diagnosing memory, thread, and crash issues:
|
||||||
#
|
#
|
||||||
# CFLAGS+= -Ofast
|
# For more info see: https://github.com/google/sanitizers/wiki/AddressSanitizer
|
||||||
|
#
|
||||||
|
# This comment block was tested under:
|
||||||
|
#
|
||||||
|
# RHEL9 gcc version 11.3.1 20221121 (Red Hat 11.3.1-4) (GCC)
|
||||||
|
#
|
||||||
|
# with:
|
||||||
|
#
|
||||||
|
# libasan-11.3.1-4.3.el9.x86_64 libubsan-11.3.1-4.3.el9.x86_64
|
||||||
|
#
|
||||||
|
# NOTE: With the above version, these are NOT supported:
|
||||||
|
#
|
||||||
|
# UNSUPPORTED_FSANITIZE:= -fsanitize=nullability-arg -fsanitize=nullability-assign
|
||||||
|
#
|
||||||
|
# Uncomment these lines:
|
||||||
|
#
|
||||||
|
# DEBUG:= -O0 -g
|
||||||
|
# FSANITIZE:= -fsanitize=undefined -fsanitize=address -fsanitize=bool -fsanitize=bounds
|
||||||
|
# FSANITIZE+= -fsanitize=enum -fsanitize=vptr -fsanitize=integer-divide-by-zero
|
||||||
|
# FSANITIZE+= -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow
|
||||||
|
# FSANITIZE+= -fsanitize=nonnull-attribute -fsanitize=returns-nonnull-attribute
|
||||||
|
# FSANITIZE+= -fsanitize=null -fsanitize=shift -fsanitize=signed-integer-overflow
|
||||||
|
# FSANITIZE+= -fsanitize=unreachable -fsanitize=vla-bound
|
||||||
|
# CFLAGS+= -Wno-invalid-command-line-argument ${FSANITIZE} -fno-omit-frame-pointer
|
||||||
|
# LDFLAGS+= -Wno-invalid-command-line-argument ${FSANITIZE} -fno-omit-frame-pointer
|
||||||
|
# CALC_ENV+= ASAN_OPTIONS=detect_stack_use_after_return=1
|
||||||
|
####
|
||||||
|
|
||||||
# For example, a AddressSanitizer. You do NOT want to do this by
|
####
|
||||||
# by default! Do this only if you are debugging with libasan:
|
# macOS Diagnosing memory, thread, and crash issues:
|
||||||
#
|
#
|
||||||
# For Linux gcc version 11.3.1 with libasan-11.3.1-2.1 you might try:
|
# For more info see: https://github.com/google/sanitizers/wiki/AddressSanitizer
|
||||||
#
|
#
|
||||||
# DEBUG:= -O0 -g
|
# This comment block was tested under:
|
||||||
# CFLAGS+= -fsanitize=address -fno-omit-frame-pointer
|
|
||||||
# LDFLAGS+= -fsanitize=address -fno-omit-frame-pointer
|
|
||||||
# CALC_ENV+= ASAN_OPTIONS=detect_stack_use_after_return=1
|
|
||||||
#
|
#
|
||||||
# For macOS 13.2.1 with clang version 14.0.0 (clang-1400.0.29.202) you might try:
|
# macOS 13.5 with clang version 14.0.3 (clang-1403.0.22.14.1)
|
||||||
#
|
#
|
||||||
# DEBUG:= -O0 -g
|
# For more info for clang to Diagnosing memory, thread, and crash issues early, see:
|
||||||
# CFLAGS+= -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined
|
#
|
||||||
# LDFLAGS+= -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined
|
# https://developer.apple.com/documentation/xcode/diagnosing-memory-thread-and-crash-issues-early
|
||||||
# CALC_ENV+= ASAN_OPTIONS=detect_stack_use_after_return=1
|
#
|
||||||
|
# NOTE: With the above version, these are NOT supported:
|
||||||
|
#
|
||||||
|
# UNSUPPORTED_FSANITIZE:= -fsanitize-nullability-return
|
||||||
|
#
|
||||||
|
# Uncomment these lines:
|
||||||
|
#
|
||||||
|
# DEBUG:= -O0 -g
|
||||||
|
# FSANITIZE:= -fsanitize=undefined -fsanitize=address -fsanitize=bool -fsanitize=bounds
|
||||||
|
# FSANITIZE+= -fsanitize=enum -fsanitize=vptr -fsanitize=integer-divide-by-zero
|
||||||
|
# FSANITIZE+= -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow
|
||||||
|
# FSANITIZE+= -fsanitize=nonnull-attribute -fsanitize=nullability-arg
|
||||||
|
# FSANITIZE+= -fsanitize=nullability-assign -fsanitize=returns-nonnull-attribute
|
||||||
|
# FSANITIZE+= -fsanitize=null -fsanitize=object-size -fsanitize=shift
|
||||||
|
# FSANITIZE+= -fsanitize=signed-integer-overflow -fsanitize=unreachable -fsanitize=vla-bound
|
||||||
|
# CFLAGS+= -Wno-invalid-command-line-argument ${FSANITIZE} -fno-omit-frame-pointer
|
||||||
|
# LDFLAGS+= -Wno-invalid-command-line-argument ${FSANITIZE} -fno-omit-frame-pointer
|
||||||
|
# CALC_ENV+= ASAN_OPTIONS=detect_stack_use_after_return=1
|
||||||
|
####
|
||||||
|
6909
Makefile.simple
6909
Makefile.simple
File diff suppressed because it is too large
Load Diff
432
Makefile.target
Normal file
432
Makefile.target
Normal file
@@ -0,0 +1,432 @@
|
|||||||
|
#!/usr/bin/env make
|
||||||
|
#
|
||||||
|
# Makefile.target - platform target section
|
||||||
|
#
|
||||||
|
# Copyright (C) 2023 Landon Curt Noll
|
||||||
|
#
|
||||||
|
# Suggestion: Read the HOWTO.INSTALL file.
|
||||||
|
#
|
||||||
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of version 2.1 of the GNU Lesser General Public License
|
||||||
|
# as published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||||
|
# Public License for more details.
|
||||||
|
#
|
||||||
|
# A copy of version 2.1 of the GNU Lesser General Public License is
|
||||||
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
#
|
||||||
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
|
#
|
||||||
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
|
||||||
|
|
||||||
|
# SUGGESTION: Instead of modifying this file, consider adding
|
||||||
|
# statements to modify, replace or append Makefile
|
||||||
|
# variables in the Makefile.local file.
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# NOTE: These lines are included by both Makefile and custom/Makefile #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
##################################################################################
|
||||||
|
#-=-=-=-=-=- platform target section - targets that override defaults -=-=-=-=-=-#
|
||||||
|
##################################################################################
|
||||||
|
|
||||||
|
# Common values set in targets
|
||||||
|
#
|
||||||
|
# BLD_TYPE determines if calc is built with static and/or dynamic libs.
|
||||||
|
# Set this value to one of:
|
||||||
|
#
|
||||||
|
# BLD_TYPE= calc-dynamic-only
|
||||||
|
# BLD_TYPE= calc-static-only
|
||||||
|
#
|
||||||
|
# CC_SHARE are flags given to ${CC} to build .o files suitable for shared libs
|
||||||
|
# DEFAULT_LIB_INSTALL_PATH is where calc programs look for calc shared libs
|
||||||
|
# LD_SHARE are common flags given to ${CC} to link with shared libraries
|
||||||
|
# LIBCALC_SHLIB are flags given to ${CC} to build libcalc shared libraries
|
||||||
|
# LIBCUSTCALC_SHLIB are flags given to ${CC} to build libcustcalc shared lib
|
||||||
|
#
|
||||||
|
# NOTE: The above 5 values are unused if BLD_TYPE= calc-static-only
|
||||||
|
#
|
||||||
|
# CC_STATIC are flags given to ${CC} to build .o files suitable for static libs
|
||||||
|
# LD_STATIC are common flags given to ${CC} to link with static libraries
|
||||||
|
# LIBCALC_STATIC are flags given to ${CC} to build libcalc static libraries
|
||||||
|
# LIBCUSTCALC_STATIC are flags given to ${CC} to build libcustcalc static lib
|
||||||
|
#
|
||||||
|
# NOTE: The above 4 values are unused if BLD_TYPE= calc-dynamic-only
|
||||||
|
#
|
||||||
|
# CCOPT are flags given to ${CC} for optimization
|
||||||
|
# CCWARN are flags given to ${CC} for warning message control
|
||||||
|
#
|
||||||
|
# The following are given to ${CC}:
|
||||||
|
#
|
||||||
|
# WNO_IMPLICT
|
||||||
|
# WNO_ERROR_LONG_LONG
|
||||||
|
# WNO_LONG_LONG
|
||||||
|
#
|
||||||
|
# when compiling special .o files that may need special compile options:
|
||||||
|
#
|
||||||
|
# NOTE: These flags simply turn off certain compiler warnings,
|
||||||
|
# which is useful only when CCWERR is set to -Werror.
|
||||||
|
#
|
||||||
|
# NOTE: If your compiler does not have these -Wno files, just
|
||||||
|
# set these variables to nothing as in:
|
||||||
|
#
|
||||||
|
# WNO_IMPLICT=
|
||||||
|
# WNO_ERROR_LONG_LONG=
|
||||||
|
# WNO_LONG_LONG=
|
||||||
|
#
|
||||||
|
# CCWERR are flags given to ${CC} to make warnings fatal errors
|
||||||
|
# NOTE: CCWERR is only set in development Makefiles and must only be
|
||||||
|
# used with ${CC}, not ${LCC}. If you do not want the compiler
|
||||||
|
# to abort on warnings, then leave CCWERR blank.
|
||||||
|
# CCMISC are misc flags given to ${CC}
|
||||||
|
#
|
||||||
|
# CCBAN is given to ${CC} in order to control if banned.h is in effect.
|
||||||
|
# NOTE: See where CCBAN is defined above for details.
|
||||||
|
#
|
||||||
|
# LCC is how the C compiler is invoked on locally executed intermediate programs
|
||||||
|
# CC is how the C compiler is invoked (with an optional Purify)
|
||||||
|
#
|
||||||
|
# Specific target overrides or modifications to default values
|
||||||
|
|
||||||
|
|
||||||
|
################
|
||||||
|
# Linux target #
|
||||||
|
################
|
||||||
|
|
||||||
|
ifeq ($(target),Linux)
|
||||||
|
|
||||||
|
# default build type for this target
|
||||||
|
#
|
||||||
|
BLD_TYPE= calc-dynamic-only
|
||||||
|
|
||||||
|
# target specific library parameters
|
||||||
|
#
|
||||||
|
CC_SHARE= -fPIC
|
||||||
|
DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:${PREFIX}/lib
|
||||||
|
LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \
|
||||||
|
"-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}"
|
||||||
|
LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}"
|
||||||
|
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
|
||||||
|
|
||||||
|
# static library option
|
||||||
|
#
|
||||||
|
CC_STATIC=
|
||||||
|
LD_STATIC=
|
||||||
|
LIBCALC_STATIC=
|
||||||
|
LIBCUSTCALC_STATIC=
|
||||||
|
|
||||||
|
# common values set for this target
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall
|
||||||
|
CCWARN= -Wall -Wextra -pedantic
|
||||||
|
WNO_IMPLICT= -Wno-implicit
|
||||||
|
WNO_ERROR_LONG_LONG= -Wno-error=long-long
|
||||||
|
WNO_LONG_LONG= -Wno-long-long
|
||||||
|
CCWERR=
|
||||||
|
CCOPT= ${DEBUG}
|
||||||
|
CCMISC=
|
||||||
|
LCC= gcc
|
||||||
|
CC= ${PURIFY} ${LCC} ${CCWERR}
|
||||||
|
|
||||||
|
endif # ($(target),Linux)
|
||||||
|
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# Apple macOS / Darwin target #
|
||||||
|
###############################
|
||||||
|
|
||||||
|
ifeq ($(target),Darwin)
|
||||||
|
|
||||||
|
# default build type for this target
|
||||||
|
#
|
||||||
|
BLD_TYPE= calc-dynamic-only
|
||||||
|
|
||||||
|
# For old Apple Power PC systems, we need to add:
|
||||||
|
#
|
||||||
|
# -std=gnu99 -arch ppc
|
||||||
|
#
|
||||||
|
ifeq ($(arch),powerpc)
|
||||||
|
COMMON_ADD+= -std=gnu99
|
||||||
|
ARCH_CFLAGS+= -arch ppc
|
||||||
|
endif # ($(arch),powerpc)
|
||||||
|
|
||||||
|
# target specific library parameters
|
||||||
|
#
|
||||||
|
CC_SHARE= -fPIC
|
||||||
|
DEFAULT_LIB_INSTALL_PATH= ${PWD}:${LIBDIR}:${PREFIX}/lib
|
||||||
|
LD_SHARE= ${ARCH_CFLAGS}
|
||||||
|
LIBCALC_SHLIB= -dynamiclib -undefined dynamic_lookup \
|
||||||
|
-install_name ${LIBDIR}/libcalc${LIB_EXT_VERSION} \
|
||||||
|
-current_version ${VER} \
|
||||||
|
${ARCH_CFLAGS}
|
||||||
|
LIBCUSTCALC_SHLIB= -dynamiclib -undefined dynamic_lookup \
|
||||||
|
-install_name ${LIBDIR}/libcustcalc${LIB_EXT_VERSION} \
|
||||||
|
-current_version ${VER} \
|
||||||
|
${ARCH_CFLAGS}
|
||||||
|
|
||||||
|
# To reduce dependency chains under macOS, we remove functions and
|
||||||
|
# data that are unreachable by the entry point or exported symbols.
|
||||||
|
#
|
||||||
|
COMMON_LDFLAGS+= -Wl,-dead_strip
|
||||||
|
COMMON_LDFLAGS+= -Wl,-dead_strip_dylibs
|
||||||
|
|
||||||
|
# static library option
|
||||||
|
#
|
||||||
|
CC_STATIC=
|
||||||
|
LD_STATIC= ${ARCH_CFLAGS}
|
||||||
|
LIBCALC_STATIC=
|
||||||
|
LIBCUSTCALC_STATIC=
|
||||||
|
|
||||||
|
# common values set for this target
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall
|
||||||
|
CCWARN= -Wall -Wextra -pedantic
|
||||||
|
WNO_IMPLICT= -Wno-implicit
|
||||||
|
WNO_ERROR_LONG_LONG= -Wno-error=long-long
|
||||||
|
WNO_LONG_LONG= -Wno-long-long
|
||||||
|
CCWERR=
|
||||||
|
CCOPT= ${DEBUG}
|
||||||
|
CCMISC= ${ARCH_CFLAGS}
|
||||||
|
LCC= cc
|
||||||
|
CC= ${PURIFY} ${LCC} ${CCWERR}
|
||||||
|
|
||||||
|
# Darwin dynamic shared lib filenames
|
||||||
|
#
|
||||||
|
LIB_EXT:= .dylib
|
||||||
|
LIB_EXT_VERSION:= .${VERSION}${LIB_EXT}
|
||||||
|
|
||||||
|
# LDCONFIG not required on this platform, so we redefine it to an empty string
|
||||||
|
#
|
||||||
|
LDCONFIG:=
|
||||||
|
|
||||||
|
endif # ($(target),Darwin)
|
||||||
|
|
||||||
|
|
||||||
|
##################
|
||||||
|
# FreeBSD target #
|
||||||
|
##################
|
||||||
|
|
||||||
|
ifeq ($(target),FreeBSD)
|
||||||
|
|
||||||
|
# default build type for this target
|
||||||
|
#
|
||||||
|
BLD_TYPE= calc-dynamic-only
|
||||||
|
|
||||||
|
# target specific library parameters
|
||||||
|
#
|
||||||
|
CC_SHARE= -fPIC
|
||||||
|
DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:${PREFIX}/lib
|
||||||
|
LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \
|
||||||
|
"-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}"
|
||||||
|
LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}"
|
||||||
|
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
|
||||||
|
|
||||||
|
CC_STATIC=
|
||||||
|
LD_STATIC=
|
||||||
|
LIBCALC_STATIC=
|
||||||
|
LIBCUSTCALC_STATIC=
|
||||||
|
|
||||||
|
# common values set for this target
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall
|
||||||
|
CCWARN= -Wall -Wextra -pedantic
|
||||||
|
WNO_IMPLICT= -Wno-implicit
|
||||||
|
WNO_ERROR_LONG_LONG= -Wno-error=long-long
|
||||||
|
WNO_LONG_LONG= -Wno-long-long
|
||||||
|
CCWERR=
|
||||||
|
CCOPT= ${DEBUG}
|
||||||
|
CCMISC=
|
||||||
|
LCC= gcc
|
||||||
|
CC= ${PURIFY} ${LCC} ${CCWERR}
|
||||||
|
|
||||||
|
# We must use gmake as the FreeBSD target because under some older
|
||||||
|
# releases of FreeBSD, make not support conditional syntax.
|
||||||
|
#
|
||||||
|
MAKE= gmake
|
||||||
|
|
||||||
|
endif # ($(target),FreeBSD)
|
||||||
|
|
||||||
|
|
||||||
|
##################
|
||||||
|
# OpenBSD target #
|
||||||
|
##################
|
||||||
|
|
||||||
|
ifeq ($(target),OpenBSD)
|
||||||
|
|
||||||
|
# default build type for this target
|
||||||
|
#
|
||||||
|
BLD_TYPE= calc-dynamic-only
|
||||||
|
|
||||||
|
# default build type for this target
|
||||||
|
#
|
||||||
|
CC_SHARE= -fPIC
|
||||||
|
DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:${PREFIX}/lib
|
||||||
|
LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \
|
||||||
|
"-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}"
|
||||||
|
LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}"
|
||||||
|
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
|
||||||
|
|
||||||
|
# static library option
|
||||||
|
#
|
||||||
|
CC_STATIC=
|
||||||
|
LD_STATIC=
|
||||||
|
LIBCALC_STATIC=
|
||||||
|
LIBCUSTCALC_STATIC=
|
||||||
|
|
||||||
|
# common values set for this target
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall
|
||||||
|
CCWARN= -Wall -Wextra -pedantic
|
||||||
|
WNO_IMPLICT= -Wno-implicit
|
||||||
|
WNO_ERROR_LONG_LONG= -Wno-error=long-long
|
||||||
|
WNO_LONG_LONG= -Wno-long-long
|
||||||
|
CCWERR=
|
||||||
|
CCOPT= ${DEBUG}
|
||||||
|
CCMISC=
|
||||||
|
#
|
||||||
|
LCC= gcc
|
||||||
|
CC= ${PURIFY} ${LCC} ${CCWERR}
|
||||||
|
#
|
||||||
|
MAKE= gmake
|
||||||
|
#
|
||||||
|
endif # ($(target),OpenBSD)
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
# Cygwin target #
|
||||||
|
#################
|
||||||
|
|
||||||
|
ifeq ($(target),Cygwin)
|
||||||
|
|
||||||
|
BLD_TYPE= calc-static-only
|
||||||
|
|
||||||
|
# target specific library parameters
|
||||||
|
#
|
||||||
|
CC_SHARE= -fPIC
|
||||||
|
DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:${PREFIX}/lib
|
||||||
|
LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \
|
||||||
|
"-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}"
|
||||||
|
LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}"
|
||||||
|
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
|
||||||
|
|
||||||
|
# static library option
|
||||||
|
#
|
||||||
|
CC_STATIC=
|
||||||
|
LIBCALC_STATIC=
|
||||||
|
LIBCUSTCALC_STATIC=
|
||||||
|
LD_STATIC=
|
||||||
|
|
||||||
|
# common values set for this target
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall
|
||||||
|
CCWARN= -Wall -Wextra -pedantic
|
||||||
|
WNO_IMPLICT= -Wno-implicit
|
||||||
|
WNO_ERROR_LONG_LONG= -Wno-error=long-long
|
||||||
|
WNO_LONG_LONG= -Wno-long-long
|
||||||
|
CCWERR=
|
||||||
|
CCOPT= ${DEBUG}
|
||||||
|
CCMISC=
|
||||||
|
LCC= cc
|
||||||
|
CC= ${PURIFY} ${LCC} ${CCWERR}
|
||||||
|
|
||||||
|
endif # ($(target),Cygwin)
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# default target - (when target is empty) #
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
# NOTE: This is the default generic host target. Used when no other
|
||||||
|
# host target matches.
|
||||||
|
|
||||||
|
ifeq ($(target),)
|
||||||
|
|
||||||
|
# default build type for this target
|
||||||
|
#
|
||||||
|
BLD_TYPE= calc-static-only
|
||||||
|
|
||||||
|
# target specific library parameters
|
||||||
|
#
|
||||||
|
CC_SHARE= -fPIC
|
||||||
|
DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:${PREFIX}/lib
|
||||||
|
LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \
|
||||||
|
"-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}"
|
||||||
|
LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}"
|
||||||
|
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
|
||||||
|
|
||||||
|
# static library option
|
||||||
|
#
|
||||||
|
CC_STATIC=
|
||||||
|
LIBCALC_STATIC=
|
||||||
|
LIBCUSTCALC_STATIC=
|
||||||
|
LD_STATIC=
|
||||||
|
|
||||||
|
# common values set for this target
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall
|
||||||
|
CCWARN= -Wall -Wextra -pedantic
|
||||||
|
WNO_IMPLICT= -Wno-implicit
|
||||||
|
WNO_ERROR_LONG_LONG= -Wno-error=long-long
|
||||||
|
WNO_LONG_LONG= -Wno-long-long
|
||||||
|
CCWERR=
|
||||||
|
CCOPT= ${DEBUG}
|
||||||
|
CCMISC=
|
||||||
|
LCC= gcc
|
||||||
|
CC= ${PURIFY} ${LCC} ${CCWERR}
|
||||||
|
|
||||||
|
endif # ($(target),)
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Set the default compile flags for ${CC} #
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
# If you want to add flags to all compiler and linker
|
||||||
|
# run (via ${COMMON_CFLAGS} and ${COMMON_LDFLAGS}),
|
||||||
|
# set ${COMMON_ADD}.
|
||||||
|
#
|
||||||
|
# For example to use gcc's -Werror to force warnings
|
||||||
|
# to become errors, call make with:
|
||||||
|
#
|
||||||
|
# make .. COMMON_ADD='-Werror'
|
||||||
|
#
|
||||||
|
# This facility requires a Gnu Makefile, or a make command
|
||||||
|
# that understands the += make operand.
|
||||||
|
#
|
||||||
|
COMMON_CFLAGS+= ${COMMON_ADD}
|
||||||
|
COMMON_LDFLAGS+= ${COMMON_ADD}
|
||||||
|
|
||||||
|
# Required flags to compile C files for calc
|
||||||
|
#
|
||||||
|
# ICFLAGS are given to ${CC} for intermediate programs used to help compile calc
|
||||||
|
# CFLAGS are given to ${CC} for calc programs other than intermediate programs
|
||||||
|
#
|
||||||
|
# NOTE: This does not work for: make-XYZ-only and BLD_TYPE != make-XYZ-only
|
||||||
|
#
|
||||||
|
ifeq ($(BLD_TYPE),calc-static-only)
|
||||||
|
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_STATIC}
|
||||||
|
else # ($(BLD_TYPE),calc-static-only)
|
||||||
|
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_SHARE}
|
||||||
|
endif # ($(BLD_TYPE),calc-static-only)
|
||||||
|
CFLAGS= ${ICFLAGS} ${CCOPT}
|
||||||
|
|
||||||
|
# Required flags to link files for calc
|
||||||
|
#
|
||||||
|
# ILDFLAGS for ${CC} in linking intermediate programs used to help compile calc
|
||||||
|
# LDFLAGS for ${CC} in linking calc programs other than intermediate programs
|
||||||
|
#
|
||||||
|
ILDFLAGS= ${COMMON_LDFLAGS}
|
||||||
|
LDFLAGS= ${LD_DEBUG} ${ILDFLAGS}
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
#-=-=-=-=-=- end of target section - only make rules below -=-=-=-=-=-#
|
||||||
|
#######################################################################
|
@@ -27,7 +27,7 @@ If you run into problems, see the BUGS file.
|
|||||||
Calc is distributed with an extensive collection of help files that
|
Calc is distributed with an extensive collection of help files that
|
||||||
are accessible from the command line. The following assume that you
|
are accessible from the command line. The following assume that you
|
||||||
are running calc from the distribution directory or that you have
|
are running calc from the distribution directory or that you have
|
||||||
installed calc. In these examples, the ">" is the calc prompt, not
|
installed calc. In these examples, the "; " is the calc prompt, not
|
||||||
something that you type in.
|
something that you type in.
|
||||||
|
|
||||||
For list of help topics:
|
For list of help topics:
|
||||||
@@ -48,7 +48,7 @@ For list of builtin functions:
|
|||||||
|
|
||||||
; help builtin
|
; help builtin
|
||||||
|
|
||||||
C programmers should note some unexpected differences in the calc syntax:
|
C programmers should note some unexpected differences with the calc syntax:
|
||||||
|
|
||||||
; help unexpected
|
; help unexpected
|
||||||
|
|
||||||
|
232
cal/Makefile
232
cal/Makefile
@@ -4,13 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 1999-2006,2017,2021-2023 Landon Curt Noll
|
# Copyright (C) 1999-2006,2017,2021-2023 Landon Curt Noll
|
||||||
#
|
#
|
||||||
# SRC: cal/Makefile
|
# Suggestion: Read the ../HOWTO.INSTALL file.
|
||||||
#
|
|
||||||
# The "# SRC: ... - ..." comment line above indicates
|
|
||||||
# the origin of this file.
|
|
||||||
#
|
|
||||||
# IMPORTANT: Please see the section on Makefiles near the
|
|
||||||
# bottom of the HOWTO.INSTALL file.
|
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
# the terms of the version 2.1 of the GNU Lesser General Public License
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -29,184 +23,64 @@
|
|||||||
# Under source code control: 1991/07/21 05:00:54
|
# Under source code control: 1991/07/21 05:00:54
|
||||||
# File existed as early as: 1991
|
# File existed as early as: 1991
|
||||||
#
|
#
|
||||||
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
|
#
|
||||||
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
#
|
|
||||||
# calculator by David I. Bell with help/mods from others
|
|
||||||
# Makefile by Landon Curt Noll
|
|
||||||
|
|
||||||
|
|
||||||
# The shell used by this Makefile
|
# SUGGESTION: Instead of modifying this file, consider adding
|
||||||
#
|
# statements to modify, replace or append Makefile
|
||||||
# On some systems, /bin/sh is a rather reduced shell with
|
# variables in the ../Makefile.local file.
|
||||||
# deprecated behavior.
|
|
||||||
#
|
|
||||||
# If your system has a up to date, bash shell, then
|
|
||||||
# you may wish to use:
|
|
||||||
#
|
|
||||||
# SHELL= bash
|
|
||||||
#
|
|
||||||
# On some systems such as macOS, the bash shell is very
|
|
||||||
# far behind to the point where is cannot be depended on.
|
|
||||||
# On such systems, the sh may be a much better alternative
|
|
||||||
# shell for this Makefile to use:
|
|
||||||
#
|
|
||||||
# SHELL= sh
|
|
||||||
#
|
|
||||||
SHELL= bash
|
|
||||||
#SHELL= sh
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
|
||||||
#
|
|
||||||
ifeq ($(target),Darwin)
|
|
||||||
SHELL:= /bin/sh
|
|
||||||
endif
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
|
|
||||||
####
|
###########################################
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
# Files used or included by this Makefile #
|
||||||
# a default here just in case you want to build from this directory.
|
###########################################
|
||||||
####
|
|
||||||
|
|
||||||
# PREFIX - Top level location for calc
|
|
||||||
#
|
|
||||||
# The PREFIX is often prepended to paths within calc and calc Makefiles.
|
|
||||||
#
|
|
||||||
# Starting with calc v2.13.0.1, nearly all Makefile places that used
|
|
||||||
# /usr/local now use ${PREFIX}. An exception is the olduninstall rule
|
|
||||||
# and, of course, this section. :-)
|
|
||||||
#
|
|
||||||
# NOTE: The ${PREFIX} is not the same as ${T}. The ${T} specifies
|
|
||||||
# a top level directory under which calc installs things.
|
|
||||||
# While usually ${T} is empty, it can be specific path
|
|
||||||
# as if calc where "chrooted" during an install.
|
|
||||||
# The ${PREFIX} value, during install, is a path between
|
|
||||||
# the top level ${T} install directory and the object
|
|
||||||
# such as an include file.
|
|
||||||
#
|
|
||||||
# NOTE: See also, ${T}, below.
|
|
||||||
#
|
|
||||||
# There are some paths that do NOT call under ${PREFIX}, such as
|
|
||||||
# ${CALCPATH}, that include paths not under ${PREFIX}, but those
|
|
||||||
# too are exceptions to this general rule.
|
|
||||||
#
|
|
||||||
# When in doubt, try:
|
|
||||||
#
|
|
||||||
# PREFIX= /usr/local
|
|
||||||
#
|
|
||||||
PREFIX= /usr/local
|
|
||||||
#PREFIX= /usr
|
|
||||||
#PREFIX= /usr/global
|
|
||||||
|
|
||||||
# Normally certain files depend on the Makefile. If the Makefile is
|
# Normally certain files depend on the Makefile. If the Makefile is
|
||||||
# changed, then certain steps should be redone. If MAKE_FILE is
|
# changed, then certain steps should be redone. If MAKE_FILE is
|
||||||
# set to Makefile, then these files will depend on Makefile. If
|
# set to Makefile, then these files will depend on Makefile. If
|
||||||
# MAKE_FILE is empty, then they wont.
|
# MAKE_FILE is empty, then they won't.
|
||||||
#
|
#
|
||||||
# If in doubt, set MAKE_FILE to Makefile
|
# If in doubt, set MAKE_FILE to Makefile
|
||||||
#
|
#
|
||||||
MAKE_FILE= Makefile
|
MAKE_FILE= Makefile
|
||||||
|
|
||||||
# Where the system include (.h) files are kept
|
# Calc configuration and compile configuration values
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# INCDIR= /dev/env/DJDIR/include
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# INCDIR= /usr/include
|
|
||||||
#
|
#
|
||||||
|
CONFIG_MKF= ../Makefile.config
|
||||||
|
|
||||||
#INCDIR= ${PREFIX}/include
|
# Host target information.
|
||||||
#INCDIR= /dev/env/DJDIR/include
|
#
|
||||||
INCDIR= /usr/include
|
TARGET_MKF= ../Makefile.target
|
||||||
|
|
||||||
# where to install calc related things
|
# Local file that is included just prior to the first rule,
|
||||||
|
# that allows one to override any values set in this Makefile.
|
||||||
#
|
#
|
||||||
# ${BINDIR} where to install calc binary files
|
LOCAL_MKF= ../Makefile.local
|
||||||
# ${LIBDIR} where calc link library (*.a) files are installed
|
|
||||||
# ${CALC_SHAREDIR} where to install calc help, .cal, startup, config files
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# BINDIR= /dev/env/DJDIR/bin
|
|
||||||
# LIBDIR= /dev/env/DJDIR/lib
|
|
||||||
# CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# BINDIR= /usr/bin
|
|
||||||
# LIBDIR= /usr/lib
|
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
#BINDIR= ${PREFIX}/bin
|
|
||||||
#BINDIR= /dev/env/DJDIR/bin
|
|
||||||
BINDIR= /usr/bin
|
|
||||||
|
|
||||||
#LIBDIR= ${PREFIX}/lib
|
# The set of Makefiles
|
||||||
#LIBDIR= /dev/env/DJDIR/lib
|
#
|
||||||
LIBDIR= /usr/lib
|
MK_SET= ${MAKE_FILE} ${CONFIG_MKF} ${TARGET_MKF} ${LOCAL_MKF}
|
||||||
|
|
||||||
#CALC_SHAREDIR= ${PREFIX}/lib/calc
|
|
||||||
#CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
CALC_SHAREDIR= /usr/share/calc
|
|
||||||
|
|
||||||
# By default, these values are based CALC_SHAREDIR, INCDIR, BINDIR
|
#######################################################
|
||||||
# ---------------------------------------------------------------
|
# Calc configuration and compile configuration values #
|
||||||
# ${HELPDIR} where the help directory is installed
|
#######################################################
|
||||||
# ${CALC_INCDIR} where the calc include files are installed
|
include ${CONFIG_MKF}
|
||||||
# ${SCRIPTDIR} where calc shell scripts are installed
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
###############################
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
# host target section include #
|
||||||
# locations will be relative to the ${T} directory.
|
###############################
|
||||||
#
|
include ${TARGET_MKF}
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# HELPDIR= ${CALC_SHAREDIR}/help
|
##########################################################################
|
||||||
# CALC_INCDIR= ${INCDIR}/calc
|
#=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=#
|
||||||
# SCRIPTDIR= ${BINDIR}/cscript
|
##########################################################################
|
||||||
#
|
|
||||||
HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
|
|
||||||
# T - top level directory under which calc will be installed
|
|
||||||
#
|
|
||||||
# The calc install is performed under ${T}, the calc build is
|
|
||||||
# performed under /. The purpose for ${T} is to allow someone
|
|
||||||
# to install calc somewhere other than into the system area.
|
|
||||||
#
|
|
||||||
# For example, if:
|
|
||||||
#
|
|
||||||
# BINDIR= /usr/bin
|
|
||||||
# LIBDIR= /usr/lib
|
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
# and if:
|
|
||||||
#
|
|
||||||
# T= /var/tmp/testing
|
|
||||||
#
|
|
||||||
# Then the installation locations will be:
|
|
||||||
#
|
|
||||||
# calc binary files: /var/tmp/testing/usr/bin
|
|
||||||
# calc link library: /var/tmp/testing/usr/lib
|
|
||||||
# calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
|
||||||
# ... etc ... /var/tmp/testing/...
|
|
||||||
#
|
|
||||||
# If ${T} is empty, calc is installed under /, which is the same
|
|
||||||
# top of tree for which it was built. If ${T} is non-empty, then
|
|
||||||
# calc is installed under ${T}, as if one had to chroot under
|
|
||||||
# ${T} for calc to operate.
|
|
||||||
#
|
|
||||||
# If in doubt, use T=
|
|
||||||
#
|
|
||||||
T=
|
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
@@ -240,22 +114,6 @@ H=@
|
|||||||
V=@:
|
V=@:
|
||||||
#V=@
|
#V=@
|
||||||
|
|
||||||
# standard tools
|
|
||||||
#
|
|
||||||
CHMOD= chmod
|
|
||||||
CMP= cmp
|
|
||||||
CO= co
|
|
||||||
CP= cp
|
|
||||||
FMT= fmt
|
|
||||||
MKDIR= mkdir
|
|
||||||
MV= mv
|
|
||||||
RM= rm
|
|
||||||
RMDIR= rmdir
|
|
||||||
SED= sed
|
|
||||||
SORT= sort
|
|
||||||
TOUCH= touch
|
|
||||||
TRUE= true
|
|
||||||
|
|
||||||
# The calc files to install
|
# The calc files to install
|
||||||
#
|
#
|
||||||
# This list is produced by the detaillist rule when no WARNINGS are detected.
|
# This list is produced by the detaillist rule when no WARNINGS are detected.
|
||||||
@@ -300,8 +158,24 @@ CALCLIBLIST=
|
|||||||
#
|
#
|
||||||
PHONY= all clobber distlist install
|
PHONY= all clobber distlist install
|
||||||
|
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Allow Makefile.local to change any of the above settings #
|
||||||
|
############################################################
|
||||||
|
include ${LOCAL_MKF}
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# all - First and default Makefile target #
|
||||||
|
###########################################
|
||||||
|
|
||||||
all: ${CALC_FILES} ${MAKE_FILE} .all
|
all: ${CALC_FILES} ${MAKE_FILE} .all
|
||||||
|
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# additional Makefile targets #
|
||||||
|
###############################
|
||||||
|
|
||||||
# used by the upper level Makefile to determine of we have done all
|
# used by the upper level Makefile to determine of we have done all
|
||||||
#
|
#
|
||||||
.all:
|
.all:
|
||||||
|
22
calc.c
22
calc.c
@@ -164,9 +164,31 @@ main(int argc, char **argv)
|
|||||||
switch (c) {
|
switch (c) {
|
||||||
case 'C':
|
case 'C':
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* error if libcustcalc was compiled with CUSTOM undefined
|
||||||
|
*/
|
||||||
|
if (custom_compiled() == 0) {
|
||||||
|
fprintf(stderr, "%s: calc was built with custom functions enabled, "
|
||||||
|
"however custom_compiled() retuned 0", program);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* indicate that custom functions are now allowed
|
||||||
|
*/
|
||||||
allow_custom = TRUE;
|
allow_custom = TRUE;
|
||||||
break;
|
break;
|
||||||
#else /* CUSTOM */
|
#else /* CUSTOM */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* error if libcustcalc was compiled with CUSTOM defined
|
||||||
|
*/
|
||||||
|
if (custom_compiled() == 1) {
|
||||||
|
fprintf(stderr, "%s: calc was built with custom functions disabled, "
|
||||||
|
"however custom_compiled() retuned 1", program);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* we are too early in processing to
|
* we are too early in processing to
|
||||||
* call libcalc_call_me_last() -
|
* call libcalc_call_me_last() -
|
||||||
|
35
calc.spec.in
35
calc.spec.in
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# calc.spec.in - template specfile for calc
|
# calc.spec.in - template specfile for calc
|
||||||
#
|
#
|
||||||
# Copyright (C) 2003-2014,2021 Petteri Kettunen and Landon Curt Noll
|
# Copyright (C) 2003-2014,2021,2023 Petteri Kettunen and Landon Curt Noll
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
# the terms of the version 2.1 of the GNU Lesser General Public License
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -20,23 +20,25 @@
|
|||||||
# Under source code control: 2003/02/16 20:21:39
|
# Under source code control: 2003/02/16 20:21:39
|
||||||
# File existed as early as: 2003
|
# File existed as early as: 2003
|
||||||
#
|
#
|
||||||
# calculator by David I. Bell with help/mods from others
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
# Makefile by Petteri Kettunen with modifications from Landon Curt Noll
|
#
|
||||||
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
|
||||||
# BUGS
|
# BUGS
|
||||||
# - Uninstalling calc and calc-devel leaves empty dirs /usr/include/calc
|
# - Uninstalling calc and calc-devel leaves empty dirs /usr/include/calc
|
||||||
# and /usr/share/calc and its subdirs. In case e.g. %{_includedir}/calc
|
# and /usr/share/calc and its subdirs. In case e.g., _includedir/calc
|
||||||
# is defined in `files devel' section, then rpmbuild complains that
|
# is defined in `files devel' section, then rpmbuild complains that
|
||||||
# header files are defined twice - rpmbuild bug or bug in specfile conf???
|
# header files are defined twice - rpmbuild bug or bug in specfile conf???
|
||||||
|
|
||||||
Summary: Arbitrary precision calculator.
|
Summary: Arbitrary precision calculator.
|
||||||
Name: calc
|
Name: calc
|
||||||
Version: <<<PROJECT_VERSION>>>
|
Version: <<<PROJECT_VERSION>>>
|
||||||
Release: 13
|
Release: 14
|
||||||
License: LGPL
|
License: LGPL
|
||||||
Group: Applications/Engineering
|
Group: Applications/Engineering
|
||||||
Source: http://www.isthe.com/chongo/src/calc/%{name}-%{version}.tar.bz2
|
Source: https://github.com/lcn2/calc/releases/download/v<<<PROJECT_VERSION>>>/%{name}-%{version}.tar.bz2
|
||||||
URL: http://www.isthe.com/chongo/tech/comp/calc/index.html
|
URL: https://github.com/lcn2/calc
|
||||||
Vendor: Landon Noll and Associates
|
Vendor: Landon Noll and Associates
|
||||||
Packager: Landon Noll and Associates (http://www.isthe.com/chongo/index.html)
|
Packager: Landon Noll and Associates (http://www.isthe.com/chongo/index.html)
|
||||||
Requires: ncurses >= 5.5-24, readline >= 5.1-3, less >= 358
|
Requires: ncurses >= 5.5-24, readline >= 5.1-3, less >= 358
|
||||||
@@ -51,7 +53,11 @@ calculator, an algorithm prototype and mathematical research
|
|||||||
tool. Calc comes with a rich set of builtin mathematical and
|
tool. Calc comes with a rich set of builtin mathematical and
|
||||||
programming functions.
|
programming functions.
|
||||||
|
|
||||||
For the latest calc release, see the calc project home page:
|
For the latest calc release, see the calc GitHub repo:
|
||||||
|
|
||||||
|
https://github.com/lcn2/calc
|
||||||
|
|
||||||
|
or the calc home page:
|
||||||
|
|
||||||
http://www.isthe.com/chongo/tech/comp/calc/index.html
|
http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||||
|
|
||||||
@@ -67,7 +73,11 @@ Requires: ncurses >= 5.5-24, readline >= 5.1-3, less >= 358
|
|||||||
This package contains the header files and static libraries for developing
|
This package contains the header files and static libraries for developing
|
||||||
calc (arbitrary precision calculator).
|
calc (arbitrary precision calculator).
|
||||||
|
|
||||||
For the latest calc release, see the project home page:
|
For the latest calc release, see the calc GitHub repo:
|
||||||
|
|
||||||
|
https://github.com/lcn2/calc
|
||||||
|
|
||||||
|
or the calc home page:
|
||||||
|
|
||||||
http://www.isthe.com/chongo/tech/comp/calc/index.html
|
http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||||
|
|
||||||
@@ -152,8 +162,10 @@ echo '-=- calc.spec beginning make clean -=-'
|
|||||||
%attr(644, root, root) %{_datadir}/%{name}/*.cal
|
%attr(644, root, root) %{_datadir}/%{name}/*.cal
|
||||||
%attr(644, root, root) %{_datadir}/%{name}/set8700.line
|
%attr(644, root, root) %{_datadir}/%{name}/set8700.line
|
||||||
%attr(644, root, root) %{_libdir}/libcalc.so
|
%attr(644, root, root) %{_libdir}/libcalc.so
|
||||||
|
%attr(644, root, root) %{_libdir}/libcalc.so.<<<PROJECT_VER>>>
|
||||||
%attr(644, root, root) %{_libdir}/libcalc.so.%{version}
|
%attr(644, root, root) %{_libdir}/libcalc.so.%{version}
|
||||||
%attr(644, root, root) %{_libdir}/libcustcalc.so
|
%attr(644, root, root) %{_libdir}/libcustcalc.so
|
||||||
|
%attr(644, root, root) %{_libdir}/libcustcalc.so.<<<PROJECT_VER>>>
|
||||||
%attr(644, root, root) %{_libdir}/libcustcalc.so.%{version}
|
%attr(644, root, root) %{_libdir}/libcustcalc.so.%{version}
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
@@ -165,6 +177,11 @@ echo '-=- calc.spec beginning make clean -=-'
|
|||||||
%attr(644, root, root) %{_libdir}/libcustcalc.a
|
%attr(644, root, root) %{_libdir}/libcustcalc.a
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 14 2023 Landon Curt Noll http://www.isthe.com/chongo
|
||||||
|
- Release: 14
|
||||||
|
- Use Source and URL based on calc GitHub repo URLs.
|
||||||
|
- Install dynamic shared libraries with 3-digit version numbers.
|
||||||
|
|
||||||
* Sun Mar 24 2019 Landon Curt Noll http://www.isthe.com/chongo
|
* Sun Mar 24 2019 Landon Curt Noll http://www.isthe.com/chongo
|
||||||
- Release: 13
|
- Release: 13
|
||||||
- Disable compiling with the default ARCH_CFLAGS= -march=native
|
- Disable compiling with the default ARCH_CFLAGS= -march=native
|
||||||
|
238
cscript/Makefile
238
cscript/Makefile
@@ -4,13 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 1999-2006,2014,2017,2021-2023 Landon Curt Noll
|
# Copyright (C) 1999-2006,2014,2017,2021-2023 Landon Curt Noll
|
||||||
#
|
#
|
||||||
# SRC: cscript/Makefile
|
# Suggestion: Read the ../HOWTO.INSTALL file.
|
||||||
#
|
|
||||||
# The "# SRC: ... - ..." comment line above indicates
|
|
||||||
# the origin of this file.
|
|
||||||
#
|
|
||||||
# IMPORTANT: Please see the section on Makefiles near the
|
|
||||||
# bottom of the HOWTO.INSTALL file.
|
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
# the terms of the version 2.1 of the GNU Lesser General Public License
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -29,184 +23,63 @@
|
|||||||
# Under source code control: 1999/11/29 11:10:26
|
# Under source code control: 1999/11/29 11:10:26
|
||||||
# File existed as early as: 1999
|
# File existed as early as: 1999
|
||||||
#
|
#
|
||||||
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
|
#
|
||||||
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
#
|
|
||||||
# calculator by David I. Bell with help/mods from others
|
|
||||||
# Makefile by Landon Curt Noll
|
|
||||||
|
|
||||||
|
|
||||||
# The shell used by this Makefile
|
# SUGGESTION: Instead of modifying this file, consider adding
|
||||||
#
|
# statements to modify, replace or append Makefile
|
||||||
# On some systems, /bin/sh is a rather reduced shell with
|
# variables in the ../Makefile.local file.
|
||||||
# deprecated behavior.
|
|
||||||
#
|
|
||||||
# If your system has a up to date, bash shell, then
|
|
||||||
# you may wish to use:
|
|
||||||
#
|
|
||||||
# SHELL= bash
|
|
||||||
#
|
|
||||||
# On some systems such as macOS, the bash shell is very
|
|
||||||
# far behind to the point where is cannot be depended on.
|
|
||||||
# On such systems, the sh may be a much better alternative
|
|
||||||
# shell for this Makefile to use:
|
|
||||||
#
|
|
||||||
# SHELL= sh
|
|
||||||
#
|
|
||||||
SHELL= bash
|
|
||||||
#SHELL= sh
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
|
||||||
#
|
|
||||||
ifeq ($(target),Darwin)
|
|
||||||
SHELL:= /bin/sh
|
|
||||||
endif
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
|
|
||||||
####
|
###########################################
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
# Files used or included by this Makefile #
|
||||||
# a default here just in case you want to build from this directory.
|
###########################################
|
||||||
####
|
|
||||||
|
|
||||||
# PREFIX - Top level location for calc
|
|
||||||
#
|
|
||||||
# The PREFIX is often prepended to paths within calc and calc Makefiles.
|
|
||||||
#
|
|
||||||
# Starting with calc v2.13.0.1, nearly all Makefile places that used
|
|
||||||
# /usr/local now use ${PREFIX}. An exception is the olduninstall rule
|
|
||||||
# and, of course, this section. :-)
|
|
||||||
#
|
|
||||||
# NOTE: The ${PREFIX} is not the same as ${T}. The ${T} specifies
|
|
||||||
# a top level directory under which calc installs things.
|
|
||||||
# While usually ${T} is empty, it can be specific path
|
|
||||||
# as if calc where "chrooted" during an install.
|
|
||||||
# The ${PREFIX} value, during install, is a path between
|
|
||||||
# the top level ${T} install directory and the object
|
|
||||||
# such as an include file.
|
|
||||||
#
|
|
||||||
# NOTE: See also, ${T}, below.
|
|
||||||
#
|
|
||||||
# There are some paths that do NOT call under ${PREFIX}, such as
|
|
||||||
# ${CALCPATH}, that include paths not under ${PREFIX}, but those
|
|
||||||
# too are exceptions to this general rule.
|
|
||||||
#
|
|
||||||
# When in doubt, try:
|
|
||||||
#
|
|
||||||
# PREFIX= /usr/local
|
|
||||||
#
|
|
||||||
PREFIX= /usr/local
|
|
||||||
#PREFIX= /usr
|
|
||||||
#PREFIX= /usr/global
|
|
||||||
|
|
||||||
# Normally certain files depend on the Makefile. If the Makefile is
|
# Normally certain files depend on the Makefile. If the Makefile is
|
||||||
# changed, then certain steps should be redone. If MAKE_FILE is
|
# changed, then certain steps should be redone. If MAKE_FILE is
|
||||||
# set to Makefile, then these files will depend on Makefile. If
|
# set to Makefile, then these files will depend on Makefile. If
|
||||||
# MAKE_FILE is empty, then they wont.
|
# MAKE_FILE is empty, then they won't.
|
||||||
#
|
#
|
||||||
# If in doubt, set MAKE_FILE to Makefile
|
# If in doubt, set MAKE_FILE to Makefile
|
||||||
#
|
#
|
||||||
MAKE_FILE= Makefile
|
MAKE_FILE= Makefile
|
||||||
|
|
||||||
# Where the system include (.h) files are kept
|
# Calc configuration and compile configuration values
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# INCDIR= /dev/env/DJDIR/include
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# INCDIR= /usr/include
|
|
||||||
#
|
#
|
||||||
|
CONFIG_MKF= ../Makefile.config
|
||||||
|
|
||||||
#INCDIR= ${PREFIX}/include
|
# Host targets that are shared in common with both Makefile
|
||||||
#INCDIR= /dev/env/DJDIR/include
|
# and custom/Makefile.
|
||||||
INCDIR= /usr/include
|
#
|
||||||
|
TARGET_MKF= ../Makefile.target
|
||||||
|
|
||||||
# where to install calc related things
|
# Host target information.
|
||||||
#
|
#
|
||||||
# ${BINDIR} where to install calc binary files
|
LOCAL_MKF= ../Makefile.local
|
||||||
# ${LIBDIR} where calc link library (*.a) files are installed
|
|
||||||
# ${CALC_SHAREDIR} where to install calc help, .cal, startup, config files
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# BINDIR= /dev/env/DJDIR/bin
|
|
||||||
# LIBDIR= /dev/env/DJDIR/lib
|
|
||||||
# CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# BINDIR= /usr/bin
|
|
||||||
# LIBDIR= /usr/lib
|
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
#BINDIR= ${PREFIX}/bin
|
|
||||||
#BINDIR= /dev/env/DJDIR/bin
|
|
||||||
BINDIR= /usr/bin
|
|
||||||
|
|
||||||
#LIBDIR= ${PREFIX}/lib
|
# The set of Makefiles
|
||||||
#LIBDIR= /dev/env/DJDIR/lib
|
#
|
||||||
LIBDIR= /usr/lib
|
MK_SET= ${MAKE_FILE} ${CONFIG_MKF} ${TARGET_MKF} ${LOCAL_MKF}
|
||||||
|
|
||||||
#CALC_SHAREDIR= ${PREFIX}/lib/calc
|
|
||||||
#CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
CALC_SHAREDIR= /usr/share/calc
|
|
||||||
|
|
||||||
# By default, these values are based CALC_SHAREDIR, INCDIR, BINDIR
|
#######################################################
|
||||||
# ---------------------------------------------------------------
|
# Calc configuration and compile configuration values #
|
||||||
# ${HELPDIR} where the help directory is installed
|
#######################################################
|
||||||
# ${CALC_INCDIR} where the calc include files are installed
|
include ${CONFIG_MKF}
|
||||||
# ${SCRIPTDIR} where calc shell scripts are installed
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
# CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
# SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
#
|
|
||||||
HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
|
|
||||||
# T - top level directory under which calc will be installed
|
|
||||||
#
|
###############################
|
||||||
# The calc install is performed under ${T}, the calc build is
|
# host target section include #
|
||||||
# performed under /. The purpose for ${T} is to allow someone
|
###############################
|
||||||
# to install calc somewhere other than into the system area.
|
include ${TARGET_MKF}
|
||||||
#
|
|
||||||
# For example, if:
|
|
||||||
#
|
##########################################################################
|
||||||
# BINDIR= /usr/bin
|
#=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=#
|
||||||
# LIBDIR= /usr/lib
|
##########################################################################
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
# and if:
|
|
||||||
#
|
|
||||||
# T= /var/tmp/testing
|
|
||||||
#
|
|
||||||
# Then the installation locations will be:
|
|
||||||
#
|
|
||||||
# calc binary files: /var/tmp/testing/usr/bin
|
|
||||||
# calc link library: /var/tmp/testing/usr/lib
|
|
||||||
# calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
|
||||||
# ... etc ... /var/tmp/testing/...
|
|
||||||
#
|
|
||||||
# If ${T} is empty, calc is installed under /, which is the same
|
|
||||||
# top of tree for which it was built. If ${T} is non-empty, then
|
|
||||||
# calc is installed under ${T}, as if one had to chroot under
|
|
||||||
# ${T} for calc to operate.
|
|
||||||
#
|
|
||||||
# If in doubt, use T=
|
|
||||||
#
|
|
||||||
T=
|
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
@@ -240,29 +113,6 @@ H=@
|
|||||||
V=@:
|
V=@:
|
||||||
#V=@
|
#V=@
|
||||||
|
|
||||||
# standard tools
|
|
||||||
#
|
|
||||||
CAT= cat
|
|
||||||
CHMOD= chmod
|
|
||||||
CMP= cmp
|
|
||||||
CO= co
|
|
||||||
CP= cp
|
|
||||||
FMT= fmt
|
|
||||||
MKDIR= mkdir
|
|
||||||
MV= mv
|
|
||||||
RM= rm
|
|
||||||
RMDIR= rmdir
|
|
||||||
SED= sed
|
|
||||||
SORT= sort
|
|
||||||
TOUCH= touch
|
|
||||||
TRUE= true
|
|
||||||
|
|
||||||
# NOTE: On some shells, echo is a builtin that does
|
|
||||||
# not understand -n, so we call /bin/echo -n
|
|
||||||
# directly to get around such shells.
|
|
||||||
#
|
|
||||||
ECHON= /bin/echo -n
|
|
||||||
|
|
||||||
# The ${SCRIPT} list is the list of calc shell script files (without the .calc
|
# The ${SCRIPT} list is the list of calc shell script files (without the .calc
|
||||||
# extension) which will be installed.
|
# extension) which will be installed.
|
||||||
#
|
#
|
||||||
@@ -304,10 +154,26 @@ TARGETS= ${CSCRIPT_TARGETS} README
|
|||||||
#
|
#
|
||||||
PHONY= all clobber distlist install
|
PHONY= all clobber distlist install
|
||||||
|
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Allow Makefile.local to change any of the above settings #
|
||||||
|
############################################################
|
||||||
|
include ${LOCAL_MKF}
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# all - First and default Makefile target #
|
||||||
|
###########################################
|
||||||
|
|
||||||
# The reason for this Makefile
|
# The reason for this Makefile
|
||||||
#
|
#
|
||||||
all: ${TARGETS} .all
|
all: ${TARGETS} .all
|
||||||
|
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# additional Makefile targets #
|
||||||
|
###############################
|
||||||
|
|
||||||
.PHONY: ${PHONY}
|
.PHONY: ${PHONY}
|
||||||
|
|
||||||
README: README.src
|
README: README.src
|
||||||
|
18
custom.c
18
custom.c
@@ -41,6 +41,8 @@
|
|||||||
# include <string.h>
|
# include <string.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
EXTERN CONST struct custom cust[]; /* custom interface table */
|
||||||
|
|
||||||
#else /* CUSTOM */
|
#else /* CUSTOM */
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@@ -66,6 +68,14 @@ custom(char *name, int count, VALUE **vals)
|
|||||||
|
|
||||||
CONST struct custom *p; /* current function */
|
CONST struct custom *p; /* current function */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* error if libcustcalc was compiled with CUSTOM undefined
|
||||||
|
*/
|
||||||
|
if (custom_compiled() == 0) {
|
||||||
|
math_error("libcustcalc was compiled CUSTOM undefined");
|
||||||
|
not_reached();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* search the custom interface table for a function
|
* search the custom interface table for a function
|
||||||
*/
|
*/
|
||||||
@@ -98,6 +108,14 @@ custom(char *name, int count, VALUE **vals)
|
|||||||
|
|
||||||
#else /* CUSTOM */
|
#else /* CUSTOM */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* error if libcustcalc was compiled with CUSTOM defined
|
||||||
|
*/
|
||||||
|
if (custom_compiled() == 1) {
|
||||||
|
math_error("libcustcalc was compiled with CUSTOM defined");
|
||||||
|
not_reached();
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"%sCalc was built with custom functions disabled\n",
|
"%sCalc was built with custom functions disabled\n",
|
||||||
(conf->tab_ok ? "\t" : ""));
|
(conf->tab_ok ? "\t" : ""));
|
||||||
|
6
custom.h
6
custom.h
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* custom - interface for custom software and hardware interfaces
|
* custom - interface for custom software and hardware interfaces
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2007,2021 Landon Curt Noll
|
* Copyright (C) 1999-2007,2021,2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Be careful what you put in this file, upper .c files include
|
* Be careful what you put in this file, upper .c files include
|
||||||
* this file even when CUSTOM is not defined (ALLOW_CUSTOM is empty).
|
* this file even when CUSTOM is not defined (ALLOW_CUSTOM="-UCUSTOM").
|
||||||
*
|
*
|
||||||
* Don't include anything, let the including .c file bring in:
|
* Don't include anything, let the including .c file bring in:
|
||||||
*
|
*
|
||||||
@@ -73,11 +73,11 @@ struct custom {
|
|||||||
*
|
*
|
||||||
* These are the required interfaces. The dummy.c stubs these interfaces too.
|
* These are the required interfaces. The dummy.c stubs these interfaces too.
|
||||||
*/
|
*/
|
||||||
|
E_FUNC int custom_compiled(void); /* return 1 ==> libcustcalc compiled w/CUSTOM defined, else return 0 */
|
||||||
E_FUNC VALUE custom(char*, int, VALUE**); /* master custom interface */
|
E_FUNC VALUE custom(char*, int, VALUE**); /* master custom interface */
|
||||||
EXTERN BOOL allow_custom; /* TRUE => custom builtins allowed */
|
EXTERN BOOL allow_custom; /* TRUE => custom builtins allowed */
|
||||||
E_FUNC void showcustom(void); /* print custom functions */
|
E_FUNC void showcustom(void); /* print custom functions */
|
||||||
E_FUNC void customhelp(char *); /* direct custom help */
|
E_FUNC void customhelp(char *); /* direct custom help */
|
||||||
EXTERN CONST struct custom cust[]; /* custom interface table */
|
|
||||||
E_FUNC void init_custreg(void); /* initialize custom registers */
|
E_FUNC void init_custreg(void); /* initialize custom registers */
|
||||||
|
|
||||||
#endif /* !CUSTOM_H */
|
#endif /* !CUSTOM_H */
|
||||||
|
@@ -19,6 +19,10 @@ must be invoked with a -C argument:
|
|||||||
|
|
||||||
when it is run.
|
when it is run.
|
||||||
|
|
||||||
|
To disable custom even if -C is given, calc must be built with:
|
||||||
|
|
||||||
|
ALLOW_CUSTOM="-UCUSTOM"
|
||||||
|
|
||||||
See the ../cal/README or "help resource" for information about
|
See the ../cal/README or "help resource" for information about
|
||||||
calc resource standards and guidelines.
|
calc resource standards and guidelines.
|
||||||
|
|
||||||
@@ -41,7 +45,7 @@ pzasusb8.cal
|
|||||||
Run custom("pzasusb8") on a standard set of data, print Endian
|
Run custom("pzasusb8") on a standard set of data, print Endian
|
||||||
related information and print value size information.
|
related information and print value size information.
|
||||||
|
|
||||||
## Copyright (C) 1999,2021 Landon Curt Noll
|
## Copyright (C) 1999,2021,2023 Landon Curt Noll
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## Calc is open software; you can redistribute it and/or modify it under
|
||||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
|
@@ -168,8 +168,7 @@ Step 5: Write your custom function
|
|||||||
#endif /* CUSTOM */
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
This allows this code to 'go away' when the upper Makefile
|
This allows this code to 'go away' when the upper Makefile
|
||||||
disables the custom code (because ALLOW_CUSTOM no longer
|
disables the custom code when CUSTOM is not defined.
|
||||||
has the -DCUSTOM define).
|
|
||||||
|
|
||||||
b) The function type must be:
|
b) The function type must be:
|
||||||
|
|
||||||
|
608
custom/Makefile
608
custom/Makefile
@@ -4,13 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 1999-2006,2014,2017-2018,2021,2023 Landon Curt Noll
|
# Copyright (C) 1999-2006,2014,2017-2018,2021,2023 Landon Curt Noll
|
||||||
#
|
#
|
||||||
# SRC: custom/Makefile
|
# Suggestion: Read the ../HOWTO.INSTALL file.
|
||||||
#
|
|
||||||
# The "# SRC: ... - ..." comment line above indicates
|
|
||||||
# the origin of this file.
|
|
||||||
#
|
|
||||||
# IMPORTANT: Please see the section on Makefiles near the
|
|
||||||
# bottom of the HOWTO.INSTALL file.
|
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
# the terms of the version 2.1 of the GNU Lesser General Public License
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -29,131 +23,63 @@
|
|||||||
# Under source code control: 1997/03/09 02:28:54
|
# Under source code control: 1997/03/09 02:28:54
|
||||||
# File existed as early as: 1997
|
# File existed as early as: 1997
|
||||||
#
|
#
|
||||||
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
|
#
|
||||||
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
#
|
|
||||||
# calculator by David I. Bell with help/mods from others
|
|
||||||
# Makefile by Landon Curt Noll
|
|
||||||
|
|
||||||
|
|
||||||
# The shell used by this Makefile
|
# SUGGESTION: Instead of modifying this file, consider adding
|
||||||
#
|
# statements to modify, replace or append Makefile
|
||||||
# On some systems, /bin/sh is a rather reduced shell with
|
# variables in the ../Makefile.local file.
|
||||||
# deprecated behavior.
|
|
||||||
#
|
|
||||||
# If your system has a up to date, bash shell, then
|
|
||||||
# you may wish to use:
|
|
||||||
#
|
|
||||||
# SHELL= bash
|
|
||||||
#
|
|
||||||
# On some systems such as macOS, the bash shell is very
|
|
||||||
# far behind to the point where is cannot be depended on.
|
|
||||||
# On such systems, the sh may be a much better alternative
|
|
||||||
# shell for this Makefile to use:
|
|
||||||
#
|
|
||||||
# SHELL= sh
|
|
||||||
#
|
|
||||||
SHELL= bash
|
|
||||||
#SHELL= sh
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
|
||||||
#
|
|
||||||
ifeq ($(target),Darwin)
|
|
||||||
SHELL:= /bin/sh
|
|
||||||
endif
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
|
|
||||||
# PREFIX - Top level location for calc
|
###########################################
|
||||||
|
# Files used or included by this Makefile #
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
# Normally certain files depend on the Makefile. If the Makefile is
|
||||||
|
# changed, then certain steps should be redone. If MAKE_FILE is
|
||||||
|
# set to Makefile, then these files will depend on Makefile. If
|
||||||
|
# MAKE_FILE is empty, then they won't.
|
||||||
#
|
#
|
||||||
# The PREFIX is often prepended to paths within calc and calc Makefiles.
|
# If in doubt, set MAKE_FILE to Makefile
|
||||||
#
|
#
|
||||||
# Starting with calc v2.13.0.1, nearly all Makefile places that used
|
MAKE_FILE= Makefile
|
||||||
# /usr/local now use ${PREFIX}. An exception is the olduninstall rule
|
|
||||||
# and, of course, this section. :-)
|
# Calc configuration and compile configuration values
|
||||||
#
|
#
|
||||||
# NOTE: The ${PREFIX} is not the same as ${T}. The ${T} specifies
|
CONFIG_MKF= ../Makefile.config
|
||||||
# a top level directory under which calc installs things.
|
|
||||||
# While usually ${T} is empty, it can be specific path
|
# Host targets that are shared in common with both Makefile
|
||||||
# as if calc where "chrooted" during an install.
|
# and custom/Makefile.
|
||||||
# The ${PREFIX} value, during install, is a path between
|
|
||||||
# the top level ${T} install directory and the object
|
|
||||||
# such as an include file.
|
|
||||||
#
|
#
|
||||||
# NOTE: See also, ${T}, below.
|
TARGET_MKF= ../Makefile.target
|
||||||
|
|
||||||
|
# Host target information.
|
||||||
#
|
#
|
||||||
# There are some paths that do NOT call under ${PREFIX}, such as
|
LOCAL_MKF= ../Makefile.local
|
||||||
# ${CALCPATH}, that include paths not under ${PREFIX}, but those
|
|
||||||
# too are exceptions to this general rule.
|
# The set of Makefiles
|
||||||
#
|
#
|
||||||
# When in doubt, try:
|
MK_SET= ${MAKE_FILE} ${CONFIG_MKF} ${TARGET_MKF} ${LOCAL_MKF}
|
||||||
#
|
|
||||||
# PREFIX= /usr/local
|
|
||||||
#
|
|
||||||
PREFIX= /usr/local
|
|
||||||
#PREFIX= /usr
|
|
||||||
#PREFIX= /usr/global
|
|
||||||
|
|
||||||
|
|
||||||
# CCBAN is given to ${CC} in order to control if banned.h is in effect.
|
#######################################################
|
||||||
#
|
# Calc configuration and compile configuration values #
|
||||||
# The banned.h attempts to ban the use of certain dangerous functions
|
#######################################################
|
||||||
# that, if improperly used, could compromise the computational integrity
|
include ${CONFIG_MKF}
|
||||||
# if calculations.
|
|
||||||
#
|
|
||||||
# In the case of calc, we are motivated in part by the desire for calc
|
|
||||||
# to correctly calculate: even during extremely long calculations.
|
|
||||||
#
|
|
||||||
# If UNBAN is NOT defined, then calling certain functions
|
|
||||||
# will result in a call to a non-existent function (link error).
|
|
||||||
#
|
|
||||||
# While we do NOT encourage defining UNBAN, there may be
|
|
||||||
# a system / compiler environment where re-defining a
|
|
||||||
# function may lead to a fatal compiler complication.
|
|
||||||
# If that happens, consider compiling as:
|
|
||||||
#
|
|
||||||
# make clobber all chk CCBAN=-DUNBAN
|
|
||||||
#
|
|
||||||
# as see if this is a work-a-round.
|
|
||||||
#
|
|
||||||
# If YOU discover a need for the -DUNBAN work-a-round, PLEASE tell us!
|
|
||||||
# Please send us a bug report. See the file:
|
|
||||||
#
|
|
||||||
# BUGS
|
|
||||||
#
|
|
||||||
# or the URL:
|
|
||||||
#
|
|
||||||
# http://www.isthe.com/chongo/tech/comp/calc/calc-bugrept.html
|
|
||||||
#
|
|
||||||
# for how to send us such a bug report.
|
|
||||||
#
|
|
||||||
CCBAN= -UUNBAN
|
|
||||||
#CCBAN= -DUNBAN
|
|
||||||
|
|
||||||
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
###############################
|
||||||
|
# host target section include #
|
||||||
|
###############################
|
||||||
|
include ${TARGET_MKF}
|
||||||
|
|
||||||
# Unfortunately due to the complex dependency issues between
|
|
||||||
# Makefile, and custom/Makefile, parallel GNU make
|
|
||||||
# is NOT recommended.
|
|
||||||
#
|
|
||||||
# XXX - fix this - XXX
|
|
||||||
#
|
|
||||||
.NOTPARALLEL:
|
|
||||||
|
|
||||||
##############################################################################
|
##################################
|
||||||
#-=-=-=-=-=-=-=-=- Identify the target machine, if possible -=-=-=-=-=-=-=-=-#
|
# Files managed by this Makefile #
|
||||||
##############################################################################
|
##################################
|
||||||
|
|
||||||
# NOTE: You can force a target value by defining target as in:
|
|
||||||
#
|
|
||||||
# make ...__optional_arguments_... target=value
|
|
||||||
|
|
||||||
# Try uname -s if the target was not already set on the make command line
|
|
||||||
#
|
|
||||||
ifeq ($(target),)
|
|
||||||
target=$(shell uname -s 2>/dev/null)
|
|
||||||
endif
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
# The custom calc resource files to install
|
# The custom calc resource files to install
|
||||||
#
|
#
|
||||||
@@ -198,16 +124,10 @@ CUSTOM_SRC= c_argv.c c_devnull.c c_help.c c_sysinfo.c c_pzasusb8.c \
|
|||||||
CUSTOM_OBJ= c_argv.o c_devnull.o c_help.o c_sysinfo.o c_pzasusb8.o \
|
CUSTOM_OBJ= c_argv.o c_devnull.o c_help.o c_sysinfo.o c_pzasusb8.o \
|
||||||
c_pmodm127.o c_register.o
|
c_pmodm127.o c_register.o
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
#-=-=-=-=-=-=-=-=- You may want to change some values below -=-=-=-=-=-=-=-=-#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
##############################################################################
|
##########################################################################
|
||||||
#-=-=-=-=-=-=- Defaults in case you want to build from this dir -=-=-=-=-=-=-#
|
#=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=#
|
||||||
##############################################################################
|
##########################################################################
|
||||||
|
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
|
||||||
# a default here just in case you want to build from this directory.
|
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
@@ -241,346 +161,6 @@ H=@
|
|||||||
V=@:
|
V=@:
|
||||||
#V=@
|
#V=@
|
||||||
|
|
||||||
####
|
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
|
||||||
# a default here just in case you want to build from this directory.
|
|
||||||
####
|
|
||||||
|
|
||||||
# Where the system include (.h) files are kept
|
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# INCDIR= /dev/env/DJDIR/include
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# INCDIR= /usr/include
|
|
||||||
#
|
|
||||||
|
|
||||||
#INCDIR= ${PREFIX}/include
|
|
||||||
#INCDIR= /dev/env/DJDIR/include
|
|
||||||
INCDIR= /usr/include
|
|
||||||
|
|
||||||
# where to install calc related things
|
|
||||||
#
|
|
||||||
# ${BINDIR} where to install calc binary files
|
|
||||||
# ${LIBDIR} where calc link library (*.a) files are installed
|
|
||||||
# ${CALC_SHAREDIR} where to install calc help, .cal, startup, config files
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# BINDIR= /dev/env/DJDIR/bin
|
|
||||||
# LIBDIR= /dev/env/DJDIR/lib
|
|
||||||
# CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# BINDIR= /usr/bin
|
|
||||||
# LIBDIR= /usr/lib
|
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
#BINDIR= ${PREFIX}/bin
|
|
||||||
#BINDIR= /dev/env/DJDIR/bin
|
|
||||||
BINDIR= /usr/bin
|
|
||||||
|
|
||||||
#LIBDIR= ${PREFIX}/lib
|
|
||||||
#LIBDIR= /dev/env/DJDIR/lib
|
|
||||||
LIBDIR= /usr/lib
|
|
||||||
|
|
||||||
#CALC_SHAREDIR= ${PREFIX}/lib/calc
|
|
||||||
#CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
CALC_SHAREDIR= /usr/share/calc
|
|
||||||
|
|
||||||
# By default, these values are based CALC_SHAREDIR, INCDIR, BINDIR
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# ${HELPDIR} where the help directory is installed
|
|
||||||
# ${CALC_INCDIR} where the calc include files are installed
|
|
||||||
# ${CUSTOMCALDIR} where custom *.cal files are installed
|
|
||||||
# ${CUSTOMHELPDIR} where custom help files are installed
|
|
||||||
# ${CUSTOMINCDIR} where custom .h files are installed
|
|
||||||
# ${SCRIPTDIR} where calc shell scripts are installed
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
# CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
# CUSTOMCALDIR= ${CALC_SHAREDIR}/custom
|
|
||||||
# CUSTOMHELPDIR= ${CALC_SHAREDIR}/custhelp
|
|
||||||
# CUSTOMINCDIR= ${CALC_INCDIR}/custom
|
|
||||||
# SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
#
|
|
||||||
HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
CUSTOMCALDIR= ${CALC_SHAREDIR}/custom
|
|
||||||
CUSTOMHELPDIR= ${CALC_SHAREDIR}/custhelp
|
|
||||||
CUSTOMINCDIR= ${CALC_INCDIR}/custom
|
|
||||||
SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
|
|
||||||
# T - top level directory under which calc will be installed
|
|
||||||
#
|
|
||||||
# The calc install is performed under ${T}, the calc build is
|
|
||||||
# performed under /. The purpose for ${T} is to allow someone
|
|
||||||
# to install calc somewhere other than into the system area.
|
|
||||||
#
|
|
||||||
# For example, if:
|
|
||||||
#
|
|
||||||
# BINDIR= /usr/bin
|
|
||||||
# LIBDIR= /usr/lib
|
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
# and if:
|
|
||||||
#
|
|
||||||
# T= /var/tmp/testing
|
|
||||||
#
|
|
||||||
# Then the installation locations will be:
|
|
||||||
#
|
|
||||||
# calc binary files: /var/tmp/testing/usr/bin
|
|
||||||
# calc link library: /var/tmp/testing/usr/lib
|
|
||||||
# calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
|
||||||
# ... etc ... /var/tmp/testing/...
|
|
||||||
#
|
|
||||||
# If ${T} is empty, calc is installed under /, which is the same
|
|
||||||
# top of tree for which it was built. If ${T} is non-empty, then
|
|
||||||
# calc is installed under ${T}, as if one had to chroot under
|
|
||||||
# ${T} for calc to operate.
|
|
||||||
#
|
|
||||||
# If in doubt, use T=
|
|
||||||
#
|
|
||||||
T=
|
|
||||||
|
|
||||||
# Debug/Optimize options for ${CC} and ${LCC}
|
|
||||||
#
|
|
||||||
# Select DEBUG= -O2 -gstabs+ -D_WIN32 for DJGPP.
|
|
||||||
#
|
|
||||||
#DEBUG=
|
|
||||||
#
|
|
||||||
#DEBUG= -O
|
|
||||||
#DEBUG= -O -g
|
|
||||||
#DEBUG= -O -g3
|
|
||||||
#
|
|
||||||
#DEBUG= -O1
|
|
||||||
#DEBUG= -O1 -g
|
|
||||||
#DEBUG= -O1 -g3
|
|
||||||
#
|
|
||||||
#DEBUG= -O2
|
|
||||||
#DEBUG= -O2 -g
|
|
||||||
#DEBUG= -O2 -g3
|
|
||||||
#DEBUG= -O2 -ipa
|
|
||||||
#DEBUG= -O2 -g3 -ipa
|
|
||||||
#
|
|
||||||
#DEBUG= -O3
|
|
||||||
#DEBUG= -O3 -g
|
|
||||||
DEBUG= -O3 -g3
|
|
||||||
#DEBUG= -O3 -ipa
|
|
||||||
#DEBUG= -O3 -g3 -ipa
|
|
||||||
#
|
|
||||||
#DEBUG= -g
|
|
||||||
#DEBUG= -g3
|
|
||||||
#DEBUG= -gx
|
|
||||||
#DEBUG= -WM,-g
|
|
||||||
#
|
|
||||||
#DEBUG= -O2 -gstabs+ -D_WIN32
|
|
||||||
|
|
||||||
# Some systems require one to use ranlib to add a symbol table to
|
|
||||||
# a *.a link library. Set RANLIB to the utility that performs this
|
|
||||||
# action. Set RANLIB to : if your system does not need such a utility.
|
|
||||||
#
|
|
||||||
RANLIB=ranlib
|
|
||||||
#RANLIB=:
|
|
||||||
|
|
||||||
# Normally certain files depend on the Makefile. If the Makefile is
|
|
||||||
# changed, then certain steps should be redone. If MAKE_FILE is
|
|
||||||
# set to Makefile, then these files will depend on Makefile. If
|
|
||||||
# MAKE_FILE is empty, then they wont.
|
|
||||||
#
|
|
||||||
# If in doubt, set MAKE_FILE to Makefile
|
|
||||||
#
|
|
||||||
MAKE_FILE= Makefile
|
|
||||||
#MAKE_FILE=
|
|
||||||
|
|
||||||
# If you do not wish to use purify, set PURIFY to an empty string.
|
|
||||||
#
|
|
||||||
# If in doubt, use PURIFY=
|
|
||||||
#
|
|
||||||
#PURIFY= purify
|
|
||||||
#PURIFY= purify -m71-engine
|
|
||||||
#PURIFY= purify -logfile=pure.out
|
|
||||||
#PURIFY= purify -m71-engine -logfile=pure.out
|
|
||||||
PURIFY=
|
|
||||||
|
|
||||||
# If you want to use a debugging link library such as a malloc debug link
|
|
||||||
# library, or need to add special ld flags after the calc link libraries
|
|
||||||
# are included, set ${LD_DEBUG} below.
|
|
||||||
#
|
|
||||||
# If in doubt, set LD_DEBUG to empty.
|
|
||||||
#
|
|
||||||
#LD_DEBUG= -lmalloc_cv
|
|
||||||
LD_DEBUG=
|
|
||||||
|
|
||||||
# When doing a:
|
|
||||||
#
|
|
||||||
# make check
|
|
||||||
# make chk
|
|
||||||
# make debug
|
|
||||||
#
|
|
||||||
# the ${CALC_ENV} is used to supply the proper environment variables
|
|
||||||
# to calc. Most people will simply need 'CALCPATH=./cal' to ensure
|
|
||||||
# that these debug rules will only use calc resource files under the
|
|
||||||
# local source directory. The longer lines (with MALLOC_VERBOSE=1 ...)
|
|
||||||
# are useful for SGI IRIX people who have 'WorkShop Performance Tools'
|
|
||||||
# and who also set 'LD_DEBUG= -lmalloc_cv' above.
|
|
||||||
#
|
|
||||||
# If in doubt, use CALC_ENV= CALCPATH=./cal.
|
|
||||||
#
|
|
||||||
CALC_ENV= CALCPATH=./cal
|
|
||||||
#CALC_ENV= CALCPATH=./cal MALLOC_VERBOSE=1 MALLOC_TRACING=1 \
|
|
||||||
# MALLOC_FASTCHK=1 MALLOC_FULLWARN=1
|
|
||||||
#CALC_ENV= CALCPATH=./cal MALLOC_VERBOSE=1 MALLOC_TRACING=1 \
|
|
||||||
# MALLOC_FASTCHK=1 MALLOC_FULLWARN=1 MALLOC_CLEAR_FREE=1 \
|
|
||||||
# MALLOC_CLEAR_MALLOC=1
|
|
||||||
|
|
||||||
# By default, custom builtin functions may only be executed if calc
|
|
||||||
# is given the -C option. This is because custom builtin functions
|
|
||||||
# may invoke non-standard or non-portable code. One may completely
|
|
||||||
# disable custom builtin functions by not compiling any of code
|
|
||||||
#
|
|
||||||
# ALLOW_CUSTOM= -DCUSTOM # allow custom only if -C is given
|
|
||||||
# ALLOW_CUSTOM= # disable custom even if -C is given
|
|
||||||
#
|
|
||||||
# If in doubt, use ALLOW_CUSTOM= -DCUSTOM
|
|
||||||
#
|
|
||||||
ALLOW_CUSTOM= -DCUSTOM
|
|
||||||
#ALLOW_CUSTOM=
|
|
||||||
|
|
||||||
# Some out of date operating systems require / want an executable to
|
|
||||||
# end with a certain file extension. Some compile systems such as
|
|
||||||
# Cygwin build calc as calc.exe. The EXT variable is used to denote
|
|
||||||
# the extension required by such.
|
|
||||||
#
|
|
||||||
# EXT= # normal Un*x / Linux / GNU/Linux systems
|
|
||||||
# EXT=.exe # Windows / Cygwin
|
|
||||||
#
|
|
||||||
# If in doubt, use EXT=
|
|
||||||
#
|
|
||||||
EXT=
|
|
||||||
#EXT=.exe
|
|
||||||
|
|
||||||
# The default calc versions
|
|
||||||
#
|
|
||||||
VERSION= 2.14.3.0
|
|
||||||
|
|
||||||
# Names of shared libraries with versions
|
|
||||||
#
|
|
||||||
LIB_EXT= .so
|
|
||||||
LIB_EXT_VERSION= ${LIB_EXT}.${VERSION}
|
|
||||||
|
|
||||||
# standard tools
|
|
||||||
#
|
|
||||||
AR= ar
|
|
||||||
AWK= awk
|
|
||||||
CHMOD= chmod
|
|
||||||
CMP= cmp
|
|
||||||
CO= co
|
|
||||||
CP= cp
|
|
||||||
DIFF= diff
|
|
||||||
FMT= fmt
|
|
||||||
GREP= grep
|
|
||||||
LN= ln
|
|
||||||
LS= ls
|
|
||||||
MAKE= make
|
|
||||||
MAKEDEPEND= makedepend
|
|
||||||
MKDIR= mkdir
|
|
||||||
MV= mv
|
|
||||||
RM= rm
|
|
||||||
RMDIR= rmdir
|
|
||||||
SED= sed
|
|
||||||
SORT= sort
|
|
||||||
TAIL= tail
|
|
||||||
TOUCH= touch
|
|
||||||
TRUE= true
|
|
||||||
|
|
||||||
# EXTRA_CFLAGS are flags given to ${CC} when compiling C files
|
|
||||||
# EXTRA_LDFLAGS are flags given to ${CC} when linking progs
|
|
||||||
#
|
|
||||||
# Both CFLAGS and LDFLAGS are left blank in this Makefile by
|
|
||||||
# default so that users may use them on the make command line
|
|
||||||
# to always the way that C is compiled and files are linked
|
|
||||||
# respectively. For example:
|
|
||||||
#
|
|
||||||
# make all EXTRA_CFLAGS="-DMAGIC" EXTRA_LDFLAGS="-lmagic"
|
|
||||||
#
|
|
||||||
# NOTE: These should be left blank in this Makefile to make it
|
|
||||||
# easier to add stuff on the command line. If you want to
|
|
||||||
# to change the way calc is compiled by this Makefile, change
|
|
||||||
# the appropriate host target section below or a flag above.
|
|
||||||
#
|
|
||||||
EXTRA_CFLAGS=
|
|
||||||
EXTRA_LDFLAGS=
|
|
||||||
|
|
||||||
# COMMON_CFLAGS are the common ${CC} flags used for all progs, both
|
|
||||||
# intermediate and final calc and calc related progs
|
|
||||||
#
|
|
||||||
COMMON_CFLAGS= -DCALC_SRC ${ALLOW_CUSTOM} ${CCWARN} ${CCMISC} ${EXTRA_CFLAGS}
|
|
||||||
|
|
||||||
# COMMON_LDFLAGS are the common flags used for linking all progs, both
|
|
||||||
# intermediate and final calc and calc related progs
|
|
||||||
#
|
|
||||||
COMMON_LDFLAGS= ${EXTRA_LDFLAGS}
|
|
||||||
|
|
||||||
###########################################
|
|
||||||
# Set the default compile flags for ${CC} #
|
|
||||||
###########################################
|
|
||||||
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
# Required flags to compile C files for calc
|
|
||||||
#
|
|
||||||
# ICFLAGS are given to ${CC} for intermediate progs used to help compile calc
|
|
||||||
# CFLAGS are given to ${CC} for calc progs other than intermediate progs
|
|
||||||
#
|
|
||||||
# NOTE: This does not work for: make-XYZ-only and BLD_TYPE != make-XYZ-only
|
|
||||||
#
|
|
||||||
ifeq ($(BLD_TYPE),calc-static-only)
|
|
||||||
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_STATIC}
|
|
||||||
else
|
|
||||||
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_SHARE}
|
|
||||||
endif
|
|
||||||
CFLAGS= ${ICFLAGS} ${CCOPT}
|
|
||||||
|
|
||||||
# Required flags to link files for calc
|
|
||||||
#
|
|
||||||
# ILDFLAGS for ${CC} in linking intermediate progs used to help compile calc
|
|
||||||
# LDFLAGS for ${CC} in linking calc progs other than intermediate progs
|
|
||||||
#
|
|
||||||
ILDFLAGS= ${COMMON_LDFLAGS}
|
|
||||||
LDFLAGS= ${LD_DEBUG} ${ILDFLAGS}
|
|
||||||
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
#=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=#
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
# include start from top Makefile - keep this line
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Allow Makefile.local to override any of the above settings
|
|
||||||
#
|
|
||||||
###
|
|
||||||
EXCLUDE_FROM_CUSTOM_MAKEFILE=true # include only middle of ../Makefile
|
|
||||||
include ../Makefile
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
# include end from top Makefile - keep this line
|
|
||||||
|
|
||||||
# These .c files are required for the main custom interface and
|
# These .c files are required for the main custom interface and
|
||||||
# for the custom support functions for libcustcalc${LIB_EXT_VERSION}.
|
# for the custom support functions for libcustcalc${LIB_EXT_VERSION}.
|
||||||
#
|
#
|
||||||
@@ -621,7 +201,7 @@ H_SRC= ${CUSTOM_H_SRC}
|
|||||||
# directory but are installed as help files from the help/Makefile.
|
# directory but are installed as help files from the help/Makefile.
|
||||||
#
|
#
|
||||||
DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
|
DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
|
||||||
${INSTALL_H_SRC} CUSTOM_CAL HOW_TO_ADD Makefile Makefile.simple
|
${INSTALL_H_SRC} CUSTOM_CAL HOW_TO_ADD Makefile
|
||||||
|
|
||||||
# These files are used to make (but not built) a calc .a link library
|
# These files are used to make (but not built) a calc .a link library
|
||||||
#
|
#
|
||||||
@@ -637,17 +217,27 @@ CALC_STATIC_LIBCUSTCALC= libcustcalc.a
|
|||||||
|
|
||||||
# complete list of targets
|
# complete list of targets
|
||||||
#
|
#
|
||||||
TARGETS= ${BLD_TYPE} Makefile.simple
|
TARGETS= ${BLD_TYPE}
|
||||||
|
|
||||||
###
|
|
||||||
#
|
############################################################
|
||||||
# The main reason for this Makefile :-)
|
# Allow Makefile.local to change any of the above settings #
|
||||||
#
|
############################################################
|
||||||
###
|
include ${LOCAL_MKF}
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# all - First and default Makefile target #
|
||||||
|
###########################################
|
||||||
|
|
||||||
all: ${TARGETS} ${INSTALL_H_SRC} ${CUSTOM_CALC_FILES} \
|
all: ${TARGETS} ${INSTALL_H_SRC} ${CUSTOM_CALC_FILES} \
|
||||||
${CUSTOM_HELP} ${MAKE_FILE} .all
|
${CUSTOM_HELP} ${MAKE_FILE} .all
|
||||||
|
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# additional Makefile targets #
|
||||||
|
###############################
|
||||||
|
|
||||||
calc-dynamic-only: ${CUSTCALC_OBJ} ${CALC_DYNAMIC_LIBCUSTCALC}
|
calc-dynamic-only: ${CUSTCALC_OBJ} ${CALC_DYNAMIC_LIBCUSTCALC}
|
||||||
|
|
||||||
calc-static-only: ${CUSTCALC_OBJ} ${CALC_STATIC_LIBCUSTCALC}
|
calc-static-only: ${CUSTCALC_OBJ} ${CALC_STATIC_LIBCUSTCALC}
|
||||||
@@ -667,12 +257,6 @@ libcustcalc${LIB_EXT_VERSION}: ${CUSTCALC_OBJ} ${MAKE_FILE}
|
|||||||
c_sysinfo.o: c_sysinfo.c ${MAKE_FILE}
|
c_sysinfo.o: c_sysinfo.c ${MAKE_FILE}
|
||||||
${CC} ${CFLAGS} c_sysinfo.c -c
|
${CC} ${CFLAGS} c_sysinfo.c -c
|
||||||
|
|
||||||
##
|
|
||||||
#
|
|
||||||
# used by the upper level Makefile
|
|
||||||
#
|
|
||||||
##
|
|
||||||
|
|
||||||
# to determine of we have done all
|
# to determine of we have done all
|
||||||
#
|
#
|
||||||
.all:
|
.all:
|
||||||
@@ -721,72 +305,8 @@ calcliblist: ${CALCLIBLIST}
|
|||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
Makefile.simple:
|
||||||
Makefile.simple: Makefile ../Makefile
|
${Q} echo Support for custom/$@ was dropped after the the release of calc v2.14.3.0.
|
||||||
${V} echo '=-=-=-=-= custom/${MAKE_FILE} start of $@ rule =-=-=-=-='
|
|
||||||
${Q} if [ -f $@.bak ]; then \
|
|
||||||
echo "custom/$@.bak exists, remove or move it"; \
|
|
||||||
exit 1; \
|
|
||||||
else \
|
|
||||||
${TRUE}; \
|
|
||||||
fi
|
|
||||||
-${Q} if [ -f $@ ]; then \
|
|
||||||
${MV} -f $@ $@.bak; \
|
|
||||||
fi
|
|
||||||
${Q} ${AWK} '/^#if 0/{skp=1} {if(!skp){print $$0}} /^#endif/{skp=0}' \
|
|
||||||
Makefile | \
|
|
||||||
${SED} -e '/^# include start from top Makefile - keep /,$$d' \
|
|
||||||
-e 's;^# SRC:.*;# SRC: custom/$@ - non-GNU version;' \
|
|
||||||
-e '/^ifeq /d' \
|
|
||||||
-e '/^ifneq /d' \
|
|
||||||
-e '/^ifdef /d' \
|
|
||||||
-e '/^ifndef /d' \
|
|
||||||
-e '/^else/d' \
|
|
||||||
-e '/^endif/d' \
|
|
||||||
> $@
|
|
||||||
${Q} echo '# include start from top Makefile - keep this line' \
|
|
||||||
>> $@
|
|
||||||
${Q} ${AWK} '/^#if 0/{skp=1} {if(!skp){print $$0}} /^#endif/{skp=0}' \
|
|
||||||
../Makefile | \
|
|
||||||
${SED} -e '1,/^# include start from top Makefile - keep /d' \
|
|
||||||
-e '/^# include end from top Makefile - keep /,$$d' \
|
|
||||||
-e '/^ifeq /d' \
|
|
||||||
-e '/^ifneq /d' \
|
|
||||||
-e '/^ifdef /d' \
|
|
||||||
-e '/^ifndef /d' \
|
|
||||||
-e '/^else/d' \
|
|
||||||
-e '/^endif/d' \
|
|
||||||
>> $@
|
|
||||||
${Q} echo '# include end from top Makefile - keep this line' \
|
|
||||||
>> $@
|
|
||||||
${Q} ${AWK} '/^#if 0/{skp=1} {if(!skp){print $$0}} /^#endif/{skp=0}' \
|
|
||||||
Makefile | \
|
|
||||||
${SED} -e '1,/^# include end from top Makefile - keep /d' \
|
|
||||||
-e '/^ifeq /d' \
|
|
||||||
-e '/^ifneq /d' \
|
|
||||||
-e '/^ifdef /d' \
|
|
||||||
-e '/^ifndef /d' \
|
|
||||||
-e '/^else/d' \
|
|
||||||
-e '/^endif/d' \
|
|
||||||
>> $@
|
|
||||||
-${Q} if [ -s $@.bak ]; then \
|
|
||||||
if ${CMP} -s $@.bak $@; then \
|
|
||||||
echo 'custom/$@ was already up to date'; \
|
|
||||||
echo 'restoring original custom/$@'; \
|
|
||||||
${MV} -f $@.bak $@; \
|
|
||||||
else \
|
|
||||||
echo 'old custom/$@ is now custom/$@.bak'; \
|
|
||||||
echo 'updated custom/$@ formed'; \
|
|
||||||
(cd .. ; ${DIFF} -u custom/$@.bak custom/$@); \
|
|
||||||
fi; \
|
|
||||||
else \
|
|
||||||
echo 'new custom/$@ formed'; \
|
|
||||||
echo; \
|
|
||||||
(cd .. ; ${LS} -l custom/$@); \
|
|
||||||
echo; \
|
|
||||||
fi
|
|
||||||
${V} echo '=-=-=-=-= custom/${MAKE_FILE} end of $@ rule =-=-=-=-='
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
@@ -1079,7 +599,7 @@ install: all
|
|||||||
${RM} -f ${T}${CUSTOMCALDIR}/libcustcalc.a; \
|
${RM} -f ${T}${CUSTOMCALDIR}/libcustcalc.a; \
|
||||||
echo "removed old ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
|
echo "removed old ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
|
||||||
fi
|
fi
|
||||||
-${Q} if [ ! -z ${ALLOW_CUSTOM} ]; then \
|
-${Q} if [ X"${ALLOW_CUSTOM}" = "X-DCUSTOM" ]; then \
|
||||||
if [ -f libcustcalc.a ]; then \
|
if [ -f libcustcalc.a ]; then \
|
||||||
if ${CMP} -s libcustcalc.a ${T}${LIBDIR}/libcustcalc.a; then \
|
if ${CMP} -s libcustcalc.a ${T}${LIBDIR}/libcustcalc.a; then \
|
||||||
${TRUE}; \
|
${TRUE}; \
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_argv - a custom function display info about its args
|
* c_argv - a custom function display info about its args
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006,2021 Landon Curt Noll
|
* Copyright (C) 1999-2006,2021,2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -25,21 +25,32 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_argv_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_argv_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
|
|
||||||
#include "config.h"
|
#include "../config.h"
|
||||||
#include "calc.h"
|
#include "../calc.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_devnull - a custom function that does nothing
|
* c_devnull - a custom function that does nothing
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2004,2021 Landon Curt Noll
|
* Copyright (C) 1999-2004,2021,2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -25,21 +25,32 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_devnull_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_devnull_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include "have_unistd.h"
|
#include "../have_unistd.h"
|
||||||
#if defined(HAVE_UNISTD_H)
|
#if defined(HAVE_UNISTD_H)
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_help - custom help function
|
* c_help - custom help function
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2004,2021,2022 Landon Curt Noll
|
* Copyright (C) 1999-2004,2021-2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -25,22 +25,33 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_help_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_help_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include "have_unistd.h"
|
#include "../have_unistd.h"
|
||||||
#if defined(HAVE_UNISTD_H)
|
#if defined(HAVE_UNISTD_H)
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "attribute.h"
|
#include "../attribute.h"
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_pmodm127 - calculate q mod 2^(2^127-1)
|
* c_pmodm127 - calculate q mod 2^(2^127-1)
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2007,2021,2022 Landon Curt Noll
|
* Copyright (C) 2004-2007,2021-2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -24,20 +24,31 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_pmodm127_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_pmodm127_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
#include "zmath.h"
|
#include "../zmath.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "attribute.h"
|
#include "../attribute.h"
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/* 2^255 */
|
/* 2^255 */
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_pzasusb8 - print numerator as a string of USB8s
|
* c_pzasusb8 - print numerator as a string of USB8s
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2004,2021,2022 Ernest Bowen
|
* Copyright (C) 1999-2004,2021-2023 Ernest Bowen
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -24,20 +24,31 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_pzasusb8_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_pzasusb8_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
#include "zmath.h"
|
#include "../zmath.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "attribute.h"
|
#include "../attribute.h"
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_register - set or print a custom register value
|
* c_register - set or print a custom register value
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007,2021,2022 Landon Curt Noll
|
* Copyright (C) 2007,2021-2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -25,22 +25,33 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_register_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_register_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
|
|
||||||
#include "config.h"
|
#include "../config.h"
|
||||||
#include "calc.h"
|
#include "../calc.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "attribute.h"
|
#include "../attribute.h"
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* c_sysinfo - names and values of selected #defines
|
* c_sysinfo - names and values of selected #defines
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2007,2021,2022 Landon Curt Noll
|
* Copyright (C) 1999-2007,2021-2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -25,40 +25,51 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C requires a translation unit to contain at least one declaration,
|
||||||
|
* so we declare a global variable whose value is based on if CUSTOM is defined.
|
||||||
|
*/
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
int c_sysinfo_allowed = 1; /* CUSTOM defined */
|
||||||
|
#else /* CUSTOM */
|
||||||
|
int c_sysinfo_allowed = 0; /* CUSTOM undefined */
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
|
||||||
|
|
||||||
#if defined(CUSTOM)
|
#if defined(CUSTOM)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "have_string.h"
|
#include "../have_string.h"
|
||||||
#if defined(HAVE_STRING_H)
|
#if defined(HAVE_STRING_H)
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
|
|
||||||
#include "config.h"
|
#include "../config.h"
|
||||||
#include "lib_calc.h"
|
#include "../lib_calc.h"
|
||||||
#include "calc.h"
|
#include "../calc.h"
|
||||||
#include "longbits.h"
|
#include "../longbits.h"
|
||||||
#define CHECK_L_FORMAT
|
#define CHECK_L_FORMAT
|
||||||
#include "block.h"
|
#include "../block.h"
|
||||||
#include "calcerr.h"
|
#include "../calcerr.h"
|
||||||
#include "conf.h"
|
#include "../conf.h"
|
||||||
#include "endian_calc.h"
|
#include "../endian_calc.h"
|
||||||
#include "fposval.h"
|
#include "../fposval.h"
|
||||||
#include "hist.h"
|
#include "../hist.h"
|
||||||
#include "prime.h"
|
#include "../prime.h"
|
||||||
#include "zrand.h"
|
#include "../zrand.h"
|
||||||
#include "zrandom.h"
|
#include "../zrandom.h"
|
||||||
|
|
||||||
#include "have_unused.h"
|
#include "../have_unused.h"
|
||||||
|
|
||||||
|
|
||||||
#include "attribute.h"
|
#include "../attribute.h"
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* custtbl - custom interface table
|
* custtbl - custom interface table
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2007,2021 Landon Curt Noll
|
* Copyright (C) 1999-2007,2021,2023 Landon Curt Noll
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -24,19 +24,37 @@
|
|||||||
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "have_const.h"
|
#include "../have_const.h"
|
||||||
#include "value.h"
|
#include "../value.h"
|
||||||
#include "custom.h"
|
#include "../custom.h"
|
||||||
|
|
||||||
|
|
||||||
#include "banned.h" /* include after system header <> includes */
|
#include "../banned.h" /* include after system header <> includes */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE: See the file CUSTOM for instructions on how to add
|
* custom_compiled - determine if custom functions are compiled into libcustcalc
|
||||||
* custom functions.
|
*
|
||||||
|
* returns:
|
||||||
|
s* 1 ==> libcustcalc was compiled with CUSTOM defined
|
||||||
|
* 0 ==> libcustcalc was compiled with CUSTOM undefined
|
||||||
|
*/
|
||||||
|
E_FUNC int
|
||||||
|
custom_compiled(void)
|
||||||
|
{
|
||||||
|
#if defined(CUSTOM)
|
||||||
|
return 1;
|
||||||
|
#else /* CUSTOM */
|
||||||
|
return 0;
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: See the file HOW_TO_ADD for instructions on how to add custom functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
251
help/Makefile
251
help/Makefile
@@ -4,13 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 1999-2006,2017,2021-2023 Landon Curt Noll
|
# Copyright (C) 1999-2006,2017,2021-2023 Landon Curt Noll
|
||||||
#
|
#
|
||||||
# SRC: help/Makefile
|
# Suggestion: Read the ../HOWTO.INSTALL file.
|
||||||
#
|
|
||||||
# The "# SRC: ... - ..." comment line above indicates
|
|
||||||
# the origin of this file.
|
|
||||||
#
|
|
||||||
# IMPORTANT: Please see the section on Makefiles near the
|
|
||||||
# bottom of the HOWTO.INSTALL file.
|
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# Calc is open software; you can redistribute it and/or modify it under
|
||||||
# the terms of the version 2.1 of the GNU Lesser General Public License
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -29,184 +23,63 @@
|
|||||||
# Under source code control: 1991/07/23 06:47:57
|
# Under source code control: 1991/07/23 06:47:57
|
||||||
# File existed as early as: 1991
|
# File existed as early as: 1991
|
||||||
#
|
#
|
||||||
|
# This calculator first developed by David I. Bell with help/mods from others.
|
||||||
|
#
|
||||||
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
# chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
#
|
|
||||||
# calculator by David I. Bell with help/mods from others
|
|
||||||
# Makefile by Landon Curt Noll
|
|
||||||
|
|
||||||
|
|
||||||
# The shell used by this Makefile
|
# SUGGESTION: Instead of modifying this file, consider adding
|
||||||
#
|
# statements to modify, replace or append Makefile
|
||||||
# On some systems, /bin/sh is a rather reduced shell with
|
# variables in the ../Makefile.local file.
|
||||||
# deprecated behavior.
|
|
||||||
#
|
|
||||||
# If your system has a up to date, bash shell, then
|
|
||||||
# you may wish to use:
|
|
||||||
#
|
|
||||||
# SHELL= bash
|
|
||||||
#
|
|
||||||
# On some systems such as macOS, the bash shell is very
|
|
||||||
# far behind to the point where is cannot be depended on.
|
|
||||||
# On such systems, the sh may be a much better alternative
|
|
||||||
# shell for this Makefile to use:
|
|
||||||
#
|
|
||||||
# SHELL= sh
|
|
||||||
#
|
|
||||||
SHELL= bash
|
|
||||||
#SHELL= sh
|
|
||||||
#if 0 /* start of skip for non-Gnu makefiles */
|
|
||||||
#
|
|
||||||
ifeq ($(target),Darwin)
|
|
||||||
SHELL:= /bin/sh
|
|
||||||
endif
|
|
||||||
#endif /* end of skip for non-Gnu makefiles */
|
|
||||||
|
|
||||||
|
|
||||||
####
|
###########################################
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
# Files used or included by this Makefile #
|
||||||
# a default here just in case you want to build from this directory.
|
###########################################
|
||||||
####
|
|
||||||
|
|
||||||
# PREFIX - Top level location for calc
|
|
||||||
#
|
|
||||||
# The PREFIX is often prepended to paths within calc and calc Makefiles.
|
|
||||||
#
|
|
||||||
# Starting with calc v2.13.0.1, nearly all Makefile places that used
|
|
||||||
# /usr/local now use ${PREFIX}. An exception is the olduninstall rule
|
|
||||||
# and, of course, this section. :-)
|
|
||||||
#
|
|
||||||
# NOTE: The ${PREFIX} is not the same as ${T}. The ${T} specifies
|
|
||||||
# a top level directory under which calc installs things.
|
|
||||||
# While usually ${T} is empty, it can be specific path
|
|
||||||
# as if calc where "chrooted" during an install.
|
|
||||||
# The ${PREFIX} value, during install, is a path between
|
|
||||||
# the top level ${T} install directory and the object
|
|
||||||
# such as an include file.
|
|
||||||
#
|
|
||||||
# NOTE: See also, ${T}, below.
|
|
||||||
#
|
|
||||||
# There are some paths that do NOT call under ${PREFIX}, such as
|
|
||||||
# ${CALCPATH}, that include paths not under ${PREFIX}, but those
|
|
||||||
# too are exceptions to this general rule.
|
|
||||||
#
|
|
||||||
# When in doubt, try:
|
|
||||||
#
|
|
||||||
# PREFIX= /usr/local
|
|
||||||
#
|
|
||||||
PREFIX= /usr/local
|
|
||||||
#PREFIX= /usr
|
|
||||||
#PREFIX= /usr/global
|
|
||||||
|
|
||||||
# Normally certain files depend on the Makefile. If the Makefile is
|
# Normally certain files depend on the Makefile. If the Makefile is
|
||||||
# changed, then certain steps should be redone. If MAKE_FILE is
|
# changed, then certain steps should be redone. If MAKE_FILE is
|
||||||
# set to Makefile, then these files will depend on Makefile. If
|
# set to Makefile, then these files will depend on Makefile. If
|
||||||
# MAKE_FILE is empty, then they wont.
|
# MAKE_FILE is empty, then they won't.
|
||||||
#
|
#
|
||||||
# If in doubt, set MAKE_FILE to Makefile
|
# If in doubt, set MAKE_FILE to Makefile
|
||||||
#
|
#
|
||||||
MAKE_FILE= Makefile
|
MAKE_FILE= Makefile
|
||||||
|
|
||||||
# Where the system include (.h) files are kept
|
# Calc configuration and compile configuration values
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# INCDIR= /dev/env/DJDIR/include
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# INCDIR= /usr/include
|
|
||||||
#
|
#
|
||||||
|
CONFIG_MKF= ../Makefile.config
|
||||||
|
|
||||||
#INCDIR= /usr/local/include
|
# Host targets that are shared in common with both Makefile
|
||||||
#INCDIR= /dev/env/DJDIR/include
|
# and custom/Makefile.
|
||||||
INCDIR= /usr/include
|
#
|
||||||
|
TARGET_MKF= ../Makefile.target
|
||||||
|
|
||||||
# where to install calc related things
|
# Host target information.
|
||||||
#
|
#
|
||||||
# ${BINDIR} where to install calc binary files
|
LOCAL_MKF= ../Makefile.local
|
||||||
# ${LIBDIR} where calc link library (*.a) files are installed
|
|
||||||
# ${CALC_SHAREDIR} where to install calc help, .cal, startup, config files
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# For DJGPP, select:
|
|
||||||
#
|
|
||||||
# BINDIR= /dev/env/DJDIR/bin
|
|
||||||
# LIBDIR= /dev/env/DJDIR/lib
|
|
||||||
# CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# BINDIR= /usr/bin
|
|
||||||
# LIBDIR= /usr/lib
|
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
#BINDIR= ${PREFIX}/bin
|
|
||||||
#BINDIR= /dev/env/DJDIR/bin
|
|
||||||
BINDIR= /usr/bin
|
|
||||||
|
|
||||||
#LIBDIR= ${PREFIX}/lib
|
# The set of Makefiles
|
||||||
#LIBDIR= /dev/env/DJDIR/lib
|
#
|
||||||
LIBDIR= /usr/lib
|
MK_SET= ${MAKE_FILE} ${CONFIG_MKF} ${TARGET_MKF} ${LOCAL_MKF}
|
||||||
|
|
||||||
#CALC_SHAREDIR= ${PREFIX}/lib/calc
|
|
||||||
#CALC_SHAREDIR= /dev/env/DJDIR/share/calc
|
|
||||||
CALC_SHAREDIR= /usr/share/calc
|
|
||||||
|
|
||||||
# By default, these values are based CALC_SHAREDIR, INCDIR, BINDIR
|
#######################################################
|
||||||
# ---------------------------------------------------------------
|
# Calc configuration and compile configuration values #
|
||||||
# ${HELPDIR} where the help directory is installed
|
#######################################################
|
||||||
# ${CALC_INCDIR} where the calc include files are installed
|
include ${CONFIG_MKF}
|
||||||
# ${SCRIPTDIR} where calc shell scripts are installed
|
|
||||||
#
|
|
||||||
# NOTE: The install rule prepends installation paths with ${T}, which
|
|
||||||
# by default is empty. If ${T} is non-empty, then installation
|
|
||||||
# locations will be relative to the ${T} directory.
|
|
||||||
#
|
|
||||||
# If in doubt, set:
|
|
||||||
#
|
|
||||||
# HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
# CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
# SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
#
|
|
||||||
HELPDIR= ${CALC_SHAREDIR}/help
|
|
||||||
CALC_INCDIR= ${INCDIR}/calc
|
|
||||||
SCRIPTDIR= ${BINDIR}/cscript
|
|
||||||
|
|
||||||
# T - top level directory under which calc will be installed
|
|
||||||
#
|
###############################
|
||||||
# The calc install is performed under ${T}, the calc build is
|
# host target section include #
|
||||||
# performed under /. The purpose for ${T} is to allow someone
|
###############################
|
||||||
# to install calc somewhere other than into the system area.
|
include ${TARGET_MKF}
|
||||||
#
|
|
||||||
# For example, if:
|
|
||||||
#
|
##########################################################################
|
||||||
# BINDIR= /usr/bin
|
#=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=#
|
||||||
# LIBDIR= /usr/lib
|
##########################################################################
|
||||||
# CALC_SHAREDIR= /usr/share/calc
|
|
||||||
#
|
|
||||||
# and if:
|
|
||||||
#
|
|
||||||
# T= /var/tmp/testing
|
|
||||||
#
|
|
||||||
# Then the installation locations will be:
|
|
||||||
#
|
|
||||||
# calc binary files: /var/tmp/testing/usr/bin
|
|
||||||
# calc link library: /var/tmp/testing/usr/lib
|
|
||||||
# calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
|
||||||
# ... etc ... /var/tmp/testing/...
|
|
||||||
#
|
|
||||||
# If ${T} is empty, calc is installed under /, which is the same
|
|
||||||
# top of tree for which it was built. If ${T} is non-empty, then
|
|
||||||
# calc is installed under ${T}, as if one had to chroot under
|
|
||||||
# ${T} for calc to operate.
|
|
||||||
#
|
|
||||||
# If in doubt, use T=
|
|
||||||
#
|
|
||||||
T=
|
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
@@ -240,41 +113,11 @@ H=@
|
|||||||
V=@:
|
V=@:
|
||||||
#V=@
|
#V=@
|
||||||
|
|
||||||
# standard tools
|
|
||||||
#
|
|
||||||
CAT= cat
|
|
||||||
CHMOD= chmod
|
|
||||||
CMP= cmp
|
|
||||||
CP= cp
|
|
||||||
FMT= fmt
|
|
||||||
GREP= grep
|
|
||||||
ICFLAGS=
|
|
||||||
ILDFLAGS=
|
|
||||||
LCC= cc
|
|
||||||
MKDIR= mkdir
|
|
||||||
MV= mv
|
|
||||||
RM= rm
|
|
||||||
RMDIR= rmdir
|
|
||||||
SED= sed
|
|
||||||
SORT= sort
|
|
||||||
TOUCH= touch
|
|
||||||
TRUE= true
|
|
||||||
|
|
||||||
# Some out of date operating systems require / want an executable to
|
##################################
|
||||||
# end with a certain file extension. Some compile systems such as
|
# Files managed by this Makefile #
|
||||||
# Cygwin build calc as calc.exe. The EXT variable is used to denote
|
##################################
|
||||||
# the extension required by such.
|
|
||||||
#
|
|
||||||
# EXT= # normal Un*x / Linux / GNU/Linux systems
|
|
||||||
# EXT=.exe # Windows / Cygwin
|
|
||||||
#
|
|
||||||
# If in doubt, use EXT=
|
|
||||||
#
|
|
||||||
EXT=
|
|
||||||
#EXT=.exe
|
|
||||||
|
|
||||||
# Standard and Builtin help files
|
|
||||||
#
|
|
||||||
STD_HELP_FILES_1= intro overview help
|
STD_HELP_FILES_1= intro overview help
|
||||||
STD_HELP_FILES_2= assoc
|
STD_HELP_FILES_2= assoc
|
||||||
|
|
||||||
@@ -414,9 +257,25 @@ CALCLIBLIST=
|
|||||||
#
|
#
|
||||||
PHONY= all clobber distlist install
|
PHONY= all clobber distlist install
|
||||||
|
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Allow Makefile.local to change any of the above settings #
|
||||||
|
############################################################
|
||||||
|
include ${LOCAL_MKF}
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# all - First and default Makefile target #
|
||||||
|
###########################################
|
||||||
|
|
||||||
all: ${FULL_HELP_FILES} full ${DETAIL_HELP} ${DETAIL_CLONE} \
|
all: ${FULL_HELP_FILES} full ${DETAIL_HELP} ${DETAIL_CLONE} \
|
||||||
${SINGULAR_FILES} .all
|
${SINGULAR_FILES} .all
|
||||||
|
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# additional Makefile targets #
|
||||||
|
###############################
|
||||||
|
|
||||||
# used by the upper level Makefile to determine of we have done all
|
# used by the upper level Makefile to determine of we have done all
|
||||||
#
|
#
|
||||||
# NOTE: Due to bogus shells found on one common system we must have
|
# NOTE: Due to bogus shells found on one common system we must have
|
||||||
|
@@ -832,7 +832,7 @@ DESCRIPTION
|
|||||||
Returns TRUE if you calc was compiled with -DCUSTOM. By default,
|
Returns TRUE if you calc was compiled with -DCUSTOM. By default,
|
||||||
the calc Makefile uses ALLOW_CUSTOM= -DCUSTOM so by default
|
the calc Makefile uses ALLOW_CUSTOM= -DCUSTOM so by default
|
||||||
config("compile_custom") is TRUE. If, however, calc is compiled
|
config("compile_custom") is TRUE. If, however, calc is compiled
|
||||||
without -DCUSTOM, then config("compile_custom") will be FALSE.
|
with ALLOW_CUSTOM="-UCUSTOM", then config("compile_custom") will be FALSE.
|
||||||
|
|
||||||
The config("compile_custom") value is only affected by compile
|
The config("compile_custom") value is only affected by compile
|
||||||
flags. The calc -D runtime command line option does not change
|
flags. The calc -D runtime command line option does not change
|
||||||
@@ -1042,7 +1042,7 @@ LINK LIBRARY
|
|||||||
SEE ALSO
|
SEE ALSO
|
||||||
custom, custom_cal, display, epsilon, fprintf, printf, strprintf, usage
|
custom, custom_cal, display, epsilon, fprintf, printf, strprintf, usage
|
||||||
|
|
||||||
## Copyright (C) 1999-2007,2018,2021 Landon Curt Noll
|
## Copyright (C) 1999-2007,2018,2021,2023 Landon Curt Noll
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## Calc is open software; you can redistribute it and/or modify it under
|
||||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
|
@@ -68,7 +68,8 @@ DESCRIPTION
|
|||||||
help contrib
|
help contrib
|
||||||
|
|
||||||
EXAMPLE
|
EXAMPLE
|
||||||
If calc compiled with ALLOW_CUSTOM= (custom disabled):
|
If calc compiled with ALLOW_CUSTOM="-UCUSTOM", the custom system
|
||||||
|
is disabled, even when -C is used on the command line:
|
||||||
|
|
||||||
; print custom("sysinfo", "baseb")
|
; print custom("sysinfo", "baseb")
|
||||||
Calc was built with custom functions disabled
|
Calc was built with custom functions disabled
|
||||||
@@ -94,7 +95,7 @@ LINK LIBRARY
|
|||||||
SEE ALSO
|
SEE ALSO
|
||||||
custom_cal, new_custom, contrib
|
custom_cal, new_custom, contrib
|
||||||
|
|
||||||
## Copyright (C) 1999 Landon Curt Noll
|
## Copyright (C) 1999,2023 Landon Curt Noll
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## Calc is open software; you can redistribute it and/or modify it under
|
||||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
|
11
rpm.mk
11
rpm.mk
@@ -134,10 +134,12 @@ V=@:
|
|||||||
all: ver_calc calc.spec
|
all: ver_calc calc.spec
|
||||||
${V} echo '=-=-=-=-= rpm.mk start of $@ rule =-=-=-=-='
|
${V} echo '=-=-=-=-= rpm.mk start of $@ rule =-=-=-=-='
|
||||||
PROJECT_VERSION="`./ver_calc`"; \
|
PROJECT_VERSION="`./ver_calc`"; \
|
||||||
|
PROJECT_VER="`./ver_calc -V`"; \
|
||||||
PROJECT_RELEASE="`${SED} -n \
|
PROJECT_RELEASE="`${SED} -n \
|
||||||
-e '/^Release:/s/^Release: *//p' calc.spec.in`"; \
|
-e '/^Release:/s/^Release: *//p' calc.spec.in`"; \
|
||||||
$(MAKE) -f rpm.mk rpm \
|
$(MAKE) -f rpm.mk rpm \
|
||||||
PROJECT_VERSION="$$PROJECT_VERSION" \
|
PROJECT_VERSION="$$PROJECT_VERSION" \
|
||||||
|
PROJECT_VER="$$PROJECT_VER" \
|
||||||
PROJECT_RELEASE="$$PROJECT_RELEASE" Q= S= E=
|
PROJECT_RELEASE="$$PROJECT_RELEASE" Q= S= E=
|
||||||
${V} echo '=-=-=-=-= rpm.mk end of $@ rule =-=-=-=-='
|
${V} echo '=-=-=-=-= rpm.mk end of $@ rule =-=-=-=-='
|
||||||
|
|
||||||
@@ -158,6 +160,7 @@ calc.spec: calc.spec.in ver_calc
|
|||||||
${V} echo '=-=-=-=-= rpm.mk start of $@ rule =-=-=-=-='
|
${V} echo '=-=-=-=-= rpm.mk start of $@ rule =-=-=-=-='
|
||||||
${RM} -f calc.spec
|
${RM} -f calc.spec
|
||||||
${SED} -e 's/<<<PROJECT_VERSION>>>/'"`./ver_calc`"/g \
|
${SED} -e 's/<<<PROJECT_VERSION>>>/'"`./ver_calc`"/g \
|
||||||
|
-e 's/<<<PROJECT_VER>>>/'"`./ver_calc -V`"/g \
|
||||||
calc.spec.in > calc.spec
|
calc.spec.in > calc.spec
|
||||||
${V} echo '=-=-=-=-= rpm.mk end of $@ rule =-=-=-=-='
|
${V} echo '=-=-=-=-= rpm.mk end of $@ rule =-=-=-=-='
|
||||||
|
|
||||||
@@ -167,6 +170,7 @@ srcpkg: make_rhdir
|
|||||||
${V} echo RPM_TOP="${RPM_TOP}"
|
${V} echo RPM_TOP="${RPM_TOP}"
|
||||||
${V} echo RPM_BUILD_ROOT="${RPM_BUILD_ROOT}"
|
${V} echo RPM_BUILD_ROOT="${RPM_BUILD_ROOT}"
|
||||||
${V} echo PROJECT_VERSION="${PROJECT_VERSION}"
|
${V} echo PROJECT_VERSION="${PROJECT_VERSION}"
|
||||||
|
${V} echo PROJECT_VER="${PROJECT_VER}"
|
||||||
${V} echo PROJECT_RELEASE="${PROJECT_RELEASE}"
|
${V} echo PROJECT_RELEASE="${PROJECT_RELEASE}"
|
||||||
${RM} -rf "$(TMPDIR)/$(PROJECT)"
|
${RM} -rf "$(TMPDIR)/$(PROJECT)"
|
||||||
${FIND} . -depth -print | \
|
${FIND} . -depth -print | \
|
||||||
@@ -190,6 +194,7 @@ rpm: srcpkg calc.spec
|
|||||||
${V} echo RPM_TOP="${RPM_TOP}"
|
${V} echo RPM_TOP="${RPM_TOP}"
|
||||||
${V} echo RPM_BUILD_ROOT="${RPM_BUILD_ROOT}"
|
${V} echo RPM_BUILD_ROOT="${RPM_BUILD_ROOT}"
|
||||||
${V} echo PROJECT_VERSION="${PROJECT_VERSION}"
|
${V} echo PROJECT_VERSION="${PROJECT_VERSION}"
|
||||||
|
${V} echo PROJECT_VER="${PROJECT_VER}"
|
||||||
${V} echo PROJECT_RELEASE="${PROJECT_RELEASE}"
|
${V} echo PROJECT_RELEASE="${PROJECT_RELEASE}"
|
||||||
$(MAKE) -f Makefile clean Q= S= E=
|
$(MAKE) -f Makefile clean Q= S= E=
|
||||||
${CP} "$(SPECFILE)" "$(RPM_TOP)/SPECS/$(SPECFILE)"
|
${CP} "$(SPECFILE)" "$(RPM_TOP)/SPECS/$(SPECFILE)"
|
||||||
@@ -210,6 +215,7 @@ make_rhdir:
|
|||||||
${V} echo RPM_TOP="${RPM_TOP}"
|
${V} echo RPM_TOP="${RPM_TOP}"
|
||||||
${V} echo RPM_BUILD_ROOT="${RPM_BUILD_ROOT}"
|
${V} echo RPM_BUILD_ROOT="${RPM_BUILD_ROOT}"
|
||||||
${V} echo PROJECT_VERSION="${PROJECT_VERSION}"
|
${V} echo PROJECT_VERSION="${PROJECT_VERSION}"
|
||||||
|
${V} echo PROJECT_VER="${PROJECT_VER}"
|
||||||
${V} echo PROJECT_RELEASE="${PROJECT_RELEASE}"
|
${V} echo PROJECT_RELEASE="${PROJECT_RELEASE}"
|
||||||
for subdir in "" BUILD RPMS SOURCES SPECS SRPMS tmp; do \
|
for subdir in "" BUILD RPMS SOURCES SPECS SRPMS tmp; do \
|
||||||
i="$(RPM_TOP)/$$subdir"; \
|
i="$(RPM_TOP)/$$subdir"; \
|
||||||
@@ -287,7 +293,10 @@ test: ver_calc
|
|||||||
echo "test needs to install, must be root to test" 1>&2; \
|
echo "test needs to install, must be root to test" 1>&2; \
|
||||||
exit 6; \
|
exit 6; \
|
||||||
fi
|
fi
|
||||||
$(MAKE) -f rpm.mk PROJECT_VERSION="`./ver_calc`" installrpm \
|
$(MAKE) -f rpm.mk \
|
||||||
|
PROJECT_VERSION="`./ver_calc`" \
|
||||||
|
PROJECT_VER="`./ver_calc -V`" \
|
||||||
|
installrpm \
|
||||||
chksys Q= S= E=
|
chksys Q= S= E=
|
||||||
${V} echo '=-=-=-=-= rpm.mk end of $@ rule =-=-=-=-='
|
${V} echo '=-=-=-=-= rpm.mk end of $@ rule =-=-=-=-='
|
||||||
|
|
||||||
|
@@ -84,7 +84,7 @@ static char *program;
|
|||||||
#define MAJOR_VER 2 /* major library version */
|
#define MAJOR_VER 2 /* major library version */
|
||||||
#define MINOR_VER 14 /* minor library version */
|
#define MINOR_VER 14 /* minor library version */
|
||||||
#define MAJOR_PATCH 3 /* major software version level */
|
#define MAJOR_PATCH 3 /* major software version level */
|
||||||
#define MINOR_PATCH 0 /* minor software version level */
|
#define MINOR_PATCH 5 /* minor software version level */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user