Skip to content

Commit b8abdd7

Browse files
committed
remove makefile, using only janet-pm commands to build. Add project.janet to examples sub-directory to build examples into executables
1 parent 956cc84 commit b8abdd7

File tree

11 files changed

+145
-100
lines changed

11 files changed

+145
-100
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,10 @@ local_janet_deps/
55
jfltk.so
66
jfltk.dll
77
.venv
8+
*.o
9+
*.obj
10+
11+
# files that are generated
12+
jfltk/flags.janet
13+
jfltk/*.a
14+
jfltk/*.lib

Makefile

Lines changed: 0 additions & 69 deletions
This file was deleted.

bundle/init.janet

Lines changed: 76 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,44 @@
1313
(defdyn *cmakepath* "What cmake command to use")
1414
(defdyn *ninjapath* "What ninja command to use")
1515

16-
(def- cfltk-lib
17-
(if (= (os/which) :windows)
18-
"cfltk2.lib"
19-
"cfltk2.a"))
20-
2116
(defn- cmake
2217
"Make a call to cmake."
2318
[& args]
19+
(printf "cmake %j" args)
2420
(sh/exec (dyn *cmakepath* "cmake") ;args))
2521

2622
(defn- update-submodules []
2723
(pm/git "submodule" "update" "--init" "--recursive"))
2824

25+
(defn- lib-prefix []
26+
(if (= (os/which) :windows)
27+
""
28+
"lib"))
29+
30+
(defn- lib-suffix []
31+
(if (= (os/which) :windows)
32+
".lib"
33+
".a"))
34+
35+
(def- cfltk-lib
36+
(string (lib-prefix) "cfltk2" (lib-suffix)))
37+
38+
(def- fltk-build-dir (string/format "_build/cfltk-build/fltk/lib"))
39+
(def- fltk-libs
40+
(do
41+
(var results @[])
42+
(loop [item :in ["fltk" "fltk_gl" "fltk_forms" "fltk_images" "fltk_png" "fltk_jpeg" "fltk_z"]]
43+
(array/push results (string (lib-prefix) item (lib-suffix))))
44+
results))
45+
2946
(def- cfltk-build-dir (string/format "_build/cfltk-build"))
47+
3048
(def- fltk-flags @["-DFLTK_USE_SYSTEM_LIBJPEG=OFF"
3149
"-DFLTK_USE_SYSTEM_LIBPNG=OFF"
3250
"-DFLTK_USE_SYSTEM_ZLIB=OFF"
3351
"-DFLTK_BUILD_FORMS=ON"])
34-
(def- cfltk-flags @["-B" cfltk-build-dir "-S" "cfltk" "-G" "Ninja" "-DCMAKE_BUILD_TYPE=Release" "-DCFLTK_USE_OPENGL=ON" "-DFLTK_BUILD_EXAMPLES=OFF"])
52+
(def- cfltk-flags @["-B" cfltk-build-dir "-S" "cfltk" "-G" "Ninja"
53+
"-DCMAKE_BUILD_TYPE=Release" "-DCFLTK_USE_OPENGL=ON" "-DFLTK_BUILD_EXAMPLES=OFF"])
3554

3655
(when (= (os/which) :linux)
3756
(array/push fltk-flags "-DCFLTK_USE_FPIC=ON")
@@ -40,13 +59,30 @@
4059
(def- cmake-flags (array/concat cfltk-flags fltk-flags))
4160
(def- cmake-build-flags @["--build" cfltk-build-dir "--parallel" "--config" "Release"])
4261

62+
(defn- copy-static-libs []
63+
(sh/copy (string/format "%s/%s" cfltk-build-dir cfltk-lib) (string/format "./jfltk/%s" cfltk-lib))
64+
(loop [fname :in fltk-libs]
65+
(let [fullname (string/format "%s/%s" fltk-build-dir fname)
66+
outname (string/format "./jfltk/%s" fname)]
67+
(when (sh/exists? fullname)
68+
(sh/copy fullname outname )))))
69+
70+
(defn- clean-static-libs []
71+
(loop [fname :in (sh/list-all-files "jfltk")]
72+
(when (string/has-suffix? (lib-suffix) fname)
73+
(sh/rm fname))))
74+
4375
(defn build-cfltk []
4476
(unless (and (sh/exists? "cfltk") (sh/exists? "cfltk/fltk"))
4577
(update-submodules))
78+
# remove old static libs, might be stale
79+
(clean-static-libs)
4680
(unless (sh/exists? (string/format "%s/%s" cfltk-build-dir cfltk-lib))
4781
(unless (sh/exists? (string/format "%s/%s" cfltk-build-dir "build.ninja"))
4882
(cmake ;cmake-flags))
49-
(cmake ;cmake-build-flags)))
83+
(do (cmake ;cmake-build-flags)))
84+
# copy static libs, assuming they have been built
85+
(copy-static-libs))
5086

5187
(set-command "cmake" *cmakepath*)
5288
(set-command "ninja" *ninjapath*)
@@ -63,28 +99,53 @@
6399

64100
(def- fltk-config (path/join (os/cwd) (string/format "%s/fltk/fltk-config" cfltk-build-dir)))
65101

66-
(def- windows-fltk-libs
102+
(def- windows-fltk-link-libs
67103
@[cfltk-lib-path "cfltk2.lib" fltk-lib-path
68104
"fltk.lib" "fltk_forms.lib" "fltk_gl.lib" "fltk_images.lib" "fltk_png.lib" "fltk_jpeg.lib" "fltk_z.lib"
69105
"glu32.lib" "opengl32.lib" "ole32.lib" "uuid.lib" "comctl32.lib" "gdi32.lib" "gdiplus.lib"
70106
"user32.lib" "shell32.lib" "comdlg32.lib" "ws2_32.lib" "winspool.lib"])
71107

72-
(defn fltk-libs []
108+
(defn fltk-link-libs []
73109
(if (sh/exists? fltk-config)
74110
(if (not (= (os/which) :windows))
75111
(do
76112
(def out (sh/exec-slurp fltk-config "--use-gl" "--use-images" "--use-glut" "--use-forms" "--use-cairo" "--ldflags"))
77113
(string/split " " out))
78114
@[])
79115
(do (build-cfltk)
80-
(fltk-libs))))
116+
(fltk-link-libs))))
117+
118+
(defn gen-lflags []
119+
(if (= (os/which) :windows)
120+
windows-fltk-link-libs
121+
(array/join @[cfltk-lib-path "-lcfltk2"] (fltk-link-libs))))
81122

82123
(defdyn *lflags* "Linker flags")
83-
(setdyn *lflags* (if (= (os/which) :windows)
84-
windows-fltk-libs
85-
(array/join @[cfltk-lib-path "-lcfltk2"] (fltk-libs))))
124+
(setdyn *lflags* (gen-lflags))
125+
126+
(task "pre-build" ["build-cfltk" "create-flags"])
86127

87128
(dofile "project.janet" :env (jpm-shim-env))
88129

89-
(task "pre-build" ["build-cfltk"])
90-
(task "build-cfltk" [] (build-cfltk))
130+
(task "build-cfltk" []
131+
(build-cfltk))
132+
133+
# this creates a file in jfltk that can be used to get to the
134+
# platform specific linker flags to compile Janet+FLTK apps into
135+
# full executables. Have a look in "examples/" for an example
136+
(task "create-flags" []
137+
(def flags (gen-lflags))
138+
(var real-flags @[])
139+
(loop [item :in flags]
140+
(if (and (string/has-prefix? "-L" item) (not (string/find "/usr" item)))
141+
(array/push real-flags '(get-libdir))
142+
(array/push real-flags item)))
143+
(def fname (string (os/cwd) "/jfltk/flags.janet"))
144+
(def ofs (file/open fname :w))
145+
(file/write ofs "(import spork/path)\n")
146+
(file/write ofs "(defn get-libdir [] (string \"-L\" (path/abspath (path/dirname (dyn *current-file*)))))\n")
147+
(file/write ofs (string/format "(def lflags %j)\n" real-flags))
148+
(file/write ofs "(defn print-lflags [] (pp lflags))\n")
149+
(file/close ofs))
150+
151+

examples/bundle/info.jdn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@{:version "0.1.0" :jpm-dependencies @["spork"] :name "fltk-janet-examples" :description "Janet wrapper examples for FLTK" :author "Bob Tolbert" :dependencies @["spork"]}

examples/bundle/init.janet

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
(if (dyn :install-time-syspath)
2+
(use @install-time-syspath/spork/declare-cc)
3+
(use spork/declare-cc))
4+
5+
(dofile "project.janet" :env (jpm-shim-env))

examples/handler.janet

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
1)
88
true 0))
99

10+
(defn main [&]
11+
(def w (fl-window-new 100 100 400 300 "handler"))
12+
(def f (fl-box-new 0 0 400 200 ""))
13+
(def b (fl-button-new 160 210 80 40 "click me"))
14+
(fl-window-end w)
15+
(fl-window-show w)
1016

11-
(def w (fl-window-new 100 100 400 300 "handler"))
12-
(def f (fl-box-new 0 0 400 200 ""))
13-
(def b (fl-button-new 160 210 80 40 "click me"))
14-
(fl-window-end w)
15-
(fl-window-show w)
17+
(def cb (make-custom-callback clicker f))
1618

17-
(def cb (make-custom-callback clicker f))
18-
19-
(fl-button-handle b cb)
20-
(fl-run)
19+
(fl-button-handle b cb)
20+
(fl-run))

examples/native-filechooser.janet

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66

77
(var *main-window* nil)
88
(var *console* nil)
9-
10-
(def- *fc* (fl-native-file-chooser-new Fl-NativeFileChooserType-BrowseFile))
9+
(var *fc* nil)
1110

1211
(var- default-filename nil)
1312
(defn- untitled-default []
@@ -111,6 +110,7 @@
111110
(fl-double-window-resizable *main-window* *main-window*)
112111
(fl-double-window-show *main-window*)
113112

113+
(set *fc* (fl-native-file-chooser-new Fl-NativeFileChooserType-BrowseFile))
114114
(fl-native-file-chooser-set-filter *fc* "Text\t*.txt\n")
115115
(fl-native-file-chooser-set-preset-file *fc* (untitled-default))
116116

examples/project.janet

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
(import jfltk)
2+
3+
(import spork/sh)
4+
(import spork/path)
5+
6+
(setdyn :verbose true)
7+
8+
(declare-project
9+
:name "fltk-janet-examples"
10+
:description ```Janet wrapper examples for FLTK```
11+
:author ```Bob Tolbert```
12+
:dependencies @["spork"]
13+
:version "0.1.0")
14+
15+
(def build-type (string (dyn *build-type* :release)))
16+
17+
(setdyn *build-type* :release)
18+
19+
# get lflags from jfltk module?
20+
(def- lflags jfltk/lflags)
21+
22+
(def examples @["flex.janet"])
23+
24+
(def- examples
25+
(do
26+
(var files @[])
27+
(loop [fname :in (os/dir ".")]
28+
(when (and (string/has-suffix? ".janet" fname) (not (= fname "project.janet")))
29+
(array/push files fname)))
30+
files))
31+
32+
(setdyn :build-dir "_build")
33+
34+
(loop [fname :in examples]
35+
(declare-executable
36+
:name (string/replace ".janet" "" fname)
37+
:entry fname
38+
:ldflags lflags
39+
))

jfltk/init.janet

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
(import jfltk/constants :export true :prefix "")
2-
(import jfltk/widgets :export true :prefix "")
2+
(import jfltk/widgets :export true :prefix "")
3+
(import jfltk/flags :export true :prefix "")

test/basic.janet

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
(use ../fltk-janet/init)
1+
#(use ../fltk-janet/init)
22

3-
(assert (= (hello) "Hello!"))
3+
#(assert (= (hello) "Hello!"))

0 commit comments

Comments
 (0)