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

# List of files 
set(OpenShiva_SRCS
  Kernel.cpp
  Library.cpp
  LibrariesManager.cpp
  Source.cpp
  SourcesCollection.cpp
  Version.cpp
# Internal files
  LightParser_p.cpp
  CodeGenerator_p.cpp
  ColorToPixelOverloadOperatorFactory_p.cpp
  Wrapper_p.cpp
  PixelVisitor_p.cpp
  PixelConvertExpressionFactory_p.cpp
  Kernel_p.cpp
# Wrap
  wrappers/ImageWrap_p.cpp
  wrappers/PixelWrap_p.cpp
  wrappers/RegionWrap_p.cpp
  wrappers/rand.cpp
    )

# Add the OpenSHIVA library for build
add_library(OpenShiva SHARED ${OpenShiva_SRCS})
target_link_libraries(OpenShiva GTLCore GTLFragment)

# __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="OpenShiva" )

add_definitions( -D_OPENSHIVA_LIB_="libOpenShiva.so.${OPENGTL_VERSION}")
add_definitions( -D_OPENSHIVA_SHIVA_STD_LIB_SRC_DIR_="${CMAKE_CURRENT_SOURCE_DIR}")
add_definitions( -D_OPENSHIVA_SHIVA_LIBRARIES_DIR_="${SHARE_INSTALL_DIR}/shiva/libraries" )
add_definitions( -D_OPENSHIVA_SHIVA_KERNELS_DIR_="${SHARE_INSTALL_DIR}/shiva/kernels" )


# Set the ABI version of the library
set_target_properties(OpenShiva PROPERTIES VERSION ${OPENSHIVA_LIB_VERSION} SOVERSION ${OPENSHIVA_LIB_SOVERSION} )

# Install target
install(TARGETS OpenShiva ${INSTALL_TARGETS_DEFAULT_ARGS} )
install( FILES
  Export.h
  Kernel.h
  Library.h
  Source.h
  SourcesCollection.h
  Version.h
  DESTINATION ${INCLUDE_INSTALL_DIR}/OpenShiva )

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

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

# Install standard library
install(FILES shivawrappers.shiva DESTINATION ${SHARE_INSTALL_DIR}/shiva/libraries )
