if(OPENGTL_BUILD_TESTS)
  add_subdirectory(tests)
endif(OPENGTL_BUILD_TESTS)

include_directories( ${LLVM_INCLUDE_DIR} )

## GTLFragment library ##

set(GTLFragment_SRCS
    AbstractLibrariesManager.cpp
    LibrariesManager.cpp
    Library.cpp
    Source.cpp
    # Private
    LibraryCompilation_p.cpp
    Compiler_p.cpp
    Lexer_p.cpp
    Parser_p.cpp
    Source_p.cpp
    Wrapper.cpp
    wrappers/ColorWrap_p.cpp
    # Metadata
    MetadataLexer_p.cpp
    MetadataParser_p.cpp
    Metadata.cpp
    )

add_library(GTLFragment SHARED ${GTLFragment_SRCS} )
target_link_libraries(GTLFragment 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="GTLFragment" )

add_definitions( -D_GTLFRAGMENT_LIB_="${CMAKE_INSTALL_PREFIX}/lib/libGTLFragment.so.${OPENGTL_VERSION}")
add_definitions( -D_GTLFRAGMENT_STD_LIB_SRC_DIR_="${CMAKE_CURRENT_SOURCE_DIR}")
add_definitions( -D_GTLFRAGMENT_LIBRARIES_DIR_="${SHARE_INSTALL_DIR}/common/libraries" )

# Set the ABI version of the library
set_target_properties(GTLFragment PROPERTIES VERSION ${OPENGTL_LIB_VERSION} SOVERSION ${OPENGTL_LIB_SOVERSION} )

# Install target
install(TARGETS GTLFragment ${INSTALL_TARGETS_DEFAULT_ARGS} )
install( FILES
  Export.h
  LibrariesManager.h
  Library.h
  Metadata.h
  Source.h
  DESTINATION ${INCLUDE_INSTALL_DIR}/GTLFragment )

# Install standard library
install(FILES stdlib.fragment DESTINATION ${SHARE_INSTALL_DIR}/common/libraries )
