119 lines
5.7 KiB
CMake
Executable File
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 ()
|
|
|