A method performed by a data processing apparatus, comprising: creating a first compilation strategy, which is a plan created for compiling program code, for a first build, wherein a build, including the first build and a second build, changes programming code into executable code upon compilation; wherein creating a first compilation strategy comprises: loading configuration files by said first build for the compilation targets; loading configuration files by said first build for all referenced targets; repeating loading of configuration files by said first build until the transitive closure of the compilation targets is loaded; and computing the compilation strategy by said first build; performing said first build using said first compilation strategy; computing a first checksum for configuration files identifying build dependencies associated with said first build, said first checksum is a global build checksum computed using one or more local build checksums which are computed based on the first build configuration files in a transitive closure of the first build configuration files; storing said first compilation strategy and said first checksum; computing a second checksum for configuration files identifying build dependencies associated with said second build; determining if said second checksum is equal to said first checksum; in response to determining that said second checksum is not equal to said first checksum, creating a second compilation strategy, which is different from the first compilation strategy; storing said second compilation strategy and said second checksum, and performing said second build using said second compilation strategy; and in response to determining that said second checksum is equal to said first checksum, retrieving said first compilation strategy and performing said second build using said first compilation strategy. creating a first compilation strategy, which is a plan created for compiling program code, for a first build, wherein a build, including the first build and a second build, changes programming code into executable code upon compilation; wherein creating a first compilation strategy comprises: loading configuration files by said first build for the compilation targets; loading configuration files by said first build for all referenced targets; repeating loading of configuration files by said first build until the transitive closure of the compilation targets is loaded; and computing the compilation strategy by said first build; loading configuration files by said first build for the compilation targets; loading configuration files by said first build for all referenced targets; repeating loading of configuration files by said first build until the transitive closure of the compilation targets is loaded; and computing the compilation strategy by said first build; performing said first build using said first compilation strategy; computing a first checksum for configuration files identifying build dependencies associated with said first build, said first checksum is a global build checksum computed using one or more local build checksums which are computed based on the first build configuration files in a transitive closure of the first build configuration files; storing said first compilation strategy and said first checksum; computing a second checksum for configuration files identifying build dependencies associated with said second build; determining if said second checksum is equal to said first checksum; in response to determining that said second checksum is not equal to said first checksum, creating a second compilation strategy, which is different from the first compilation strategy; storing said second compilation strategy and said second checksum, and performing said second build using said second compilation strategy; and in response to determining that said second checksum is equal to said first checksum, retrieving said first compilation strategy and performing said second build using said first compilation strategy.