]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - cmake/ALICE_CMake.cmake
fix compiler warnings + set ownership of fIonTailArray
[u/mrichter/AliRoot.git] / cmake / ALICE_CMake.cmake
index 03a1bf88112d721a188d2f827014189027196362..7918bb123995e0bf9fa41607235775297cdc104b 100644 (file)
@@ -5,7 +5,7 @@
 # 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)
 
@@ -119,22 +119,6 @@ endmacro(ALICE_CheckOutOfSourceBuild)
 
 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}")
@@ -148,6 +132,7 @@ macro(ALICE_ConfigureCompiler)
   ALICE_RootConfig(RLFLAGS --ldflags)
 
   set(CXXFLAGS "${CXXFLAGS} ${RCFLAGS}")
+  string(REPLACE "-std=c++11" " " RCFLAGS "${RCFLAGS}")
   set(CFLAGS  "${CFLAGS} ${RCFLAGS}")
   set(SOFLAGS "${SOFLAGS} ${RLFLAGS}")
   set(LDFLAGS "${LDFLAGS} ${RLFLAGS}")
@@ -282,6 +267,7 @@ macro(ALICE_BuildPackage)
 
   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}")
@@ -320,7 +306,6 @@ macro(ALICE_BuildPackage)
   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()
@@ -336,15 +321,15 @@ macro(ALICE_BuildPackage)
       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)
@@ -367,7 +352,7 @@ macro(ALICE_BuildModule)
                 ARCHIVE DESTINATION bin/tgt_${ALICE_TARGET})
       endif(NOT EXCLUDEPACKAGE)
   endforeach(PACKAGEFILE)
-
+  ALICE_CheckModule()
 endmacro(ALICE_BuildModule)
 
 macro(ALICE_GenerateDictionary)
@@ -408,7 +393,7 @@ 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_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS}")
   set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS}) 
   set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
   
@@ -422,7 +407,6 @@ macro(ALICE_BuildLibrary)
 
   ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
   ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
-#  ALICE_CheckLibraries(PELIBS "${PELIBS}")
 
   ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
   ALICE_CorrectPaths(PINC "${PINC}")
@@ -459,6 +443,8 @@ macro(ALICE_BuildLibrary)
     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)
@@ -476,10 +462,9 @@ 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}")
@@ -552,37 +537,38 @@ endmacro(ALICE_BuildExecutable)
 
 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})
+      get_filename_component( header_name ${header} NAME )
+      add_custom_command(OUTPUT ${PEXPORTDEST}/${header_name}
+                         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${MODULE}/${header} ${PEXPORTDEST}/${header_name}
+                        DEPENDS ${CMAKE_SOURCE_DIR}/${MODULE}/${header})
+      list(APPEND _headersdep ${PEXPORTDEST}/${header_name})
       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})
@@ -595,8 +581,8 @@ macro(ALICE_BuildPAR)
     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}/\; 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 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 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}