To build and install CCfits from source code on a UNIX-like (e.g. UNIX,
Linux, or Cygwin) platform, take the following steps.  For building on
a Microsoft Windows platform with Visual Developer Studio, see below.

===============================================================================
Instructions for Building CCfits on UNIX-like platforms:
===============================================================================

1. Configure
   
   The configure script will create the Makefile with the path to the
   compiler you choose (or GCC by default), and the path to the CFITSIO
   package. To see all options available with configure, type

   > ./configure --help

   1.a. Compiler Choice
 
   By default, the GCC compiler and linker will be used.  If you want to
   compile and link with a different compiler and linker, you can set
   some environment variables before running the configure script.  For
   example, to use a specific Macports C++ compiler, do the following:

   > setenv CXX /opt/local/bin/g++-mp-10  (csh syntax)

   or

   > export CXX=/opt/local/bin/g++-mp-10  (bash syntax)
   
   See also the compiler tips for installing HEASoft:
   
     https://heasarc.gsfc.nasa.gov/docs/software/lheasoft/
   
   1.b. CFITSIO Location
   
   CCfits requires that the CFITSIO package is available on your system.  See

      http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html

   for more information.  The configure script that you will run takes an
   option to specify the location of the CFITSIO package.

   If the CFITSIO package is installed in a directory consisting of a
   'lib' subdirectory containing "libcfitsio.a" or "libcfitsio.so" and
   an 'include' subdirectory containing "fitsio.h", then you can run the
   configure script with a single option.  For example, if the cfitsio
   package is installed in this fashion in /usr/local/cfitsio/, then the
   configure script option will be

   --with-cfitsio=/usr/local/cfitsio

   If the CFITSIO package is not installed in the above manner, then you
   need to run the configure script with two options: one to specify the
   include directory and the other to specify the library directory.  For
   example, if the cfitsio package was built in /home/user/cfitsio/ then
   the two options will be

   --with-cfitsio-include=/home/user/cfitsio 
   --with-cfitsio-libdir=/home/user/cfitsio

   For users of HEASoft (instead of stand-alone CFITSIO):
   You can configure CCfits, after initializing HEASoft, using 
   
   --with-cfitsio=$HEADAS

   1.c. Build Location
   
   You have the option of carrying out the build in a separate directory
   from the source directory or in the same directory as the source.  In
   either case, you need to run the configure script in the directory
   where the build will occur.   For example, if building in the source
   directory, with the cfitsio directory in /usr/local/cfitsio/, then the
   configure command should be issued like this:

   > ./configure --with-cfitsio=/usr/local/cfitsio

   If you do the build in a separate directory from the source, you may
   need to issue the configure command something like this:

   > ../CCfits/configure --with-cfitsio=/usr/local/cfitsio
   
   1.d. Install Location
   
   If you would like to install the CCfits files in a separate location, you 
   can do that during the "make install" command (DESTDIR, described below), 
   or you can specify the location during configure.  For example, if you 
   would like the CCfits files installed in /usr/local/CCfits, you would run
   the configure command like this:
   
   > ./configure --prefix=/usr/local/CCfits


2. Build

   Building the C++ shared library will be done automatically by running make 
   (or gmake if you prefer the GNU make) without arguments like this:

   > gmake


3. Install

   To install, type:

   > make install

   The default install location will be /usr/local/lib for the library
   and /usr/local/include for the header files.  If you do not have permission to 
   write to these locations, you will need to specify another install location.
   You can change this with the --prefix option when you configure, 
   or with the DESTDIR variable when installing. The DESTDIR option 
   will create a /usr/local/ path in that specified location. 
   
   Note that you will also need to update your LD_LIBRARY_PATH:
   
   > export LD_LIBRARY_PATH="/usr/local/CCfits/usr/local/lib/:$LD_LIBRARY_PATH"

   > make DESTDIR=/usr/local/CCfits install


===============================================================================
Instructions for Microsft Windows build:
===============================================================================

These instructions follow similar steps to the building of the CFITSIO
library on Windows, described at

http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/README.win

and rely having the following already installed on your system:

a) Microsoft Visual Studio
b) The CMake build system available from http://www.cmake.org
c) The CFITSIO library available from

http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html

1. After unzipping and untarring the CCfits source code tarball, the source
   code will appear in a new \CCfits subdirectory.

2. Open the Visual Studio Developer Command Prompt window and create a
   directory named "CCfits.build" parallel to this CCfits source code directory.

      mkdir CCfits.build
      cd CCfits.build
   
   This will be the directory from which CMake generate its files and performs 
   the build.

3. Decide which CMake generator you will want to use.  The full list is
   shown by doing

      cmake.exe /?
   
   We've done successful builds using Visual Studio's 'nmake' utility, and so
   recommend choosing "NMake Makefiles" as the generator option.  However if
   you wish to perform the build inside a Visual Studio IDE, you should choose
   the appropriate "Visual Studio <version>" generator.

4.  Now run cmake.exe to generate the necessary Makefiles.  With this
    command you must specify the path to your CFITSIO library and header
    files by setting the '-DCMAKE_PREFIX_PATH' option.  This path should
    be set to the root directory of your CFITSIO installation, from which
    it will look in \lib and \include subdirectories for the library and
    header files respectively.  Your full cmake command may then look like:
    
    CCfits.build>cmake.exe -G"NMake Makefiles" -DCMAKE_PREFIX_PATH=C:\path\to\your\CFITSIO ..\CCfits
    
    If you wish to eventually install CCfits at any place other than the
    default location ("C:\Program Files"), you should pass an additional
    flag to the cmake command above:
    
    -DCMAKE_INSTALL_PREFIX=C:\path\to\your\CCfits\installation
    
5.  Build and install CCfits:

    CCfits.build> nmake

    If all goes well you should now have a CCfits.lib library and
    cookbook.exe executable in your CCfits.build directory.  To test
    the build you can run cookbook.exe, which should generate 3 output
    FITS files: atestfil, btestfil, and ctestfil.fit.
    
    Now install CCfits.lib and its header files into the default
    installation location, or the directory you specified in step 4:
    
    CCfits.build> nmake install
    

===============================================================================

Author: Paul Kunz
Revised 1 Nov 2006 by Bryan Irby
Revised Jan 2016 by Craig Gordon
Revised May 2021 by Kristin Rutkowski

