From 9f9986752ffe9fb4f63f0985a83b350e51136f81 Mon Sep 17 00:00:00 2001 From: MarcA711 <40744649+MarcA711@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:54:24 +0200 Subject: [PATCH] fix[cmake]: fix static build Signed-off-by: MarcA711 <40744649+MarcA711@users.noreply.github.com> Signed-off-by: Herman Chen Change-Id: I4bd4a7543584685b20089d3953e700f5612523e7 --- CMakeLists.txt | 3 +-- merge_static_lib.sh | 10 ++++++++++ mpp/CMakeLists.txt | 37 +++++++++++++++++++------------------ 3 files changed, 30 insertions(+), 20 deletions(-) create mode 100755 merge_static_lib.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 402b5f08..263d19c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,8 +294,7 @@ endif(MSVC) # ---------------------------------------------------------------------------- # Share library option # ---------------------------------------------------------------------------- -option(ENABLE_STATIC "Build shared library" ON) -option(ENABLE_SHARED "Build shared library" OFF) +option(BUILD_SHARED_LIBS "Build shared library" ON) # ---------------------------------------------------------------------------- # scan all LOG_TAG for log information and generate module header file diff --git a/merge_static_lib.sh b/merge_static_lib.sh new file mode 100755 index 00000000..fe252f6f --- /dev/null +++ b/merge_static_lib.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +cd $1 +rm -rf mpp/lib'$2$'.a + +SCRIPT=$'CREATE mpp/lib'$2$'.a\n' +SCRIPT=$SCRIPT$(find . -name '*.a' -exec echo 'ADDLIB {}' \;) +SCRIPT=$SCRIPT$'\nSAVE\nEND\n' + +ar -M <<< $SCRIPT \ No newline at end of file diff --git a/mpp/CMakeLists.txt b/mpp/CMakeLists.txt index 35453a07..fd96c978 100644 --- a/mpp/CMakeLists.txt +++ b/mpp/CMakeLists.txt @@ -49,22 +49,6 @@ set (MPP_SRC set(MPP_VERSION "0") set(MPP_ABI_VERSION "1") -add_library(${MPP_STATIC} STATIC ${MPP_SRC}) -set_target_properties(${MPP_STATIC} PROPERTIES FOLDER "mpp" OUTPUT_NAME "${MPP_SHARED}") -set_target_properties(${MPP_STATIC} PROPERTIES CLEAN_DIRECT_OUTPUT 1) -target_link_libraries(${MPP_STATIC} mpp_codec mpp_hal mpp_vproc - ${BEGIN_WHOLE_ARCHIVE} mpp_base ${END_WHOLE_ARCHIVE}) - -add_custom_command(TARGET ${MPP_STATIC} POST_BUILD - COMMAND ${CMAKE_AR} x $ - COMMAND ${CMAKE_AR} x $ - COMMAND ${CMAKE_AR} x $ - COMMAND ${CMAKE_AR} rcs lib${MPP_SHARED}.a *.o - COMMAND ${CMAKE_STRIP} --strip-debug lib${MPP_SHARED}.a - COMMAND pwd - COMMAND rm *.o - ) - add_library(${MPP_SHARED} SHARED ${MPP_SRC}) set_target_properties(${MPP_SHARED} PROPERTIES FOLDER "mpp") set_target_properties(${MPP_SHARED} PROPERTIES CLEAN_DIRECT_OUTPUT 1) @@ -82,5 +66,22 @@ endif() add_subdirectory(legacy) -install(TARGETS ${MPP_SHARED} LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") -install(TARGETS ${MPP_STATIC} ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") +if(BUILD_SHARED_LIBS) + install(TARGETS ${MPP_SHARED} LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") + +else() + add_library(${MPP_STATIC} STATIC ${MPP_SRC}) + set_target_properties(${MPP_STATIC} PROPERTIES FOLDER "mpp") + set_target_properties(${MPP_STATIC} PROPERTIES CLEAN_DIRECT_OUTPUT 1) + target_link_libraries(${MPP_STATIC} mpp_codec mpp_hal mpp_vproc + ${BEGIN_WHOLE_ARCHIVE} mpp_base ${END_WHOLE_ARCHIVE}) + + add_custom_command(TARGET ${MPP_STATIC} POST_BUILD + COMMAND ${CMAKE_SOURCE_DIR}/merge_static_lib.sh ${CMAKE_BINARY_DIR} ${MPP_SHARED} + COMMAND ${CMAKE_STRIP} --strip-debug ${CMAKE_BINARY_DIR}/mpp/lib${MPP_SHARED}.a + COMMENT "Building a merged static lib." + ) + + install(FILES ${CMAKE_BINARY_DIR}/mpp/lib${MPP_SHARED}.a TYPE LIB) + +endif()