General: * Build APBS version 0.3.2, because Mark E. says that more recent versions use different data structures that are incompatible with ISIM. * Apply patch to APBS created by Mark Friederichs to reduce reported grid errors from ISIM (which is linked to APBS libraries) See patch file vgrid.patch * Build static libraries, in order to create standalone executables for distribution. Finding a statically linked libg2c can be tricky. * Build MALOC, then APBS, then ISIM * g77 does not accept "-nofor_main" option, though the configure script thinks it does. On Mac OS X: * Find a fast BLAS library at /Developer/SDKs/MacOSX10.4u.sdk/System/Library/ Frameworks/Accelerate.../Versions/A/Frameworks/vecLib.framework/ Versions/A/libBlas.dylib * Compilation of apbs and isim - the shared library 'libg2c.dylib' in '/usr/local/lib' was being loaded into the IntelMac executable; this led to problems if the user did not have the library loaded on their machine in the same location or the user's 'LD_LIBRARY_PATH' environment variable did not include the directory where the library was installed. - I tried setting the environment variable 'LDFLAGS' to '-static-libgcc' when compiling, but this did not remove the shared library. Note: setting 'LDFLAGS' to '-static' will not work since there is no static 'crt0.o' available (this is mentioned in the documentation for 'ld'). The solution I employed is inelegant, but appears to work: I removed the soft link to 'libg2c.dyliba' in '/usr/local/lib' forcing the loaded to use the static library code. - the required shared libraries can be viewed by issuing the command: '>otool -L isim' on the Macs; 'otool' is similar to 'ldd' available on Linux machines - When compiling isim, the error associated w/ '-nofor_main' can be removed by commenting out the line 'FLIBS="$FLIBS -nofor_main"' (line ~3772) in the 'configure' script * To create a universal binary that will run on the PowerPc and IntelMacs: - compile programs on ppc (binary=isim_ppc) and on IntelMac (binary=isim_i386) - update directory w/ both copies - to 'glue' executables from two architectures together: >lipo -arch ppc isim_ppc -arch i386 isim_386 -create -output isimUniversal - Note currently we are not setup to cross-compile the programs on the same machine On Windows: * If using cygwin, avoid linking to cygwin.dll, so they can run on non-cygwin machines. - use "-mno-cygwin" argument in CFLAGS - may need to link to GnuWin32 libraries from sourceforge > setenv FETK_SRC /home/cmbruns/projects/apbs032nocygwin/src > setenv FETK_PREFIX /home/cmbruns/projects/apbs032nocygwin/bin > setenv FETK_INCLUDE ${FETK_PREFIX}/include > setenv FETK_LIBRARY ${FETK_PREFIX}/lib > mkdir -p ${FETK_SRC} ${FETK_INCLUDE} ${FETK_LIBRARY} > setenv CFLAGS "-mno-cygwin -DMSDOS -DHAVEWINSOCK_H -O3" > setenv LDFLAGS "-L/usr/local/no_cygwin/lib -lgw32c -lole32 -luuid -lwsock32" * MALOC: - remove "HAVE_XDR" stanza from configure > cd ${FETK_SRC}/maloc > make distclean > ./configure --prefix=${FETK_PREFIX} > make > make install * APBS - build from version 0.3.2 - remove tools directory if causing build trouble; we only need the libs to build ISIM > cd ${FETK_SRC}/apbs > make distclean > ./configure --prefix=${FETK_PREFIX} > make all > make install * ISIM - check out isim2-su package from simtk.org > cd ${FETK_SRC} > svn checkout https://simtk.org/svn/isim2-su/trunk isim > cd ${FETK_SRC}/isim > make distclean [ edit configure script to prevent FLIBS from adding "-nofor_main" when it erroneously thinks its OK to.] > ./configure --prefix=${FETK_PREFIX} > make > make install On Linux: * compiles easily * get blas library from simtk.org