aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShagun Agrawal <agrawalshagun07@gmail.com>2024-07-24 21:37:13 +0530
committerShagun Agrawal <agrawalshagun07@gmail.com>2024-07-24 21:37:13 +0530
commite81e86e937584a7f2345df43dc93a13793d10dc2 (patch)
treec1f7658c700ccf78f27d6439b0642583825e642a
parentcc0df196ee35da434bd2ab69887354c296b3fbae (diff)
fix babashka script for building script
Changed babashka directory to create native build inside /target/cljcc folder.
-rw-r--r--bb.edn36
-rw-r--r--build.clj2
-rw-r--r--deps.edn3
-rw-r--r--src/cljcc/cljcc.clj7
4 files changed, 38 insertions, 10 deletions
diff --git a/bb.edn b/bb.edn
new file mode 100644
index 0000000..c3da3be
--- /dev/null
+++ b/bb.edn
@@ -0,0 +1,36 @@
+{:tasks
+ {:requires ([babashka.fs :as fs]
+ [clojure.string :as str])
+ :init (let [windows? (str/starts-with? (System/getProperty "os.name") "Windows")]
+ (if windows?
+ (do
+ (println "Cannot run on Windows !")
+ (System/exit 1))))
+ clean (do
+ (println "Removing target folder.")
+ (fs/delete-tree "target"))
+
+ run-main {:doc "Run main"
+ :task (apply clojure "-M -m cljcc.cljcc" *command-line-args*)}
+ build-uberjar {:doc "Builds uberjar"
+ :task (when (seq (fs/modified-since "target/cljcc"
+ ["src" "build.clj" "deps.edn" "test" "resources"]))
+ (clojure "-T:build ci"))}
+ run-uberjar {:doc "Run uberjar"
+ :depends [build-uberjar]
+ :task (apply shell "java -jar target/cljcc/cljcc.jar" *command-line-args*)}
+ build-native {:doc "Builds native image"
+ :depends [build-uberjar]
+ :task
+ (shell {:dir "target/cljcc"}
+ "native-image"
+ "-jar" "cljcc.jar"
+ "-o" "cljcc"
+ "-Ob" ; quick compilation flag for development
+ ; "-H:Name=cljcc"
+ "-H:+ReportExceptionStackTraces"
+ "--features=clj_easy.graal_build_time.InitClojureClasses"
+ "--initialize-at-build-time"
+ "--report-unsupported-elements-at-runtime"
+ "--verbose"
+ "--no-fallback")}}}
diff --git a/build.clj b/build.clj
index adbcbf1..be2c688 100644
--- a/build.clj
+++ b/build.clj
@@ -20,7 +20,7 @@
(defn- uber-opts [opts]
(assoc opts
:lib lib :main main
- :uber-file (format "target/%s-%s.jar" lib version)
+ :uber-file "target/cljcc/cljcc.jar"
:basis (b/create-basis {})
:class-dir class-dir
:src-dirs ["src"]
diff --git a/deps.edn b/deps.edn
index 2f7d422..e6b7e08 100644
--- a/deps.edn
+++ b/deps.edn
@@ -4,9 +4,6 @@
com.github.clj-easy/graal-build-time {:mvn/version "1.0.5"}}
:aliases
{:run-m {:main-opts ["-m" "cljcc.cljcc"]}
- :run-x {:ns-default cljcc.cljcc
- :exec-fn greet
- :exec-args {:name "Clojure"}}
:build {:deps {io.github.clojure/tools.build
{:mvn/version "0.10.3"}}
:ns-default build}
diff --git a/src/cljcc/cljcc.clj b/src/cljcc/cljcc.clj
index 5d0be54..bfecc3b 100644
--- a/src/cljcc/cljcc.clj
+++ b/src/cljcc/cljcc.clj
@@ -5,13 +5,8 @@
(set! *warn-on-reflection* true)
-(defn greet
- "Callable entry point to the application."
- [data]
- (println (str "Hello, " (or (:name data) "World") "!")))
-
(defn -main
- "I don't do a whole lot ... yet."
+ "Main entrypoint for cljcc compiler."
[& args]
(let [input-file-path (first args)]
(try