remove Makefile.simple and add Makefile.target

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 platform target section from the old Makefile has been moved
to a new file, Makefile.target.  The Makefile.target is shared
by both Makefile and custom/Makefile.  The custom/Makefile no
longer includes Makefile (instead it includes ../Makefile.target).
This commit is contained in:
Landon Curt Noll
2023-08-13 20:48:06 -07:00
parent b408b59d8d
commit f416973a31
8 changed files with 1031 additions and 9856 deletions

10
CHANGES
View File

@@ -34,6 +34,16 @@ The following are the changes from calc version 2.14.3.1 to date:
Added comments in Makefile.local for how to reduce dependency chains Added comments in Makefile.local for how to reduce dependency chains
under macOS. XXX - this doesn't yet work so don't uncomment - XXX. under macOS. XXX - this doesn't yet work so don't uncomment - XXX.
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 platform target section from the old Makefile has been moved
to a new file, Makefile.target. The Makefile.target is shared
by both Makefile and custom/Makefile. The custom/Makefile no
longer includes Makefile (instead it includes ../Makefile.target).
The following are the changes from calc version 2.14.2.1 to 2.14.3.0: The following are the changes from calc version 2.14.2.1 to 2.14.3.0:

View File

@@ -1,198 +1,193 @@
# 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.
###################################################################
# 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:
(0) If your platform supports i686 RPMs, you may want to go to:
https://github.com/lcn2/calc/releases https://github.com/lcn2/calc/releases
Open up the 'Assets' tag below a given release and and see if there is a pre-compiled version of calc that you may install.
download these RPMs:
* calc*.i686.rpm Open up the 'Assets' tag below a given release and download these RPMs:
* calc*.rpm
- all that is needed if you just want to use calc - all that is needed if you just want to use calc
* calc-devel-*.i686.rpm If your platform supports rpm and matches one of the "calc*.rpm" files, you
may just install that "calc*.rpm". For exammple on an x86_64 system:
dnf install calc-x.y.z.cv-ww.x86_64.rpm
where "calc-x.y.z.cv-ww.x86_64.rpm" is the name of the calc RPM.
In addition, if your platform supports rpm and matches one of the
"calc*.rpm" files, you may also install the calc *.h header and *.a lib
files for use in other programs:
* calc-devel-*.rpm
- calc *.h header and *.a lib files for use in other programs - calc *.h header and *.a lib files for use in other programs
* calc.*.src.rpm Alternately to the above github link, you might try looking at the RPMs under:
- calc source via a SRPM package
Alternately to the above github link, you might try looking at
the RPMs under:
http://www.isthe.com/chongo/src/calc/ http://www.isthe.com/chongo/src/calc/
=-=
The following 4 steps apply to calc source tree that comes from either:
# Building calc from a source tree
## Step 0: Obtain the calc source tree
Go to the site:
https://github.com/lcn2/calc/releases
Look for release with a file of the form:
calc-x.y.z.v.tar.bz2
A release marked with a green "(Latest)" is a production release
that as undergone a fair amount of testing.
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.
Use the followig command to uncompress the bzip2 compressed tarball:
bunzip2 -c calc-*.tar.bz2 | tar -xvf - bunzip2 -c calc-*.tar.bz2 | tar -xvf -
or from: NOTE: An alternate location for calc bzip2 compressed tarballs is:
rpm -ivh calc-*.src.rpm http://www.isthe.com/chongo/src/calc/
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 ### Obtaining the experimental top of the master branch calc source
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.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! You may also fetch the top of the master branch of the GitHub repo
! By default, calc assumes you have the readline package installed ! if you wish to see what the latest source code looks like:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! macOS does not have readline, so mac users need to make a choice !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The readline package (-lreadline, -lhistory, -lncurses) used by and git clone https://github.com/lcn2/calc.git
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 IMPORTANT:
Install the readline package first, then compile calc. The latest source code may be "experimental in nature". You may be
better off using a released bzip2 compressed tarball instead.
Released bzip2 compressed tarballs tend to be more well tested
than the top of the master branch.
For information on the readline package, see:
## Step 1: Makefile considerations
Look at Makefile, and adjust it to suit your needs.
### IMPORTANT: Make support of conditional syntax required:
To compile calc, you must use a make that supports the use of
"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:
https://www.gnu.org/software/make/
The Gnu Make is not required per-se, just a modern make tool
that supports "Conditional syntax".
### Suggestion: Modify Makefile.local instead of Makefile:
In most cases, to change the way that calc is made, consider
adding lines to Makefile.local instead of modifying Makefile.
A recommened 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:
CFLAGS+= -UCUSTOM
## 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 https://tiswww.case.edu/php/chet/readline/rltop.html
MacOS users can use MacPorts or HomeBrew to install readline: MacOS users can use MacPorts or HomeBrew to install readline:
https://www.macports.org https://www.macports.org
https://brew.sh https://brew.sh
Or compile from the readline.git repo: Or compile from the readline.git repo:
http://git.savannah.gnu.org/cgit/readline.git/ 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 ### Compile calc without readline:
will need to change your calc Makefile with this patch:
--- Makefile.old 2021-12-29 14:57:56.000000000 -0800 Why do we not recommend this option because using calc with readline
+++ Makefile 2021-12-29 14:59:13.000000000 -0800 provides a beter user experience.
@@ -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 If you feel you must use calc without the readline package, then you
(such as gmake), then you will need to change your will need to compile with:
Makefile.simple with this patch:
--- Makefile.simple.orig 2021-12-29 15:00:53.000000000 -0800 make clobber all USE_READLINE= READLINE_EXTRAS= READLINE_INCLUDE= READLINE_LIB=
+++ 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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! or add to Makefile.local, these lines:
! 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), USE_READLINE=
then you should try using the Makefile.simple and custom/Makefile.simple READLINE_EXTRAS=
files: READLINE_INCLUDE=
READLINE_LIB=
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 ### Windows or a Windows-like environments:
any values set in the Makefile by adding them to Makefile.local
using the := directive. For example:
HAVE_STRING_H:= YES Currently Windows is not a well supported platform for calc. There are
HAVE_TIMES_H:= YES people within Microsoft who plan to assist us in being able to allow
SED:= /usr/local/bin/nsed the standard Microsoft Windows developor environment to compile calc.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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:
### Makefile variables to consider:
You should determine if these Makefile variables are reasonable:
INCDIR Where the system include (.h) files are kept. INCDIR Where the system include (.h) files are kept.
BINDIR Where to install calc binary files. BINDIR Where to install calc binary files.
LIBDIR Where to install calc link library (*.a) files. LIBDIR Where to install calc link library (*.a) files.
CALC_SHAREDIR Where to install calc help, .cal, startup, and CALC_SHAREDIR Where to install calc help, .cal, startup, and config files.
config files.
You may want to change the default installation locations for You may want to change the default installation locations for
these values, which are based on the 4 values listed above: these values, which are based on the 4 values listed above:
HELPDIR where the help directory is installed HELPDIR where the help directory is installed
CALC_INCDIR where the calc include files are installed CALC_INCDIR where the calc include files are installed
@@ -201,8 +196,7 @@ or from:
CUSTOMINCDIR where custom .h files are installed CUSTOMINCDIR where custom .h files are installed
SCRIPTDIR where calc shell scripts are installed SCRIPTDIR where calc shell scripts are installed
If you want to install calc files under a top level directory, If you want to install calc files under a top level directory, then set the T value:
then set the T value:
The calc install is performed under ${T}, the calc build is The calc install is performed under ${T}, the calc build is
performed under /. The purpose for ${T} is to allow someone performed under /. The purpose for ${T} is to allow someone
@@ -230,266 +224,137 @@ or from:
calc is installed under ${T}, as if one had to chroot under calc is installed under ${T}, as if one had to chroot under
${T} for calc to operate. ${T} for calc to operate.
Look for the section that starts: 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
# 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 ### platform target section
You may or may not need RANLIB when building libraries. The file, Makefile.target, contains information about various platforms.
As shipped the Makefile assumes RANLIB is needed. The current list of targets in Makefile.target are:
Comment the in/out the RANLIB value if ranlib does
not work or does not exist.
CALCPAGER - Linux target
- Apple macOS / Darwin target
- FreeBSD target
- OpenBSD target
- Cygwin target
- simple target
- default target (when target is empty)
You may want to change the default pager used by calc. If you wish to modiy your target platform, consider doing
As shipped the Makefile assumes 'more'. On your system so via the Makefile.local file. See "Suggestion Modify Makefile.local
you may find 'less' to be a better pager. instead of Makefile" above.
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 ## Step 2: compile calc
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. Remove any previous compile attempts and compile by default:
(2) build calc: make clobber all
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 ### Force calc to build with only static libs:
cp Makefile.simple Makefile
mv custom/Makefile custom/Makefile.gmake
cp custom/Makefile.simple custom/Makefile
make all You may force calc to build with only static libs:
==> We are interested in any compiler warnings (and errors) that make clobber calc-static-only BLD_TYPE=calc-static-only
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: ### Force calc to build with only dynamic shared libs:
make clobber You may force calc to build with only dynamic libs:
make calc-dynamic-only BLD_TYPE=calc-dynamic-only
(3) test calc: 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 make check
NOTE: For a quiet check which only prints if something goes wrong: For a more quiet check which only prints if something goes wrong, use:
make chk make chk
(4) install calc:
### Step 4: install calc
Depending on permissions, you may need to become the super-user:
sudo -s
before you install:
make 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

1122
Makefile

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

523
Makefile.target Normal file
View File

@@ -0,0 +1,523 @@
#!/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.
#######################################################################
# 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)
#
BLD_TYPE= calc-dynamic-only
#
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}"
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LD_STATIC=
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
#
# 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}
#
#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
###############################
# Apple macOS / Darwin target #
###############################
# For old Apple Power PC systems, we need to add:
#
# -std=gnu99 -arch ppc
#
ifeq ($(arch),powerpc)
COMMON_CFLAGS+= -std=gnu99
COMMON_LDFLAGS+= -std=gnu99
ARCH_CFLAGS+= -arch ppc
endif
ifeq ($(target),Darwin)
#
BLD_TYPE= calc-dynamic-only
#
CC_SHARE= -fPIC
DEFAULT_LIB_INSTALL_PATH= ${PWD}:${LIBDIR}:${PREFIX}/lib
LD_SHARE= ${ARCH_CFLAGS}
#SET_INSTALL_NAME= no
SET_INSTALL_NAME= yes
ifeq ($(SET_INSTALL_NAME),yes)
LIBCALC_SHLIB= -single_module -undefined dynamic_lookup -dynamiclib \
-install_name ${LIBDIR}/libcalc${LIB_EXT_VERSION} ${ARCH_CFLAGS}
else
LIBCALC_SHLIB= -single_module -undefined dynamic_lookup -dynamiclib \
${ARCH_CFLAGS}
endif
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
ifeq ($(SET_INSTALL_NAME),yes)
LIBCUSTCALC_SHLIB= -single_module -undefined dynamic_lookup -dynamiclib \
-install_name ${LIBDIR}/libcustcalc${LIB_EXT_VERSION} ${ARCH_CFLAGS}
else
LIBCUSTCALC_SHLIB= -single_module -undefined dynamic_lookup -dynamiclib \
${ARCH_CFLAGS}
endif
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LD_STATIC= ${ARCH_CFLAGS}
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
# 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 clang's -fsanitize for calc testing,
# which requires a common set of flags to be passed to
# every compile and link, then call make with:
#
# make .. COMMON_ADD='-fsanitize=undefined -fsanitize=address'
#
# This facility requires a Gnu Makefile, or a make command
# that understands the += make operand.
#
COMMON_CFLAGS+= ${COMMON_ADD}
COMMON_LDFLAGS+= ${COMMON_ADD}
#
#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
##################
# FreeBSD target #
##################
ifeq ($(target),FreeBSD)
#
BLD_TYPE= calc-dynamic-only
#
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}"
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LD_STATIC=
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
#
# 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}
#
#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
##################
# OpenBSD target #
##################
ifeq ($(target),OpenBSD)
#
BLD_TYPE= calc-dynamic-only
#
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}"
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LD_STATIC=
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
#
# 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}
#
#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
#################
# Cygwin target #
#################
ifeq ($(target),Cygwin)
#
BLD_TYPE= calc-static-only
#
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}"
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
LD_STATIC=
#
# 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}
#
#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
#################
# simple target #
#################
# NOTE: This is not a real host target. It is just a best
# attempt is a generic host not otherwise found above.
ifeq ($(target),simple)
#
BLD_TYPE= calc-static-only
#
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}"
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LD_STATIC=
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
#
#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}
#
# The simple makefile forces the use of static ${CC} flags
#
# 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
# ILDFLAGS for ${CC} in linking intermediate programs used to help compile calc
# LDFLAGS for ${CC} in linking calc programs other than intermediate programs
#
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_STATIC}
CFLAGS= ${ICFLAGS} ${CCOPT}
#
ILDFLAGS= ${COMMON_LDFLAGS} ${LD_STATIC}
LDFLAGS= ${LD_DEBUG} ${ILDFLAGS} ${LIBCALC_STATIC} ${LIBCUSTCALC_STATIC}
#
endif
###########################################
# default target - (when target is empty) #
###########################################
# NOTE: This is the default generic host target. Used when no other
# host target matches.
ifeq ($(target),)
#
BLD_TYPE= calc-static-only
#
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}"
ifeq ($(ALLOW_CUSTOM),-DCUSTOM)
LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}"
else
LIBCUSTCALC_SHLIB=
endif
#
CC_STATIC=
LIBCALC_STATIC=
LIBCUSTCALC_STATIC=
LD_STATIC=
#
# 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}
#
#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
###########################################
# Set the default compile flags for ${CC} #
###########################################
# 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
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_SHARE}
endif
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 -=-=-=-=-=-#
#######################################################################

View File

@@ -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

View File

@@ -55,12 +55,20 @@
# #
SHELL= bash SHELL= bash
#SHELL= sh #SHELL= sh
#if 0 /* start of skip for non-Gnu makefiles */
# Darwin shell default
# #
ifeq ($(target),Darwin) ifeq ($(target),Darwin)
SHELL:= /bin/sh SHELL:= /bin/sh
endif endif # ($(target),Darwin)
#endif /* end of skip for non-Gnu makefiles */
# If you are using Cygwin with MinGW64 packages
# then we will also need to use the Cygwin runtime enviroment
# and the calc Cygwin make target.
##
ifeq ($(OSNAME),Cygwin)
target:= Cygwin
endif # ($(OSNAME),Cygwin)
# PREFIX - Top level location for calc # PREFIX - Top level location for calc
@@ -130,13 +138,13 @@ CCBAN= -UUNBAN
#CCBAN= -DUNBAN #CCBAN= -DUNBAN
#if 0 /* start of skip for non-Gnu makefiles */ # We do not support parallel make of calc. We have found most
# parallel make systems do not get the rule dependency order
# Unfortunately due to the complex dependency issues between # correct, resulting in a failed attempt to compile calc.
# Makefile, and custom/Makefile, parallel GNU make
# is NOT recommended.
# #
# XXX - fix this - XXX # If you believe you have a way to get a parallel make of calc
# to work, consider submitting a pull request with a
# proposed change.
# #
.NOTPARALLEL: .NOTPARALLEL:
@@ -152,8 +160,16 @@ CCBAN= -UUNBAN
# #
ifeq ($(target),) ifeq ($(target),)
target=$(shell uname -s 2>/dev/null) target=$(shell uname -s 2>/dev/null)
endif endif # ($(target),)
#endif /* end of skip for non-Gnu makefiles */ ifeq ($(arch),)
arch=$(shell uname -p 2>/dev/null)
endif # ($(arch),)
ifeq ($(hardware),)
hardware=$(shell uname -m 2>/dev/null)
endif # ($(hardware),)
ifeq ($(OSNAME),)
OSNAME=$(shell uname -o 2>/dev/null)
endif # ($(OSNAME),)
# The custom calc resource files to install # The custom calc resource files to install
# #
@@ -540,8 +556,6 @@ COMMON_LDFLAGS= ${EXTRA_LDFLAGS}
# Set the default compile flags for ${CC} # # Set the default compile flags for ${CC} #
########################################### ###########################################
#if 0 /* start of skip for non-Gnu makefiles */
# Required flags to compile C files for calc # Required flags to compile C files for calc
# #
# ICFLAGS are given to ${CC} for intermediate progs used to help compile calc # ICFLAGS are given to ${CC} for intermediate progs used to help compile calc
@@ -551,9 +565,9 @@ COMMON_LDFLAGS= ${EXTRA_LDFLAGS}
# #
ifeq ($(BLD_TYPE),calc-static-only) ifeq ($(BLD_TYPE),calc-static-only)
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_STATIC} ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_STATIC}
else else # ($(BLD_TYPE),calc-static-only)
ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_SHARE} ICFLAGS= ${COMMON_CFLAGS} ${CCBAN} ${CC_SHARE}
endif endif # ($(BLD_TYPE),calc-static-only)
CFLAGS= ${ICFLAGS} ${CCOPT} CFLAGS= ${ICFLAGS} ${CCOPT}
# Required flags to link files for calc # Required flags to link files for calc
@@ -564,23 +578,15 @@ CFLAGS= ${ICFLAGS} ${CCOPT}
ILDFLAGS= ${COMMON_LDFLAGS} ILDFLAGS= ${COMMON_LDFLAGS}
LDFLAGS= ${LD_DEBUG} ${ILDFLAGS} LDFLAGS= ${LD_DEBUG} ${ILDFLAGS}
#endif /* end of skip for non-Gnu makefiles */
########################################################################## ##########################################################################
#=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=# #=-=-=-=-=- Be careful if you change something below this line -=-=-=-=-=#
########################################################################## ##########################################################################
# include start from top Makefile - keep this line # Host targets that are shared in common with both Makefile
#if 0 /* start of skip for non-Gnu makefiles */ # and custom/Makefile (if ALLOW_CUSTOM is -DCUSTOM).
###
# #
# Allow Makefile.local to override any of the above settings TARGET_MKF= ../Makefile.target
# include ${TARGET_MKF}
###
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}.
@@ -622,7 +628,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
# #
@@ -638,7 +644,7 @@ CALC_STATIC_LIBCUSTCALC= libcustcalc.a
# complete list of targets # complete list of targets
# #
TARGETS= ${BLD_TYPE} Makefile.simple TARGETS= ${BLD_TYPE}
### ###
# #
@@ -722,72 +728,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 */
## ##
# #

File diff suppressed because it is too large Load Diff