From patchwork Tue Mar 27 20:05:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Perez de Castro X-Patchwork-Id: 891796 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=igalia.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="djzYHMvY"; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 409hqB1JFGz9s0b for ; Wed, 28 Mar 2018 07:06:28 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 4FD1287B1C; Tue, 27 Mar 2018 20:06:26 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hPD8hF3X91UU; Tue, 27 Mar 2018 20:06:22 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id BA8C587B22; Tue, 27 Mar 2018 20:06:22 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id BB70E1CEF86 for ; Tue, 27 Mar 2018 20:06:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id B8A362E754 for ; Tue, 27 Mar 2018 20:06:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XE3t94FjFpq9 for ; Tue, 27 Mar 2018 20:06:19 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from fanzine.igalia.com (fanzine.igalia.com [91.117.99.155]) by silver.osuosl.org (Postfix) with ESMTPS id 47E5F2277A for ; Tue, 27 Mar 2018 20:06:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Message-Id:Date:Subject:Cc:To:From; bh=545Jz771gBkeP/+InYX7S2oKcBr1l2TRMXcFKBdxcVs=; b=djzYHMvYZfedVQc+V6JeZpfivih4grQ1hETpX7oGOAbuam28TmX3UdsGy5GzB6mUEGs3EGbBvD65GLq+F+FsJPStgoy2O3A+QmsvyjEPDLsZlybs0m5vuLpNn3KfTxqcSv+8CUYz4q0ZvPPqdcDr2EOHTtT+gl9e5Qu6A4odxgkApq7zsZr+EpAuzs2WiwJY+1rAWPJryrl+oYgGWlfVbSvpMmU07v1MfUMLs7nIatpnXgRHeJ8bZ8HAjkTPXoHToqGfdoxiZS9vUwCZ+Xz/mCjqfFQFF4Uvw+St/tG0Oa41gdqeikFnzpxdsu5IN62azbXWNAmeVPz3gOZ7ujOG2A==; Received: from [194.100.51.2] (helo=kodama) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1f0urH-0002bB-9M; Tue, 27 Mar 2018 22:06:15 +0200 Received: from localhost (kodama [local]) by kodama (OpenSMTPD) with ESMTPA id 31b267be; Tue, 27 Mar 2018 20:05:56 +0000 (UTC) From: Adrian Perez de Castro To: buildroot@buildroot.org Date: Tue, 27 Mar 2018 23:05:54 +0300 Message-Id: <20180327200555.21748-1-aperez@igalia.com> X-Mailer: git-send-email 2.16.3 Subject: [Buildroot] [PATCH 1/2] brotli: fix building of static libraries X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.24 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Adrian Perez de Castro MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Include a patch to make CMake honor the BUILD_SHARED_LIBS which Buildroot sets t choose the kind of libraries to build. Fixes: - http://autobuild.buildroot.net/results/f1c4b5aeb12af7b7a3e8ae01c219004ecd9befd6/ - http://autobuild.buildroot.net/results/74d20ff38766466623cc4a9eb18afcda831bc20b/ Signed-off-by: Adrian Perez de Castro --- ...-using-BUILD_SHARED_LIBS-to-choose-static.patch | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch diff --git a/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch b/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch new file mode 100644 index 0000000000..33b9bb70ce --- /dev/null +++ b/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch @@ -0,0 +1,144 @@ +From b60b613e7c2c9bf7a142c3c486ac6e77ad93f5d1 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Mon, 26 Mar 2018 19:08:31 +0100 +Subject: [PATCH] CMake: Allow using BUILD_SHARED_LIBS to choose static/shared + libs + +By convention projects using CMake which can build either static or +shared libraries use a BUILD_SHARED_LIBS flag to allow selecting between +both: the add_library() command automatically switches between both using +this variable when the library kind is not passed to add_library(). It +is also usual to expose the BUILD_SHARED_LIBS as an user-facing setting +with the option() command. + +This way, the following will both work as expected: + + % cmake -DBUILD_SHARED_LIBS=OFF ... + % cmake -DBUILS_SHARED_LIBS=ON ... + +This is helpful for distributions which need (or want) to build only +static libraries. +--- + CMakeLists.txt | 42 ++++++++++++++---------------------------- + c/fuzz/test_fuzzer.sh | 6 +++--- + 2 files changed, 17 insertions(+), 31 deletions(-) + +Signed-off-by: Adrian Perez de Castro +Upstream-Status: Submitted [https://github.com/google/brotli/pull/655] + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 99b9258..3867931 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 2.8.6) + + project(brotli C) + ++option(BUILD_SHARED_LIBS "Build shared libraries" ON) ++ + # If Brotli is being bundled in another project, we don't want to + # install anything. However, we want to let people override this, so + # we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just +@@ -114,10 +116,6 @@ set(BROTLI_LIBRARIES_CORE brotlienc brotlidec brotlicommon) + set(BROTLI_LIBRARIES ${BROTLI_LIBRARIES_CORE} ${LIBM_LIBRARY}) + mark_as_advanced(BROTLI_LIBRARIES) + +-set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static) +-set(BROTLI_LIBRARIES_STATIC ${BROTLI_LIBRARIES_CORE_STATIC} ${LIBM_LIBRARY}) +-mark_as_advanced(BROTLI_LIBRARIES_STATIC) +- + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_definitions(-DOS_LINUX) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") +@@ -137,24 +135,22 @@ endfunction() + transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + +-add_library(brotlicommon SHARED ${BROTLI_COMMON_C}) +-add_library(brotlidec SHARED ${BROTLI_DEC_C}) +-add_library(brotlienc SHARED ${BROTLI_ENC_C}) +- +-add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C}) +-add_library(brotlidec-static STATIC ${BROTLI_DEC_C}) +-add_library(brotlienc-static STATIC ${BROTLI_ENC_C}) ++add_library(brotlicommon ${BROTLI_COMMON_C}) ++add_library(brotlidec ${BROTLI_DEC_C}) ++add_library(brotlienc ${BROTLI_ENC_C}) + + # Older CMake versions does not understand INCLUDE_DIRECTORIES property. + include_directories(${BROTLI_INCLUDE_DIRS}) + ++if(BUILD_SHARED_LIBS) ++ foreach(lib brotlicommon brotlidec brotlienc) ++ target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) ++ string(TOUPPER "${lib}" LIB) ++ set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION" ) ++ endforeach() ++endif() ++ + foreach(lib brotlicommon brotlidec brotlienc) +- target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) +- string(TOUPPER "${lib}" LIB) +- set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION" ) +-endforeach() +- +-foreach(lib brotlicommon brotlidec brotlienc brotlicommon-static brotlidec-static brotlienc-static) + target_link_libraries(${lib} ${LIBM_LIBRARY}) + set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS}) + set_target_properties(${lib} PROPERTIES +@@ -167,9 +163,6 @@ endforeach() + target_link_libraries(brotlidec brotlicommon) + target_link_libraries(brotlienc brotlicommon) + +-target_link_libraries(brotlidec-static brotlicommon-static) +-target_link_libraries(brotlienc-static brotlicommon-static) +- + # For projects stuck on older versions of CMake, this will set the + # BROTLI_INCLUDE_DIRS and BROTLI_LIBRARIES variables so they still + # have a relatively easy way to use Brotli: +@@ -183,7 +176,7 @@ endif() + + # Build the brotli executable + add_executable(brotli ${BROTLI_CLI_C}) +-target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC}) ++target_link_libraries(brotli ${BROTLI_LIBRARIES}) + + # Installation + if(NOT BROTLI_BUNDLED_MODE) +@@ -199,13 +192,6 @@ if(NOT BROTLI_BUNDLED_MODE) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + +- install( +- TARGETS ${BROTLI_LIBRARIES_CORE_STATIC} +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +- ) +- + install( + DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +diff --git a/c/fuzz/test_fuzzer.sh b/c/fuzz/test_fuzzer.sh +index 5c754e1..e85e12f 100755 +--- a/c/fuzz/test_fuzzer.sh ++++ b/c/fuzz/test_fuzzer.sh +@@ -14,12 +14,12 @@ mkdir bin + cd bin + + cmake $BROTLI -DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX" \ +- -DBUILD_TESTING=OFF -DENABLE_SANITIZER=address +-make -j$(nproc) brotlidec-static ++ -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DENABLE_SANITIZER=address ++make -j$(nproc) brotlidec + + ${CXX} -o run_decode_fuzzer -std=c++11 -fsanitize=address -I$SRC/include \ + $SRC/fuzz/decode_fuzzer.cc $SRC/fuzz/run_decode_fuzzer.cc \ +- ./libbrotlidec-static.a ./libbrotlicommon-static.a ++ ./libbrotlidec.a ./libbrotlicommon.a + + mkdir decode_corpora + unzip $BROTLI/java/org/brotli/integration/fuzz_data.zip -d decode_corpora +-- +2.16.3 +