Recent site activity

Getting started‎ > ‎

Using cmake toolchain file

Once a toolchain file is selected,

e.g. config/JaguarGNU.cmake

cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../config/JaguarGNU.cmake -DCMAKE_VERBOSE_MAKEFILE=TRUE ..
cmake -DCMAKE_TOOLCHAIN_FILE=../config/JaguarGNU.cmake -DCMAKE_VERBOSE_MAKEFILE=TRUE ..
make

Try cmake several times until this message

-- Generating done
-- Build files have been written to: your-build-directory

What is in a toolchain file

JaguarGNU.cmake is used as an example. The compiler options are applicable to GNU compilers on LINUX and Mac OSX.
  1. Setting system properties

    SET(CMAKE_SYSTEM_PROCESSOR "XT5")
    SET_PROPERTY(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)

  2. Setting compilers and compiler options

    #temporary variables for GNU compilers
    set(GNU_OPTS "-DADD_ -DINLINE_ALL=inline")
    set(GNU_FLAGS "-fopenmp -O3 -Drestrict=__restrict__ -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated ")
    set(XT_FLAGS "-march=amdfam10 -msse3 -D_CRAYMPI")

    #set cmake variables for the compilers
    set(CMAKE_C_COMPILER /opt/cray/xt-asyncpe/3.3/bin/cc)
    set(CMAKE_CXX_COMPILER /opt/cray/xt-asyncpe/3.3/bin/CC)
    set(CMAKE_CXX_FLAGS "${XT_FLAGS} ${GNU_FLAGS} -ftemplate-depth-60 ${GNU_OPTS}")
    set(CMAKE_C_FLAGS "${XT_FLAGS} ${GNU_FLAGS}")

  3. Setting search locations for external libraries

    set(CMAKE_FIND_ROOT_PATH
          /opt/fftw/3.2.1
          /sw/xt/hdf5/1.8.3/cnl2.2_gnu4.3.2
          /sw/xt/szip/2.1/sles10.1_gnu4.3.2
          /nics/a/proj/qmc/boost_1_38_0
          /nics/a/proj/qmc
         )

  4. Setting build properties

    SET(ENABLE_OPENMP 1)   #enable OpenMP
    SET(HAVE_MPI 1)            # have MPI
    SET(HAVE_SSE 1)            # SSE-related options
    SET(HAVE_SSE2 1)
    SET(HAVE_SSE3 1)
    SET(HAVE_SSSE3 1)
    SET(USE_PREFETCH 1)
    SET(PREFETCH_AHEAD 12)

  5. Link blas/lapack libraries

    set(ACML_HOME /opt/acml/4.2.0/gfortran64)
    SET(ACML_LIBRARIES ${ACML_HOME}/lib/libacml.a ${ACML_HOME}/lib/libacml_mv.a)
    link_libraries(${ACML_LIBRARIES})

  6. Special settings for Cray XT: rpath is disabled

    #----------------------------------------------------------
    # disable dynamic links
    #----------------------------------------------------------
    SET(CMAKE_SKIP_RPATH TRUE)
    SET(CMAKE_SHARED_LIBRARY_C_FLAGS "")            # -pic
    SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "")       # -shared
    SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")         # +s, flag for exe link to use shared lib
    SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")       # -rpath
    SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "")   # : or empty

    SET(CMAKE_LINK_LIBRARY_SUFFIX "")
    SET(CMAKE_STATIC_LIBRARY_PREFIX "lib")
    SET(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
    SET(CMAKE_SHARED_LIBRARY_PREFIX "lib")          # lib
    SET(CMAKE_SHARED_LIBRARY_SUFFIX ".a")           # .a
    SET(CMAKE_EXECUTABLE_SUFFIX "")          # .exe
    SET(CMAKE_DL_LIBS "" )

    SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
    SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")

    SET(CMAKE_CXX_LINK_SHARED_LIBRARY)
    SET(CMAKE_CXX_LINK_MODULE_LIBRARY)
    SET(CMAKE_C_LINK_SHARED_LIBRARY)
    SET(CMAKE_C_LINK_MODULE_LIBRARY)
Č
ċ
ď
JaguarGNU.cmake
(3k)
Jeongnim Kim,
Jan 3, 2010 3:39 PM