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.
- Setting system properties
SET(CMAKE_SYSTEM_PROCESSOR "XT5")
SET_PROPERTY(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
- 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}")
- 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
)
- 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)
- 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})
- 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)
|
ď Jeongnim Kim, Jan 3, 2010 3:39 PM
|