MACRO (WRITE_CONFIG_FILE filename)

  IF(${filename} MATCHES "[.]csh")
    SET(CSH_OUT TRUE)
  ELSE(${filename} MATCHES "[.]csh")
    SET(CSH_OUT FALSE)
  ENDIF(${filename} MATCHES "[.]csh")

  SET(CBMLIBDIR ${CMAKE_CURRENT_BINARY_DIR}/lib)
  
  IF(CMAKE_SYSTEM_NAME MATCHES Linux)
    SET(LD_LIBRARY_PATH /usr/lib /usr/X11R6/lib ${CBMLIBDIR} ${LD_LIBRARY_PATH})
  ELSE(CMAKE_SYSTEM_NAME MATCHES Linux)
    IF(CMAKE_SYSTEM_NAME MATCHES Darwin)
      SET(LD_LIBRARY_PATH ${CBMLIBDIR} ${LD_LIBRARY_PATH})
    ENDIF(CMAKE_SYSTEM_NAME MATCHES Darwin)
  ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)
  
  WRITE_TO_FILE(${filename} SIMPATH ${SIMPATH} "") 
  WRITE_TO_FILE(${filename} ROOTSYS ${ROOTSYS} APPEND) 

  IF (GEANT4_FOUND AND GEANT4VMC_FOUND AND CLHEP_FOUND)
    CONVERT_LIST_TO_STRING(${GEANT4_LIBRARY_DIR})
    WRITE_TO_FILE(${filename} GEANT4_LIBRARY_DIR ${output} APPEND)

    CONVERT_LIST_TO_STRING(${GEANT4_INCLUDE_DIR})
    WRITE_TO_FILE(${filename} GEANT4_INCLUDE_DIR ${output} APPEND)
 
    CONVERT_LIST_TO_STRING(${GEANT4VMC_INCLUDE_DIR})
    WRITE_TO_FILE(${filename} GEANT4VMC_INCLUDE_DIR ${output} APPEND)
 
    CONVERT_LIST_TO_STRING(${GEANT4VMC_LIBRARY_DIR})
    WRITE_TO_FILE(${filename} GEANT4VMC_LIBRARY_DIR ${output} APPEND)

    CONVERT_LIST_TO_STRING(${CLHEP_INCLUDE_DIR})
    WRITE_TO_FILE(${filename} CLHEP_INCLUDE_DIR ${output}  APPEND)

    CONVERT_LIST_TO_STRING(${CLHEP_LIBRARY_DIR})
    WRITE_TO_FILE(${filename} CLHEP_LIBRARY_DIR ${output} APPEND)
  ENDIF (GEANT4_FOUND AND GEANT4VMC_FOUND AND CLHEP_FOUND) 
  
  CONVERT_LIST_TO_STRING(${PLUTO_LIBRARY_DIR})
  WRITE_TO_FILE(${filename} PLUTO_LIBRARY_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${PLUTO_INCLUDE_DIR})
  WRITE_TO_FILE(${filename} PLUTO_INCLUDE_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${PYTHIA6_LIBRARY_DIR})
  WRITE_TO_FILE(${filename} PYTHIA6_LIBRARY_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${GEANT3_SYSTEM_DIR})
  WRITE_TO_FILE(${filename} G3SYS ${output} APPEND)

  CONVERT_LIST_TO_STRING(${GEANT3_INCLUDE_DIR})
  WRITE_TO_FILE(${filename} GEANT3_INCLUDE_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${GEANT3_LIBRARY_DIR})
  WRITE_TO_FILE(${filename} GEANT3_LIBRARY_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${GEANT3_LIBRARIES})
  WRITE_TO_FILE(${filename} GEANT3_LIBRARIES ${output} APPEND)

  CONVERT_LIST_TO_STRING(${ROOT_LIBRARY_DIR})
  WRITE_TO_FILE(${filename} ROOT_LIBRARY_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${ROOT_LIBRARIES})
  WRITE_TO_FILE(${filename} ROOT_LIBRARIES ${output} APPEND)

  CONVERT_LIST_TO_STRING(${ROOT_INCLUDE_DIR})
  WRITE_TO_FILE(${filename} ROOT_INCLUDE_DIR ${output}  APPEND)

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

  WRITE_TO_FILE(${filename} CBMLIBDIR ${CBMLIBDIR} 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)

  WRITE_TO_FILE(${filename} USE_VGM 1 APPEND)

#  STRING(REGEX MATCHALL "[^:]+" PATH1 ${PATH})
  SET (PATH ${ROOTSYS}/bin $ENV{PATH})
  list(REMOVE_DUPLICATES PATH)
#  UNIQUE(PATH "${PATH}")
  CONVERT_LIST_TO_STRING(${PATH})
  WRITE_TO_FILE(${filename} PATH ${output} APPEND)

  IF (GEANT4_FOUND AND GEANT4VMC_FOUND AND CLHEP_FOUND)
    WRITE_FILE(${filename} ". ${GEANT4_DIR}/env.sh" APPEND)
  ENDIF (GEANT4_FOUND AND GEANT4VMC_FOUND AND CLHEP_FOUND)

  IF(RULE_CHECKER_FOUND)
    CONVERT_LIST_TO_STRING($ENV{NEW_CLASSPATH})
    WRITE_TO_FILE(${filename} CLASSPATH ${output} APPEND)
  ENDIF(RULE_CHECKER_FOUND)



ENDMACRO (WRITE_CONFIG_FILE)


MACRO (WRITE_MINIMAL_CONFIG_FILE filename)

  IF(${filename} MATCHES "[.]csh")
    SET(CSH_OUT TRUE)
  ELSE(${filename} MATCHES "[.]csh")
    SET(CSH_OUT FALSE)
  ENDIF(${filename} MATCHES "[.]csh")

  SET(CBMLIBDIR ${CMAKE_CURRENT_BINARY_DIR}/lib)
  
  IF(CMAKE_SYSTEM_NAME MATCHES Linux)
    SET(LD_LIBRARY_PATH /usr/lib /usr/X11R6/lib ${CBMLIBDIR} ${LD_LIBRARY_PATH})
  ELSE(CMAKE_SYSTEM_NAME MATCHES Linux)
    IF(CMAKE_SYSTEM_NAME MATCHES Darwin)
      SET(LD_LIBRARY_PATH ${CBMLIBDIR} ${LD_LIBRARY_PATH})
    ENDIF(CMAKE_SYSTEM_NAME MATCHES Darwin)
  ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)
  
  WRITE_TO_FILE(${filename} ROOTSYS ${ROOTSYS} APPEND) 

  CONVERT_LIST_TO_STRING(${ROOT_LIBRARY_DIR})
  WRITE_TO_FILE(${filename} ROOT_LIBRARY_DIR ${output} APPEND)

  CONVERT_LIST_TO_STRING(${ROOT_LIBRARIES})
  WRITE_TO_FILE(${filename} ROOT_LIBRARIES ${output} APPEND)

  CONVERT_LIST_TO_STRING(${ROOT_INCLUDE_DIR})
  WRITE_TO_FILE(${filename} ROOT_INCLUDE_DIR ${output}  APPEND)

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

  WRITE_TO_FILE(${filename} CBMLIBDIR ${CBMLIBDIR} 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)

#  STRING(REGEX MATCHALL "[^:]+" PATH1 ${PATH})
  SET (PATH ${ROOTSYS}/bin $ENV{PATH})
  list(REMOVE_DUPLICATES PATH)
#  UNIQUE(PATH "${PATH}")
  CONVERT_LIST_TO_STRING(${PATH})
  WRITE_TO_FILE(${filename} PATH ${output} APPEND)


ENDMACRO (WRITE_MINIMAL_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)








