mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Added a bunch of information to the near bottom of HOWTO.INSTALL on calc Makefiles. This information discusses the various Makefiles found in the calc source. Added comments in various calc Makefiles about their origin. In particular, for Makefiles that are constructed such as Makefile.simple, custom/Makefile and custom/Makefile.simple there are comments about how they were made. For all calc Makefiles, including those in sub-directories, near the top there is now a line of the form: # SRC: ... some message about the origin ...
433 lines
14 KiB
Plaintext
433 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 behavor.
|
|
|
|
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 wehre 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 enviroment 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
|
|
inlike awk scritp 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 inbetween 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 enviroments
|
|
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 comands 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 inbetween custom/Makefile.head and custom/Makefile.tail
|
|
# end of host target cut
|
|
|
|
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 direcory
|
|
that is designed for enviroments 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 comands 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/
|