@@ -17,36 +17,54 @@ PRIV_DIR = $(MIX_APP_PATH)/priv
17
17
ifeq ($(NX_IREE_PREFER_PRECOMPILED ) , true)
18
18
all : nx_iree
19
19
else
20
- all : install_runtime nx_iree
20
+ all : clone_iree install_runtime nx_iree
21
21
endif
22
22
23
23
.PHONY : clone_iree
24
24
clone_iree : $(NX_IREE_SOURCE_DIR )
25
+ @echo " Cloned IREE into $( NX_IREE_SOURCE_DIR) "
25
26
26
- .PHONY : iree_source_dir
27
- iree_source_dir :
27
+ $(NX_IREE_SOURCE_DIR ) :
28
28
./scripts/clone_iree.sh $(IREE_GIT_REV ) $(NX_IREE_SOURCE_DIR )
29
29
30
30
IREE_CMAKE_BUILD_DIR ?= $(abspath iree-runtime/iree-build)
31
31
IREE_RUNTIME_INCLUDE_PATH := $(abspath $(NX_IREE_SOURCE_DIR ) /runtime/src/iree)
32
32
IREE_RUNTIME_BUILD_DIR ?= $(abspath iree-runtime/build)
33
33
IREE_INSTALL_DIR ?= $(abspath iree-runtime/host/install)
34
34
35
- IREE_CMAKE_CONFIG ?= Release
36
-
37
35
IREE_BUILD_TARGET ?= host
38
36
39
37
BUILD_TARGET_FLAGS = -S $(abspath cmake)
40
38
41
39
CUDA_PRESENT := $(shell command -v nvcc >/dev/null 2>&1 && echo true || echo false)
42
40
43
41
ifeq ($(CUDA_PRESENT ) , true)
44
- CFLAGS += -DCUDA_ENABLED
45
- CMAKE_CXX_FLAGS += -DCUDA_ENABLED
42
+ ifeq ($(IREE_BUILD_TARGET), host)
43
+ CFLAGS += -DCUDA_ENABLED
44
+ CMAKE_CXX_FLAGS += -DCUDA_ENABLED
45
+ endif
46
46
endif
47
47
48
- # flags for xcode 15.4
48
+ BUILD_HOST_COMPILER ?= OFF
49
+ BUILD_HOST_COMPILER_FLAGS := ""
50
+
51
+ ifeq ($(BUILD_HOST_COMPILER ) , ON)
52
+ BUILD_HOST_COMPILER_FLAGS += \
53
+ -DIREE_BUILD_COMPILER=ON \
54
+ -DIREE_INPUT_TORCH=OFF \
55
+ -DIREE_INPUT_TOSA=OFF \
56
+ -DIREE_BUILD_SAMPLES=OFF \
57
+ -DIREE_BUILD_TESTS=OFF \
58
+ -DIREE_HAL_DRIVER_DEFAULTS=OFF \
59
+ -DIREE_BUILD_PYTHON_BINDINGS=OFF \
60
+ -DIREE_BUILD_BINDINGS_TFLITE=OFF
61
+ endif
62
+
63
+ # apple target flags specified for xcode 15.4
49
64
ifeq ($(IREE_BUILD_TARGET ) , host)
65
+ else ifeq ($(IREE_BUILD_TARGET), webassembly)
66
+ BUILD_TARGET_FLAGS += \
67
+ -DIREE_HOST_BIN_DIR=$(abspath $(IREE_HOST_BIN_DIR ) )
50
68
else ifeq ($(IREE_BUILD_TARGET), ios)
51
69
BUILD_TARGET_FLAGS += \
52
70
-DCMAKE_SYSTEM_NAME=iOS\
@@ -102,39 +120,43 @@ else
102
120
endif
103
121
104
122
.PHONY : install_runtime
105
- install_runtime : iree_host $(IREE_INSTALL_DIR )
106
-
123
+ ifneq ($(strip $(IREE_HOST_BUILD_DIR ) ) ,)
124
+ install_runtime : $(IREE_HOST_INSTALL_DIR ) /bin/iree-flatcc-cli $(IREE_INSTALL_DIR )
125
+ else
126
+ install_runtime : $(IREE_INSTALL_DIR )
127
+ endif
107
128
108
- CMAKE_SOURCES = $(abspath cmake/src/runtime .cc) $( abspath cmake/src/runtime .h)
129
+ CMAKE_SOURCES = $(wildcard cmake/src/* .cc cmake/src/* .h)
109
130
110
- $(IREE_INSTALL_DIR ) : iree_source_dir $(CMAKE_SOURCES )
111
- cmake -G Ninja -B $(IREE_CMAKE_BUILD_DIR ) \
131
+ $(IREE_INSTALL_DIR ) : $( NX_IREE_SOURCE_DIR ) $(CMAKE_SOURCES )
132
+ $( EMCMAKE ) cmake -G Ninja -B $(IREE_CMAKE_BUILD_DIR ) \
112
133
-DCMAKE_BUILD_TYPE=$(IREE_CMAKE_CONFIG ) \
113
134
-DIREE_BUILD_COMPILER=OFF\
114
135
-DIREE_RUNTIME_BUILD_DIR=$(IREE_RUNTIME_BUILD_DIR ) \
115
136
-DIREE_RUNTIME_INCLUDE_PATH=$(IREE_RUNTIME_INCLUDE_PATH ) \
116
137
-DNX_IREE_SOURCE_DIR=$(NX_IREE_SOURCE_DIR ) \
117
138
-DCMAKE_CXX_FLAGS=$(CMAKE_CXX_FLAGS ) \
118
139
$(BUILD_TARGET_FLAGS )
119
-
120
140
cmake --build $(IREE_CMAKE_BUILD_DIR ) --config $(IREE_CMAKE_CONFIG )
121
141
cmake --install $(IREE_CMAKE_BUILD_DIR ) --config $(IREE_CMAKE_CONFIG ) --prefix $(IREE_INSTALL_DIR )
122
142
123
143
.PHONY : iree_host
124
- ifeq ($(BUILD_IREE_RUNTIME ) , true)
144
+ ifneq ($(strip $(IREE_HOST_BUILD_DIR ) ) ,)
145
+ iree_host : $(IREE_HOST_BUILD_DIR ) /bin/iree-flatcc-cli
146
+ else
125
147
iree_host :
126
- @echo " Building IREE runtime host binaries at $( IREE_HOST_BUILD_DIR) ."
148
+ @echo " IREE_HOST_BUILD_DIR not set. Skipping host binaries build."
149
+ endif
150
+
151
+ $(IREE_HOST_INSTALL_DIR ) /bin/iree-flatcc-cli : $(NX_IREE_SOURCE_DIR ) $(CMAKE_SOURCES )
152
+ @echo " Building IREE runtime host binaries at ` $( IREE_HOST_BUILD_DIR) ` ."
127
153
cmake -G Ninja -B $(IREE_HOST_BUILD_DIR ) \
128
154
-DCMAKE_INSTALL_PREFIX=$(IREE_HOST_INSTALL_DIR ) \
129
- -DIREE_BUILD_COMPILER=OFF \
155
+ -DIREE_BUILD_COMPILER=$( BUILD_HOST_COMPILER ) $( BUILD_HOST_COMPILER_FLAGS ) \
130
156
-DCMAKE_BUILD_TYPE=$(IREE_CMAKE_CONFIG ) \
131
157
-DCMAKE_CXX_FLAGS=$(CMAKE_CXX_FLAGS ) \
132
158
-S $(NX_IREE_SOURCE_DIR )
133
159
cmake --build $(IREE_HOST_BUILD_DIR ) --target install
134
- else
135
- iree_host :
136
- @echo " Not building IREE runtime host binaries. Skipping."
137
- endif
138
160
139
161
# ## NxIREE Runtime NIF library
140
162
@@ -146,11 +168,12 @@ NX_IREE_RUNTIME_LIB = cache/iree-runtime
146
168
NX_IREE__IREE_RUNTIME_INCLUDE_PATH = $(NX_IREE_RUNTIME_LIB ) /include
147
169
NX_IREE_RUNTIME_SO ?= $(MIX_APP_PATH ) /priv/libnx_iree_runtime.so
148
170
149
- CFLAGS = -fPIC -I$(ERTS_INCLUDE_DIR ) -I$(NX_IREE__IREE_RUNTIME_INCLUDE_PATH ) -Wall -Wno-sign-compare \
150
- -Wno-unused-parameter -Wno-missing-field-initializers -Wno-comment \
151
- -std=c++17 -w
171
+ CFLAGS = -fPIC -I$(ERTS_INCLUDE_DIR ) -I$(NX_IREE__IREE_RUNTIME_INCLUDE_PATH ) -Wall -std=c++17 -w
172
+
173
+ IREE_CMAKE_CONFIG ?= Release
152
174
153
175
ifdef DEBUG
176
+ IREE_CMAKE_CONFIG = RelWithDebInfo
154
177
CFLAGS += -g
155
178
else
156
179
CFLAGS += -O3
@@ -215,14 +238,20 @@ $(NX_IREE_SO): $(NX_IREE_CACHE_SO)
215
238
$(NX_IREE__IREE_RUNTIME_INCLUDE_PATH ) :
216
239
cp -r iree-runtime/host/install $(dir $@ )
217
240
218
- cache/objs/% .o : c_src/% .cc
241
+ cache/objs/% .o : c_src/% .cc $( CMAKE_SOURCES )
219
242
@ mkdir -p $(dir $@ )
220
243
$(CXX ) $(CFLAGS ) -o $@ -c $<
221
244
222
245
# Print IREE Dir
246
+ .PHONY : PTD
223
247
PTD :
224
248
@ echo $(NX_IREE_SOURCE_DIR )
225
249
250
+ .PHONY : wasm_build
251
+ webassembly :
252
+ ./scripts/build_and_package.sh --target=host --build-compiler
253
+ ./scripts/build_and_package.sh --target=webassembly
254
+
226
255
clean :
227
256
rm -rf cache/objs
228
257
rm -rf $(TARGET_DIR )
0 commit comments