blob: af54201a05a594f7812787e83c3d5d8cdf10996d [file] [log] [blame]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01001# Packaging
2
Lukacs Berkic4e74d12015-11-10 15:28:00 +00003md5_cmd = "set -e -o pipefail && cat $(SRCS) | sort | %s | awk '{ print $$1; }' > $@"
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01004
5# TODO(bazel-team): find a better way to handle dylib extensions.
6filegroup(
7 name = "libunix",
8 srcs = select({
9 ":darwin": ["//src/main/native:libunix.dylib"],
Chris Parsons5d96a282015-10-29 17:14:20 +000010 ":darwin_x86_64": ["//src/main/native:libunix.dylib"],
Dmitry Lomov458ccd02016-02-02 20:30:32 +000011 ":windows": [],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010012 "//conditions:default": ["//src/main/native:libunix.so"],
13 }),
Kristina Chodorow38358932015-06-26 14:31:50 +000014 visibility = [
Kristina Chodorow38358932015-06-26 14:31:50 +000015 "//src/test/java:__pkg__",
Kristina Chodorow07163032015-09-04 17:37:17 +000016 "//src/tools/generate_workspace:__pkg__",
Kristina Chodorow38358932015-06-26 14:31:50 +000017 ],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010018)
19
Lukacs Berkieb851fe2015-10-19 10:52:31 +000020[genrule(
21 name = "install_base_key-file" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010022 srcs = [
Han-Wen Nienhuys27760a62015-11-30 17:27:34 +000023 "//src/main/java/com/google/devtools/build/lib:bazel/BazelServer_deploy.jar",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010024 "//src/main/cpp:client",
25 ":libunix",
26 "//src/main/tools:build-runfiles",
27 "//src/main/tools:process-wrapper",
Chris Parsonsf4888182016-01-08 00:42:14 +000028 "//src/main/tools:xcode-locator",
Thiago Farina24375ef2015-05-15 13:23:56 +000029 "//src/main/tools:namespace-sandbox",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010030 "//src/main/tools:build_interface_so",
Lukacs Berkieb851fe2015-10-19 10:52:31 +000031 ] + embedded_tools,
32 outs = ["install_base_key" + suffix],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010033 cmd = select({
34 ":darwin": md5_cmd % "/sbin/md5",
Chris Parsons5d96a282015-10-29 17:14:20 +000035 ":darwin_x86_64": md5_cmd % "/sbin/md5",
Googlerbdbf75f2015-11-17 12:50:44 +000036 ":freebsd": md5_cmd % "/sbin/md5",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010037 "//conditions:default": md5_cmd % "md5sum",
38 }),
Lukacs Berkieb851fe2015-10-19 10:52:31 +000039) for suffix, embedded_tools in {
40 "": [":embedded_tools"],
41 "_notools": [],
42}.items()]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010043
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000044# Try to grab the java version from the java_toolchain.
Damien Martin-Guillerez4bf2c1a2015-10-02 09:19:18 +000045# Unfortunately, we don't have access to the javac options
46# so we cannot get it from the command-line options.
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000047genquery(
48 name = "java_toolchain_content",
49 expression = "kind(java_toolchain, deps(//tools/defaults:java_toolchain))",
50 opts = ["--output=xml"],
51 scope = ["//tools/defaults:java_toolchain"],
52)
53
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010054genrule(
55 name = "java-version",
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000056 srcs = [":java_toolchain_content"],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010057 outs = ["java.version"],
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000058 cmd = """
59 VERSION_LINE=$$(cat $< | grep target_version);
Lukacs Berki30bed8f2015-10-26 12:18:24 +000060 JAVA_VERSION=$$(echo $${VERSION_LINE} | sed 's/.*value="\\([^"]\\)".*/\\1/');
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000061 if [ -z "$${JAVA_VERSION}" ]; then
Damien Martin-Guillerez9c5deb62015-09-15 07:38:26 +000062 echo "1.8" >$@ # Java 8 is the default
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000063 elif [[ "$${JAVA_VERSION}" =~ ^[0-9]+$$ ]]; then
64 echo "1.$${JAVA_VERSION}" >$@ # Add 1. before 7 or 8
65 else
66 echo "$${JAVA_VERSION}" >$@
67 fi
68 """,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010069)
70
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +000071filegroup(
72 name = "darwin_tools",
73 srcs = [
74 "//src/tools/xcode/actoolwrapper:actoolwrapper",
75 "//src/tools/xcode/ibtoolwrapper:ibtoolwrapper",
76 "//src/tools/xcode/momcwrapper:momcwrapper",
77 "//src/tools/xcode/swiftstdlibtoolwrapper:swiftstdlibtoolwrapper",
78 "//src/tools/xcode/environment:environment_plist",
79 "//src/tools/xcode/xcrunwrapper:xcrunwrapper",
80 "//src/objc_tools/bundlemerge:bundlemerge_deploy.jar",
81 "//src/objc_tools/plmerge:plmerge_deploy.jar",
82 "//src/objc_tools/xcodegen:xcodegen_deploy.jar",
83 "//src/tools/xcode/realpath:realpath",
84 ] + select({
85 ":iphonesdk": ["//src/tools/xcode/stdredirect:StdRedirect.dylib"],
86 "//conditions:default": [],
87 }),
88)
89
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010090genrule(
Lukacs Berki8b2e6b82015-10-06 07:43:36 +000091 name = "embedded_tools",
Damien Martin-Guillerez12997672015-09-03 21:54:08 +000092 srcs = [
Lukacs Berki6eaaf942015-10-27 13:04:58 +000093 ":create_embedded_tools.sh",
Lukacs Berki8b2e6b82015-10-06 07:43:36 +000094 "//tools:embedded_tools_srcs",
Damien Martin-Guillerez12997672015-09-03 21:54:08 +000095 "//third_party:srcs",
Alex Humesky6d004682015-10-02 22:57:09 +000096 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
Lukacs Berki6eaaf942015-10-27 13:04:58 +000097 "//src/tools/android/java/com/google/devtools/build/android:embedded_tools",
Googler5e34a3d2015-12-03 15:17:55 +000098 "//src/tools/android/java/com/google/devtools/build/android/ideinfo:embedded_tools",
Lukacs Berki6eaaf942015-10-27 13:04:58 +000099 "//src/tools/android/java/com/google/devtools/build/android/idlclass:embedded_tools",
Damien Martin-Guillerez12997672015-09-03 21:54:08 +0000100 "//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:srcs",
Lukacs Berki6eaaf942015-10-27 13:04:58 +0000101 "//src/tools/android/java/com/google/devtools/build/android/ziputils:embedded_tools",
Damien Martin-Guillerez12997672015-09-03 21:54:08 +0000102 "//src/main/protobuf:srcs",
Lukacs Berki9b1e3a22015-11-18 09:55:46 +0000103 "//src/java_tools/buildjar:JavaBuilder_deploy.jar",
104 "//src/java_tools/singlejar:SingleJar_deploy.jar",
105 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass:GenClass_deploy.jar",
Damien Martin-Guillerezeea8efa2016-01-13 09:08:48 +0000106 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:Runner_deploy.jar",
Lukacs Berki9b1e3a22015-11-18 09:55:46 +0000107 "//third_party/ijar",
Alex Humesky6ba5c972016-01-11 22:46:40 +0000108 "//third_party/java/apkbuilder:embedded_tools",
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +0000109 ] + select({
110 ":darwin": [":darwin_tools"],
111 ":darwin_x86_64": [":darwin_tools"],
112 "//conditions:default": [],
113 }),
Lukacs Berki8b2e6b82015-10-06 07:43:36 +0000114 outs = ["embedded_tools.zip"],
Lukacs Berki6eaaf942015-10-27 13:04:58 +0000115 cmd = "$(location :create_embedded_tools.sh) $@ $(SRCS)",
Damien Martin-Guillerez12997672015-09-03 21:54:08 +0000116)
117
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000118[genrule(
119 name = "package-zip" + suffix,
120 srcs = ([":embedded_tools.zip"] if embed else []) + [
121 # The script assumes that the embedded tools zip (if exists) is the
122 # first item here, the deploy jar the second and install base key is the
123 # third
Han-Wen Nienhuys27760a62015-11-30 17:27:34 +0000124 "//src/main/java/com/google/devtools/build/lib:bazel/BazelServer_deploy.jar",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000125 "install_base_key" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100126 "//src/main/cpp:client",
127 ":libunix",
128 "//src/main/tools:build-runfiles",
129 "//src/main/tools:process-wrapper",
Chris Parsonsf4888182016-01-08 00:42:14 +0000130 "//src/main/tools:xcode-locator",
Kristina Chodorowb5ecdab2015-03-16 17:55:04 +0000131 "//src/main/tools:jdk-support",
Thiago Farina24375ef2015-05-15 13:23:56 +0000132 "//src/main/tools:namespace-sandbox",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100133 "//src/main/tools:build_interface_so",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100134 ":java-version",
135 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000136 outs = ["package" + suffix + ".zip"],
137 cmd = "$(location :package-bazel.sh) $@ " + ("" if embed else "''") + " $(SRCS)",
138 tools = ["package-bazel.sh"],
139) for suffix, embed in [
140 ("", True),
141 ("_notools", False),
142]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100143
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000144[genrule(
145 name = "bazel-bin" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100146 srcs = [
147 "//src/main/cpp:client",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000148 "package-zip" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100149 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000150 outs = ["bazel" + suffix],
151 cmd = "cat $(location //src/main/cpp:client) $(location :package-zip" + suffix + ") > $@ && zip -qA $@",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100152 executable = 1,
153 output_to_bindir = 1,
Damien Martin-Guillerez5f9c6ba2015-04-09 21:10:33 +0000154 visibility = [
155 "//scripts:__pkg__", # For bash completion generation
Damien Martin-Guillerezab13f682015-07-28 08:19:32 +0000156 "//scripts/packages:__pkg__", # For installer generation
Damien Martin-Guillerez5f9c6ba2015-04-09 21:10:33 +0000157 "//src/test:__subpackages__", # For integration tests
158 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000159) for suffix in [
160 "",
161 "_notools",
162]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100163
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000164# Build an executable named `bazel.exe`.
165# Works on all platforms but only makes sense on Windows.
166# Workaround for non-configurability of genrule's `outs` attribute.
167[genrule(
168 name = "bazel-bin" + suffix + ".exe",
169 srcs = [":bazel-bin" + suffix],
170 outs = ["bazel" + suffix + ".exe"],
171 cmd = "cp $(location :bazel-bin" + suffix + ") $@",
172 executable = 1,
173 output_to_bindir = 1,
174 visibility = [
175 "//scripts:__pkg__", # For bash completion generation
176 "//scripts/packages:__pkg__", # For installer generation
177 "//src/test:__subpackages__", # For integration tests
178 ],
179) for suffix in [
180 "",
181 "_notools",
182]]
183
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100184config_setting(
185 name = "darwin",
186 values = {"cpu": "darwin"},
187 visibility = ["//visibility:public"],
188)
Doug Rabson709bc612015-08-25 14:12:00 +0000189
190config_setting(
Chris Parsons5d96a282015-10-29 17:14:20 +0000191 name = "darwin_x86_64",
192 values = {"cpu": "darwin_x86_64"},
193 visibility = ["//visibility:public"],
194)
195
196config_setting(
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +0000197 name = "iphonesdk",
198 values = {"define": "IPHONE_SDK=1"},
199 visibility = ["//visibility:public"],
200)
201
202config_setting(
Doug Rabson709bc612015-08-25 14:12:00 +0000203 name = "freebsd",
204 values = {"cpu": "freebsd"},
205 visibility = ["//visibility:public"],
206)
Dmitry Lomov197fd6a2015-12-06 21:53:16 +0000207
208config_setting(
209 name = "windows",
Dmitry Lomov458ccd02016-02-02 20:30:32 +0000210 values = {"cpu": "x64_windows"},
Dmitry Lomov197fd6a2015-12-06 21:53:16 +0000211 visibility = ["//visibility:public"],
212)