CERNLIB, Dis45, and TDR on MacOS X

Preparation: lapack

To build cernlib from the source files you need to install, the imake command, the motif and the compatibility libraries.
$ su
# apt-get update

# apt-get install imake openMotif-devel Libcompat
# apt-get clean

If you just want to use precompiled binary packages, go directly to Installation subsection.

CERNLIB-2006 Building Procedure

Compilation Conditions
 MacOS X Release 10.9
 gcc-4.8.2-2osx10.9
 imake-1.0.5-10.9hepx4b
 Libcompat-14.1-10.9hepx2b
 motif-2.3.4-1osx10.9
My gfortran-related changes have been sent to a CERNLIB maintainer and adopted in CERNLIB v.2006 so the building of CERNLIB on MacOS X is now much easier than before. In order to compile it in 64-bit mode, however, we need extra paches. The patches for 64-bit support are largely due to Harald Vogt at DESY. Thanks to Remi Mommsen, the main cernlib mainteainer of Fink Project, these 64-bit paches have been assmbled with various MacOSX patches. The first patch I will use below is the result of hard work by these people.

[0] Preparation

In the following, <somewhere> stands for a directory into which you downloaded necessary tarballs or patches, while <user name> means your login name. Replace them as needed according to your environment.

# cd /
# rm cern
# mkdir /Users/cernlib
# ln -s /Users/cernlib cern
# cd /cern
# tar -zxvf 2006_src.tar.gz
# ln -s 2006 new

# ln -s 2006 pro
# mkdir -p 2006/work
# chown <user name> 2006/work
# chown <user name> 2006
# cd 2006/src
# patch -p1 -s < <somewhere>/cernlib2006-2006b-14.patch
# patch -p1 -s < <somewhere>/cernlib-2006-macosx10.9.patch
# exit

where the 2nd patch is to work around some remaining problems. It is probably worth mentioning that the addtion of "-Wl,-no_pie" to LDFLAGS was essentail to making paw work properly).

[1] Build

$ cd /cern/2006/
$ mkdir lib

$ ln -s /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib lib/liblapack3.a
$ ln -s /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib lib/libblas.a

$ cd ../work

$ export CVSCOSRC=/cern/2006/src
$ mkdir ../bin

$ cp $CVSCOSRC/scripts/cernlib ../bin/
$ $CVSCOSRC/config/imake_boot
$ export PATH=$PATH:/cern/2006/bin
$ mkdir ../logs
$ make tree HAVE_MOTIF='YES' >& ../logs/tree.log &
$ tail -f ../logs/tree.log
^C
$ pushd packlib/kuip/programs/kuipc
$ make
$ make install.bin
$ popd
$ make HAVE_MOTIF='YES' >& ../logs/make.log &

$ tail -f ../logs/make.log
^C
$ cd packlib

$ make install.bin HAVE_MOTIF=YES PACKAGE_LIB='/cern/pro/lib/libpacklib.a' EXTRA_LOAD_FLAGS='-L/usr/osxws/lib -lgfortran' >& ../../logs/packlib.bin.log &
$ tail -f ../../logs/packlib.bin.log
$ cd ../pawlib

$ make install.bin HAVE_MOTIF=YES PACKAGE_LIB='/cern/pro/lib/libpawlib.a' EXTRA_INCLUDES='-I/cern/2006/src/pawlib/comis' >& ../../logs/pawlib.bin.log &
$ tail -f ../../logs/pawlib.bin.log
$ cd ../graflib

$ make install.bin HAVE_MOTIF=YES PACKAGE_LIB='/cern/pro/lib/libgraflib.a' >& ../../logs/graflib.bin.log &
$ tail -f ../../logs/graflib.bin.log
$ cd ../scripts

$ make install.bin HAVE_MOTIF='YES' >& ../../logs/scripts.bin.log &
$ tail -f ../../logs/scripts.bin.log
$ cd ..
$ make install.include CERN_INCLUDEDIR=/cern/new/include \
  >& ../logs/install.include.log &
$ tail -f ../logs/install.include.log

[2] Tests

$ cd packlib
$ make test PACKAGE_LIB='/cern/pro/lib/libpacklib.a' >& ../../logs/packlib.test.log &
$ tail -f ../../logs/packlib.test.log
               ALL TESTS PASSED
$ cd ../mathlib
$ make test PACKAGE_LIB='/cern/pro/lib/libmathlib.a' >& ../../logs/mathlib.test.log &
$ tail -f ../../logs/mathlib.test.log
       ALL TESTS PASSED
$ cd ../graflib/higz/examples
$ make higzex PACKAGE_LIB='/cern/pro/lib/libgraflib.a'
$ ./higzex
             OK!
$ cd ../../../../src/pawlib/paw/demo
$ paw all.kumac
...
go
...
 OK!
$ cd ../../../../work/mclibs
$ FC='gfortran -O0' make test >& ../../logs/mclibs.test.log &
$ tail -f ../../logs/mclibs.test.log
          ALL test PASSED
$ cd ../phtools
$ make test >& ../../logs/phtools.test.log &
$ tail -f ../../logs/phtools.test.log
         ALL TESTS PASSED
$ cd ../geant321

$ make test EXTRA_LOAD_FLAGS='-undefined dynamic_lookup' >& ../../logs/geant321.test.log &
$ tail -f ../../logs/geant321.test.log
          ALL TESTS PASSED

 

Installation of Binary Packages

CERNLIB

# apt-get update
# apt-get install cernlib
# apt-get clean

# ln -s 2006 /cern/pro

By default cernlib will be installed under /cern. Add /cern/pro/bin to your PATH in order to use PAW, PAW++, etc.

Dis45

# apt-get update
# apt-get install dis45
# apt-get clean

Topdrawer

# apt-get update
# apt-get install tdr
# apt-get clean


or

# apt-get update
# apt-get install topdraw
# apt-get clean


Back to Keisuke Fujii's HEP on X Page
keisuke.fujii@kek.jp Sep. 12, 2014