+# -*- mode: cmake -*-
+
# AliRoot Build System Utility Macro and Function definitions
#
# Author: Johny Jose (johny.jose@cern.ch)
# Port of previous Makefile build to cmake
-cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
macro(ALICE_DevFlagsOutput)
macro(ALICE_ConfigureCompiler)
- if(ALIDEBUG STREQUAL "YES")
- set(ALICE_TARGET ${ALICE_TARGET}DEBUG)
- message("Befor ${CXXFLAGS}")
- string(REGEX MATCHALL "-O[^ ]*" FFLAGS "${FFLAGS}")
- string(REGEX MATCHALL "-O[^ ]*" CXXFLAGS "${CXXFLAGS}")
- message("After ${CXXFLAGS}")
- string(REGEX MATCHALL "-O[^ ]*" CFLAGS "${CFLAGS}")
- string(REGEX MATCHALL "-O[^ ]*" SOFLAGS "${SOFLAGS}")
- string(REGEX MATCHALL "-O[^ ]*" LDFLAGS "${LDFLAGS}")
- set(FFLAGS "-g ${FFLAGS}")
- set(CXXFLAGS "-g ${CXXFLAGS}")
- set(CFLAGS "-g ${CFLAGS}")
- set(SOFLAGS "-g ${SOFLAGS}")
- set(LDFLAGS "-g ${LDFLAGS}")
- endif(ALIDEBUG STREQUAL "YES")
-
if(ALIPROFILE STREQUAL "YES")
set(ALICE_TARGET ${ALICE_TARGET}PROF)
set(FFLAGS "-pg ${FFLAGS}")
ALICE_SetPackageVariable(PEDEFINE "EDEFINE" "${EDEFINE}" "${EDEFINE}")
ALICE_SetPackageVariable(PEXPORT "EXPORT" "${EXPORT}" "${EXPORT}")
+# message(${CMAKE_INCLUDE_EXPORT_DIRECTORY})
ALICE_SetPackageVariable(PEXPORTDEST "EXPORTDEST" "${CMAKE_INCLUDE_EXPORT_DIRECTORY}" "${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
ALICE_SetPackageVariable(PINC "INC" "${EINCLUDE};${MODULE}" "${EINCLUDE};${MODULE}")
ALICE_SetPackageVariable(PELIBS "ELIBS" "${ELIBS}" "${ELIBS}")
set(${MODULE}LIBS "${PMLIBS}" PARENT_SCOPE)
set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE)
list(APPEND INCLUDEFILES ${PEXPORTDEST})
- ALICE_CopyHeaders()
if(WITHDICT)
ALICE_SetPackageVariable(PDS "DS" "G__${PACKAGE}.cxx" "G__${PACKAGE}.cxx")
ALICE_GenerateDictionary()
ALICE_BuildExecutable()
endif(lib)
endif(PS OR PCS OR PFS)
+ ALICE_CopyHeaders()
ALICE_BuildPAR()
- ALICE_CheckModule()
endmacro(ALICE_BuildPackage)
macro(ALICE_BuildModule)
- add_definitions(-D_MODULE="${MODULE}")
+ add_definitions(-D_MODULE_="${MODULE}")
foreach(PACKAGEFILE ${PACKAGES})
set(lib)
set(bin)
ARCHIVE DESTINATION bin/tgt_${ALICE_TARGET})
endif(NOT EXCLUDEPACKAGE)
endforeach(PACKAGEFILE)
-
+ ALICE_CheckModule()
endmacro(ALICE_BuildModule)
macro(ALICE_GenerateDictionary)
ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
- ALICE_CheckLibraries(PELIBS "${PELIBS}")
ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
ALICE_CorrectPaths(PINC "${PINC}")
set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE)
endif(NOT RESULT STREQUAL "-1")
+ set_target_properties(${PACKAGE} PROPERTIES INSTALL_NAME_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
+
endmacro(ALICE_BuildLibrary)
macro(ALICE_BuildExecutable)
separate_arguments(PBLIBS)
separate_arguments(PELIBS)
separate_arguments(SHLIB)
-
+
ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
- #ALICE_CheckLibraries(PELIBS "${PELIBS}")
ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
ALICE_CorrectPaths(PINC "${PINC}")
macro(ALICE_CopyHeaders)
- if(NOT EXPORT )
- set(HEADERS)
- else()
+ if(EXPORT )
set(HEADERS ${EXPORT})
- endif(NOT EXPORT)
- foreach(header ${HEADERS})
- configure_file(${header} ${PEXPORTDEST} COPYONLY)
+ set(_headersdep)
+ foreach(header ${HEADERS})
+ add_custom_command(OUTPUT ${PEXPORTDEST}/${header}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${MODULE}/${header} ${PEXPORTDEST}/${header}
+ DEPENDS ${CMAKE_SOURCE_DIR}/${MODULE}/${header})
+ list(APPEND _headersdep ${PEXPORTDEST}/${header})
install(FILES ${header} DESTINATION include)
- endforeach(header)
+ endforeach(header)
+ add_custom_target(${PACKAGE}-headers DEPENDS ${_headersdep})
+ add_dependencies(${PACKAGE} ${PACKAGE}-headers)
+ endif(EXPORT)
endmacro(ALICE_CopyHeaders)
macro(ALICE_GenerateLinkDef)
-
- file (WRITE ${PDAL} "//--------------------------------------------------------------------------------\n")
- file (APPEND ${PDAL} "// This is an automatically generated Root Dictionary Linkdef file for ${PACKAGE}\n")
- file (APPEND ${PDAL} "// !!! DO NOT EDIT THIS FILE !!!\n")
- file (APPEND ${PDAL} "#ifdef __CINT__\n")
- file (APPEND ${PDAL} "#pragma link off all globals;\n")
- file (APPEND ${PDAL} "#pragma link off all classes;\n")
- file (APPEND ${PDAL} "#pragma link off all functions;\n")
+ set(PCLASSES)
foreach (class ${PCINTCLASSES})
get_filename_component(classname ${class} NAME)
- file(APPEND ${PDAL} "#pragma link C++ class ${classname}+;\n")
+ # set(PCLASSES ${PCLASSES} "\\n#pragma link C++ class ${classname}+;")
+ set(PCLASSES ${PCLASSES} "${classname}")
endforeach(class)
- file (APPEND ${PDAL} "#endif\n")
+
+ add_custom_command(OUTPUT ${PDAL}
+ COMMAND sh ${CMAKE_SOURCE_DIR}/cmake/GenerateLinkDef.sh ${PCLASSES} > ${PDAL}
+ DEPENDS ${PCINTHDRS} ${CMAKE_SOURCE_DIR}/cmake/GenerateLinkDef.sh)
endmacro(ALICE_GenerateLinkDef)
macro(ALICE_BuildPAR)
- # if(EXISTS ${ALICE_ROOT}/${MODULE}/PROOF-INF.${PACKAGE})
if(EXISTS ${CMAKE_SOURCE_DIR}/${MODULE}/PROOF-INF.${PACKAGE})
set(PARSRCS)
foreach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR})
endforeach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR})
add_custom_target(${PACKAGE}.par
- COMMAND sed -e 's/include .\(ROOTSYS\)\\/test\\/Makefile.arch/include Makefile.arch/\; s/PACKAGE = .*/PACKAGE = ${PACKAGE}/' < Makefile > ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile
+ COMMAND sed -e 's/include .\(ROOTSYS\)\\/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}/test/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}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
+ add_dependencies(${PACKAGE}.par ${SRCS} ${FSRCS} ${HDRS} ${DHDR})
add_dependencies(par-all ${PACKAGE}.par)
add_dependencies(${MODULE}-par-all ${PACKAGE}.par)
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green --bold "${PACKAGE}.par testing succeeded"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ add_dependencies(test-${PACKAGE}.par ${PACKAGE}.par)
add_dependencies(test-par-all test-${PACKAGE}.par)
add_dependencies(test-${MODULE}-par-all test-${PACKAGE}.par)