From fdcd01ea40b9d65a862cca8909432f0d8c1a6964 Mon Sep 17 00:00:00 2001 From: Yun Peng Date: Wed, 21 Sep 2016 05:06:57 +0200 Subject: [PATCH] Fix gif build on Windows (#4489) Using a genrule to remove "#include" makes the build successful. Ideally, we want the include could be configurable, but that's not true in the source code yet. --- gif.BUILD | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/gif.BUILD b/gif.BUILD index cbdcc75f126d5e..892e109e7dd644 100644 --- a/gif.BUILD +++ b/gif.BUILD @@ -15,13 +15,49 @@ HEADERS = [ "gif_lib_private.h", ] +config_setting( + name = "windows", + values = { + "cpu": "x64_windows_msvc", + }, + visibility = ["//visibility:public"], +) + prefix_dir = "giflib-5.1.4/lib" +prefix_dir_windows = "windows/giflib-5.1.4/lib" + +genrule( + name = "srcs_without_unistd", + srcs = [prefix_dir + "/" + source for source in SOURCES], + outs = [prefix_dir_windows + "/" + source for source in SOURCES], + cmd = "for f in $(SRCS); do " + + " sed 's/#include //g' $$f > $(@D)/%s/$$(basename $$f);" % prefix_dir_windows + + "done", +) + +genrule( + name = "hdrs_without_unistd", + srcs = [prefix_dir + "/" + hdrs for hdrs in HEADERS], + outs = [prefix_dir_windows + "/" + hdrs for hdrs in HEADERS], + cmd = "for f in $(SRCS); do " + + " sed 's/#include //g' $$f > $(@D)/%s/$$(basename $$f);" % prefix_dir_windows + + "done", +) cc_library( name = "gif", - srcs = [prefix_dir + "/" + source for source in SOURCES], - hdrs = [prefix_dir + "/" + hdrs for hdrs in HEADERS], - includes = [prefix_dir], + srcs = select({ + "//conditions:default" : [prefix_dir + "/" + source for source in SOURCES], + ":windows" : [":srcs_without_unistd"], + }), + hdrs = select({ + "//conditions:default" : [prefix_dir + "/" + hdrs for hdrs in HEADERS], + ":windows" : [":hdrs_without_unistd"], + }), + includes = select({ + "//conditions:default" : [prefix_dir], + ":windows" : [prefix_dir_windows], + }), defines = [ "HAVE_CONFIG_H", ],