| # Public variables are stored in config.mk |
| include ./config.mk |
| |
| ######################################################################### |
| # Set Internal Variables # |
| # May be modified to match your setup # |
| ######################################################################### |
| ifneq ($(V),1) |
| VPREFIX := @ |
| endif |
| export VPREFIX |
| |
| EXPORT_DIR ?= $(O)/export |
| DESTDIR ?= $(EXPORT_DIR) |
| SBINDIR ?= /usr/sbin |
| LIBDIR ?= /usr/lib |
| INCLUDEDIR ?= /usr/include |
| |
| .PHONY: all build build-libteec build-libckteec build-libseteec \ |
| build-libteeacl check-libuuid install copy_export clean cscope \ |
| clean-cscope \ |
| checkpatch-pre-req checkpatch-modified-patch checkpatch-modified-file \ |
| checkpatch-last-commit-patch checkpatch-last-commit-file \ |
| checkpatch-base-commit-patch checkpatch-base-commit-file \ |
| checkpatch-all-files distclean |
| |
| all: build install |
| |
| build-libteec: |
| @echo "Building libteec.so" |
| @$(MAKE) --directory=libteec --no-print-directory --no-builtin-variables \ |
| CFG_TEE_BENCHMARK=$(CFG_TEE_BENCHMARK) CFG_TEE_CLIENT_LOG_LEVEL=$(CFG_TEE_CLIENT_LOG_LEVEL) |
| |
| build-tee-supplicant: build-libteec |
| @echo "Building tee-supplicant" |
| $(MAKE) --directory=tee-supplicant --no-print-directory --no-builtin-variables CFG_TEE_SUPP_LOG_LEVEL=$(CFG_TEE_SUPP_LOG_LEVEL) |
| |
| build: build-libteec build-tee-supplicant build-libckteec build-libseteec \ |
| build-libteeacl |
| |
| build-libckteec: build-libteec |
| @echo "Building libckteec.so" |
| @$(MAKE) --directory=libckteec --no-print-directory --no-builtin-variables |
| |
| build-libseteec: build-libteec |
| @echo "Building libseteec.so" |
| @$(MAKE) --directory=libseteec --no-print-directory --no-builtin-variables |
| |
| build-libteeacl: check-libuuid |
| @echo "Building libteeacl.so" |
| @$(MAKE) --directory=libteeacl --no-print-directory --no-builtin-variables |
| |
| check-libuuid: |
| @echo "Finding uuid.pc" |
| pkg-config --atleast-version=2.34 uuid |
| |
| install: copy_export |
| |
| clean: clean-libteec clean-tee-supplicant clean-cscope clean-libckteec \ |
| clean-libseteec clean-libteeacl |
| |
| clean-libteec: |
| @$(MAKE) --directory=libteec --no-print-directory clean |
| |
| clean-tee-supplicant: |
| @$(MAKE) --directory=tee-supplicant --no-print-directory clean |
| |
| clean-libckteec: |
| @$(MAKE) --directory=libckteec --no-print-directory clean |
| |
| clean-libseteec: |
| @$(MAKE) --directory=libseteec --no-print-directory clean |
| |
| clean-libteeacl: |
| @$(MAKE) --directory=libteeacl --no-print-directory clean |
| |
| cscope: |
| @echo " CSCOPE" |
| ${VPREFIX}find ${CURDIR} -name "*.[chsS]" > cscope.files |
| ${VPREFIX}cscope -b -q -k |
| |
| clean-cscope: |
| ${VPREFIX}rm -f cscope.* |
| |
| # Various checkpatch targets. The ones ending with "patch" only considers the |
| # patch, whilst the ones ending with "file" checks the complete file. |
| # +-------------------------------+------------+----------------------------+ |
| # | Target commit | File/Patch | Comment | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-modified-patch | Patch | Check local modifications | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-modified-file | File | Check Local modifications | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-last-commit-patch | Patch | Check against HEAD^ | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-last-commit-file | File | Check against HEAD^ | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-base-commit-patch | Patch | Against specic commit | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-base-commit-file | File | Against specic commit | |
| # +-------------------------------+------------+----------------------------+ |
| # | checkpatch-all-files | File | Check all tracked files | |
| # +-------------------------------+------------+----------------------------+ |
| CHECKPATCH_IGNORE ?= --ignore NEW_TYPEDEFS --no-signoff |
| CHECKPATCH_STRICT ?= --strict |
| CHECKPATCH_ARGS ?= $(CHECKPATCH_IGNORE) $(CHECKPATCH_STRICT) --no-tree --terse |
| CHECKPATCH_PATCH_ARGS := $(CHECKPATCH_ARGS) --patch |
| CHECKPATCH_FILE_ARGS := $(CHECKPATCH_ARGS) --file --no-patch |
| |
| checkpatch-pre-req: |
| @echo " CHECKPATCH" |
| ifndef CHECKPATCH |
| $(error "Environment variable CHECKPATCH must point to Linux kernels checkpatch script") |
| else |
| ifeq (,$(wildcard ${CHECKPATCH})) |
| $(error "CHECKPATCH points to the incorrect file") |
| endif |
| endif |
| |
| checkpatch-modified-patch: checkpatch-pre-req |
| ${VPREFIX}git diff | ${CHECKPATCH} $(CHECKPATCH_PATCH_ARGS) - || true |
| |
| checkpatch-modified-file: checkpatch-pre-req |
| ${VPREFIX}${CHECKPATCH} $(CHECKPATCH_FILE_ARGS) $(shell git diff --name-only) |
| |
| |
| checkpatch-last-commit-patch: checkpatch-pre-req |
| ${VPREFIX}git diff HEAD^ | ${CHECKPATCH} $(CHECKPATCH_PATCH_ARGS) - || true |
| |
| checkpatch-last-commit-file: checkpatch-pre-req |
| ${VPREFIX}${CHECKPATCH} $(CHECKPATCH_FILE_ARGS) $(shell git diff --name-only HEAD^) |
| |
| |
| checkpatch-base-commit-patch: checkpatch-pre-req |
| ifndef BASE_COMMIT |
| $(error "Environment variable BASE_COMMIT must contain a valid commit") |
| endif |
| ${VPREFIX}git diff $(BASE_COMMIT) | ${CHECKPATCH} $(CHECKPATCH_PATCH_ARGS) - || true |
| |
| checkpatch-base-commit-file: checkpatch-pre-req |
| ifndef BASE_COMMIT |
| $(error "Environment variable BASE_COMMIT must contain a valid commit") |
| endif |
| ${VPREFIX}${CHECKPATCH} $(CHECKPATCH_FILE_ARGS) $(shell git diff --name-only ${BASE_COMMIT}) |
| |
| checkpatch-all-files: checkpatch-pre-req |
| ${VPREFIX}${CHECKPATCH} $(CHECKPATCH_FILE_ARGS) $(shell git ls-files) |
| |
| distclean: clean |
| |
| copy_export: build |
| mkdir -p $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(INCLUDEDIR) |
| cp config.mk $(DESTDIR)/$(INCLUDEDIR)/optee_client_config.mk |
| cp -d ${O}/libteec/libteec.so* $(DESTDIR)$(LIBDIR) |
| cp -d ${O}/libteec/libteec.a $(DESTDIR)$(LIBDIR) |
| cp ${O}/tee-supplicant/tee-supplicant $(DESTDIR)$(SBINDIR) |
| cp public/*.h $(DESTDIR)$(INCLUDEDIR) |
| cp libckteec/include/*.h $(DESTDIR)$(INCLUDEDIR) |
| cp -d ${O}/libckteec/libckteec.so* $(DESTDIR)$(LIBDIR) |
| cp -d ${O}/libckteec/libckteec.a $(DESTDIR)$(LIBDIR) |
| cp libteeacl/include/*.h $(DESTDIR)$(INCLUDEDIR) |
| cp -d ${O}/libteeacl/libteeacl.so* $(DESTDIR)$(LIBDIR) |
| cp -d ${O}/libteeacl/libteeacl.a $(DESTDIR)$(LIBDIR) |
| cp libseteec/include/*.h $(DESTDIR)$(INCLUDEDIR) |
| cp -d ${O}/libseteec/libseteec.so* $(DESTDIR)$(LIBDIR) |
| cp -d ${O}/libseteec/libseteec.a $(DESTDIR)$(LIBDIR) |