
include_directories( ${LLVM_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/compiler ${CMAKE_CURRENT_BINARY_DIR} )

# List of files 
set(OpenCTL_SRCS
  Debug.cpp
  Module.cpp
  ModulesManager.cpp
  Program.cpp
  Template.cpp
  Version.cpp
# Internal files
  StdLibFunctions.cpp
  compiler/Compiler.cpp
  compiler/LexerNG.cpp
  compiler/ParserNG.cpp
# Template files
  templatecompiler/GenerationContext_p.cpp
  templatecompiler/TemplateAST.cpp
  templatecompiler/TemplateLexer.cpp
  templatecompiler/TemplateParser.cpp
  ${LLVM_NATIVE_OBJECTS}
    )

# Add the OpenCTL library for build
add_library(OpenCTL SHARED ${OpenCTL_SRCS})
target_link_libraries(OpenCTL GTLCore )

# __STDC_LIMIT_MACROS is needed by LLVM's DataTypes.h
add_definitions( "-D__STDC_LIMIT_MACROS" )
add_definitions( "-D__STDC_CONSTANT_MACROS" )
add_definitions( -DCOUMPONENT_NAME="OpenCTL" )

add_definitions( -D_OPENCTL_LIB_="libOpenCTL.so.${OPENGTL_LIB_SOVERSION}")
add_definitions( -D_OPENCTL_CTL_STD_LIB_SRC_DIR_="${CMAKE_CURRENT_SOURCE_DIR}")
add_definitions( -D_OPENCTL_CTL_SHARE_DIR_="${SHARE_INSTALL_DIR}/ctl" )


# Set the ABI version of the library
set_target_properties(OpenCTL PROPERTIES VERSION ${OPENCTL_LIB_VERSION} SOVERSION ${OPENCTL_LIB_SOVERSION} )

# Install target
install(TARGETS OpenCTL ${INSTALL_TARGETS_DEFAULT_ARGS} )
install( FILES
  Export.h
  Module.h
  ModulesManager.h
  Program.h
  Template.h
  Version.h
  DESTINATION ${INCLUDE_INSTALL_DIR}/OpenCTL )

# Create and install pc file
configure_file("OpenCTL.pc.cmake" "${CMAKE_CURRENT_BINARY_DIR}/OpenCTL.pc" @ONLY)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCTL.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)  

# Install standard library
install(FILES ctlstdlib.ctl DESTINATION ${SHARE_INSTALL_DIR}/ctl )
