blob: 9ef0d0644c0039fe88bacdb44480de05f306d8f4 [file] [log] [blame]
Colin Cross3f40fa42015-01-30 17:27:36 -08001// Copyright 2015 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package main
16
17import (
18 "flag"
19 "fmt"
20 "os"
21 "path/filepath"
22
Colin Cross70b40592015-03-23 12:57:34 -070023 "github.com/google/blueprint"
24 "github.com/google/blueprint/bootstrap"
Colin Cross3f40fa42015-01-30 17:27:36 -080025
Colin Cross82df9432015-03-24 11:16:06 -070026 "android/soong/art"
Colin Cross3f40fa42015-01-30 17:27:36 -080027 "android/soong/cc"
28 "android/soong/common"
Colin Cross5049f022015-03-18 13:28:46 -070029 "android/soong/genrule"
Colin Cross2fe66872015-03-30 17:20:39 -070030 "android/soong/java"
Colin Cross3f40fa42015-01-30 17:27:36 -080031)
32
33func main() {
34 flag.Parse()
35
36 // The top-level Blueprints file is passed as the first argument.
37 srcDir := filepath.Dir(flag.Arg(0))
38
39 ctx := blueprint.NewContext()
40
41 // Module types
Colin Cross97ba0732015-03-23 17:50:24 -070042 ctx.RegisterModuleType("cc_library_static", cc.CCLibraryStaticFactory)
43 ctx.RegisterModuleType("cc_library_shared", cc.CCLibrarySharedFactory)
44 ctx.RegisterModuleType("cc_library", cc.CCLibraryFactory)
45 ctx.RegisterModuleType("cc_object", cc.CCObjectFactory)
46 ctx.RegisterModuleType("cc_binary", cc.CCBinaryFactory)
47 ctx.RegisterModuleType("cc_test", cc.CCTestFactory)
Colin Cross2ba19d92015-05-07 15:44:20 -070048 ctx.RegisterModuleType("cc_benchmark", cc.CCBenchmarkFactory)
Colin Cross3f40fa42015-01-30 17:27:36 -080049
Colin Cross97ba0732015-03-23 17:50:24 -070050 ctx.RegisterModuleType("toolchain_library", cc.ToolchainLibraryFactory)
Dan Albertbe961682015-03-18 23:38:50 -070051 ctx.RegisterModuleType("ndk_prebuilt_library", cc.NdkPrebuiltLibraryFactory)
Dan Albertc3144b12015-04-28 18:17:56 -070052 ctx.RegisterModuleType("ndk_prebuilt_object", cc.NdkPrebuiltObjectFactory)
Dan Albertbe961682015-03-18 23:38:50 -070053 ctx.RegisterModuleType("ndk_prebuilt_static_stl", cc.NdkPrebuiltStaticStlFactory)
54 ctx.RegisterModuleType("ndk_prebuilt_shared_stl", cc.NdkPrebuiltSharedStlFactory)
Colin Cross3f40fa42015-01-30 17:27:36 -080055
Colin Cross97ba0732015-03-23 17:50:24 -070056 ctx.RegisterModuleType("cc_library_host_static", cc.CCLibraryHostStaticFactory)
57 ctx.RegisterModuleType("cc_library_host_shared", cc.CCLibraryHostSharedFactory)
58 ctx.RegisterModuleType("cc_binary_host", cc.CCBinaryHostFactory)
Colin Cross1f8f2342015-03-26 16:09:47 -070059 ctx.RegisterModuleType("cc_test_host", cc.CCTestHostFactory)
Colin Cross2ba19d92015-05-07 15:44:20 -070060 ctx.RegisterModuleType("cc_benchmark_host", cc.CCBenchmarkHostFactory)
Colin Cross3f40fa42015-01-30 17:27:36 -080061
Colin Cross97ba0732015-03-23 17:50:24 -070062 ctx.RegisterModuleType("gensrcs", genrule.GenSrcsFactory)
Colin Crossd350ecd2015-04-28 13:25:36 -070063 ctx.RegisterModuleType("genrule", genrule.GenRuleFactory)
Colin Cross5049f022015-03-18 13:28:46 -070064
Colin Cross82df9432015-03-24 11:16:06 -070065 ctx.RegisterModuleType("art_cc_library", art.ArtCCLibraryFactory)
66 ctx.RegisterModuleType("art_cc_binary", art.ArtCCBinaryFactory)
67
Colin Cross2fe66872015-03-30 17:20:39 -070068 ctx.RegisterModuleType("java_library", java.JavaLibraryFactory)
69 ctx.RegisterModuleType("java_library_static", java.JavaLibraryFactory)
70 ctx.RegisterModuleType("java_library_host", java.JavaLibraryHostFactory)
71 ctx.RegisterModuleType("java_binary", java.JavaBinaryFactory)
72 ctx.RegisterModuleType("java_binary_host", java.JavaBinaryHostFactory)
73 ctx.RegisterModuleType("prebuilt_java_library", java.JavaPrebuiltFactory)
Colin Crossaa8630b2015-04-13 13:52:22 -070074 ctx.RegisterModuleType("prebuilt_sdk", java.SdkPrebuiltFactory)
Colin Cross30e076a2015-04-13 13:58:27 -070075 ctx.RegisterModuleType("android_app", java.AndroidAppFactory)
Colin Cross2fe66872015-03-30 17:20:39 -070076
Colin Cross3f40fa42015-01-30 17:27:36 -080077 // Mutators
Colin Crossd3ba0392015-05-07 14:11:29 -070078 ctx.RegisterEarlyMutator("host_or_device", common.HostOrDeviceMutator)
Colin Cross3f40fa42015-01-30 17:27:36 -080079 ctx.RegisterEarlyMutator("arch", common.ArchMutator)
80 ctx.RegisterEarlyMutator("link", cc.LinkageMutator)
Colin Cross6b290692015-03-19 14:05:33 -070081 ctx.RegisterEarlyMutator("test_per_src", cc.TestPerSrcMutator)
Colin Cross3f40fa42015-01-30 17:27:36 -080082
83 // Singletons
Colin Cross1f8c52b2015-06-16 16:38:17 -070084 ctx.RegisterSingletonType("buildtarget", common.BuildTargetSingleton)
Colin Cross68f55102015-03-25 14:43:57 -070085 ctx.RegisterSingletonType("env", common.EnvSingleton)
Colin Crossf05fe972015-04-10 17:45:20 -070086 ctx.RegisterSingletonType("logtags", java.LogtagsSingleton)
Colin Cross3f40fa42015-01-30 17:27:36 -080087
Colin Cross1332b002015-04-07 17:11:30 -070088 configuration, err := common.NewConfig(srcDir)
Colin Cross3f40fa42015-01-30 17:27:36 -080089 if err != nil {
90 fmt.Fprintf(os.Stderr, "%s", err)
91 os.Exit(1)
92 }
93
94 // Temporary hack
95 //ctx.SetIgnoreUnknownModuleTypes(true)
96
Colin Cross1332b002015-04-07 17:11:30 -070097 bootstrap.Main(ctx, configuration, common.ConfigFileName)
Colin Cross3f40fa42015-01-30 17:27:36 -080098}