Graphics library for Mercury, including OpenGL bindings, TGA image reading, and X11, Win32, and SDL2 windowing and input.
リビジョン | c3df886263a6a4a2f4f65cb2047e9588e0b08739 (tree) |
---|---|
日時 | 2022-06-03 00:16:13 |
作者 | AlaskanEmily <emily@alas...> |
コミッター | AlaskanEmily |
Some cleanups in Unix makefile
@@ -1,17 +1,21 @@ | ||
1 | 1 | # Unix makefile to build Saffron. |
2 | 2 | # Needs GNU Make or BSD Make. |
3 | 3 | |
4 | -CC?=gcc | |
5 | 4 | CFLAGS?=-O1 -g |
6 | 5 | MMC?=mmc |
7 | 6 | SO?=so |
8 | -MMC_OPTS?=--use-grade-subdirs --intermodule-optimization -O 7 --output-compile-error-lines 1024 --c-include-dir /usr/X11R6/include --c-include-dir /usr/local/include -L /usr/X11R6/lib -L /usr/local/lib --cflag -g --ld-flag -g | |
9 | -GRADE_OPT=`if test ! -z '$(GRADE)' ; then echo ' --grade=$(GRADE)' ; fi` | |
10 | -PARALLEL_OPT=`if test ! -z '$(PARALLEL)' ; then echo ' -j $(PARALLEL)' ; fi` | |
7 | +ROOT!=pwd | |
8 | +MMC_EXTRA_FLAGS1!=uname | egrep -v 'BSD$$' >/dev/null || echo ' --c-include-dir /usr/X11R6/include -L /usr/X11R6/include' | |
9 | +MMC_EXTRA_FLAGS2!=uname | fgrep Linux >/dev/null || echo ' --c-include-dir /usr/local/include -L /usr/local/include' | |
10 | +MMC_OPTS?=--use-grade-subdirs --intermodule-optimization -O 7 --output-compile-error-lines 1024 $(MMC_EXTRA_FLAGS1) $(MMC_EXTRA_FLAGS2) --cflag -g --ld-flag -g | |
11 | +GRADE_OPT!=test -z '$(GRADE)' || echo ' --grade=$(GRADE)' | |
12 | +PARALLEL_OPT!=test -z '$(PARALLEL)' || echo ' -j $(PARALLEL)' | |
11 | 13 | SAFFRON_MMC_OPTS=$(MMC_OPTS) $(GRADE_OPT) $(PARALLEL_OPT) |
12 | 14 | SHARED_MMC_FLAGS=--linkage shared --lib-linkage shared |
13 | 15 | STATIC_MMC_FLAGS=--linkage static --lib-linkage static |
14 | 16 | AWK?=awk |
17 | +CC!=$(MMC) $(SAFFRON_MMC_OPTS) --output-cc | |
18 | +CFLAGS!=$(MMC) $(SAFFRON_MMC_OPTS) --output-cflags | |
15 | 19 | |
16 | 20 | ALL=build_saffron |
17 | 21 | all: $(ALL) |
@@ -22,24 +26,24 @@ utils: $(UTILS) | ||
22 | 26 | DEMOS=build_saffron_cube_demo |
23 | 27 | demos: $(DEMOS) |
24 | 28 | |
25 | -MMATH_LINK_FLAGS=--search-lib-files-dir "$$ROOT/mmath" --init-file "$$ROOT/mmath/mmath.init" | |
29 | +MMATH_LINK_FLAGS=--search-lib-files-dir '$(ROOT)/mmath' --init-file '$(ROOT)/mmath/mmath.init' | |
26 | 30 | # Used for utils, tests, and demos. That's why it requires the ROOT variable to be set in shell. |
27 | -SAFFRON_LINK_FLAGS=--search-lib-files-dir "$$ROOT" --init-file "$$ROOT/saffron.init" | |
28 | -GLOW_INCLUDE_FLAGS=--c-include-dir "$$ROOT/glow" | |
31 | +SAFFRON_LINK_FLAGS=--search-lib-files-dir '$(ROOT)' --init-file '$(ROOT)/saffron.init' | |
32 | +GLOW_INCLUDE_FLAGS=--c-include-dir '$(ROOT)/glow' | |
29 | 33 | # Transunit, used for testing. |
30 | -TRANSUNIT_LINK_FLAGS=--search-lib-files-dir "$$ROOT/test/transunit" --init-file "$$ROOT/test/transunit/transunit.init" --link-object "$$ROOT/test/transunit/libtransunit.a" | |
34 | +TRANSUNIT_LINK_FLAGS=--search-lib-files-dir '$(ROOT)/test/transunit' --init-file '$(ROOT)/test/transunit/transunit.init' --link-object '$(ROOT)/test/transunit/libtransunit.a' | |
31 | 35 | # TGA, used for some demos and has its own tests. |
32 | -SAFFRON_TGA_LINK_FLAGS=--search-lib-files-dir "$$ROOT/util/tga" --init-file "$$ROOT/util/tga/saffron_tga.init" | |
33 | -SAFFRON_GLOW_LINK_FLAGS=--search-lib-files-dir "$$ROOT/util/glow" --init-file "$$ROOT/util/glow/saffron_glow.init" $(GLOW_INCLUDE_FLAGS) | |
34 | -SAFFRON_WINDOW_LINK_FLAGS=--search-lib-files-dir "$$ROOT/util/window" --init-file "$$ROOT/util/window/saffron_window.init" | |
36 | +SAFFRON_TGA_LINK_FLAGS=--search-lib-files-dir '$(ROOT)/util/tga' --init-file '$(ROOT)/util/tga/saffron_tga.init' | |
37 | +SAFFRON_GLOW_LINK_FLAGS=--search-lib-files-dir '$(ROOT)/util/glow' --init-file '$(ROOT)/util/glow/saffron_glow.init' $(GLOW_INCLUDE_FLAGS) | |
38 | +SAFFRON_WINDOW_LINK_FLAGS=--search-lib-files-dir '$(ROOT)/util/window' --init-file '$(ROOT)/util/window/saffron_window.init' | |
35 | 39 | |
36 | 40 | # Generated source. |
37 | 41 | saffron.gl.buffer.inc: saffron.gl_gen.awk saffron.gl.buffer.csv |
38 | - $(AWK) -F, -f saffron.gl_gen.awk < saffron.gl.buffer.csv > '$@' | |
42 | + $(AWK) -F, -f saffron.gl_gen.awk saffron.gl.buffer.csv > '$@' | |
39 | 43 | @touch saffron.gl.buffer.m # Force the Mercury compiler to rebuild this... |
40 | 44 | |
41 | 45 | saffron.gl.shader.inc: saffron.gl_gen.awk saffron.gl.shader.csv |
42 | - $(AWK) -F, -f saffron.gl_gen.awk < saffron.gl.shader.csv > '$@' | |
46 | + $(AWK) -F, -f saffron.gl_gen.awk saffron.gl.shader.csv > '$@' | |
43 | 47 | @touch saffron.gl.shader.m # Force the Mercury compiler to rebuild this... |
44 | 48 | |
45 | 49 | # Primary libraries. |
@@ -48,7 +52,7 @@ saffron.gl.shader.inc: saffron.gl_gen.awk saffron.gl.shader.csv | ||
48 | 52 | libsaffron.$(SO): build_saffron |
49 | 53 | build_saffron: build_mmath saffron.gl.buffer.inc saffron.gl.shader.inc |
50 | 54 | ROOT=`pwd` && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) --make libsaffron $(STATIC_MMC_FLAGS) |
51 | - ROOT=`pwd` && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) --make libsaffron $(SHARED_MMC_FLAGS) -L "$$ROOT/mmath" -lmmath -lGL -lX11 | |
55 | + ROOT=`pwd` && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) --make libsaffron $(SHARED_MMC_FLAGS) -L '$(ROOT)/mmath' -lmmath -lGL -lX11 | |
52 | 56 | install libsaffron.$(SO) demo/ |
53 | 57 | install libsaffron.$(SO) test/ |
54 | 58 |
@@ -59,8 +63,8 @@ build_mmath: | ||
59 | 63 | install mmath/libmmath.$(SO) demo/ |
60 | 64 | install mmath/libmmath.$(SO) test/ |
61 | 65 | |
62 | -CLEAN_LIB=for X in "$$ROOT/$$DIR"/*.err "$$ROOT/$$DIR"/*.mh "$$ROOT/$$DIR"/*.init "$$ROOT/$$DIR"/*.a "$$ROOT/$$DIR"/*.so "$$ROOT/$$DIR"/*.dylib "$$ROOT/$$DIR"/*.lib "$$ROOT/$$DIR"/*.dll ; do if test -f "$$X" || test -h "$$X" ; then rm "$$X" ; fi ; done | |
63 | -CLEAN_MERCURY=cd "$$ROOT/$$DIR" && $(MMC) $(SAFFRON_MMC_OPTS) $(SAFFRON_LINK_FLAGS) --make "$$TARGET".clean ; $(CLEAN_LIB) | |
66 | +CLEAN_LIB=for X in "$(ROOT)/$$DIR"/*.err "$(ROOT)/$$DIR"/*.mh "$(ROOT)/$$DIR"/*.init "$(ROOT)/$$DIR"/*.a "$(ROOT)/$$DIR"/*.so "$(ROOT)/$$DIR"/*.dylib "$(ROOT)/$$DIR"/*.lib "$(ROOT)/$$DIR"/*.dll ; do if test -f "$$X" || test -h "$$X" ; then rm "$$X" ; fi ; done | |
67 | +CLEAN_MERCURY=cd "$(ROOT)/$$DIR" && $(MMC) $(SAFFRON_MMC_OPTS) $(SAFFRON_LINK_FLAGS) --make "$$TARGET".clean ; $(CLEAN_LIB) | |
64 | 68 | |
65 | 69 | #Utils |
66 | 70 | glow/libglow.$(SO): build_glow |
@@ -71,70 +75,71 @@ build_glow: | ||
71 | 75 | |
72 | 76 | util/glow/libsaffron_glow.$(SO): build_saffron_glow |
73 | 77 | build_saffron_glow: build_glow build_saffron_window build_saffron |
74 | - ROOT=`pwd` && cd util/glow && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) $(SAFFRON_WINDOW_LINK_FLAGS) $(GLOW_INCLUDE_FLAGS) --make libsaffron_glow $(STATIC_MMC_FLAGS) | |
75 | - ROOT=`pwd` && cd util/glow && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) $(SAFFRON_WINDOW_LINK_FLAGS) $(GLOW_INCLUDE_FLAGS) --make libsaffron_glow $(SHARED_MMC_FLAGS) -L "$$ROOT/util/window" -lsaffron_window -L "$$ROOT" -lsaffron -L "$$ROOT/glow" -lglow -l GL -l X11 | |
78 | + cd util/glow && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) $(SAFFRON_WINDOW_LINK_FLAGS) $(GLOW_INCLUDE_FLAGS) --make libsaffron_glow $(STATIC_MMC_FLAGS) | |
79 | + cd util/glow && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) $(SAFFRON_WINDOW_LINK_FLAGS) $(GLOW_INCLUDE_FLAGS) --make libsaffron_glow $(SHARED_MMC_FLAGS) -L '$(ROOT)/util/window' -lsaffron_window -L '$(ROOT)' -lsaffron -L '$(ROOT)/glow' -lglow -l GL -l X11 | |
76 | 80 | install util/glow/libsaffron_glow.$(SO) demo/ |
77 | 81 | install util/glow/libsaffron_glow.$(SO) test/ |
78 | 82 | |
79 | 83 | util/window/libsaffron_window.$(SO): build_saffron_window |
80 | 84 | build_saffron_window: |
81 | - ROOT=`pwd` && cd util/window && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) --make libsaffron_window $(STATIC_MMC_FLAGS) | |
82 | - ROOT=`pwd` && cd util/window && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) --make libsaffron_window $(SHARED_MMC_FLAGS) | |
85 | + cd util/window && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) --make libsaffron_window $(STATIC_MMC_FLAGS) | |
86 | + cd util/window && $(MMC) $(SAFFRON_MMC_OPTS) $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) --make libsaffron_window $(SHARED_MMC_FLAGS) | |
83 | 87 | install util/window/libsaffron_window.$(SO) demo/ |
84 | 88 | install util/window/libsaffron_window.$(SO) test/ |
85 | 89 | |
86 | 90 | build_saffron_tga: |
87 | - ROOT=`pwd` && cd util/tga && $(MMC) $(SAFFRON_MMC_OPTS) --make libsaffron_tga $(STATIC_MMC_FLAGS) | |
91 | + cd util/tga && $(MMC) $(SAFFRON_MMC_OPTS) --make libsaffron_tga $(STATIC_MMC_FLAGS) | |
88 | 92 | |
89 | 93 | # Demos |
90 | 94 | |
91 | 95 | # Shared resources between demos and test. |
92 | 96 | # All of these are copied from the test directory to the demo directory. |
93 | 97 | demo/res/crate.tga: test/res/tga/crate.tga |
94 | - cp "$<" demo/res/ | |
98 | + cp '$<' demo/res/ | |
95 | 99 | |
96 | 100 | demo/res/ctc24.tga: test/res/tga/ctc24.tga |
97 | - cp "$<" demo/res/ | |
101 | + cp '$<' demo/res/ | |
98 | 102 | |
99 | 103 | build_saffron_cube_demo: demo/res/crate.tga build_saffron build_saffron_tga build_saffron_window build_saffron_glow |
100 | - ROOT=`pwd` && cd demo && $(MMC) $(SAFFRON_MMC_OPTS) -E --make saffron_cube_demo $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) $(SAFFRON_GLOW_LINK_FLAGS) $(SAFFRON_WINDOW_LINK_FLAGS) $(SAFFRON_TGA_LINK_FLAGS) -L "$$ROOT/glow" -lglow -lX11 -lmmath -lsaffron -lsaffron_window -lsaffron_glow --link-object "$$ROOT/util/tga/libsaffron_tga.a" -lGL | |
104 | + cd demo && $(MMC) $(SAFFRON_MMC_OPTS) -E --make saffron_cube_demo $(MMATH_LINK_FLAGS) $(SAFFRON_LINK_FLAGS) $(SAFFRON_GLOW_LINK_FLAGS) $(SAFFRON_WINDOW_LINK_FLAGS) $(SAFFRON_TGA_LINK_FLAGS) -L '$(ROOT)/glow' -lglow -lX11 -lmmath -lsaffron -lsaffron_window -lsaffron_glow --link-object '$(ROOT)/util/tga/libsaffron_tga.a' -lGL | |
101 | 105 | |
102 | 106 | # Testing |
103 | 107 | build_transunit: |
104 | 108 | cd test/transunit && $(MMC) $(SAFFRON_MMC_OPTS) --make libtransunit $(STATIC_MMC_FLAGS) |
105 | 109 | |
106 | 110 | test_saffron_tga: build_transunit build_saffron_tga |
107 | - ROOT=`pwd` && cd test && $(MMC) $(SAFFRON_MMC_OPTS) --make saffron_tga_test $(TRANSUNIT_LINK_FLAGS) $(SAFFRON_TGA_LINK_FLAGS) | |
108 | - ROOT=`pwd` && cd test/res/tga && "$$ROOT/test/saffron_tga_test" | |
111 | + cd test && $(MMC) $(SAFFRON_MMC_OPTS) --make saffron_tga_test $(TRANSUNIT_LINK_FLAGS) $(SAFFRON_TGA_LINK_FLAGS) | |
112 | + cd test/res/tga && "$(ROOT)/test/saffron_tga_test" | |
109 | 113 | |
110 | 114 | # Clean |
111 | 115 | clean_mmath: |
112 | - ROOT=`pwd` ; DIR=mmath ; TARGET=mmath ; $(CLEAN_MERCURY) | |
116 | + DIR=mmath ; TARGET=mmath ; $(CLEAN_MERCURY) | |
113 | 117 | |
114 | 118 | clean_saffron: |
115 | - ROOT=`pwd` ; DIR=. ; TARGET=saffron ; $(CLEAN_MERCURY) | |
119 | + DIR='$(ROOT)' ; TARGET=saffron ; $(CLEAN_MERCURY) | |
116 | 120 | |
117 | 121 | clean_glow: |
118 | - ROOT=`pwd` ; DIR=glow ; $(CLEAN_LIB) | |
122 | + DIR=glow ; $(CLEAN_LIB) | |
123 | + rm -f glow/*.o glow/*.os | |
119 | 124 | |
120 | 125 | clean_saffron_glow: |
121 | - ROOT=`pwd` ; DIR=util/glow ; TARGET=saffron_glow ; $(CLEAN_MERCURY) | |
126 | + DIR=util/glow ; TARGET=saffron_glow ; $(CLEAN_MERCURY) | |
122 | 127 | |
123 | 128 | clean_saffron_tga: |
124 | - ROOT=`pwd` ; DIR=util/tga ; TARGET=saffron_tga ; $(CLEAN_MERCURY) | |
129 | + DIR=util/tga ; TARGET=saffron_tga ; $(CLEAN_MERCURY) | |
125 | 130 | |
126 | 131 | clean_saffron_window: |
127 | - ROOT=`pwd` ; DIR=util/window ; TARGET=saffron_wingow ; $(CLEAN_MERCURY) | |
132 | + DIR=util/window ; TARGET=saffron_wingow ; $(CLEAN_MERCURY) | |
128 | 133 | |
129 | 134 | clean_test_saffron_tga: |
130 | - ROOT=`pwd` ; DIR=test ; TARGET=test_saffron_tga ; $(CLEAN_MERCURY) | |
135 | + DIR=test ; TARGET=test_saffron_tga ; $(CLEAN_MERCURY) | |
131 | 136 | |
132 | 137 | clean_saffron_cube_demo: |
133 | - ROOT=`pwd` ; DIR=demo ; TARGET=saffron_cube_demo ; $(CLEAN_MERCURY) | |
138 | + DIR=demo ; TARGET=saffron_cube_demo ; $(CLEAN_MERCURY) | |
134 | 139 | |
135 | -CLEAN=clean_mmath clean_saffron clean_saffron_glow clean_saffron_window clean_saffron_tga clean_glow clean_test_saffron_tga clean_saffron_cube_demo | |
140 | +CLEAN=clean_mmath clean_saffron clean_glow clean_saffron_glow clean_saffron_window clean_saffron_tga clean_glow clean_test_saffron_tga clean_saffron_cube_demo | |
136 | 141 | clean: $(CLEAN) |
137 | - rm -f demo/lib*.$(SO) # Remove the demo libraries we copied. | |
142 | + rm -f demo/res/crate.tga demo/res/ctc24.tga demo/lib*.$(SO) # Remove the demo libraries we copied. | |
138 | 143 | |
139 | 144 | .IGNORE: $(CLEAN) |
140 | 145 | .PHONY: all demos test utils $(ALL) build_mmath $(UTILS) build_saffron_tga build_saffron_window build_glow build_saffron_glow build_saffron_cube_demo build_test_saffron_tga $(DEMOS) $(CLEAN) |