// Type-checks src/App.jai for another OS without producing or linking a binary, to catch errors // in code your machine does not build: // // jai check_targets.jai - linux (from any OS) // jai check_targets.jai - macos (from a Mac only: the Objective_C module runs code at compile time) // // The constants below stand in for the ones first.jai generates; keep their names in step. #run,stallable { set_build_options_dc(.{do_output = false}); args := get_build_options().compile_time_command_line; target := Operating_System_Tag.LINUX; cpu := CPU_Tag.X64; if array_find(args, "macos") { target = .MACOS; cpu = .ARM64; } options := get_build_options(); options.os_target = target; options.cpu_target = cpu; options.output_type = .NO_OUTPUT; options.backend = .LLVM; options.output_executable_name = "check"; options.output_path = ".build"; w := compiler_create_workspace("check"); set_build_options(options, w); compiler_begin_intercept(w); add_build_file("src/App.jai", w); add_build_string(#string S APP_NAME :: "mcap"; APP_FOLDER_NAME :: "mcap"; GIT_BRANCH :: "check"; GIT_HASH :: "-"; VERSION :: "0.1.14"; BUILD_DATE :: "-"; DEBUG :: true; COMPILE_TESTS :: true; COMPILE_ARGS :: ""; NO_CRASH_DIALOG :: false; S, w); while true { message := compiler_wait_for_message(); if message.kind == .COMPLETE { m := cast(*Message_Complete) message; log("% check: %", target, m.error_code); break; } } compiler_end_intercept(w); } #import "Basic"; #import "Compiler";