aboutsummaryrefslogtreecommitdiff
path: root/cljcc-compiler/build.clj
diff options
context:
space:
mode:
authorYour Name <agrawalshagun07@gmail.com>2025-04-26 01:35:36 +0530
committerYour Name <agrawalshagun07@gmail.com>2025-04-26 01:35:36 +0530
commit0f07ef8ebfcbb7f9077246eec08fd1435cdaee46 (patch)
treed4b943c77faab3a9c77b107341c02a9754830e4b /cljcc-compiler/build.clj
parent18ae507a42c1e45b6e552fe95c675d1e4db58737 (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/build.clj')
-rw-r--r--cljcc-compiler/build.clj28
1 files changed, 28 insertions, 0 deletions
diff --git a/cljcc-compiler/build.clj b/cljcc-compiler/build.clj
new file mode 100644
index 0000000..68d7f95
--- /dev/null
+++ b/cljcc-compiler/build.clj
@@ -0,0 +1,28 @@
+(ns build
+ (:refer-clojure :exclude [test])
+ (:require [clojure.tools.build.api :as b]))
+
+(def lib 'net.clojars.cljcc-lib/cljcc-lib)
+(def main 'cljcc.cljcc)
+(def class-dir "../target/classes")
+
+(defn- uber-opts [opts]
+ (assoc opts
+ :lib lib :main main
+ :uber-file "../target/lib/cljcc-lib.jar"
+ :basis (b/create-basis {})
+ :class-dir class-dir
+ :src-dirs ["src"]
+ :ns-compile [main]))
+
+(defn ci "Run the CI pipeline of tests (and build the uberjar)." [opts]
+ (b/delete {:path "../target"})
+ (let [opts (uber-opts opts)]
+ (println "\nCopying source...")
+ (b/copy-dir {:src-dirs ["resources" "src"] :target-dir class-dir})
+ (println (str "\nCompiling " main "..."))
+ (b/compile-clj opts)
+ (println "\nBuilding JAR...")
+ (b/uber opts)
+ (println "\nJAR built."))
+ opts)