================================================================= What's new ================================================================= 1) ADFH/HDF5 option to configure 2) shared libraries 3) debugging option 4) large file support 5) Added LOWERCASE__ (g77) and UPPERCASE__ to the Fortran to C interface and control of this with configure 6) configure options for Windows 7) bug fixes 8) The library is now created as SYSTEM/libcgns.a (same place as the object files) instead of lib/libcgns.SYSTEM.a 9) The distribution and use of the CGNS software is now covered by the the zlib/libpng License see below for configuring the options There is also a new subdirectory, f2c, which contains some simple code to help with setting up the Fortran to C interface. See the README in that directory. ================================================================= To compile the CGNS library under Unix, Linux, Cygwin, Mac, .etc: ================================================================= chmod +x configure ./configure [options] make [SYSTEM=XXX] [target] The arguments in [] are optional, and if given should be specified without the []. The recognized options to configure are: --enable-gcc Normally, the configure script will search for the native C compiler (cc) before trying to find gcc. This option reverses this order. --enable-debug[=OPTS] This enables a debug version of the library. Normally, this just sets the -g option for compiling, and prevents stripping the library and executables. If 'OPTS' is given, this is taken as the compile options to be used instead. i.e. --enable-debug=-g gives the default. --with-system=XXX overrides the default system type (see below) and sets the system type to 'XXX'. If not given, the system type will be determined from the 'cgsystem' script. --enable-64bit This option turns on 64-bit compilation, where applicable. --enable-lfs This enables large file support (files larger than 2 Gb), where applicable. Your kernel must also be capable of LFS for this to make a difference. --with-fortran[=F2C] By default the Fortran interface is enabled, and the configure script trys to determine the proper Fortran to C interface. If you specify --without-fortran or --with-fortran=no, the Fortran interface will not be built. To change the Fortran to C interface, specify 'F2C' as one of LOWERCASE, LOWERCASE_, LOWERCASE__, UPPERCASE, UPPERCASE_, or UPPERCASE__. *** NOTE *** If you are using g77, and want to use the compiler without the -fno-second-underscore flag, then use --with-fortran=LOWERCASE__. This should work fine with the MLL routines, but you will NOT be able to use the ADF routines, since you will get unresolved external references when you try to link. The reason is that g77 appends 2 underscores to names which have an underscore in them (the cg_* routines), but only 1 underscore to names that don't (the adf* routines). I don't know why - but that what's happening (at least with my version of g77). You may play around with the test case in the f2c subdirectory and see if you can come up with a solution - if so, let me know. ************ --enable-shared[=all] This enables the building of a shared library. Currently, only Linux, HP, SGI and SUN OS's are supported. If you specify --enable-shared=all, then the script will also attempt to use shared libraries for HDF5, zlib, and sziplib if HDF5 support is being built. --with-hdf5[=DIR] This enables the ADFH interface to HDF5, instead of the ADF default. If 'DIR' is specified, then it should be the top-level directory of the HDF5 distribution. If not given, the script will check if HDF5 is installed and use that. If not installed, then the script will search for a local distribution. --with-zlib[=LIB] This specifies that zlib is to be used with HDF5. This is only needed if HDF5 was built with zlib support. If 'LIB' is given,it should be the pathname to the zlib library. If not given, the script will check for first an installed version, and then a local distribution. --with-szip[=LIB] This specifies that szip is to be used with HDF5. This is only needed if HDF5 was built with szip support. If 'LIB' is given,it should be the pathname to the szip library. If not given, the script will check for first an installed version, and then a local distribution. --prefix=PREFIX --exec_prefix=EPREFIX --libdir=LIBDIR --includedir=INCLUDEDIR These set the installation directories for the CGNS library and headers. By default, the library will be installed as: /usr/local/lib/libcgns.a and the headers as: /usr/local/include/cgnslib.h /usr/local/include/cgnslib_f.h /usr/local/include/cgnswin_f.h See the autoconf documentation for a description of these options, or run './configure --help' for a brief overview. Use absolute paths or shell environment variables when specifying a directory, since the 'configure' is interpreted by 'sh' not 'csh'. i.e: use --prefix=$HOME instead of --prefix=~ . The configure script creates 2 files which get included by Makefile. The first is 'make.system', which consists of the single line SYSTEM=XXX and defines the default system type. This file is overwritten any time the 'configure' script is run. The second file contains the system specific settings, 'make.defs'. This is renamed to 'make.XXX' where XXX is the system type, if the file does not already exist. If you need to change any of the makefile settings, the 'make.XXX' file is the one to do it in. The 'SYSTEM=XXX' argument to make overrides the default SYSTEM setting defined in the 'make.system' file. The 'XXX' here is the desired system type. In order to build the library the file 'make.XXX' must exist. Make will put all the object modules in a subdirectory with the same name as the system type, and the library will be named lib/libcgns.XXX.a where XXX is the system type. The available make targets are: all This is the default target (if target is not given). This builds the CGNS library 'lib/libcgns.XXX.a' clean This removes all the object files. The library is not affected. distclean Removes the object files, library and files generated by 'configure' install Installs the library and headers. Builds the library if needed. You will need write permission to the installation directories. uninstall Uninstalls the library and headers. You will need write permission to the installation directories. ---------------------------------------------------------------------- For compiling on multiple platforms, run 'configure' on each platform to create the make.XXX files, edit them if needed, then use: make SYSTEM=XXX This will override the SYSTEM setting in 'make.system', which will be set to that for the system on which 'configure' was last run. You may also use the 'build' script, which uses 'cgsystem' to get the system type, then runs "make SYSTEM=XXX'. This script will also create the 'make.XXX' file if it does not already exist. ./build [[-][enable-]64[bit]] The only argument to 'build' is the 64-bit flag. ---------------------------------------------------------------------- The system type is determined by executing the 'cgsystem' script. ./cgsystem [[-][enable-]64[bit]] [[-]cur[rent]] [[-]conf[igure]] Again, everything in [] are optional, and the [] are not included. If no arguments are given, then 'cgsystem' returns the default system type. The '[-][enable-]64[bit]' option enables 64-bit as for the 'configure' script. The '[-]cur[rent]' option returns the current system type, which is that defined in 'make.system', and the '[-]conf[igure]' option will update the 'make.system' file. Currently defined system types are: ALPHA DEC Alpha/OSF APOLLO HP 300 running Domain/OS BSD386 80[345]86 running BSD BSDM68K Motorola 68K running NetBSD BSDMIPS Mips running NetBSD CONVEX Convex CRAY Cray, Cray-2, Cray XMP CYGWIN POSIX emulation on top of Windows DARWIN Macintosh running Darwin DEC DEC FREEBSD FreeBSD HPPA HP 9000 PA-Risc HPPA10 HP 9000 PA-Risc running OS 10.x HPPA11 HP 9000 PA-Risc running OS 11.x (32-bit) HPPA64 HP 9000 PA-Risc running OS 11.x (64-bit) HPIT HP with 64-bit Intel processor (32-bit) HPIT64 HP with 64-bit Intel processor (64-bit) HP HP I860 Intel Hypercube IBM IBM running AIX IBM64 IBM with AIX 4.3 or above (64-bit) LINUX Linux LINUX64 64-bit Linux M88K Motorola M88100 running Real/IX MACOSX Power Macintosh runing OSx NETBSD NetBSD not defined elseware NEXT NeXT OS2 OS/2 PGON Intel Paragon SGI5 Silicon Graphics running OS 5.x SGI6 Silicon Graphics running OS 6.x SGI64 Silicon Graphics (64-bit) SGI Silicon Graphics SUN3 Sun 3 SUN4 Sun 4, 4c, sparc, .etc SUN64 Sun 4 (64-bit) SUN Sun VAX DEC/Microvax UNKNOWN couldn't determine system type Executing './cgsystem [-]help', will display the above information. ================================================================= To compile under MS Windows: ================================================================= configure.bat [options] then gmake if using GNU make, or nmake if using nmake. NOTE: This assumes that the cl compiler is in your path, and that the INCLUDE and LIB environment variables are set to include the directories containing the MSC include files and libraries. If not, you will need to use full path names to cl and link, and define INCLUDE and LIB in make.win32. You may also execute VCVARS32.BAT in the BIN directory of your VC installation to set these up prior to running nmake. VC7 USERS: I have added code to cgnslib.c to handle the unresolved reference to __ftol2. You will need to add -DNEED_FTOL2 to your compile options for cgnslib.c to enable this, or add ftol2.obj to your link line. see http://www.manusoft.com/Resources/ARXTips/Main.stm The options to configure are: -ML Build library as single-threaded using libc.lib (this is the default) -MT Build library as multi-threaded using libcmt.lib -MD Build library as multi-threaded using run-time library mscvrt.lib -debug Enable debug (-Zi) option for compiler and (/debug) for linker -lfs Enable large file support (files larger then 2 Gb) -gmake Create a gmake compatible makefile, instead of nmake -f2c [type] Allows you to override the default Fortran to C interface, which is compatible with Visual Fortran. I you are using a Fortran compiler which uses Unix-type interfaces (i.e. Absoft Fortran), then specify the Fortran to C interface with 'type' as one of LOWERCASE, LOWERCASE_, LOWERCASE__, UPPERCASE, UPPERCASE_, or UPPERCASE__. If 'type' is not given, it defaults to LOWERCASE_, which is the most common. You may also disable the Fortran to C interface completely by setting 'type' to none. -ifort Configure to use the Intel Fortran compiler, ifort. This option will set the UPPERCASE Fortran to C interface option, and replace the F77=f77 with F77=ifort in the make.WIN32 file. -absoft Configure to use the absoft Fortran compiler. This option will set the LOWERCASE Fortran to C interface option. Since the absoft compiler is case-sensitive, you should use lowercase to call the CGNS routines from your Fortran code. If you want to use uppercase calls, then use the -f2c UPPERCASE option. -install instdir Sets the installation directory to 'instdir'. The directory should be specified without spaces, i.e. use c:\Progra~1\CGNS instead of c:\Program Files\CGNS. The default is the root directory of the current drive. The library will be installed as: %installdir%\lib\libcgns.lib and the headers %installdir%\include\cgnslib.h %installdir%\include\cgnslib_f.h %installdir%\include\cgnswin_f.h -hdf5 [hdf5dir] This enables the ADFH interface to HDF5, instead of the ADF default. If 'hdf5dir' is specified, then it should be the top-level directory of the HDF5 distribution. If not given, the script will search the current drive for a local distribution. -zlib [zliblib] This specifies that zlib is to be used with HDF5. This is only needed if HDF5 was built with zlib support. If 'zliblib' is given,it should be the pathname to the zlib library. If not given, the script will search the current drive for the library. -szip [sziplib] This specifies that szip is to be used with HDF5. This is only needed if HDF5 was built with szip support. If 'sziplib' is given,it should be the pathname to the szip library. If not given, the script will search the current drive for the library. The 'cgsystem.bat' supports only the [-]conf[igure] option and returns 'WIN32' ---------------------------------------------------------------------- If you have any additions or corrections to make, please send them to: Bruce Wedan bruce.wedan@ansys.com