File indexing completed on 2024-12-15 05:10:27

0001 # Copyright (c) 2018, Michal Policht. This file is dually licensed under terms
0002 # of either WTFPL or BEER-WARE LICENSE. You may obtain the copy of WTFPL or
0003 # BEER-WARE LICENSE by googling, binging, yahooing or downloading it from pirate
0004 # bay. NO WARRANTY.
0005 
0006 # This Makefile defines various project-specific variables.
0007 
0008 HELP_MESSAGE = Use Qbs if you wish to build the project itself.
0009 
0010 # C compiler (GCC-compatible is required in many cases).
0011 CC = gcc
0012 
0013 INCLUDE_GUARD_PREFIX = 'H_'
0014 
0015 # Project directory (without trailing slash).
0016 PROJECT_DIR := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
0017 
0018 # Root directory of external artifacts.
0019 EXTERNAL_ROOT = $(PROJECT_DIR)/external
0020 
0021 # Directory for temporaries.
0022 TEMP_DIR = $(EXTERNAL_ROOT)/_temp/$(TARGET_MACHINE)
0023 
0024 # A place where external source code archives are stored.
0025 ARCHIVE_DIR = $(TEMP_DIR)/archive
0026 
0027 # Sources directory.
0028 SOURCE_DIR = $(TEMP_DIR)/source
0029 
0030 # Port directory.
0031 PORT_DIR = $(TEMP_DIR)/port
0032 
0033 # Build directory.
0034 BUILD_DIR = $(TEMP_DIR)/build
0035 
0036 # Installation directory.
0037 INSTALL_DIR = $(TEMP_DIR)/install
0038 
0039 # Root directory for deployments.
0040 DEPLOY_DIR = $(EXTERNAL_ROOT)/deploy
0041 
0042 # Recipes directory.
0043 RECIPES_DIR = $(EXTERNAL_ROOT)/recipes/$(TARGET_MACHINE)
0044 
0045 LICENSE_DSLASH_DIRS = extensions qbs tools
0046 
0047 INCLUDE_GUARDS_DIRS = extensions tools
0048 
0049 DOXYGEN_INPUT_DIRS = Doxyfile extensions tools doc/Doxyfile external/Doxyfile external/recipes
0050 
0051 DOXYGEN_OUTPUT_DIR = doc/Doxygen/docs
0052 
0053 DOC_PROJECT_TARGETS = $(DOC_EXTENSIONS_LIST_FILE) $(DOC_TOOLS_LIST_FILE) \
0054                                           doc_subdirs doc_project_doxyqml
0055 
0056 # Directory for autogenerated files.
0057 MAKEFILE_PROJECT_AUTOGEN_DIR = $(PROJECT_DIR)/doc/_temp/Makefile.project
0058 
0059 # File containing list of tools.
0060 DOC_TOOLS_LIST_FILE = $(MAKEFILE_PROJECT_AUTOGEN_DIR)/ToolsList.inc.dox
0061 
0062 # File containing list of extensions.
0063 DOC_EXTENSIONS_LIST_FILE = $(MAKEFILE_PROJECT_AUTOGEN_DIR)/ExtensionsList.inc.dox
0064 
0065 # Product entry print script.
0066 DOCPRODENTRY = awkgward/docprodentry.sh
0067 
0068 INCLUDE_GUARDS_EXCLUDE = ! -path 'extensions/templates_*'
0069 
0070 # URL of l10n-kf5 repository.
0071 L10N-KF5_URL = svn://anonsvn.kde.org/home/kde/trunk/l10n-kf5/scripts
0072 
0073 
0074 
0075 include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))Makefile.toolchain 
0076 
0077 
0078 # Add directory with doxyqml to the PATH, so that it can be seen by Doxygen.
0079 PATH := $(PATH):$(abspath $(DOXYQML_DIR))
0080 
0081 
0082 .PHONY: doc_project_doxyqml doc_subdirs
0083 
0084 $(DOC_TOOLS_LIST_FILE): tools $(MAKEFILE_PROJECT_AUTOGEN_DIR) $(DOCPRODENTRY) | $(SH) $(FIND) $(XARGS) $(SORT) $(BASENAME) $(DIRNAME) $(ECHO)
0085                 @$(ECHO) Generating "$@" file...
0086                 @$(ECHO) '<!-- This file has been autogenerated by Makefile.project. -->' > $@
0087                 @$(FIND) tools -mindepth 2 \( -name 'Doxyfile' -o -name '*.Doxyfile' \) \
0088                 | $(SORT) | $(XARGS) -I {} $(SH) $(DOCPRODENTRY) {} >> $@
0089                 @$(ECHO) '.' >> $@
0090 
0091 $(DOC_EXTENSIONS_LIST_FILE): extensions $(MAKEFILE_PROJECT_AUTOGEN_DIR) $(DOCPRODENTRY) | $(SH) $(FIND) $(XARGS) $(SORT) $(SED) $(DIRNAME) $(ECHO)
0092                 @$(ECHO) Generating "$@" file...
0093                 @$(ECHO) '<!-- This file has been autogenerated by Makefile.project. -->' > $@
0094                 @$(FIND) extensions -mindepth 2 \( -name 'Doxyfile' -o -name '*.Doxyfile' \) \
0095                 | $(SORT) | $(XARGS) -I {} $(SH) $(DOCPRODENTRY) {} >> $@
0096                 @$(ECHO) '.' >> $@
0097 
0098 # Doxygen is not able to create output subdirectories (e.g. extensions/CuteHMI/Test.0)
0099 # recursively (like mkidr -p does) and quits with error, so they have to be created.
0100 doc_subdirs: | $(SH) $(FIND) $(XARGS) $(BASENAME) $(DIRNAME) $(ECHO) $(MKDIR)
0101                 @$(ECHO) Creating documentation output subdirectories...
0102                 @$(FIND) extensions -mindepth 2 \( -name 'Doxyfile' -o -name '*.Doxyfile' \) \
0103                 | $(XARGS) -I {} $(DIRNAME) {} | $(XARGS) -I {} $(MKDIR) -p $(DOXYGEN_OUTPUT_DIR)/{}
0104                 @$(FIND) tools -mindepth 2 \( -name 'Doxyfile' -o -name '*.Doxyfile' \) \
0105                 | $(XARGS) -I {} $(DIRNAME) {} | $(XARGS) -I {} $(MKDIR) -p $(DOXYGEN_OUTPUT_DIR)/{}
0106 
0107 doc_project_doxyqml: $(DOXYQML_PY)
0108                 @$(ECHO) Doxyqml path: "$(DOXYQML)"
0109                 @$(ECHO) Python path: "$(PYTHON)"
0110                 @$(ECHO) Doxyqml version: $(shell $(DOXYQML) --version)
0111 
0112 $(MAKEFILE_PROJECT_AUTOGEN_DIR): | $(MKDIR)
0113                 @$(ECHO) Creating "$@" directory...
0114                 @$(MKDIR) -p "$@"
0115