diff options
| author | Your Name <agrawalshagun07@gmail.com> | 2025-04-26 01:35:36 +0530 |
|---|---|---|
| committer | Your Name <agrawalshagun07@gmail.com> | 2025-04-26 01:35:36 +0530 |
| commit | 0f07ef8ebfcbb7f9077246eec08fd1435cdaee46 (patch) | |
| tree | d4b943c77faab3a9c77b107341c02a9754830e4b /cljcc-compiler/src/cljcc/cljcc.clj | |
| parent | 18ae507a42c1e45b6e552fe95c675d1e4db58737 (diff) | |
Compile library to WASM using GraalVM.
Add main functions for library.
Convert to WASM image.
Setup public for cljcc website.
Diffstat (limited to 'cljcc-compiler/src/cljcc/cljcc.clj')
| -rw-r--r-- | cljcc-compiler/src/cljcc/cljcc.clj | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/cljcc-compiler/src/cljcc/cljcc.clj b/cljcc-compiler/src/cljcc/cljcc.clj index fc088fc..e5c1e69 100644 --- a/cljcc-compiler/src/cljcc/cljcc.clj +++ b/cljcc-compiler/src/cljcc/cljcc.clj @@ -9,6 +9,8 @@ [cljcc.emit :as emit]) (:gen-class)) +(set! *warn-on-reflection* true) + (def valid-os-targets #{:mac :linux}) (def valid-stages #{:lex :parse :validate :tacky :codegen :emit}) @@ -47,3 +49,26 @@ stages-to-run (vec (take stage-idx stages))] (reduce (fn [acc f] (f acc)) source stages-to-run))) +(defn- validate-os [os] + (let [valid-os #{"mac" "linux"}] + (assert (valid-os os) (str "OS: " os "is not valid." "OS type is not valid. Valid os: " (vec valid-os)))) + os) + +(defn- validate-stage [stage] + (let [valid-stages #{"lex" "parse" "validate" "tacky" "codegen" "emit"}] + (assert (valid-stages stage) (str "Stage is not valid. Valid stages: " (vec valid-stages))) + stage)) + +(defn -main [& args] + (let [[source os stage] args + source (or source "") + os (or os "") + stage (or stage "")] + (validate-os os) + (validate-stage stage) + (println (run source {:options {:os (keyword os) + :stage (keyword stage)}})))) + +(comment + + (-main "int main(void) {return 42;}" "linux" "lex")) |
