OPTION( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/")

if(COMMAND cmake_policy)
  cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)

IF(DEST MATCHES "par")
  SET(CMAKE_CXX_OUTPUT_EXTENSION "popc.o")
  SET(ARCIONAME arciopopc)
  SET(ARPSIONAME arpsiopopc)
  SET(PGMIONAME pgmiopopc)
  SET(SMETIONAME smetiopopc)
  SET(GRASSIONAME grassiopopc)
  SET(GEOTOPIONAME geotopiopopc)
  SET(SNIONAME sniopopc)
  SET(GSNIONAME gsniopopc)
  SET(IMISIONAME imisiopopc)
  SET(BORMAIONAME bormaiopopc)

  INCLUDE(CMakeForceCompiler)
  CMAKE_FORCE_C_COMPILER(popcc POPCC)
  CMAKE_FORCE_CXX_COMPILER(popcc POPCC)
  SET(SHAREDNAME ${PROJECT_NAME}popc)
ELSE(DEST)
  SET(GRASSIONAME grassio)
  SET(ARCIONAME arcio)
  SET(ARPSIONAME arpsio)
  SET(PGMIONAME pgmio)
  SET(SMETIONAME smetio)
  SET(GEOTOPIONAME geotopio)
  SET(SNIONAME snio)
  SET(GSNIONAME gsnio)
  SET(IMISIONAME imisio)
  SET(BORMAIONAME bormaio)
  SET(SHAREDNAME ${PROJECT_NAME})
ENDIF(DEST MATCHES "par")

LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)

IF(PLUGIN_SMETIO)
  ADD_LIBRARY(${SMETIONAME} SMETIO.cc)
  #SET_TARGET_PROPERTIES(${SMETIONAME} PROPERTIES LINKER_LANGUAGE C)
  TARGET_LINK_LIBRARIES(${SMETIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${SMETIONAME} PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${SMETIONAME})
ENDIF(PLUGIN_SMETIO)

IF(PLUGIN_ARCIO)
  ADD_LIBRARY(${ARCIONAME} ARCIO.cc)
  TARGET_LINK_LIBRARIES(${ARCIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${ARCIONAME} PROPERTIES 
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${ARCIONAME})
ENDIF(PLUGIN_ARCIO)

IF(PLUGIN_PGMIO)
  ADD_LIBRARY(${PGMIONAME} PGMIO.cc)
  TARGET_LINK_LIBRARIES(${PGMIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${PGMIONAME} PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${PGMIONAME})
ENDIF(PLUGIN_PGMIO)

IF(PLUGIN_ARPSIO)
  ADD_LIBRARY(${ARPSIONAME} ARPSIO.cc)
  TARGET_LINK_LIBRARIES(${ARPSIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${ARPSIONAME} PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${ARPSIONAME})
ENDIF(PLUGIN_ARPSIO)

IF(PLUGIN_GRASSIO)
  ADD_LIBRARY(${GRASSIONAME} GrassIO.cc)
  TARGET_LINK_LIBRARIES(${GRASSIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${GRASSIONAME} PROPERTIES 
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${GRASSIONAME})
ENDIF(PLUGIN_GRASSIO)

IF(PLUGIN_GEOTOPIO)
  ADD_LIBRARY(${GEOTOPIONAME} GeotopIO.cc)
  TARGET_LINK_LIBRARIES(${GEOTOPIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${GEOTOPIONAME} PROPERTIES 
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${GEOTOPIONAME})
ENDIF(PLUGIN_GEOTOPIO)

IF(PLUGIN_SNIO)
  ADD_LIBRARY(${SNIONAME} SNIO.cc)
  TARGET_LINK_LIBRARIES(${SNIONAME} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${SNIONAME} PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${SNIONAME})
ENDIF(PLUGIN_SNIO)

IF(PLUGIN_GSNIO)
  INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} "/usr/include")
  SET_SOURCE_FILES_PROPERTIES(gsn/soapC.cpp PROPERTIES GENERATED TRUE)
  SET_SOURCE_FILES_PROPERTIES(gsn/soapA3DWebServiceSoap12BindingProxy.cpp PROPERTIES GENERATED TRUE)
  ADD_LIBRARY(${GSNIONAME} GSNIO.cc gsn/soapA3DWebServiceSoap12BindingProxy.cpp gsn/soapC.cpp)
  TARGET_LINK_LIBRARIES(${GSNIONAME} ${GSOAPPP} ${SHAREDNAME})
  ADD_DEPENDENCIES(${GSNIONAME} wsdl2cpp gsnclient)
  SET_TARGET_PROPERTIES(${GSNIONAME} PROPERTIES 
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${GSNIONAME})
ENDIF(PLUGIN_GSNIO)

IF(PLUGIN_IMISIO)
  set(ORACLE $ENV{ORACLE_HOME})
  find_path(ORACLE_INCLUDE_DIR occi.h "${ORACLE}/client_1/include")
  find_library(ORACLE_OCCI NAMES occi PATHS ${ORACLE}/client_1/lib)
  find_library(ORACLE_CLNTSH NAMES clntsh PATHS ${ORACLE}/client_1/lib)
  INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${ORACLE_INCLUDE_DIR})
  ADD_LIBRARY(${IMISIONAME} ImisIO.cc)
  TARGET_LINK_LIBRARIES(${IMISIONAME} ${ORACLE_OCCI} ${ORACLE_CLNTSH} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${IMISIONAME} PROPERTIES 
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${IMISIONAME})
ENDIF(PLUGIN_IMISIO)

IF(PLUGIN_BORMAIO)
  #find_path(XMLPP_INC "libxml++-2.6/libxml++/libxml++.h")
  #find_library(XMLPP xml++-2.6)
  FIND_PACKAGE(LibXML++ REQUIRED)
  INCLUDE_DIRECTORIES(${LibXML++_INCLUDE_DIRS})
  #include_directories("${XMLPP_INC}/libxml++-2.6")
  ADD_LIBRARY(${BORMAIONAME} BormaIO.cc)
  TARGET_LINK_LIBRARIES(${BORMAIONAME} ${LibXML++_LIBRARIES} ${SHAREDNAME})
  SET_TARGET_PROPERTIES(${BORMAIONAME} PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/plugins
    VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} 
    SOVERSION ${VERSION_MAJOR})
  SET(MYPLUGINS ${MYPLUGINS} ${BORMAIONAME})
ENDIF(PLUGIN_BORMAIO)

INSTALL(TARGETS ${MYPLUGINS}
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib/meteoio/plugins
  ARCHIVE DESTINATION lib/meteoio/plugins
)
