added: `-Dno_entrypoint` option to Onyx runtime
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 1 Jul 2023 04:38:10 +0000 (23:38 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 1 Jul 2023 04:38:10 +0000 (23:38 -0500)
core/runtime/platform/onyx/platform.onyx

index 578ea682720ba9541f1b512316e0973fa780ed5b..b317170b75e37c0d637761f2c59ba5baf601ae54 100644 (file)
@@ -1,6 +1,5 @@
 package runtime.platform
 
-use main
 use core {package, *}
 use runtime {
     package,
@@ -90,6 +89,14 @@ ProcessData :: #distinct u64
     __random_get        :: (buf: [] u8) -> void ---
 }
 
+#if !#defined(runtime.vars.no_entrypoint) {
+    use main
+    #local MAIN_FUNCTION :: main.main
+
+} else {
+    MAIN_FUNCTION :: () {}
+}
+
 __start :: () {
     fd: FileData;
     __file_get_standard(1, &fd);
@@ -113,8 +120,9 @@ __start :: () {
     __runtime_initialize();
     context.thread_id = 0;
 
-    #if (typeof main.main) == #type () -> void {
-        main.main();
+
+    #if (typeof MAIN_FUNCTION) == #type () -> void { // An error on this line means no 'main.main' was found in your program.
+        MAIN_FUNCTION();
 
     } else {
         args : [] cstr;
@@ -125,7 +133,7 @@ __start :: () {
         argv_buf := cast(cstr) calloc(argv_buf_size);
         __args_get(args.data, argv_buf);
 
-        main.main(args);
+        MAIN_FUNCTION(args);
     }
 
     __flush_stdio();