mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
435 lines
14 KiB
Plaintext
435 lines
14 KiB
Plaintext
|
|
IMPORTANT: Please see the section at the bottom of this file for
|
|
some important information on Makefiles used in calc.
|
|
|
|
Installing calc from the bzip2-ed tarball in 4 easy steps:
|
|
|
|
(0) If your platform supports i686 RPMs, you may want to go to:
|
|
|
|
http://www.isthe.com/chongo/src/calc/
|
|
|
|
and use these RPMs:
|
|
|
|
* calc*.i686.rpm
|
|
- all that is needed if you just want to use calc
|
|
|
|
* calc-devel-*.i686.rpm
|
|
- calc *.h header and *.a lib files for use in other programs
|
|
|
|
* calc.*.src.rpm
|
|
- calc source in RPM package form
|
|
|
|
The following 4 steps apply to calc source tree that comes from either:
|
|
|
|
bunzip2 -c calc-*.tar.bz2 | tar -xvf -
|
|
|
|
or from:
|
|
|
|
rpm -ivh calc-*.src.rpm
|
|
cd /var/tmp
|
|
bunzip2 -c /usr/src/redhat/SOURCES/calc-*.tar.bz2 | tar -xvf -
|
|
|
|
(1) Look at the makefile, and adjust it to suit your needs.
|
|
|
|
The top level Makefile and the custom/Makefile require a GNU
|
|
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.
|
|
|
|
Some report that under macOS, one has to declare the target
|
|
to be Darwin. So for macOS, one might have to do:
|
|
|
|
# for macOS users only, force the target to be Darwin
|
|
#
|
|
make target=Darwin clobber
|
|
make target=Darwin all
|
|
make target=Darwin chk
|
|
make target=Darwin install
|
|
|
|
If your target system does not have GNU Make (or equivalent), 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 building under Windoz or a Windoz-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:
|
|
|
|
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.
|
|
|
|
Look for the section that starts:
|
|
|
|
################
|
|
# compiler set #
|
|
################
|
|
|
|
Select a compiler set by commenting in the appropriate set
|
|
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:
|
|
|
|
RANLIB
|
|
|
|
You may or may not need RANLIB when building libraries.
|
|
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
|
|
|
|
You may want to change the default pager used by calc.
|
|
As shipped the Makefile assumes 'more'. On your system
|
|
you may find 'less' to be a better pager.
|
|
|
|
DEBUG
|
|
|
|
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.
|
|
|
|
(2) build calc:
|
|
|
|
The top level Makefile and the custom/Makefile require a GNU
|
|
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
|
|
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
|
|
|
|
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:
|
|
|
|
make clobber
|
|
make calc-static-only BLD_TYPE=calc-static-only
|
|
|
|
or force calc to build with only dynamic libs:
|
|
|
|
make clobber
|
|
make calc-dynamic-only BLD_TYPE=calc-dynamic-only
|
|
|
|
(3) test calc:
|
|
|
|
make check
|
|
|
|
==> If you run into problems, read the BUGS file and follow
|
|
the instructions found in there.
|
|
|
|
NOTE: For a quiet check which only prints if something goes wrong:
|
|
|
|
make chk
|
|
|
|
(4) install calc:
|
|
|
|
make install
|
|
|
|
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.
|
|
|
|
=-=
|
|
|
|
On calc Makefiles:
|
|
|
|
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= ...
|
|
|
|
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 zsh may be a much better alternative
|
|
shell for this Makefile to use:
|
|
|
|
SHELL= /bin/zsh
|
|
|
|
Makefile
|
|
|
|
# SRC: Makefile - Our calc build environment
|
|
|
|
This is our internal Makefile that drives how we build calc.
|
|
For critical rules in Makefile.ship, there is a corresponding
|
|
rule in Makefile that calls ${MAKE} -f Makefile.ship with,
|
|
additional commands, args and Makefile variables. The ${XVAR}
|
|
Makefile variable, for example, is passed on each call to
|
|
${MAKE} -f Makefile.ship so that the environment and parameters of
|
|
Makefile.ship may be managed for our build environment.
|
|
|
|
This Makefile is used to make the calc rpm. In addition to these
|
|
comments, this Makefile differs from the non-rpm bzip2-ed tarball
|
|
source Makefile in at least the the following ways:
|
|
|
|
CCWERR= -Werror
|
|
USE_READLINE= -DUSE_READLINE
|
|
READLINE_LIB= -lreadline -lhistory -lncurses
|
|
|
|
If the Makefile is not suitable for you, then
|
|
you may wish to replace it with Makefile.ship:
|
|
|
|
mv -f -v Makefile.ship Makefile
|
|
|
|
This Makefile 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 packages such as RPMs, and the tar.bz2 source tarball,
|
|
Makefile contains the contents of Makefile.ship. If Makefile.ship
|
|
is missing it has likely moved to replace 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
|
|
|
|
Makefile.ship
|
|
|
|
# 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 */
|
|
|
|
The custom/Makefile rule of Makefile.ship is used to form
|
|
the custom/Makefile. In particular the Makefile.ship lines:
|
|
|
|
# start of host target cut
|
|
... these go in between custom/Makefile.head and custom/Makefile.tail
|
|
# end of host target cut
|
|
|
|
Makefile.simple
|
|
|
|
# SRC: non-GNU Makefile via make -f Makefile.ship Makefile.simple
|
|
|
|
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.head
|
|
|
|
# SRC: custom/Makefile.head
|
|
|
|
This file forms the top part of the custom/Makefile.
|
|
|
|
custom/Makefile.tail
|
|
|
|
# SRC: custom/Makefile.tail
|
|
|
|
This file forms the bottom part of the custom/Makefile.
|
|
|
|
custom/Makefile
|
|
|
|
# SRC: Makefile via make -f Makefile custom/Makefile
|
|
|
|
This is the custom directory Makefile.
|
|
|
|
The custom/Makefile rule of Makefile.ship is used to form
|
|
the custom/Makefile. In particular the Makefile.ship lines:
|
|
|
|
# start of host target cut
|
|
... these go in between custom/Makefile.head and custom/Makefile.tail
|
|
# end of host target cut
|
|
|
|
NOTE: The clobber rule does not remove this file. - XXX
|
|
|
|
custom/Makefile.simple
|
|
|
|
# SRC: non-GNU Makefile via make -f Makefile custom/Makefile.simple
|
|
|
|
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
|
|
## the terms of the 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.
|
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
##
|
|
## Under source code control: 1999/09/27 20:48:44
|
|
## File existed as early as: 1999
|
|
##
|
|
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
|
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|