Current section

Files

Jump to
sscmex Makefile
Raw

Makefile

# Makefile wrapper for CMake-based NIF build
ifndef MIX_APP_PATH
MIX_APP_PATH=$(shell pwd)
endif
PRIV_DIR = $(MIX_APP_PATH)/priv
SSCMEX_SO = $(PRIV_DIR)/sscmex_nif.so
CMAKE_BUILD_DIR = $(MIX_APP_PATH)/cmake_build
ifdef CMAKE_TOOLCHAIN_FILE
CMAKE_CONFIGURE_FLAGS=-D CMAKE_TOOLCHAIN_FILE="$(CMAKE_TOOLCHAIN_FILE)"
endif
# Default build type
CMAKE_BUILD_TYPE ?= Release
# Default jobs
MAKE_JOBS ?= $(shell nproc 2>/dev/null || echo 1)
build: $(SSCMEX_SO)
$(SSCMEX_SO): $(PRIV_DIR)
@ mkdir -p "$(CMAKE_BUILD_DIR)" && \
cd "$(CMAKE_BUILD_DIR)" && \
cmake --no-warn-unused-cli \
-D CMAKE_BUILD_TYPE="$(CMAKE_BUILD_TYPE)" \
-D C_SRC="$(shell pwd)/c_src" \
-D MIX_APP_PATH="$(MIX_APP_PATH)" \
-D PRIV_DIR="$(PRIV_DIR)" \
-D ERTS_INCLUDE_DIR="$(ERTS_INCLUDE_DIR)" \
-D SG200X_SDK_PATH="$(SG200X_SDK_PATH)" \
$(CMAKE_CONFIGURE_FLAGS) "$(shell pwd)" && \
cmake --build . --config "$(CMAKE_BUILD_TYPE)" -j$(MAKE_JOBS) && \
cp "sscmex_nif.so" "$(SSCMEX_SO)"
clean:
@rm -rf "$(CMAKE_BUILD_DIR)"
@rm -f "$(SSCMEX_SO)"
$(PRIV_DIR):
@mkdir -p "$(PRIV_DIR)"