message(STATUS "SHLIB : ${SHLIB}")
message(STATUS "SYSLIBS : ${SYSLIBS}")
message(STATUS "CINTFLAGS : ${CINTFLAGS}")
+ message(STATUS "CMAKE_Fortran_FLAGS : ${CMAKE_Fortran_FLAGS}")
+ message(STATUS "CMAKE_CXX_FLAGS : ${CMAKE_CXX_FLAGS}")
+ message(STATUS "CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}")
+ message(STATUS "CMAKE_SHARED_LINKER_FLAGS : ${CMAKE_SHARED_LINKER_FLAGS}")
+ message(STATUS "CMAKE_MODULE_LINKER_FLAGS : ${CMAKE_MODULE_LINKER_FLAGS}")
+ message(STATUS "CMAKE_EXE_LINKER_FLAGS : ${CMAKE_EXE_LINKER_FLAGS}")
endif(ALICEDEV STREQUAL "YES")
endmacro(ALICE_DevFlagsOutput)
set(PSHLIBS)
set(PDS)
+ set(saveEINCLUDE)
+
endmacro(ALICE_ResetPackage)
function(ALICE_SetPackageVariable _var ext setvalue unsetvalue )
endfunction(ALICE_SetPackageVariable)
macro(ALICE_BuildPackage)
+ # message(STATUS " ${PACKAGE}")
list(APPEND EINCLUDE STEER)
+ # Needed for PAR files - we need to do this before path
+ # expansion so that the PAR files do not contain references to
+ # specific directories but depend solely on ALICE_ROOT
+ string(REPLACE ";" " " saveEINCLUDE "${EINCLUDE}")
+ # set(saveEINCLUDE "${EINCLUDE}")
+ # message(STATUS "saveEINCLUDE=${saveEINCLUDE} EINCLUDE=${EINCLUDE}")
ALICE_SetPackageVariable(PFFLAGS "FFLAGS" "${PACKFFLAGS}" "${FFLAGS}")
ALICE_SetPackageVariable(PCFLAGS "CFLAGS" "${PACKCFLAGS}" "${CFLAGS}")
list(APPEND PMALIBS ${PACKAGE}-static)
list(APPEND ALLALIBS ${PACKAGE}-static)
list(APPEND BINLIBS ${PACKAGE})
+ # Do not link against other libraries when creating a library
+ # set(PELIBS)
else()
list(APPEND ALLEXECS ${PACKAGE})
endif(lib)
set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE)
list(APPEND INCLUDEFILES ${PEXPORTDEST})
if(WITHDICT)
- ALICE_SetPackageVariable(PDS "DS" "G__${PACKAGE}.cxx" "G__${PACKAGE}.cxx")
+ # Replace dots in file name with underscores, or rootcint will
+ # write invalid code (namespace names with dots in them)
+ string(REPLACE "." "_" ESC_PACKAGE ${PACKAGE})
+ ALICE_SetPackageVariable(PDS "DS" "G__${ESC_PACKAGE}.cxx" "G__${ESC_PACKAGE}.cxx")
ALICE_GenerateDictionary()
else()
if(lib)
macro(ALICE_BuildModule)
-
+ # message(STATUS "${MODULE}")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E echo_append "-- ${MODULE}:")
add_definitions(-D_MODULE_="${MODULE}")
foreach(PACKAGEFILE ${PACKAGES})
set(lib)
string(REGEX MATCH "CMakebin" bin "${PACKAGEFILE}")
get_filename_component(PACKAGE ${PACKAGEFILE} NAME)
string(REGEX REPLACE "^CMake(lib|bin)(.*)\\.pkg" "\\2" PACKAGE "${PACKAGE}")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E echo_append " ${PACKAGE}")
if(ALICEDEV)
message("Adding package ${PACKAGE} in ${MODULE}")
endif(ALICEDEV)
endif(NOT EXCLUDEPACKAGE)
endforeach(PACKAGEFILE)
ALICE_CheckModule()
+ execute_process(COMMAND ${CMAKE_COMMAND} -E echo " done")
endmacro(ALICE_BuildModule)
macro(ALICE_GenerateDictionary)
separate_arguments(DCINTHDRS)
separate_arguments(DDH)
# Format neccesary arguments
+ set(ROOT6_ALPHA "5.99.1")
+ string(REGEX REPLACE "/0*" "." ROOT_DOTVERSION ${ROOT_VERSION})
+ if(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
+ # For current ROOT6-alpha - without proper PCM support - we need to
+ # give the _full_ path for all include paths, so that libCling can
+ # later attach those to the internal include path of the interpreter
+ # and so that the interpreter can parse the header files.
+ #
+ # THIS SHOULD BE A TEMPORARY HACK!
+ ALICE_Format(DINC "-I{PROJECT_SOURCE_DIR}/" ""
+ "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
+ else()
ALICE_Format(DINC "-I" "" "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
+ endif(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
set_source_files_properties(${PDS} PROPERTIES GENERATED TRUE)
set_source_files_properties(${PDS} PROPERTIES COMPILE_FLAGS "-w")
add_custom_command(OUTPUT ${PDS}
macro(ALICE_BuildLibrary)
- ALICE_DevFlagsOutput()
set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS}")
set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS}")
set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS})
set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
+ ALICE_DevFlagsOutput()
separate_arguments(PINC)
macro(ALICE_BuildExecutable)
- ALICE_DevFlagsOutput()
set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS} ${EXEFLAGS}")
set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS} ${EXEFLAGS}")
set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS} ${EXEFLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS})
set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
+ set(CMAKE_EXE_LINKER_FLAGS ${PLDFLAGS})
+ ALICE_DevFlagsOutput()
separate_arguments(PINC)
separate_arguments(EINCLUDE)
list(APPEND PARSRCS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}-par)
endforeach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR})
+ # message(STATUS "saveEINCLUDE=${saveEINCLUDE}")
add_custom_target(${PACKAGE}.par
- COMMAND sed -e 's/include .\(ROOTSYS\)\\/\\(etc\\|test\\)\\/Makefile.arch/include Makefile.arch/\; s/PACKAGE = .*/PACKAGE = ${PACKAGE}/\; s,SRCS *=.*,SRCS = ${SRCS},\;' < Makefile | sed -e 's,HDRS *=.*,HDRS = ${HDRS},\; s,FSRCS *=.*,FSRCS = ${FSRCS},\; s,DHDR *=.*,DHDR = ${DHDR},' > ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile
- COMMAND cp -pR ${ROOTSYS}/etc/Makefile.arch ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile.arch
+ COMMAND sed -e 's,include ..ROOTSYS./\\\(etc\\|test\\\)/Makefile.arch,include Makefile.arch,\; s/PACKAGE = .*/PACKAGE = ${PACKAGE}/\; s,SRCS *=.*,SRCS = ${SRCS},\;' < Makefile | sed -e 's,HDRS *=.*,HDRS = ${HDRS},\; s,FSRCS *=.*,FSRCS = ${FSRCS},\; s,DHDR *=.*,DHDR = ${DHDR},\; s,EINCLUDE *:=.*,EINCLUDE := ${saveEINCLUDE},' > ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile
+ COMMAND cp -pR `root-config --etcdir`/Makefile.arch ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile.arch
COMMAND cp -pR PROOF-INF.${PACKAGE} ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/PROOF-INF
# COMMAND cp -pR lib${PACKAGE}.pkg ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}
COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_BINARY_DIR} tar --exclude=.svn -czhf ${CMAKE_BINARY_DIR}/${PACKAGE}.par ${PACKAGE}
cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
-set(ROOTSYS $ENV{ROOTSYS} CACHE STRING "" FORCE)
-if(NOT ROOTSYS)
- message(FATAL_ERROR "Environment variable $ROOTSYS is not set !")
-else()
- get_filename_component(ROOTSYS "${ROOTSYS}" REALPATH)
-endif(NOT ROOTSYS)
+# We don't care if ROOTSYS environment variable is set or not -
+# all we care about is that we can find root-config in our path
+# set(ROOTSYS $ENV{ROOTSYS} CACHE STRING "" FORCE)
+# if(NOT ROOTSYS)
+# message(FATAL_ERROR "Environment variable $ROOTSYS is not set !")
+# else()
+# get_filename_component(ROOTSYS "${ROOTSYS}" REALPATH)
+# endif(NOT ROOTSYS)
find_program(ROOT_CONFIG NAMES root-config)
find_program(ROOTCINT NAMES rootcint)
if(NOT ROOT_CONFIG)
ALICE_RootConfig(ROOTCLIBS --glibs)
ALICE_RootConfig(ROOTHASALIEN --has-alien)
ALICE_RootConfig(ROOTHASXML --has-xml)
+ # ALICE_RootConfig(ROOTHASVC --has-vc)
set(ROOTCLIBS "${ROOTCLIBS} -lThread -lMinuit -lVMC -lEG -lGeom -lTreePlayer -lXMLIO -lXMLParser -lProof -lProofPlayer -lMLP -lSpectrum -L${ROOTPLUGDIR}" )
+ # if(${ROOTHASVC} STREQUAL "yes")
+ # set(ROOTCLIBS "${ROOTCLIBS} -lVc")
+ # endif(${ROOTHASVC} STREQUAL "yes")
set(ROOTPLIBS $ENV{ROOTPLIBS})
+ if(NOT $ENV{ROOTSYS})
message(STATUS "ROOTSYS directory : ${ROOTSYS}")
+ else()
+ message(STATUS "ROOTSYS directory : not set - assume prefix build")
+ endif(NOT $ENV{ROOTSYS})
message(STATUS "ROOT include directory: ${ROOTINCDIR}")
message(STATUS "ROOT library directory: ${ROOTLIBDIR}")
+ # message(STATUS "ROOT libraries: ${ROOTCLIBS}")
+ # message(STATUS "ROOT has Vc: ${ROOTHASVC}")
+ # message(STATUS "ROOT has XML: ${ROOTHASXML}")
+ set(ROOT6_ALPHA "5.99.1")
+ string(REGEX REPLACE "/0*" "." ROOT_DOTVERSION ${ROOT_VERSION})
+ if(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
+ message(WARNING
+ "Compling and linking against ROOT6 alpha is highly experimental")
+ endif(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
else()
message(FATAL_ERROR "rootcint not found ! Please check your ROOT installation.")
endif(ROOT_CONFIG AND ROOTCINT)