blob: 65e1f20d3eb0cd02299ec5c4c1a3c0047505e1e7 [file] [log] [blame]
{namespace project_config}
/***/
{template .soyweb}
{call buck.page}
{param title: 'project_config()' /}
{param prettify: true /}
{param content}
{call buck.rule}
{param overview}
A <code>project_config()</code> rule is used to specify the information needed
to generate the configuration files for an IDE so the primary build target
(and optionally its tests) of a BUCK file can be built using that IDE.
<p>Note that there may only be one <code>project_config()</code> rule per
BUCK file.</p>
{/param}
{param args}
{call buck.arg}
{param name: 'src_target' /}
{param desc}
A build rule that will serve as the basis of the generated project.
Currently, it must be one of: <code>java_library()</code>,
{sp}<code>java_test()</code>, <code>android_library()</code>, or
{sp}<code>android_binary()</code>. The generated IDE project will be of a
type that corresponds to the type of the rule.
<p>Also, the <code>deps</code> of this rule will determine the other IDE
projects on which the IDE project for this rule depends.
Note that this is a heuristic, but it appears to work reasonably well,
in practice.</p>
{/param}
{/call}
{call buck.arg}
{param name : 'src_roots' /}
{param default : '[]' /}
{param desc}
The root directories of the source code that correspond to
{sp}<code>src_target</code>.
Values may include:
<ul>
<li>
<code>None</code> There are no source roots. This could happen if
{sp}<code>src_target</code> identifies an Android library project that
is purely resources and no Java code.
</li>
<li>
<code>[]</code> The directory that contains the build file is a Java
package. In this case, the root of the package must be one of the
ancestor directories.
Buck can deduce where the root of the package is by using the
{sp}<code>src_roots</code> property in the <code>[java]</code> section
of the <code>.buckconfig</code>.
</li>
<li>
<code>['src']</code> The <code>src</code> directory under the build file
directory is a source root. This list may contain multiple elements, but
in practice, it should almost always contain at most one element.
This option supports a list to allow generated source code to be checked in
alongside the hand-written source of imported projects.
In this case, <code>src_roots</code> would be
{sp}<code>['src', 'src-gen']</code>.
</li>
</ul>
{/param}
{/call}
{call buck.arg}
{param name : 'test_target' /}
{param default : 'None' /}
{param desc}
If specified, a complementary tests project for <code>src_target</code>.
In IntelliJ, source and test code can be grouped together in the same module
while having different classpaths.
In Eclipse, source and test code are often in separate projects because they
need to have different classpaths.
{/param}
{/call}
{call buck.arg}
{param name : 'test_roots' /}
{param default : '[]' /}
{param desc}
Same as <code>src_roots</code>, but for <code>test_target</code>.
{/param}
{/call}
{/param} // close args
{param examples}
{literal}<pre class="prettyprint lang-py">
project_config(
src_target = ':lib-base',
src_roots = [ 'src' ],
test_target = ':tests',
test_root = 'tests',
)
</pre>{/literal}
{/param}
{/call} // close buck.rule
{/param}
{/call}
{/template}