# Installing a pre-compiled calc from an RPM If your platform supports RPMs, you may want to go to: https://github.com/lcn2/calc/releases and see if there is a pre-compiled version of calc that you may install. 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 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 Alternately to the above github link, you might try looking at the RPMs under: http://www.isthe.com/chongo/src/calc/ # 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 - NOTE: An alternate location for calc bzip2 compressed tarballs is: http://www.isthe.com/chongo/src/calc/ ### Obtaining the experimental top of the master branch calc source 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: git clone https://github.com/lcn2/calc.git IMPORTANT: 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. ## Step 1: Makefile considerations ### 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". ### Review Makefiles Review Makefile.config and Makefile.target. 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 (as well as Msys2 / Msys OSNAME) - 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 the calc help subsystem. See also the README.md file. In general, if you run into problems, read the BUGS file and follow the instructions. # IMPORTANT: parallel make not supported 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. ## Copyright (C) 1999-2007,2021,2023 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 /\oo/\ http://www.isthe.com/chongo/ ## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/