Message ID | 20240809110619.25499-1-nikhil.r@kpit.com |
---|---|
State | Accepted |
Headers | show |
Series | [scarthgap,master] rocksdb: Add an option to set static library | expand |
On 8/9/24 7:06 AM, Nikhil via lists.openembedded.org wrote: > Modify the CMakeLists.txt to add an Option for > STATIC target import, as available for shared library. > > Link: https://github.com/facebook/rocksdb/pull/12890 > > Configure static library default to switched off > as shared libraries are sufficient in most cases. I believe Master will need this change first. - armin > > Signed-off-by: Bhabu Bindu <bindu.bhabu@kpit.com> > --- > .../files/static_library_as_option.patch | 72 +++++++++++++++++++ > meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb | 2 + > 2 files changed, 74 insertions(+) > create mode 100644 meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch > > diff --git a/meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch b/meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch > new file mode 100644 > index 000000000..58914bd22 > --- /dev/null > +++ b/meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch > @@ -0,0 +1,72 @@ > +From 285d306494bde3e9c24c8cd6fea1eb380a304d03 Mon Sep 17 00:00:00 2001 > +From: Bindu-Bhabu <bindudaniel1996@gmail.com> > +Date: Fri, 26 Jul 2024 15:14:45 +0530 > +Subject: Add option to CMake for building static libraries > + > +ROCKSDB creates a STATIC library target reference by default. > +Modify the cmake so that the STATIC library is also an option > +just like creating a SHARED library and set default to ON. > + > +Upstream-Status: Accepted > +Link: https://github.com/facebook/rocksdb/pull/12890 > + > +Signed-off-by: Nisha Parrakat <nisha.m.parrakat@bmw.de> > +Signed-off-by: Bindu Bhabu <bhabu.bindu@kpit.com> > +--- > + CMakeLists.txt | 29 +++++++++++++++++------------ > + 1 file changed, 17 insertions(+), 12 deletions(-) > + > +diff --git a/CMakeLists.txt b/CMakeLists.txt > +index 93b884dd9c1..2ca925d505c 100644 > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -98,6 +98,7 @@ if (WITH_WINDOWS_UTF8_FILENAMES) > + add_definitions(-DROCKSDB_WINDOWS_UTF8_FILENAMES) > + endif() > + option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON) > ++option(ROCKSDB_BUILD_STATIC "Build static versions of the RocksDB libraries" ON) > + > + if( NOT DEFINED CMAKE_CXX_STANDARD ) > + set(CMAKE_CXX_STANDARD 17) > +@@ -1139,11 +1140,13 @@ string(REGEX REPLACE "[^0-9: /-]+" "" GIT_DATE "${GIT_DATE}") > + set(BUILD_VERSION_CC ${CMAKE_BINARY_DIR}/build_version.cc) > + configure_file(util/build_version.cc.in ${BUILD_VERSION_CC} @ONLY) > + > +-add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES} ${BUILD_VERSION_CC}) > +-target_include_directories(${ROCKSDB_STATIC_LIB} PUBLIC > +- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>) > +-target_link_libraries(${ROCKSDB_STATIC_LIB} PRIVATE > +- ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) > ++if(ROCKSDB_BUILD_STATIC) > ++ add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES} ${BUILD_VERSION_CC}) > ++ target_include_directories(${ROCKSDB_STATIC_LIB} PUBLIC > ++ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>) > ++ target_link_libraries(${ROCKSDB_STATIC_LIB} PRIVATE > ++ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) > ++endif() > + > + if(ROCKSDB_BUILD_SHARED) > + add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES} ${BUILD_VERSION_CC}) > +@@ -1238,13 +1241,15 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS) > + > + install(DIRECTORY "${PROJECT_SOURCE_DIR}/cmake/modules" COMPONENT devel DESTINATION ${package_config_destination}) > + > +- install( > +- TARGETS ${ROCKSDB_STATIC_LIB} > +- EXPORT RocksDBTargets > +- COMPONENT devel > +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" > +- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" > +- ) > ++ if(ROCKSDB_BUILD_STATIC) > ++ install( > ++ TARGETS ${ROCKSDB_STATIC_LIB} > ++ EXPORT RocksDBTargets > ++ COMPONENT devel > ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" > ++ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" > ++ ) > ++ endif() > + > + if(ROCKSDB_BUILD_SHARED) > + install( > diff --git a/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb b/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb > index 444351dbb..fae54fdba 100644 > --- a/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb > +++ b/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb > @@ -17,6 +17,7 @@ SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH};protocol=htt > file://0005-Implement-timer-implementation-for-mips-platform.patch \ > file://0006-Implement-timer-for-arm-v6.patch \ > file://0007-Fix-declaration-scope-of-LE_LOAD32-in-crc32c.patch \ > + file://static_library_as_option.patch \ > " > > SRC_URI:append:riscv32 = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch" > @@ -43,6 +44,7 @@ EXTRA_OECMAKE = "\ > -DWITH_BENCHMARK_TOOLS=OFF \ > -DWITH_TOOLS=OFF \ > -DFAIL_ON_WARNINGS=OFF \ > + -DROCKSDB_BUILD_STATIC=OFF \ > " > > CXXFLAGS += "${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Og', '-DXXH_NO_INLINE_HINTS', '', d)}" > -- > 2.25.1 > > This message contains information that may be privileged or confidential and is the property of the KPIT Technologies Ltd. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message. KPIT Technologies Ltd. does not accept any liability for virus infected mails. > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#111692): https://lists.openembedded.org/g/openembedded-devel/message/111692 > Mute This Topic: https://lists.openembedded.org/mt/107805972/3616698 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [akuster808@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
diff --git a/meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch b/meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch new file mode 100644 index 000000000..58914bd22 --- /dev/null +++ b/meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch @@ -0,0 +1,72 @@ +From 285d306494bde3e9c24c8cd6fea1eb380a304d03 Mon Sep 17 00:00:00 2001 +From: Bindu-Bhabu <bindudaniel1996@gmail.com> +Date: Fri, 26 Jul 2024 15:14:45 +0530 +Subject: Add option to CMake for building static libraries + +ROCKSDB creates a STATIC library target reference by default. +Modify the cmake so that the STATIC library is also an option +just like creating a SHARED library and set default to ON. + +Upstream-Status: Accepted +Link: https://github.com/facebook/rocksdb/pull/12890 + +Signed-off-by: Nisha Parrakat <nisha.m.parrakat@bmw.de> +Signed-off-by: Bindu Bhabu <bhabu.bindu@kpit.com> +--- + CMakeLists.txt | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 93b884dd9c1..2ca925d505c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -98,6 +98,7 @@ if (WITH_WINDOWS_UTF8_FILENAMES) + add_definitions(-DROCKSDB_WINDOWS_UTF8_FILENAMES) + endif() + option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON) ++option(ROCKSDB_BUILD_STATIC "Build static versions of the RocksDB libraries" ON) + + if( NOT DEFINED CMAKE_CXX_STANDARD ) + set(CMAKE_CXX_STANDARD 17) +@@ -1139,11 +1140,13 @@ string(REGEX REPLACE "[^0-9: /-]+" "" GIT_DATE "${GIT_DATE}") + set(BUILD_VERSION_CC ${CMAKE_BINARY_DIR}/build_version.cc) + configure_file(util/build_version.cc.in ${BUILD_VERSION_CC} @ONLY) + +-add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES} ${BUILD_VERSION_CC}) +-target_include_directories(${ROCKSDB_STATIC_LIB} PUBLIC +- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>) +-target_link_libraries(${ROCKSDB_STATIC_LIB} PRIVATE +- ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) ++if(ROCKSDB_BUILD_STATIC) ++ add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES} ${BUILD_VERSION_CC}) ++ target_include_directories(${ROCKSDB_STATIC_LIB} PUBLIC ++ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>) ++ target_link_libraries(${ROCKSDB_STATIC_LIB} PRIVATE ++ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) ++endif() + + if(ROCKSDB_BUILD_SHARED) + add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES} ${BUILD_VERSION_CC}) +@@ -1238,13 +1241,15 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS) + + install(DIRECTORY "${PROJECT_SOURCE_DIR}/cmake/modules" COMPONENT devel DESTINATION ${package_config_destination}) + +- install( +- TARGETS ${ROCKSDB_STATIC_LIB} +- EXPORT RocksDBTargets +- COMPONENT devel +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +- ) ++ if(ROCKSDB_BUILD_STATIC) ++ install( ++ TARGETS ${ROCKSDB_STATIC_LIB} ++ EXPORT RocksDBTargets ++ COMPONENT devel ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ++ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ++ ) ++ endif() + + if(ROCKSDB_BUILD_SHARED) + install( diff --git a/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb b/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb index 444351dbb..fae54fdba 100644 --- a/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb +++ b/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb @@ -17,6 +17,7 @@ SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH};protocol=htt file://0005-Implement-timer-implementation-for-mips-platform.patch \ file://0006-Implement-timer-for-arm-v6.patch \ file://0007-Fix-declaration-scope-of-LE_LOAD32-in-crc32c.patch \ + file://static_library_as_option.patch \ " SRC_URI:append:riscv32 = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch" @@ -43,6 +44,7 @@ EXTRA_OECMAKE = "\ -DWITH_BENCHMARK_TOOLS=OFF \ -DWITH_TOOLS=OFF \ -DFAIL_ON_WARNINGS=OFF \ + -DROCKSDB_BUILD_STATIC=OFF \ " CXXFLAGS += "${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Og', '-DXXH_NO_INLINE_HINTS', '', d)}"
Modify the CMakeLists.txt to add an Option for STATIC target import, as available for shared library. Link: https://github.com/facebook/rocksdb/pull/12890 Configure static library default to switched off as shared libraries are sufficient in most cases. Signed-off-by: Bhabu Bindu <bindu.bhabu@kpit.com> --- .../files/static_library_as_option.patch | 72 +++++++++++++++++++ meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb | 2 + 2 files changed, 74 insertions(+) create mode 100644 meta-oe/recipes-dbs/rocksdb/files/static_library_as_option.patch -- 2.25.1 This message contains information that may be privileged or confidential and is the property of the KPIT Technologies Ltd. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message. KPIT Technologies Ltd. does not accept any liability for virus infected mails.