Skip to content

Commit 2902885

Browse files
committed
[init]
1 parent 2189c1c commit 2902885

File tree

238 files changed

+137692
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

238 files changed

+137692
-0
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules
2+
package-lock.json
3+
.vscode
4+
imgui.ini
5+
**/*.o

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "imgui"]
2+
path = imgui
3+
url = https://github.com/ocornut/imgui.git

LICENSE.txt

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
The MIT License (MIT)
2+
3+
Copyright (c) 2018 Flyover Games, LLC
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

Makefile

+155
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# grep -o "STATIC(\"\w*\"" imgui_demo.ts | sort | uniq -d
2+
3+
all: start-example-node
4+
5+
start: start-example-html
6+
7+
build: build-bind-imgui build-imgui build-example
8+
9+
clean: clean-bind-imgui clean-imgui clean-example
10+
11+
# bind-imgui
12+
13+
IMGUI_PATH = imgui
14+
IMGUI_SOURCE_HXX += $(IMGUI_PATH)/imconfig.h
15+
IMGUI_SOURCE_HXX += $(IMGUI_PATH)/imgui.h
16+
IMGUI_SOURCE_HXX += $(IMGUI_PATH)/imgui_internal.h
17+
IMGUI_SOURCE_HXX += $(IMGUI_PATH)/imstb_rectpack.h
18+
IMGUI_SOURCE_HXX += $(IMGUI_PATH)/imstb_textedit.h
19+
IMGUI_SOURCE_HXX += $(IMGUI_PATH)/imstb_truetype.h
20+
IMGUI_SOURCE_CXX += $(IMGUI_PATH)/imgui.cpp
21+
IMGUI_SOURCE_CXX += $(IMGUI_PATH)/imgui_demo.cpp
22+
IMGUI_SOURCE_CXX += $(IMGUI_PATH)/imgui_draw.cpp
23+
IMGUI_SOURCE_CXX += $(IMGUI_PATH)/imgui_tables.cpp
24+
IMGUI_SOURCE_CXX += $(IMGUI_PATH)/imgui_widgets.cpp
25+
IMGUI_OUTPUT_O = $(IMGUI_SOURCE_CXX:%.cpp=build/%.o)
26+
27+
EMSCRIPTEN_SOURCE_D_TS = src/emscripten.d.ts
28+
EMSCRIPTEN_OUTPUT_D_TS = build/emscripten.d.ts
29+
30+
BIND_IMGUI_SOURCE_D_TS = src/bind-imgui.d.ts
31+
BIND_IMGUI_OUTPUT_D_TS = build/bind-imgui.d.ts
32+
BIND_IMGUI_SOURCE_CXX = src/bind-imgui.cpp
33+
BIND_IMGUI_OUTPUT_O = build/bind-imgui.o
34+
BIND_IMGUI_OUTPUT_JS = build/bind-imgui.js
35+
36+
# debug flags
37+
# FLAGS += -g4
38+
# FLAGS += -O0
39+
# FLAGS += --source-map-base http://127.0.0.1:8080/
40+
# FLAGS += -s ASSERTIONS=1
41+
# FLAGS += -s SAFE_HEAP=1
42+
43+
FLAGS += -Os
44+
45+
FLAGS += -D "IM_ASSERT(EXPR)=((void)(EXPR))"
46+
47+
FLAGS += -D IMGUI_DISABLE_OBSOLETE_FUNCTIONS
48+
FLAGS += -D IMGUI_DISABLE_DEMO_WINDOWS
49+
50+
BIND_FLAGS += -s NO_FILESYSTEM=1
51+
# BIND_FLAGS += -s WASM=1
52+
BIND_FLAGS += -s MODULARIZE=1
53+
# BIND_FLAGS += -s EXPORT_NAME=\"ImGui\"
54+
BIND_FLAGS += -s EXPORT_BINDINGS=1
55+
# BIND_FLAGS += -s EXPORT_ALL=1
56+
# BIND_FLAGS += -s MEM_INIT_METHOD=0
57+
# BIND_FLAGS += --memory-init-file 0
58+
BIND_FLAGS += -s SINGLE_FILE=1
59+
# BIND_FLAGS += -s BINARYEN_ASYNC_COMPILATION=0
60+
# BIND_FLAGS += -s BINARYEN_METHOD=\"native-wasm,asmjs\"
61+
# BIND_FLAGS += -s BINARYEN_METHOD=\"interpret-asm2wasm,asmjs\"
62+
# BIND_FLAGS += -s BINARYEN_TRAP_MODE=\"clamp\"
63+
# BIND_FLAGS += -s TOTAL_MEMORY=4194304
64+
# BIND_FLAGS += -s ALLOW_MEMORY_GROWTH=1
65+
BIND_FLAGS += -s EMBIND_STD_STRING_IS_UTF8=1
66+
67+
build-bind-imgui: build/emscripten.d.ts build/bind-imgui.d.ts build/bind-imgui.js
68+
69+
clean-bind-imgui:
70+
rm -f $(IMGUI_OUTPUT_O)
71+
rm -f $(BIND_IMGUI_OUTPUT_O)
72+
rm -f build/bind-imgui.js build/bind-imgui.js.*
73+
rm -f build/bind-imgui.wasm build/bind-imgui.wasm.*
74+
75+
build/%.o: %.cpp $(IMGUI_SOURCE_HXX)
76+
mkdir -p ${@D}
77+
emcc $(FLAGS) -I $(IMGUI_PATH) -c $< -o $@
78+
79+
build/emscripten.d.ts: src/emscripten.d.ts
80+
mkdir -p ${@D}
81+
cp -fv $< $@
82+
83+
build/bind-imgui.d.ts: src/bind-imgui.d.ts
84+
mkdir -p ${@D}
85+
cp -fv $< $@
86+
87+
build/bind-imgui.o: src/bind-imgui.cpp $(IMGUI_SOURCE_HXX)
88+
mkdir -p ${@D}
89+
emcc $(FLAGS) -I $(IMGUI_PATH) -c $< -o $@
90+
91+
build/bind-imgui.js: $(IMGUI_OUTPUT_O) $(BIND_IMGUI_OUTPUT_O)
92+
mkdir -p ${@D}
93+
emcc $(FLAGS) $(BIND_FLAGS) -I $(IMGUI_PATH) --bind $^ -o $@
94+
95+
# imgui
96+
97+
build-imgui:
98+
npm run build-imgui
99+
100+
clean-imgui:
101+
npm run clean-imgui
102+
103+
# example
104+
105+
build-example:
106+
npm run build-example
107+
108+
clean-example:
109+
npm run clean-example
110+
111+
start-example: start-example-node
112+
113+
start-example-node:
114+
npm run start-example-node
115+
116+
start-example-html:
117+
npm run start-example-html
118+
119+
# native-example
120+
121+
IMGUI_NATIVE_EXAMPLE_PATH = $(IMGUI_PATH)/examples/example_sdl_opengl2
122+
IMGUI_NATIVE_EXAMPLE_SOURCE_CXX += $(IMGUI_NATIVE_EXAMPLE_PATH)/main.cpp
123+
IMGUI_NATIVE_EXAMPLE_SOURCE_CXX += $(IMGUI_PATH)/backends/imgui_impl_sdl.cpp
124+
IMGUI_NATIVE_EXAMPLE_SOURCE_CXX += $(IMGUI_PATH)/backends/imgui_impl_opengl2.cpp
125+
126+
IMGUI_NATIVE_EXAMPLE_BUILD = echo $$(uname)
127+
IMGUI_NATIVE_EXAMPLE_CLEAN = echo $$(uname)
128+
IMGUI_NATIVE_EXAMPLE_START = echo $$(uname)
129+
ifeq ($(shell uname),Linux)
130+
IMGUI_NATIVE_EXAMPLE_OUTPUT = $(IMGUI_NATIVE_EXAMPLE_PATH)/example-linux
131+
IMGUI_NATIVE_EXAMPLE_BUILD = c++ `sdl2-config --cflags` -I $(IMGUI_NATIVE_EXAMPLE_PATH) -I $(IMGUI_PATH)/backends -I $(IMGUI_PATH) -D HAVE_MALLINFO $(IMGUI_NATIVE_EXAMPLE_SOURCE_CXX) $(IMGUI_SOURCE_CXX) `sdl2-config --libs` -lGL -o $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
132+
IMGUI_NATIVE_EXAMPLE_CLEAN = rm -f $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
133+
IMGUI_NATIVE_EXAMPLE_START = $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
134+
endif
135+
ifeq ($(shell uname),Darwin)
136+
IMGUI_NATIVE_EXAMPLE_OUTPUT = $(IMGUI_NATIVE_EXAMPLE_PATH)/example-macos
137+
IMGUI_NATIVE_EXAMPLE_BUILD = c++ `sdl2-config --cflags` -I $(IMGUI_NATIVE_EXAMPLE_PATH) -I $(IMGUI_PATH)/backends -I $(IMGUI_PATH) $(IMGUI_NATIVE_EXAMPLE_SOURCE_CXX) $(IMGUI_SOURCE_CXX) `sdl2-config --libs` -framework OpenGl -o $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
138+
IMGUI_NATIVE_EXAMPLE_CLEAN = rm -f $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
139+
IMGUI_NATIVE_EXAMPLE_START = $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
140+
endif
141+
ifeq ($(OS),Windows_NT)
142+
IMGUI_NATIVE_EXAMPLE_OUTPUT = $(IMGUI_NATIVE_EXAMPLE_PATH)/example-windows.exe
143+
IMGUI_NATIVE_EXAMPLE_BUILD = set SDL2DIR=C:\SDL2 && cl /Zi /MD /I $(IMGUI_NATIVE_EXAMPLE_PATH) /I $(IMGUI_PATH)/backends /I $(IMGUI_PATH) /I %SDL2DIR%\include $(IMGUI_NATIVE_EXAMPLE_SOURCE_CXX) $(IMGUI_SOURCE_CXX) /link /LIBPATH:%SDL2DIR%\lib SDL2.lib SDL2main.lib opengl32.lib /subsystem:console /Fe $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
144+
IMGUI_NATIVE_EXAMPLE_CLEAN = rm -f $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
145+
IMGUI_NATIVE_EXAMPLE_START = $(IMGUI_NATIVE_EXAMPLE_OUTPUT)
146+
endif
147+
148+
build-native-example:
149+
$(IMGUI_NATIVE_EXAMPLE_BUILD)
150+
151+
clean-native-example:
152+
$(IMGUI_NATIVE_EXAMPLE_CLEAN)
153+
154+
start-native-example:
155+
$(IMGUI_NATIVE_EXAMPLE_START)

0 commit comments

Comments
 (0)