aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorF0x1fy <alecsanchez@avian-lang.org>2020-11-10 09:50:53 -0700
committerF0x1fy <alecsanchez@avian-lang.org>2020-11-10 09:50:53 -0700
commit301e1d2ff3954453213aefa271263cd2644849f1 (patch)
treeb41e09a89639040bc10a170db0cc5a476a93a3ee /src
parentee3b3fe6a3424d84cda26b1cddc764694ac49e7a (diff)
Added -no-entry-point flag and relevant check.
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp1
-rw-r--r--src/checker.cpp2
-rw-r--r--src/main.cpp7
3 files changed, 9 insertions, 1 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index ed259f7cd..4f06c2913 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -151,6 +151,7 @@ struct BuildContext {
bool no_dynamic_literals;
bool no_output_files;
bool no_crt;
+ bool no_entry_point;
bool use_lld;
bool vet;
bool cross_compiling;
diff --git a/src/checker.cpp b/src/checker.cpp
index 5c93e12b6..ac324fffa 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -4572,7 +4572,7 @@ void check_parsed_files(Checker *c) {
TIME_SECTION("check entry point");
- if (build_context.build_mode == BuildMode_Executable) {
+ if (build_context.build_mode == BuildMode_Executable && !build_context.no_entry_point) {
Scope *s = c->info.init_scope;
GB_ASSERT(s != nullptr);
GB_ASSERT(s->flags&ScopeFlag_Init);
diff --git a/src/main.cpp b/src/main.cpp
index 1ae0e7d97..68d4a03c6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -581,6 +581,7 @@ enum BuildFlagKind {
BuildFlag_NoBoundsCheck,
BuildFlag_NoDynamicLiterals,
BuildFlag_NoCRT,
+ BuildFlag_NoEntryPoint,
BuildFlag_UseLLD,
BuildFlag_Vet,
BuildFlag_UseLLVMApi,
@@ -591,6 +592,7 @@ enum BuildFlagKind {
BuildFlag_DisallowDo,
BuildFlag_DefaultToNilAllocator,
+
BuildFlag_Compact,
BuildFlag_GlobalDefinitions,
BuildFlag_GoToDefinitions,
@@ -680,6 +682,7 @@ bool parse_build_flags(Array<String> args) {
add_flag(&build_flags, BuildFlag_DisableAssert, str_lit("disable-assert"), BuildFlagParam_None);
add_flag(&build_flags, BuildFlag_NoBoundsCheck, str_lit("no-bounds-check"), BuildFlagParam_None);
add_flag(&build_flags, BuildFlag_NoDynamicLiterals, str_lit("no-dynamic-literals"), BuildFlagParam_None);
+ add_flag(&build_flags, BuildFlag_NoEntryPoint, str_lit("no-entry-point"), BuildFlagParam_None);
add_flag(&build_flags, BuildFlag_NoCRT, str_lit("no-crt"), BuildFlagParam_None);
add_flag(&build_flags, BuildFlag_UseLLD, str_lit("lld"), BuildFlagParam_None);
add_flag(&build_flags, BuildFlag_Vet, str_lit("vet"), BuildFlagParam_None);
@@ -1095,6 +1098,10 @@ bool parse_build_flags(Array<String> args) {
build_context.no_crt = true;
break;
+ case BuildFlag_NoEntryPoint:
+ build_context.no_entry_point = true;
+ break;
+
case BuildFlag_UseLLD:
build_context.use_lld = true;
break;