cmake_minimum_required ( VERSION 2.6 )

project( OpenLibraries )

set( VERSION_MAJOR 0 )
set( VERSION_MINOR 5 )
set( VERSION_PATCH 0 )
set( PACKAGE "openlibraries-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
set( VERSION_STRING "${VERSION_MAJOR}_${VERSION_MINOR}_${VERSION_PATCH}" )

# only required for non-umbrella builds
option( OPTION_UMBRELLA "enable umbrella build" OFF )
if ( NOT OPTION_UMBRELLA )
   message( "defining plugin paths" )
   add_definitions( -DOPENIMAGELIB_PLUGINS="\\\"${CMAKE_INSTALL_PREFIX}/lib/${PACKAGE}/openimagelib/plugins\\\"" )
   add_definitions( -DOPENMEDIALIB_PLUGINS="\\\"${CMAKE_INSTALL_PREFIX}/lib/${PACKAGE}/openmedialib/plugins\\\"" )
   add_definitions( -DOPENASSETLIB_PLUGINS="\\\"${CMAKE_INSTALL_PREFIX}/lib/${PACKAGE}/openassetlib/plugins\\\"" )
   add_definitions( -DOPENOBJECTLIB_PLUGINS="\\\"${CMAKE_INSTALL_PREFIX}/lib/${PACKAGE}/openobjectlib/plugins\\\"" )
   add_definitions( -DOPENEFFECTSLIB_PLUGINS="\\\"${CMAKE_INSTALL_PREFIX}/lib/${PACKAGE}/openeffectslib/plugins\\\"" )
endif( NOT OPTION_UMBRELLA )

# find optional and required modules
# check in the source directory
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR} )

# boost
find_package( Boost COMPONENTS filesystem python regex thread REQUIRED )
if ( Boost_FOUND )
   message( "found boost: ${Boost_INCLUDE_DIR}" )
   include_directories( ${Boost_INCLUDE_DIR} )
   link_directories( ${Boost_LIBRARY_DIRS} )
   add_definitions( -DHAVE_BOOST_FILESYSTEM )
endif ( Boost_FOUND )

# libxml
if ( NOT WIN32 )
   find_package( LibXml2 REQUIRED )
   if ( LIBXML2_FOUND )
      message( "found LibXml2: ${LIBXML2_INCLUDE_DIR}" )
      include_directories( ${LIBXML2_INCLUDE_DIR} )      
   endif( LIBXML2_FOUND )	
endif( NOT WIN32 )

# opengl
find_package( OpenGL )
if( OPENGL_FOUND )
    message( "found OpenGL: ${OPENGL_INCLUDE_DIR}" )
    include_directories( ${OPENGL_INCLUDE_DIR} )
endif( OPENGL_FOUND )

# GLEW
find_package( GLEW )
if ( GLEW_FOUND )
   message( "found GLEW: ${GLEW_INCLUDE_DIR}" )
   include_directories( ${GLEW_INCLUDE_DIR} )
   link_directories( ${GLEW_LIBRARY_DIR} )

   set ( SHARE_PATH ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE} )
   add_definitions( -DOPENOBJECTLIB_SHADERS="\\\"${SHARE_PATH}/shaders\\\"" )
   add_definitions( -DOPENEFFECTSLIB_SHADERS="\\\"${SHARE_PATH}/shaders\\\"" )
   add_definitions( -DHAVE_GL_GLEW_H )
endif ( GLEW_FOUND )

# Python
find_package( PythonLibs )

# kill some warnings, add some windows specific defines
if ( WIN32 )
   set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4273 /wd4251 /wd4503" )
   set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:wchar_t" )
   add_definitions( -DUNICODE )
   add_definitions( -D_CRT_SECURE_NO_DEPRECATE )

   if( MSVC80 )
       set( COMPILER "vc80" )
   endif( MSVC80 )
   if( MSVC71 )
       set( COMPILER "vc71" )
   endif( MSVC71 )
   if ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
      set( LIBRARY_IDENTIFIER "-${COMPILER}-d-${VERSION_STRING}" )
   else( CMAKE_BUILD_TYPE STREQUAL "Debug" )
      set( LIBRARY_IDENTIFIER "-${COMPILER}-r-${VERSION_STRING}" )
   endif( CMAKE_BUILD_TYPE STREQUAL "Debug" )
endif( WIN32 )

IF ( UNIX )
    IF ( NOT APPLE )
        SET( CMAKE_SKIP_RPATH TRUE )
    ENDIF ( NOT APPLE )
ENDIF ( UNIX )

# Define options

option ( WITH_PYTHON_EXTENTIONS "Compile the python extentions for OpenLibraries." TRUE )
option ( WITH_OPENFX_PLUGIN "Compile the OpenFX plugin for openmedialib." FALSE ) 

# Install .so files with execcuteable permissions
if ( NOT WIN32 )
    set ( CMAKE_INSTALL_SO_NO_EXE FALSE )
endif ( NOT WIN32 )

add_subdirectory( src )
