"FindROOT.cmake_JST" ... this "root finder" for cmake is fine for James Lord, but did not seem to work at PSI linux. We copy it, however, into the svn.
169 lines
6.4 KiB
Plaintext
169 lines
6.4 KiB
Plaintext
# - Finds ROOT instalation
|
|
# This module sets up ROOT information
|
|
# It defines:
|
|
# ROOT_FOUND If the ROOT is found
|
|
# ROOT_INCLUDE_DIR PATH to the include directory
|
|
# ROOT_LIBRARIES Most common libraries
|
|
# ROOT_LIBRARY_DIR PATH to the library directory
|
|
|
|
|
|
find_program(ROOT_CONFIG_EXECUTABLE root-config
|
|
PATHS $ENV{ROOTSYS}/bin)
|
|
|
|
if(NOT ROOT_CONFIG_EXECUTABLE)
|
|
set(ROOT_FOUND FALSE)
|
|
else()
|
|
set(ROOT_FOUND TRUE)
|
|
|
|
execute_process(
|
|
COMMAND ${ROOT_CONFIG_EXECUTABLE} --prefix
|
|
OUTPUT_VARIABLE ROOTSYS
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
execute_process(
|
|
COMMAND ${ROOT_CONFIG_EXECUTABLE} --version
|
|
OUTPUT_VARIABLE ROOT_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
execute_process(
|
|
COMMAND ${ROOT_CONFIG_EXECUTABLE} --incdir
|
|
OUTPUT_VARIABLE ROOT_INCLUDE_DIR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
execute_process(
|
|
COMMAND ${ROOT_CONFIG_EXECUTABLE} --libs
|
|
OUTPUT_VARIABLE ROOT_LIBRARIES
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
#defined by fada, 2012-05-22
|
|
set(ROOTSYS c:/root)
|
|
set(ROOT_VERSION 5.34/02)
|
|
set(ROOT_INCLUDE_DIR ${ROOTSYS}/include)
|
|
set(ROOT_LIBRARY_DIR ${ROOTSYS}/lib)
|
|
set(ROOT_LIBRARIES -LIBPATH:${ROOT_LIBRARY_DIR} libGpad.lib libHist.lib libGraf.lib libGraf3d.lib libTree.lib libRint.lib libPostscript.lib libMatrix.lib libPhysics.lib libMathCore.lib libRIO.lib libNet.lib libThread.lib libCore.lib libCint.lib)
|
|
|
|
#set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lThread -lMinuit -lHtml -lVMC -lEG -lGeom -lTreePlayer -lXMLIO -lProof)
|
|
#set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lProofPlayer -lMLP -lSpectrum -lEve -lRGL -lGed -lXMLParser -lPhysics)
|
|
set(ROOT_LIBRARY_DIR ${ROOTSYS}/lib)
|
|
|
|
# Make variables changeble to the advanced user
|
|
mark_as_advanced(ROOT_CONFIG_EXECUTABLE)
|
|
|
|
if(NOT ROOT_FIND_QUIETLY)
|
|
message(STATUS "Found ROOT ${ROOT_VERSION} in ${ROOTSYS}")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
include(CMakeParseArguments)
|
|
find_program(ROOTCINT_EXECUTABLE rootcint PATHS $ENV{ROOTSYS}/bin)
|
|
find_program(GENREFLEX_EXECUTABLE genreflex PATHS $ENV{ROOTSYS}/bin)
|
|
find_package(GCCXML)
|
|
|
|
#----------------------------------------------------------------------------
|
|
# function ROOT_GENERATE_DICTIONARY( dictionary
|
|
# header1 header2 ...
|
|
# LINKDEF linkdef1 ...
|
|
# OPTIONS opt1...)
|
|
function(ROOT_GENERATE_DICTIONARY dictionary)
|
|
CMAKE_PARSE_ARGUMENTS(ARG "" "" "LINKDEF;OPTIONS" "" ${ARGN})
|
|
#---Get the list of header files-------------------------
|
|
set(headerfiles)
|
|
foreach(fp ${ARG_UNPARSED_ARGUMENTS})
|
|
file(GLOB files ${fp})
|
|
if(files)
|
|
foreach(f ${files})
|
|
if(NOT f MATCHES LinkDef)
|
|
set(headerfiles ${headerfiles} ${f})
|
|
endif()
|
|
endforeach()
|
|
else()
|
|
set(headerfiles ${headerfiles} ${fp})
|
|
endif()
|
|
endforeach()
|
|
#---Get the list of include directories------------------
|
|
get_directory_property(incdirs INCLUDE_DIRECTORIES)
|
|
set(includedirs)
|
|
foreach( d ${incdirs})
|
|
set(includedirs ${includedirs} -I${d})
|
|
endforeach()
|
|
#---Get LinkDef.h file------------------------------------
|
|
set(linkdefs)
|
|
foreach( f ${ARG_LINKDEF})
|
|
if( IS_ABSOLUTE ${f})
|
|
set(linkdefs ${linkdefs} ${f})
|
|
else()
|
|
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/inc/${f})
|
|
set(linkdefs ${linkdefs} ${CMAKE_CURRENT_SOURCE_DIR}/inc/${f})
|
|
else()
|
|
set(linkdefs ${linkdefs} ${CMAKE_CURRENT_SOURCE_DIR}/${f})
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
#---call rootcint------------------------------------------
|
|
add_custom_command(OUTPUT ${dictionary}.cxx ${dictionary}.h
|
|
COMMAND ${ROOTCINT_EXECUTABLE} -cint -f ${dictionary}.cxx
|
|
-c ${ARG_OPTIONS} ${includedirs} ${headerfiles} ${linkdefs}
|
|
DEPENDS ${headerfiles} ${linkdefs})
|
|
endfunction()
|
|
|
|
#----------------------------------------------------------------------------
|
|
# function REFLEX_GENERATE_DICTIONARY(dictionary
|
|
# header1 header2 ...
|
|
# SELECTION selectionfile ...
|
|
# OPTIONS opt1...)
|
|
function(REFLEX_GENERATE_DICTIONARY dictionary)
|
|
CMAKE_PARSE_ARGUMENTS(ARG "" "" "SELECTION;OPTIONS" "" ${ARGN})
|
|
#---Get the list of header files-------------------------
|
|
set(headerfiles)
|
|
foreach(fp ${ARG_UNPARSED_ARGUMENTS})
|
|
file(GLOB files ${fp})
|
|
if(files)
|
|
foreach(f ${files})
|
|
set(headerfiles ${headerfiles} ${f})
|
|
endforeach()
|
|
else()
|
|
set(headerfiles ${headerfiles} ${fp})
|
|
endif()
|
|
endforeach()
|
|
#---Get Selection file------------------------------------
|
|
if(IS_ABSOLUTE ${ARG_SELECTION})
|
|
set(selectionfile ${ARG_SELECTION})
|
|
else()
|
|
set(selectionfile ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_SELECTION})
|
|
endif()
|
|
#---Get the list of include directories------------------
|
|
get_directory_property(incdirs INCLUDE_DIRECTORIES)
|
|
set(includedirs)
|
|
foreach( d ${incdirs})
|
|
set(includedirs ${includedirs} -I${d})
|
|
endforeach()
|
|
#---Get preprocessor definitions--------------------------
|
|
get_directory_property(defs COMPILE_DEFINITIONS)
|
|
foreach( d ${defs})
|
|
set(definitions ${definitions} -D${d})
|
|
endforeach()
|
|
#---Nanes and others---------------------------------------
|
|
set(gensrcdict ${dictionary}.cpp)
|
|
if(MSVC)
|
|
set(gccxmlopts "--gccxmlopt=\"--gccxml-compiler cl\"")
|
|
else()
|
|
#set(gccxmlopts "--gccxmlopt=\'--gccxml-cxxflags -m64 \'")
|
|
set(gccxmlopts)
|
|
endif()
|
|
#set(rootmapname ${dictionary}Dict.rootmap)
|
|
#set(rootmapopts --rootmap=${rootmapname} --rootmap-lib=${libprefix}${dictionary}Dict)
|
|
#---Check GCCXML and get path-----------------------------
|
|
if(GCCXML)
|
|
get_filename_component(gccxmlpath ${GCCXML} PATH)
|
|
else()
|
|
message(WARNING "GCCXML not found. Install and setup your environment to find 'gccxml' executable")
|
|
endif()
|
|
#---Actual command----------------------------------------
|
|
add_custom_command(OUTPUT ${gensrcdict} ${rootmapname}
|
|
COMMAND ${GENREFLEX_EXECUTABLE} ${headerfiles} -o ${gensrcdict} ${gccxmlopts} ${rootmapopts} --select=${selectionfile}
|
|
--gccxmlpath=${gccxmlpath} ${ARG_OPTIONS} ${includedirs} ${definitions}
|
|
DEPENDS ${headerfiles} ${selectionfile})
|
|
endfunction()
|
|
|