# Copyright 2022 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# This is an example showing a basic makefile that links in the IREE runtime by
# way of the unified static library. It's recommended that IREE is added as a
# subproject and cmake is used to add the dependencies (as in the CMakeLists.txt
# in this directory) but when using other build systems this is easier to adapt.
#
# Configure the runtime:
#   cmake -GNinja -B ../iree-build-runtime/ .
# Build the runtime:
#   cmake --build ../iree-build-runtime/ --target iree_runtime_unified
# Make this binary:
#   make RUNTIME_BUILD_DIR=../iree-build-runtime/
#
# Note that if IREE_SIZE_OPTIMIZED is used to build the runtime then the
# -DNDEBUG and -DIREE_STATUS_MODE=0 are required on any binaries using it. YMMV
# if changing any compiler options and not keeping them in sync. Prefer using
# cmake to ensure consistency between the builds.

RUNTIME_SRC_DIR ?= ../../runtime/src/
RUNTIME_BUILD_DIR ?= ../../../iree-build-runtime/

SRC_FILES := main.c
INCLUDE_DIRS := ${RUNTIME_SRC_DIR}
INCLUDE_FLAGS := $(addprefix -I,${INCLUDE_DIRS})
LIBRARY_DIRS := \
		${RUNTIME_BUILD_DIR}/build_tools/third_party/flatcc/ \
		${RUNTIME_BUILD_DIR}/runtime/src/iree/runtime/
LINK_LIBRARIES := \
		iree_runtime_unified \
		flatcc_parsing \
		cpuinfo \
		clog \
		dl \
		pthread
LIBRARY_FLAGS := $(addprefix -L,${LIBRARY_DIRS}) $(addprefix -l,${LINK_LIBRARIES})
CXX_FLAGS := -flto -Os ${INCLUDE_FLAGS} ${LIBRARY_FLAGS}

all: dynamic-shapes
clean:
	rm -f dynamic-shapes

dynamic-shapes: ${SRC_FILES}
	${CXX} ${SRC_FILES} ${CXX_FLAGS} -o $@
