Skip to content
Snippets Groups Projects
WriteConfigFile.cmake 3.91 KiB
Newer Older
MACRO (WRITE_CONFIG_FILE filename)

  MESSAGE(STATUS "filename ${filename}")

  IF(${filename} MATCHES "[.]csh")
    SET(CSH_OUT TRUE)
  ELSE(${filename} MATCHES "[.]csh")
    SET(CSH_OUT FALSE)
  ENDIF(${filename} MATCHES "[.]csh")
  
 SET(PAWIANLIBDIR ${CMAKE_CURRENT_BINARY_DIR}/lib)
  
  IF(CMAKE_SYSTEM_NAME MATCHES Linux)
    SET(LD_LIBRARY_PATH ${PAWIANLIBDIR} ${LD_LIBRARY_PATH} /usr/lib /usr/X11R6/lib) 
  ELSE(CMAKE_SYSTEM_NAME MATCHES Linux)
    IF(CMAKE_SYSTEM_NAME MATCHES Darwin)
      SET(LD_LIBRARY_PATH ${FAIRLIBDIR} ${LD_LIBRARY_PATH})
    ENDIF(CMAKE_SYSTEM_NAME MATCHES Darwin)
  ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)
  

# configure_file(${PROJECT_SOURCE_DIR}/CMakeModules/scripts/check_system.sh.in
#                   ${CMAKE_CURRENT_BINARY_DIR}/check_system.sh
#                  )

#  IF(CMAKE_SYSTEM_NAME MATCHES Linux)
#    FILE(READ /etc/issue _linux_flavour)
#    STRING(REGEX REPLACE "[\\]" " " _result1 "${_linux_flavour}")
#    STRING(REGEX REPLACE "\n" ";" _result "${_result1}")
#    SET(_counter 0)
#    FOREACH(_line ${_result})
#      if (_counter EQUAL 0)
#        SET(_counter 1)
#        set(_linux_flavour ${_line})
#      endif (_counter EQUAL 0)
#    ENDFOREACH(_line ${_result})
#    EXECUTE_PROCESS(COMMAND uname -m 
#                    OUTPUT_VARIABLE _system 
#                    OUTPUT_STRIP_TRAILING_WHITESPACE
#                   )
#   
#    WRITE_TO_FILE(${filename} Linux_Flavour_ ${_linux_flavour} "")
#    WRITE_TO_FILE(${filename} System_ ${_system} APPEND)
#    WRITE_FILE(${filename} ". ${CMAKE_CURRENT_BINARY_DIR}/check_system.sh" APPEND)
#    WRITE_FILE(${filename} " if [ \"$same_system\" == \"1\" ]; then" APPEND)
#  ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)



  MESSAGE("config filename: " ${filename})

  WRITE_TO_FILE(${filename} CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR} APPEND)

  WRITE_TO_FILE(${filename} GENEVA_ROOT ${GENEVA_ROOT} APPEND) 

  if(BOOST_ROOT)
   WRITE_TO_FILE(${filename} BOOST_ROOT ${BOOST_ROOT} APPEND) 
  endif(BOOST_ROOT)

  if(Minuit2_ROOT)
   WRITE_TO_FILE(${filename} Minuit2_ROOT ${Minuit2_ROOT} APPEND) 
  endif(Minuit2_ROOT)

  WRITE_TO_FILE(${filename} ROOTSYS ${ROOTSYS} APPEND)  

  CONVERT_LIST_TO_STRING(${LD_LIBRARY_PATH})

  IF(CMAKE_SYSTEM_NAME MATCHES Linux)
    WRITE_TO_FILE(${filename} LD_LIBRARY_PATH ${output} APPEND)
  ELSE(CMAKE_SYSTEM_NAME MATCHES Linux)
    IF(CMAKE_SYSTEM_NAME MATCHES Darwin)
      WRITE_TO_FILE(${filename} DYLD_LIBRARY_PATH ${output} APPEND)
    ENDIF(CMAKE_SYSTEM_NAME MATCHES Darwin)
  ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)



  IF($ENV{PATH} MATCHES ^${ROOT_BINARY_DIR}) 
    SET (PATH "$ENV{PATH}")
  ELSE()
   SET (PATH "${ROOT_BINARY_DIR}:$ENV{PATH}")      
  ENDIF($ENV{PATH} MATCHES ^${ROOT_BINARY_DIR})

  CONVERT_LIST_TO_STRING(${PATH})
  WRITE_TO_FILE(${filename} PATH ${output} APPEND)
ENDMACRO (WRITE_CONFIG_FILE)


MACRO (CONVERT_LIST_TO_STRING)

  set (tmp "")
  foreach (_current ${ARGN})

    set(tmp1 ${tmp})
    set(tmp "")
    set(tmp ${tmp1}:${_current})

  endforeach (_current ${ARGN})
  STRING(REGEX REPLACE "^:(.*)" "\\1" output ${tmp}) 

ENDMACRO (CONVERT_LIST_TO_STRING LIST)

MACRO (WRITE_TO_FILE FILENAME ENVVARIABLE VALUE OPTION)

  IF(CSH_OUT)
    WRITE_FILE(${FILENAME} "setenv ${ENVVARIABLE} \"${VALUE}\"" ${OPTION})
  ELSE(CSH_OUT)
    WRITE_FILE(${FILENAME} "export ${ENVVARIABLE}=\"${VALUE}\"" ${OPTION})
  ENDIF(CSH_OUT)

ENDMACRO (WRITE_TO_FILE)

MACRO(UNIQUE var_name list)

  #######################################################################
  # Make the given list have only one instance of each unique element and
  # store it in var_name.
  #######################################################################

  SET(unique_tmp "")
  FOREACH(l ${list})
    STRING(REGEX REPLACE "[+]" "\\\\+" l1 ${l})
    IF(NOT "${unique_tmp}" MATCHES "(^|;)${l1}(;|$)")
      SET(unique_tmp ${unique_tmp} ${l})
    ENDIF(NOT "${unique_tmp}" MATCHES "(^|;)${l1}(;|$)")
  ENDFOREACH(l)
  SET(${var_name} ${unique_tmp})
ENDMACRO(UNIQUE)