| # Copyright (C) 2013 The Android Open Source Project | |
| # | |
| # 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 | |
| # | |
| # http://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. | |
| # | |
| # Compiles a Java library with additional compile-time dependencies | |
| # that do not show up as transitive dependencies to java_library() | |
| # or java_binary() rule that depends on this library. | |
| # | |
| # Example: servlet library needs to be compiled against servlet API | |
| # but this dependency must not become a transitive dependency. | |
| # | |
| # java_library2( | |
| # name = 'gitiles-servlet', | |
| # srcs = SRCS, | |
| # resources = RSRC, | |
| # deps = DEPS, | |
| # compile_deps = ['//lib:servlet-api'], | |
| # visibility = ['PUBLIC'], | |
| # ) | |
| # @See: https://github.com/facebook/buck/issues/63 | |
| # | |
| def java_library2( | |
| name, | |
| srcs = [], | |
| resources = [], | |
| deps = [], | |
| compile_deps = [], | |
| visibility = []): | |
| c = name + '__compile' | |
| t = name + '__link' | |
| j = 'lib__%s__output/%s.jar' % (c, c) | |
| o = 'lib__%s__output/%s.jar' % (name, name) | |
| java_library( | |
| name = c, | |
| srcs = srcs, | |
| resources = resources, | |
| deps = deps + compile_deps, | |
| visibility = visibility, | |
| ) | |
| # Break the dependency chain by passing the newly built | |
| # JAR to consumers through a prebuilt_jar(). | |
| genrule( | |
| name = t, | |
| cmd = 'mkdir -p $(dirname $OUT);ln -s $SRCS $OUT', | |
| srcs = [genfile(j)], | |
| deps = [':' + c], | |
| out = o, | |
| ) | |
| prebuilt_jar( | |
| name = name, | |
| binary_jar = genfile(o), | |
| deps = deps + [':' + t], | |
| visibility = visibility, | |
| ) |