cmake_minimum_required(VERSION 2.8) project(WFR-lib_odb CXX) # cmake options OPTION(USE_BUILDIN_ODB "Use buildin odb" ON) # Check whether we are called by another script get_directory_property(hasParent PARENT_DIRECTORY) # Include libsqlite3 add_subdirectory(sqlite3) # Provide some variables to parent script if(hasParent) set(Sqlite3_INCLUDE_DIR "${Sqlite3_INCLUDE_DIR}" PARENT_SCOPE) set(Sqlite3_LIBRARY_DIR "${Sqlite3_LIBRARY_DIR}" PARENT_SCOPE) set(Sqlite3_LIBRARIES "${Sqlite3_LIBRARIES}" PARENT_SCOPE) endif() # Let's build our own copy of odb if (USE_BUILDIN_ODB) include(ExternalProject) # Set odb version if(hasParent) set(odb_version "2.4.0" PARENT_SCOPE) set(odb_version "2.4.0") else() set(odb_version "2.4.0") endif() set(libodb_common_CPPFLAGS "") set(libodb_common_CPPFLAGS "") set(libodb_common_DEPENDS "") set(libodb_common_include "-I${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/include") set(libodb_common_lib "-L${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/lib") set(libodb_sqlite_CPPFLAGS "${libodb_common_include} -I${Sqlite3_INCLUDE_DIR}") set(libodb_sqlite_LDFLAGS "${libodb_common_lib} -L${Sqlite3_LIBRARY_DIR}") set(libodb_sqlite_DEPENDS "libodb_common") set(libodb_sqlite_include "-I${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/include -I${Sqlite3_INCLUDE_DIR}") set(libodb_sqlite_lib "-L${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/lib") set(libodb_sqlite_DEPENDS ${libodb_sqlite_DEPENDS} sqlite3) # How to build libodb-common ExternalProject_Add(libodb_common DEPENDS ${libodb_common_DEPENDS} SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libodb-${odb_version} CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/libodb-${odb_version}/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install --libdir=${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/lib "CPPFLAGS=${libodb_common_CPPFLAGS}" "LDFLAGS=${libodb_common_LDFLAGS}" PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libodb_common BUILD_COMMAND make install ) # How to build libodb-sqlite ExternalProject_Add(libodb_sqlite DEPENDS ${libodb_sqlite_DEPENDS} SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libodb-sqlite-${odb_version} CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/libodb-sqlite-${odb_version}/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install --libdir=${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/lib "CPPFLAGS=${libodb_sqlite_CPPFLAGS}" "LDFLAGS=${libodb_sqlite_LDFLAGS}" LIBS=-ldl PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite BUILD_COMMAND make install ) # Where to install odb install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/include DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/lib DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/include DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/lib DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/odb-${odb_version}-x86_64-linux-gnu/ USE_SOURCE_PERMISSIONS DESTINATION ${CMAKE_INSTALL_PREFIX}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/odb-config.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}) # Provide some variables to parent script if(hasParent) set(Odb_Bin "${CMAKE_CURRENT_SOURCE_DIR}/odb-${odb_version}-x86_64-linux-gnu/bin/odb") set(Odb_Bin "${Odb_Bin}" PARENT_SCOPE) set(Libodb_common_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/include") set(Libodb_common_INCLUDE_DIR "${Libodb_common_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_common_INCLUDE_DIRS "${Libodb_common_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_common_LIBRARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libodb_common/install/lib") set(Libodb_common_LIBRARY_DIR "${Libodb_common_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_common_LIBRARY_DIRS "${Libodb_common_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_common_LIBRARIES "${Libodb_common_LIBRARY_DIR}/libodb.a" PARENT_SCOPE) set(Libodb_sqlite_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/include") set(Libodb_sqlite_INCLUDE_DIR "${Libodb_sqlite_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_sqlite_INCLUDE_DIRS "${Libodb_sqlite_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_sqlite_LIBRARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libodb_sqlite/install/lib") set(Libodb_sqlite_LIBRARY_DIR "${Libodb_sqlite_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_sqlite_LIBRARY_DIRS "${Libodb_sqlite_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_sqlite_LIBRARIES "${Libodb_sqlite_LIBRARY_DIR}/libodb-sqlite.a" PARENT_SCOPE) endif() add_custom_target(libodb) # Dummy target for add_dependencies add_dependencies(libodb libodb_common libodb_sqlite) # Let's use an existing copy of odb else() add_custom_target(libodb) # Dummy target for add_dependencies find_package(ODB REQUIRED) if(hasParent) set(ODB_INCLUDE_DIR "${ODB_INCLUDE_DIR}" PARENT_SCOPE) set(ODB_LIBRARY_DIR "${ODB_LIBRARY_DIR}" PARENT_SCOPE) set(ODB_LIBRARIES "${ODB_LIBRARIES}" PARENT_SCOPE) set(Libodb_common_INCLUDE_DIR "${ODB_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_common_INCLUDE_DIRS "${Libodb_common_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_common_LIBRARY_DIR "${ODB_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_common_LIBRARY_DIRS "${Libodb_common_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_common_LIBRARIES "${Libodb_common_LIBRARIES}" PARENT_SCOPE) set(Libodb_sqlite_INCLUDE_DIR "${ODB_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_sqlite_INCLUDE_DIRS "${Libodb_sqlite_INCLUDE_DIR}" PARENT_SCOPE) set(Libodb_sqlite_LIBRARY_DIR "${ODB_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_sqlite_LIBRARY_DIRS "${Libodb_sqlite_LIBRARY_DIR}" PARENT_SCOPE) set(Libodb_sqlite_LIBRARIES "${Libodb_sqlite_LIBRARIES}" PARENT_SCOPE) set(Odb_Bin "${Odb_Bin}" PARENT_SCOPE) endif() endif ()