1# Copyright (c) 2020. The YARA Authors. All Rights Reserved. 2# 3# Redistribution and use in source and binary forms, with or without modification, 4# are permitted provided that the following conditions are met: 5# 6# 1. Redistributions of source code must retain the above copyright notice, this 7# list of conditions and the following disclaimer. 8# 9# 2. Redistributions in binary form must reproduce the above copyright notice, 10# this list of conditions and the following disclaimer in the documentation and/or 11# other materials provided with the distribution. 12# 13# 3. Neither the name of the copyright holder nor the names of its contributors 14# may be used to endorse or promote products derived from this software without 15# specific prior written permission. 16# 17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 21# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28# Bazel (http://bazel.io/) BUILD file for openssl library which is a dependency 29# for YARA. 30 31config_setting( 32 name = "darwin", 33 values = { 34 "cpu": "darwin_x86_64", 35 }, 36) 37 38cc_library( 39 name = "crypto", 40 srcs = ["libcrypto.a"], 41 hdrs = glob(["include/openssl/*.h"]) + ["include/openssl/opensslconf.h"], 42 includes = ["include"], 43 linkopts = select({ 44 ":darwin": [], 45 "//conditions:default": [ 46 "-lpthread", 47 "-ldl", 48 ], 49 }), 50 visibility = ["//visibility:public"], 51) 52 53cc_library( 54 name = "ssl", 55 srcs = ["libssl.a"], 56 hdrs = glob(["include/openssl/*.h"]) + ["include/openssl/opensslconf.h"], 57 includes = ["include"], 58 visibility = ["//visibility:public"], 59 deps = [":crypto"], 60) 61 62genrule( 63 name = "openssl-build", 64 srcs = glob( 65 ["**/*"], 66 exclude = ["bazel-*"], 67 ), 68 outs = [ 69 "libcrypto.a", 70 "libssl.a", 71 "include/openssl/opensslconf.h", 72 ], 73 cmd = """ 74 CONFIG_LOG=$$(mktemp) 75 MAKE_LOG=$$(mktemp) 76 OPENSSL_ROOT=$$(dirname $(location config)) 77 pushd $$OPENSSL_ROOT > /dev/null 78 if ! ./config > $$CONFIG_LOG; then 79 cat $$CONFIG_LOG 80 fi 81 if ! make -j 4 > $$MAKE_LOG; then 82 cat $$MAKE_LOG 83 fi 84 popd > /dev/null 85 cp $$OPENSSL_ROOT/libcrypto.a $(location libcrypto.a) 86 cp $$OPENSSL_ROOT/libssl.a $(location libssl.a) 87 cp $$OPENSSL_ROOT/include/openssl/opensslconf.h $(location include/openssl/opensslconf.h) 88 """, 89) 90