Files
2017-04-11 15:49:21 +02:00

119 lines
5.7 KiB
CMake
Executable File

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 ()