#!/usr/bin/make -f #SHELL := /bin/bash MAKEFILE_FILEPATH := $(abspath $(lastword $(MAKEFILE_LIST))) MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH)))) MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_UTILS_COMMAND = cmake CMAKE_UTILS_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_UTILS_BUILD_DIR = $(MAKEFILE_PATH)compile DEPENDS = /bin/cmake PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) PRJNAME = $(subst lib,,${PKGNAME}) FILE_VER = source/CMakeLists.txt default_target: all .PHONY: all init depend debug prepare check build uninstall install clean help all: init build init: @echo "Initialize ..."; \ if [ -d ".git" ]; then \ LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ if [ -z "$${LATEST_TAG}" ]; \ then \ LATEST_TAG=$$"0.0"; \ echo "$${LATEST_TAG} is empty"; \ fi; \ else \ LATEST_TAG="Development"; \ fi; \ sed -r "s/^(project\(${PRJNAME} VERSION ).*/\1$${LATEST_TAG}\)/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_UTILS_BUILD_DIR}" depend: @echo "Check depends ..." @for FILE_DEPEND in $(DEPENDS); do \ if [ ! -f $${FILE_DEPEND} ]; then \ echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \ exit 1; \ fi; \ done; \ $(CMAKE_UTILS_COMMAND) -DCMAKE_INSTALL_PREFIX=/usr -S$(CMAKE_UTILS_SOURCE_DIR) -B${CMAKE_UTILS_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" debug: @echo "Debug ..." if [ ! -d ${CMAKE_UTILS_BUILD_DIR} ]; then \ $(CMAKE_UTILS_COMMAND) -S${CMAKE_UTILS_SOURCE_DIR} -B${CMAKE_UTILS_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Debug: OK" prepare: @echo "Prepare ..."; \ if [ ! -d ${CMAKE_UTILS_BUILD_DIR} ]; then \ $(CMAKE_UTILS_COMMAND) -DCMAKE_INSTALL_PREFIX=/usr -S${CMAKE_UTILS_SOURCE_DIR} -B${CMAKE_UTILS_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ fi; \ echo "Prepare: OK" check: @echo "Check ..."; \ if [ -f ${CMAKE_UTILS_BUILD_DIR}/${PKGNAME}.so ]; then \ echo "Check: OK"; \ else \ echo "Check: ${CMAKE_UTILS_BUILD_DIR}/${PKGNAME}.so not found !"; \ exit 1; \ fi build: depend prepare @echo "Build ..."; \ cd ./source; \ $(MAKE_COMMAND) --directory=${CMAKE_UTILS_BUILD_DIR}; \ cd ../ echo "Build: OK" uninstall: @echo "Uninstall ..." @$(RM) "${DESTDIR}${PREFIX}/lib/${PKGNAME}".so* @$(RM) "${DESTDIR}${PREFIX}/include/${PKGNAME}".h* @if [ -z ${DESTDIR} ]; then \ ldconfig -n ${DESTDIR}${PREFIX}/lib; \ fi @echo "Uninstall: OK" install: check @echo "Install ..." @$(MAKE_COMMAND) install --directory=${CMAKE_UTILS_BUILD_DIR} @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ ldconfig -n ${DESTDIR}${PREFIX}/lib; \ fi @echo "Install: OK" clean: @echo "Clean ..." @$(RM) -rd ${CMAKE_UTILS_BUILD_DIR} @$(RM) -rd ${CMAKE_UTILS_BUILD_DIR} @if [ -d ${CMAKE_UTILS_BUILD_DIR} ]; then \ echo "Clean: error, compile directory exist ${CMAKE_UTILS_BUILD_DIR}"; \ else \ echo "Clean: OK"; \ fi help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ echo "... init"; \ echo "... debug"; \ echo "... prepare"; \ echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ echo "... clean"