# Copyright 2019 Google LLC # Copyright 2020 Sergiusz 'q3k' Bazanski # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # The jq binary. cc_binary( name = "jq", srcs = [ ":source_files", ], copts = [ "-Iexternal/com_github_kkos_oniguruma/src", "-Wno-cpp", "-Wno-unused-function", "-Wno-unused-variable", ], visibility = ["//visibility:public"], deps = [ "@com_github_kkos_oniguruma//:oniguruma", ], ) # Generate the source files. # This will run ./configure and extract a host-dependent confdefs.h file, then # prefix each .h acd .c file with '#include "confdefs.h"'. genrule( name = "source_files", srcs = glob(["**"]), outs = ["build/" + f for f in glob( [ "src/*.h", "src/*.c", ], exclude = [ "src/inject_errors.c", ], )] + [ # The extracted confdefs.h. "build/src/confdefs.h", # The generated builtin.inc. "build/src/builtin.inc", ], cmd = # Run ./configure && make src/builtin.inc. "( " + " cd external/com_github_stedolan_jq; " + " ./configure > /dev/null 2> /dev/null; " + " make src/builtin.inc > /dev/null; " + "); " + # Extract confdefs.h from config.log. "grep '^/\\* confdefs.h \\*/$$' external/com_github_stedolan_jq/config.log -A1000 " + " | head -n -1 > \"$(@D)\"/build/src/confdefs.h; " + # Prefix each output file with an include of confdefs.h. "OUTS=\"$(OUTS)\"; for FILE in $$OUTS; do " + " touch \"$$FILE\"; " + " BASENAME=\"$$(basename $$FILE)\"; " + " if [ \"$$BASENAME\" != \"confdefs.h\" ]; then " + " echo '#include \"confdefs.h\"' > \"$$FILE\"; " + " cat external/com_github_stedolan_jq/src/\"$$BASENAME\" >> \"$$FILE\"; " + " fi; " + # Replace non-relative references. " sed -e 's|^#include \"src/|#include \"|g' -i \"$$FILE\"; " + "done; " + # Copy builtin.inc and version.h without modificaitons. "cp external/com_github_stedolan_jq/src/builtin.inc \"$(@D)\"/build/src/builtin.inc; ", )