mirror of
https://github.com/janet-lang/janet
synced 2025-10-25 12:47:42 +00:00
Bundle more dst code (sans method of installation)
This commit is contained in:
41
lib/colors.dst
Normal file
41
lib/colors.dst
Normal file
@@ -0,0 +1,41 @@
|
||||
# Ansi terminal colors
|
||||
|
||||
(def- colormap
|
||||
{:black 30
|
||||
:bg-black 40
|
||||
:red 31
|
||||
:bg-red 41
|
||||
:green 32
|
||||
:bg-green 42
|
||||
:yellow 33
|
||||
:bg-yellow 43
|
||||
:blue 34
|
||||
:bg-blue 44
|
||||
:magenta 35
|
||||
:bg-magenta 45
|
||||
:cyan 36
|
||||
:bg-cyan 46
|
||||
:white 37
|
||||
:bg-white 47
|
||||
|
||||
:bright-black 90
|
||||
:bg-bright-black 100
|
||||
:bright-red 91
|
||||
:bg-bright-red 101
|
||||
:bright-green 92
|
||||
:bg-bright-green 102
|
||||
:bright-yellow 93
|
||||
:bg-bright-yellow 103
|
||||
:bright-blue 94
|
||||
:bg-bright-blue 104
|
||||
:bright-magenta 95
|
||||
:bg-bright-magenta 105
|
||||
:bright-cyan 96
|
||||
:bg-bright-cyan 106
|
||||
:bright-white 97
|
||||
:bg-bright-white 107})
|
||||
|
||||
(loop [[name color] :in (pairs colormap)]
|
||||
(defglobal (string.slice name 1)
|
||||
(fn color-wrapper [& pieces]
|
||||
(string "\e[" color "m" (apply1 string pieces) "\e[0m"))))
|
||||
51
lib/metabuild.dst
Normal file
51
lib/metabuild.dst
Normal file
@@ -0,0 +1,51 @@
|
||||
# A script to help generate build files on different platforms
|
||||
|
||||
(def- make-cflags "-std=c99 -Wall -Wextra -O2 -shared -fpic")
|
||||
(def- make-ldflags "")
|
||||
|
||||
(defn $
|
||||
"Do and get the value of a subshell command"
|
||||
[command]
|
||||
(def f (file.popen command))
|
||||
(def ret (file.read f :all))
|
||||
(file.close f)
|
||||
ret)
|
||||
|
||||
(defn- emit-rule
|
||||
"Emit a rule in a makefile"
|
||||
@[out target deps recipe]
|
||||
(default recipe "@echo '-----'")
|
||||
(file.write
|
||||
out
|
||||
target
|
||||
": "
|
||||
(if (indexed? deps) (string.join deps " ") deps)
|
||||
"\n\t"
|
||||
(if (indexed? recipe) (string.join recipe "\n\t") recipe)
|
||||
"\n\n")
|
||||
out)
|
||||
|
||||
(defn generate-make
|
||||
"Generate a makefile"
|
||||
[out-path sources target]
|
||||
(def out (file.open out-path :w))
|
||||
(def csources (filter (fn [x] (= ".c" (string.slice x -2))) sources))
|
||||
(def hsources (filter (fn [x] (= ".h" (string.slice x -2))) sources))
|
||||
(file.write
|
||||
out
|
||||
"# Autogenerated Makefile, do not edit\n"
|
||||
"# Generated at " ($ `date`)
|
||||
"\nCFLAGS:=" make-cflags
|
||||
"\nLDFLAGS:=" make-ldflags
|
||||
"\nSOURCES:=" (string.join csources " ")
|
||||
"\nHEADERS:=" (string.join hsources " ")
|
||||
"\nOBJECTS:=$(patsubst %.c,%.o,${SOURCES})"
|
||||
"\nTARGET:=" target ".so"
|
||||
"\n\n")
|
||||
(emit-rule out "all" "${TARGET}")
|
||||
(emit-rule out "%.o" @["%.c" "${HEADERS}"] "${CC} ${CFLAGS} -o $@ $< ${LDFLAGS}")
|
||||
(emit-rule out "${TARGET}" "${OBJECTS}" "${CC} ${CFLAGS} -o $@ $^ ${LDFLAGS}")
|
||||
(emit-rule out "clean" "" @["rm ${OBJECTS}" "rm @{TARGET}"])
|
||||
# Phony targets
|
||||
(emit-rule out ".PHONY" @["all" "clean"])
|
||||
nil)
|
||||
Reference in New Issue
Block a user