From 52390cf481f6fe3962bbbd2b84a62ab4d9702484 Mon Sep 17 00:00:00 2001 From: Marco Craveiro Date: Fri, 1 Feb 2019 20:25:28 +0000 Subject: [PATCH] [libodb] Assorted fixes to get ODB v2.4 libraries to compile on x64 Linux (#5260) * [libodb] Add configure headers to all libs for Linux * [libodb] Include options files in install --- ports/libodb-boost/CMakeLists.txt | 47 ++++++++++++++++++++++++++++ ports/libodb-boost/CONTROL | 4 +++ ports/libodb-boost/config.unix.h.in | 14 +++++++++ ports/libodb-boost/portfile.cmake | 29 +++++++++++++++++ ports/libodb-mysql/CMakeLists.txt | 3 ++ ports/libodb-mysql/config.unix.h.in | 19 +++++++++++ ports/libodb-mysql/portfile.cmake | 8 +++-- ports/libodb-pgsql/CMakeLists.txt | 3 ++ ports/libodb-pgsql/config.unix.h.in | 14 +++++++++ ports/libodb-pgsql/portfile.cmake | 6 +++- ports/libodb-sqlite/CMakeLists.txt | 3 ++ ports/libodb-sqlite/config.unix.h.in | 15 +++++++++ ports/libodb-sqlite/portfile.cmake | 8 +++-- ports/libodb/CMakeLists.txt | 12 +++++-- ports/libodb/config.unix.h.in | 20 ++++++++++++ ports/libodb/portfile.cmake | 6 +++- 16 files changed, 203 insertions(+), 8 deletions(-) create mode 100644 ports/libodb-boost/CMakeLists.txt create mode 100644 ports/libodb-boost/CONTROL create mode 100644 ports/libodb-boost/config.unix.h.in create mode 100644 ports/libodb-boost/portfile.cmake create mode 100644 ports/libodb-mysql/config.unix.h.in create mode 100644 ports/libodb-pgsql/config.unix.h.in create mode 100644 ports/libodb-sqlite/config.unix.h.in create mode 100644 ports/libodb/config.unix.h.in diff --git a/ports/libodb-boost/CMakeLists.txt b/ports/libodb-boost/CMakeLists.txt new file mode 100644 index 0000000000..5dd0eb9b80 --- /dev/null +++ b/ports/libodb-boost/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.0) +project(libodb-boost VERSION 2.4.0 LANGUAGES CXX) +find_package(odb 2.4.0 REQUIRED COMPONENTS libodb) +configure_file(config.unix.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/odb/boost/details/config.h COPYONLY) + +# FIXME: should we require boost? which packages? +# find_package(PostgreSQL REQUIRED) +set(LIBODB_INSTALL_HEADERS ON CACHE BOOL "Install the header files (a debug install)") +file(GLOB_RECURSE libodb_src LIST_DIRECTORIES False + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + *.cxx) +add_library(libodb-boost ${libodb_src}) +target_include_directories(libodb-boost + PUBLIC + $ + $ + +) + +target_link_libraries(libodb-boost PRIVATE odb::libodb) +if(BUILD_SHARED_LIBS) + target_compile_definitions(libodb-boost PRIVATE + -DLIBODB_BOOST_DYNAMIC_LIB) +else() + target_compile_definitions(libodb-boost PRIVATE + -DLIBODB_BOOST_STATIC_LIB) +endif() +install(TARGETS libodb-boost EXPORT odb_boostConfig + COMPONENT boost + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin +) +if(LIBODB_INSTALL_HEADERS) +install(DIRECTORY odb DESTINATION include/ + COMPONENT sqlite + FILES_MATCHING + PATTERN "*.h" + PATTERN "*.hxx" + PATTERN "*.ixx" + PATTERN "*.txx" + PATTERN "*.options" +) +endif() +install(EXPORT odb_boostConfig NAMESPACE odb:: COMPONENT boost DESTINATION share/odb) +export(TARGETS libodb-boost NAMESPACE odb:: FILE odb_boostConfig.cmake) diff --git a/ports/libodb-boost/CONTROL b/ports/libodb-boost/CONTROL new file mode 100644 index 0000000000..5913d752b7 --- /dev/null +++ b/ports/libodb-boost/CONTROL @@ -0,0 +1,4 @@ +Source: libodb-boost +Version: 2.4.0-1 +Description: Description: Boost support for the ODB ORM library +Build-Depends: libodb diff --git a/ports/libodb-boost/config.unix.h.in b/ports/libodb-boost/config.unix.h.in new file mode 100644 index 0000000000..b049efd099 --- /dev/null +++ b/ports/libodb-boost/config.unix.h.in @@ -0,0 +1,14 @@ +/* odb/boost/details/config.h. Generated from config.h.in by configure. */ +/* file : odb/boost/details/config.h.in + * copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC + * license : GNU GPL v2; see accompanying LICENSE file + */ + +/* This file is automatically processed by configure. */ + +#ifndef ODB_BOOST_DETAILS_CONFIG_H +#define ODB_BOOST_DETAILS_CONFIG_H + +/* #undef LIBODB_BOOST_STATIC_LIB */ + +#endif /* ODB_BOOST_DETAILS_CONFIG_H */ diff --git a/ports/libodb-boost/portfile.cmake b/ports/libodb-boost/portfile.cmake new file mode 100644 index 0000000000..3f8dfc061f --- /dev/null +++ b/ports/libodb-boost/portfile.cmake @@ -0,0 +1,29 @@ +include(vcpkg_common_functions) +set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libodb-boost-2.4.0) +vcpkg_download_distfile(ARCHIVE + URLS "http://www.codesynthesis.com/download/odb/2.4/libodb-boost-2.4.0.tar.gz" + FILENAME "libodb-boost-2.4.0.tar.gz" + SHA512 af716b0385cf4ea18b20dcd5880c69c43cfc195eec4ff196a8e438833306489c39ab06a494e5d60cd08ba0d94caa05bd07e5f3fa836d835bad15c8a2ad7de306 +) +vcpkg_extract_source_archive(${ARCHIVE}) + +file(COPY + ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_LIST_DIR}/config.unix.h.in + DESTINATION ${SOURCE_PATH}) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS_DEBUG + -DLIBODB_INSTALL_HEADERS=OFF +) +vcpkg_build_cmake() +vcpkg_install_cmake() + +file(READ ${CURRENT_PACKAGES_DIR}/debug/share/odb/odb_boostConfig-debug.cmake LIBODB_DEBUG_TARGETS) +string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/debug" LIBODB_DEBUG_TARGETS "${LIBODB_DEBUG_TARGETS}") +file(WRITE ${CURRENT_PACKAGES_DIR}/share/odb/odb_boostConfig-debug.cmake "${LIBODB_DEBUG_TARGETS}") +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) +file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libodb-boost) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/libodb-boost/LICENSE ${CURRENT_PACKAGES_DIR}/share/libodb-boost/copyright) +vcpkg_copy_pdbs() diff --git a/ports/libodb-mysql/CMakeLists.txt b/ports/libodb-mysql/CMakeLists.txt index b578964b6e..fe02585b16 100644 --- a/ports/libodb-mysql/CMakeLists.txt +++ b/ports/libodb-mysql/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 3.0) project(libodb-mysql VERSION 2.4.0 LANGUAGES CXX) find_package(odb 2.4.0 REQUIRED COMPONENTS libodb) +configure_file(config.unix.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/odb/mysql/details/config.h COPYONLY) + INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIR}) set(LIBODB_INSTALL_HEADERS ON CACHE BOOL "Install the header files (a debug install)") file(GLOB_RECURSE libodb_src diff --git a/ports/libodb-mysql/config.unix.h.in b/ports/libodb-mysql/config.unix.h.in new file mode 100644 index 0000000000..b1270e20e8 --- /dev/null +++ b/ports/libodb-mysql/config.unix.h.in @@ -0,0 +1,19 @@ +/* odb/mysql/details/config.h. Generated from config.h.in by configure. */ +/* file : odb/mysql/details/config.h.in + * copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC + * license : GNU GPL v2; see accompanying LICENSE file + */ + +/* This file is automatically processed by configure. */ + +#ifndef ODB_MYSQL_DETAILS_CONFIG_H +#define ODB_MYSQL_DETAILS_CONFIG_H + +/* #undef LIBODB_MYSQL_STATIC_LIB */ + +/* #undef LIBODB_MYSQL_INCLUDE_SHORT */ +#define LIBODB_MYSQL_INCLUDE_LONG 1 + +/* #undef LIBODB_MYSQL_THR_KEY_VISIBLE */ + +#endif /* ODB_MYSQL_DETAILS_CONFIG_H */ diff --git a/ports/libodb-mysql/portfile.cmake b/ports/libodb-mysql/portfile.cmake index e6f1e24416..88684bd357 100644 --- a/ports/libodb-mysql/portfile.cmake +++ b/ports/libodb-mysql/portfile.cmake @@ -25,7 +25,11 @@ vcpkg_apply_patches( ${CMAKE_CURRENT_LIST_DIR}/adapter_mysql_8.0.patch ) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +file(COPY + ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_LIST_DIR}/config.unix.h.in + DESTINATION ${SOURCE_PATH}) + set(MYSQL_INCLUDE_DIR "${CURRENT_INSTALLED_DIR}/include/mysql") set(MYSQL_LIB "${CURRENT_INSTALLED_DIR}/lib/libmysql.lib") set(MYSQL_LIB_DEBUG "${CURRENT_INSTALLED_DIR}/debug/lib/libmysql.lib") @@ -48,4 +52,4 @@ file(WRITE ${CURRENT_PACKAGES_DIR}/share/odb/odb_mysqlConfig-debug.cmake "${LIBO file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libodb-mysql) file(RENAME ${CURRENT_PACKAGES_DIR}/share/libodb-mysql/LICENSE ${CURRENT_PACKAGES_DIR}/share/libodb-mysql/copyright) -vcpkg_copy_pdbs() \ No newline at end of file +vcpkg_copy_pdbs() diff --git a/ports/libodb-pgsql/CMakeLists.txt b/ports/libodb-pgsql/CMakeLists.txt index cb510e8058..46137ab572 100644 --- a/ports/libodb-pgsql/CMakeLists.txt +++ b/ports/libodb-pgsql/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.0) project(libodb-pgsql VERSION 2.4.0 LANGUAGES CXX) find_package(odb 2.4.0 REQUIRED COMPONENTS libodb) find_package(PostgreSQL REQUIRED) +configure_file(config.unix.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/odb/pgsql/details/config.h COPYONLY) + set(LIBODB_INSTALL_HEADERS ON CACHE BOOL "Install the header files (a debug install)") file(GLOB_RECURSE libodb_src LIST_DIRECTORIES False RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/ports/libodb-pgsql/config.unix.h.in b/ports/libodb-pgsql/config.unix.h.in new file mode 100644 index 0000000000..cdced9eb0f --- /dev/null +++ b/ports/libodb-pgsql/config.unix.h.in @@ -0,0 +1,14 @@ +/* odb/pgsql/details/config.h. Generated from config.h.in by configure. */ +/* file : odb/pgsql/details/config.h.in + * copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC + * license : GNU GPL v2; see accompanying LICENSE file + */ + +/* This file is automatically processed by configure. */ + +#ifndef ODB_PGSQL_DETAILS_CONFIG_H +#define ODB_PGSQL_DETAILS_CONFIG_H + +/* #undef LIBODB_PGSQL_STATIC_LIB */ + +#endif /* ODB_PGSQL_DETAILS_CONFIG_H */ diff --git a/ports/libodb-pgsql/portfile.cmake b/ports/libodb-pgsql/portfile.cmake index 752f98b70b..cef945c738 100644 --- a/ports/libodb-pgsql/portfile.cmake +++ b/ports/libodb-pgsql/portfile.cmake @@ -7,7 +7,11 @@ vcpkg_download_distfile(ARCHIVE ) vcpkg_extract_source_archive(${ARCHIVE}) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +file(COPY + ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_LIST_DIR}/config.unix.h.in + DESTINATION ${SOURCE_PATH}) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} OPTIONS_DEBUG diff --git a/ports/libodb-sqlite/CMakeLists.txt b/ports/libodb-sqlite/CMakeLists.txt index bd1717899f..99fb0c2368 100644 --- a/ports/libodb-sqlite/CMakeLists.txt +++ b/ports/libodb-sqlite/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.0) project(libodb-sqlite VERSION 2.4.0 LANGUAGES CXX) find_package(odb 2.4.0 REQUIRED COMPONENTS libodb) find_package(sqlite3 REQUIRED) +configure_file(config.unix.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/odb/sqlite/details/config.h COPYONLY) + set(LIBODB_INSTALL_HEADERS ON CACHE BOOL "Install the header files (a debug install)") file(GLOB_RECURSE libodb_src LIST_DIRECTORIES False RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/ports/libodb-sqlite/config.unix.h.in b/ports/libodb-sqlite/config.unix.h.in new file mode 100644 index 0000000000..f5af346a12 --- /dev/null +++ b/ports/libodb-sqlite/config.unix.h.in @@ -0,0 +1,15 @@ +/* odb/sqlite/details/config.h. Generated from config.h.in by configure. */ +/* file : odb/sqlite/details/config.h.in + * copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC + * license : GNU GPL v2; see accompanying LICENSE file + */ + +/* This file is automatically processed by configure. */ + +#ifndef ODB_SQLITE_DETAILS_CONFIG_H +#define ODB_SQLITE_DETAILS_CONFIG_H + +/* #undef LIBODB_SQLITE_STATIC_LIB */ +#define LIBODB_SQLITE_HAVE_UNLOCK_NOTIFY 1 + +#endif /* ODB_SQLITE_DETAILS_CONFIG_H */ diff --git a/ports/libodb-sqlite/portfile.cmake b/ports/libodb-sqlite/portfile.cmake index a1228f4ed3..143d32efb8 100644 --- a/ports/libodb-sqlite/portfile.cmake +++ b/ports/libodb-sqlite/portfile.cmake @@ -15,7 +15,11 @@ vcpkg_download_distfile(ARCHIVE ) vcpkg_extract_source_archive(${ARCHIVE}) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +file(COPY + ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_LIST_DIR}/config.unix.h.in + DESTINATION ${SOURCE_PATH}) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} OPTIONS_DEBUG @@ -30,4 +34,4 @@ file(WRITE ${CURRENT_PACKAGES_DIR}/share/odb/odb_sqliteConfig-debug.cmake "${LIB file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libodb-sqlite) file(RENAME ${CURRENT_PACKAGES_DIR}/share/libodb-sqlite/LICENSE ${CURRENT_PACKAGES_DIR}/share/libodb-sqlite/copyright) -vcpkg_copy_pdbs() \ No newline at end of file +vcpkg_copy_pdbs() diff --git a/ports/libodb/CMakeLists.txt b/ports/libodb/CMakeLists.txt index b4aef5817d..a49175a8a7 100644 --- a/ports/libodb/CMakeLists.txt +++ b/ports/libodb/CMakeLists.txt @@ -1,13 +1,21 @@ cmake_minimum_required(VERSION 3.0) project(libodb VERSION 2.4.0 LANGUAGES CXX) set(LIBODB_INSTALL_HEADERS ON CACHE BOOL "Install the header files (a debug install)") +configure_file(config.unix.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/odb/details/config.h COPYONLY) + file(GLOB_RECURSE libodb_src LIST_DIRECTORIES False RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cxx) -list(FILTER libodb_src EXCLUDE REGEX /posix/.*) +if (WIN32) + list(FILTER libodb_src EXCLUDE REGEX /posix/.*) +elseif (UNIX) + list(FILTER libodb_src EXCLUDE REGEX /win32/.*) +endif() + add_library(libodb ${libodb_src}) target_include_directories(libodb - PUBLIC + PUBLIC $ $ diff --git a/ports/libodb/config.unix.h.in b/ports/libodb/config.unix.h.in new file mode 100644 index 0000000000..4df77c5c7a --- /dev/null +++ b/ports/libodb/config.unix.h.in @@ -0,0 +1,20 @@ +/* odb/details/config.h. Generated from config.h.in by configure. */ +/* file : odb/details/config.h.in + * copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC + * license : GNU GPL v2; see accompanying LICENSE file + */ + +/* This file is automatically processed by configure. */ + +#ifndef ODB_DETAILS_CONFIG_H +#define ODB_DETAILS_CONFIG_H + +/* #undef ODB_THREADS_NONE */ +#define ODB_THREADS_POSIX 1 +/* #undef ODB_THREADS_WIN32 */ +#define ODB_THREADS_TLS_KEYWORD 1 +/* #undef ODB_THREADS_TLS_DECLSPEC */ + +/* #undef LIBODB_STATIC_LIB */ + +#endif /* ODB_DETAILS_CONFIG_H */ diff --git a/ports/libodb/portfile.cmake b/ports/libodb/portfile.cmake index 01f3265480..017979dc48 100644 --- a/ports/libodb/portfile.cmake +++ b/ports/libodb/portfile.cmake @@ -15,7 +15,11 @@ vcpkg_download_distfile(ARCHIVE SHA512 f1311458634695eb6ba307ebfd492e3b260e7beb06db1c5c46df58c339756be4006322cdc4e42d055bf5b2ad14ce4656ddcafcc4e16c282034db8a77d255c3eb ) vcpkg_extract_source_archive(${ARCHIVE}) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +file(COPY + ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_LIST_DIR}/config.unix.h.in + DESTINATION ${SOURCE_PATH}) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} OPTIONS_DEBUG