# =============================================================================
#               CMake module building ANTLR2 from sources
# =============================================================================


include (ExternalProject)

set (ANTLR277_DIR antlr-2.7.7)
set (ANTLR277_ARC ${ANTLR277_DIR}.tar.gz)
set (ANTLR277_URL http://www.antlr2.org/download/${ANTLR277_ARC})


if (NOT (DEFINED ANTLR2_INSTALL_DIR))
#    set (ANTLR2_INSTALL_DIR /home/lapitre_is148245/efm/symbex_hipp/org.eclipse.efm-symbex/org.eclipse.efm.symbex/build_gui/contrib)
    set (ANTLR2_INSTALL_DIR ${CMAKE_BINARY_DIR}/contrib)
    set (ANTLR2_INSTALL_LIB_DIR ${ANTLR2_INSTALL_DIR}/lib)
    set (ANTLR2_INSTALL_INCLUDE_DIR ${ANTLR2_INSTALL_DIR}/include)
endif()

set (ANTLR2_CONFIGURE                     configure)
set (ANTLR2_CONFIGURE ${ANTLR2_CONFIGURE} --prefix=${ANTLR2_INSTALL_DIR})
# Fine tunning of installation directories
#set (ANTLR2_CONFIGURE ${ANTLR2_CONFIGURE} --libdir=${ANTLR2_INSTALL_LIB_DIR} --includedir=${ANTLR2_INSTALL_INCLUDE_DIR})


externalproject_add (antlr2
    
    # Download step
    DOWNLOAD_DIR      ${CMAKE_BINARY_DIR}
    URL               ${ANTLR277_URL}
    PREFIX            antlr2
    
    # Patch step
    PATCH_COMMAND     ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/cmake/antlr2-patch/lib/cpp/antlr/CharScanner.hpp ${CMAKE_BINARY_DIR}/antlr2/src/antlr2/lib/cpp/antlr
          COMMAND     ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/cmake/antlr2-patch/scripts/config.guess ${CMAKE_BINARY_DIR}/antlr2/src/antlr2/scripts
          COMMAND     ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/cmake/antlr2-patch/scripts/config.sub ${CMAKE_BINARY_DIR}/antlr2/src/antlr2/scripts
    
    # Configure step
    CONFIGURE_COMMAND ${CMAKE_BINARY_DIR}/antlr2/src/antlr2/${ANTLR2_CONFIGURE}

    # Build step
    BUILD_COMMAND     make
    
    # Install step
    INSTALL_COMMAND   make install
    )

# These variables ca be used by the client code of this module (ex: FindModule)
set (ANTLR2_INCLUDE_DIR ${ANTLR2_INSTALL_INCLUDE_DIR})
set (ANTLR2_LIBRARIES   libantlr.a) 
