File indexing completed on 2025-01-26 05:12:47
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 variables for required tools and commands used by 0007 # various targets. 0008 0009 # Modify PATH variable to prevent interference with other tools/libraries! 0010 0011 C_DIR := $(patsubst %/,%,$(realpath C:/)) 0012 0013 # Target machine triplet. 0014 TARGET_MACHINE := $(shell $(CC) -dumpmachine) 0015 0016 # Build machine triplet. 0017 BUILD_MACHINE := $(TARGET_MACHINE) 0018 0019 # Host machine triplet. 0020 HOST_MACHINE := $(TARGET_MACHINE) 0021 0022 ifeq "$(OS)" "Windows_NT" 0023 NATIVE_PATH_SEPARATOR := $(join \,) 0024 NATIVE_EXECUTABLE_SUFFIX := .exe 0025 # Input/Output Record Separator used by AWK. 0026 NATIVE_IORS = '\r\n' 0027 else 0028 NATIVE_PATH_SEPARATOR := / 0029 NATIVE_EXECUTABLE_SUFFIX := 0030 # Input/Output Record Separator used by AWK. 0031 NATIVE_IORS = '\n' 0032 endif 0033 0034 0035 # AWK 0036 0037 AWK = awk 0038 0039 $(AWK): 0040 0041 0042 # Shell and its builtins. 0043 0044 CD = cd 0045 SH = sh 0046 0047 $(CD) $(SH): 0048 0049 0050 # Coreutils 0051 0052 BASENAME = basename 0053 CAT = cat 0054 CUT = cut 0055 CP = cp 0056 DIRNAME = dirname 0057 ECHO = echo 0058 MKDIR = mkdir 0059 MV = mv 0060 PASTE = paste 0061 RM = rm 0062 TR = tr 0063 UNIQ = uniq 0064 SORT = sort 0065 STAT = stat 0066 TOUCH = touch 0067 0068 $(BASENAME) $(CAT) $(CUT) $(CP) $(DIRNAME) $(ECHO) $(MKDIR) $(MV) $(PASTE) \ 0069 $(RM) $(TR) $(UNIQ) $(SORT) $(STAT) $(TOUCH): 0070 0071 0072 # Findutils 0073 0074 FIND = find 0075 OLDFIND = oldfind 0076 XARGS = xargs 0077 0078 $(FIND) $(OLDFIND) $(XARGS): 0079 0080 0081 # Grep 0082 0083 GREP = grep 0084 0085 $(GREP): 0086 0087 0088 # Make. 0089 0090 MAKE = make 0091 0092 $(MAKE): 0093 0094 # sed. 0095 0096 SED = sed 0097 0098 $(SED): 0099 0100 # wget. 0101 0102 WGET = wget 0103 0104 $(WGET): 0105 0106 0107 # Qt programs are assumed to be in PATH. 0108 0109 QDOC = qdoc 0110 QMLPLUGINDUMP = qmlplugindump 0111 0112 $(QDOC) $(QMLPLUGINDUMP): 0113 0114 0115 # Doxygen. 0116 0117 ifeq "$(OS)" "Windows_NT" 0118 DOXYGEN_DIR = $(C_DIR)/Program\ Files/doxygen 0119 else 0120 DOXYGEN_DIR = /usr 0121 endif 0122 DOXYGEN_BIN_DIR = $(DOXYGEN_DIR)/bin 0123 DOXYGEN = $(DOXYGEN_BIN_DIR)/doxygen$(NATIVE_EXECUTABLE_SUFFIX) 0124 0125 0126 # Python 0127 0128 ifeq "$(OS)" "Windows_NT" 0129 PYTHON_DIR = $(C_DIR)/Python 0130 PYTHON = $(PYTHON_DIR)/python$(NATIVE_EXECUTABLE_SUFFIX) 0131 else 0132 PYTHON_DIR = /usr/bin 0133 PYTHON = $(PYTHON_DIR)/python3$(NATIVE_EXECUTABLE_SUFFIX) 0134 endif 0135 0136 0137 # Doxyqml. 0138 0139 ifeq "$(OS)" "Windows_NT" 0140 DOXYQML_DIR = $(PYTHON_DIR)/Scripts 0141 else 0142 DOXYQML_DIR = /usr/bin 0143 endif 0144 DOXYQML = $(DOXYQML_DIR)/doxyqml 0145 0146 0147 # CMake. 0148 0149 ifeq "$(OS)" "Windows_NT" 0150 CMAKE_DIR = $(C_DIR)/Program\ Files/CMake 0151 else 0152 CMAKE_DIR = /usr 0153 endif 0154 CMAKE_BIN_DIR = $(CMAKE_DIR)/bin 0155 CMAKE = $(CMAKE_BIN_DIR)/cmake$(NATIVE_EXECUTABLE_SUFFIX) 0156 0157 0158 # Git. 0159 0160 ifeq "$(OS)" "Windows_NT" 0161 GIT_DIR = $(C_DIR)/Program\ Files/Git 0162 else 0163 GIT_DIR = /usr 0164 endif 0165 GIT_BIN_DIR = $(GIT_DIR)/bin 0166 GIT = $(GIT_BIN_DIR)/git$(NATIVE_EXECUTABLE_SUFFIX) 0167 0168 0169 # Subversion. 0170 0171 ifeq "$(OS)" "Windows_NT" 0172 SVN_DIR = $(C_DIR)/Program\ Files/TortoiseSVN 0173 else 0174 SVN_DIR = /usr 0175 endif 0176 SVN_BIN_DIR = $(SVN_DIR)/bin 0177 SVN = $(SVN_BIN_DIR)/svn$(NATIVE_EXECUTABLE_SUFFIX) 0178 0179 0180 # Bash. 0181 BASH = bash 0182 0183 $(BASH): 0184 0185 0186 # Include platform specific toolchain file. 0187 -include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))Makefile.$(BUILD_MACHINE).toolchain 0188 0189 # Makefile.user may override variables defined elsewhere. 0190 -include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))Makefile.user 0191 0192 0193 $(DOXYGEN): 0194 $(info --------------------------------------------------------------------------------) 0195 $(info Program 'doxygen' not found!) 0196 $(info Download it from: http://www.stack.nl/~dimitri/doxygen/download.html.) 0197 $(info If 'doxygen' is installed in custom location, override DOXYGEN_DIR variable.) 0198 $(info DOXYGEN_DIR = "$(DOXYGEN_DIR)") 0199 $(error DOXYGEN = $(DOXYGEN) not found) 0200 0201 $(PYTHON): 0202 $(info --------------------------------------------------------------------------------) 0203 $(info Can not locate Python interpreter!) 0204 $(info You can download it from: https://www.python.org/downloads/.) 0205 $(info If Python is installed, override PYTHON_DIR variable.) 0206 $(info PYTHON_DIR = "$(PYTHON_DIR)") 0207 $(error PYTHON = $(PYTHON) not found) 0208 0209 $(DOXYQML): | $(PYTHON) 0210 $(info --------------------------------------------------------------------------------) || \ 0211 $(info Program 'doxyqml' not found!) 0212 $(info You can get it from: https://github.com/agateau/doxyqml.) 0213 $(info If 'doxyqml' is installed, override DOXYQML_DIR variable.) 0214 $(info DOXYQML_DIR = "$(DOXYQML_DIR)") 0215 $(error DOXYQML = $(DOXYQML) not found) 0216 0217 $(CMAKE): 0218 $(info --------------------------------------------------------------------------------) 0219 $(info Program 'cmake' not found!) 0220 $(info Download it from: https://cmake.org/download/.) 0221 $(info If 'cmake' is installed in custom location, override CMAKE_DIR variable.) 0222 $(info CMAKE_DIR = "$(CMAKE_DIR)") 0223 $(error CMAKE = $(CMAKE) not found) 0224 0225 $(SVN): 0226 $(info --------------------------------------------------------------------------------) 0227 $(info Program 'subversion' not found!) 0228 $(info Windows download: https://tortoisesvn.net/downloads.html.) 0229 $(info If 'subversion' is installed in custom location, override SVN_DIR variable.) 0230 $(info SVN_DIR = "$(SVN_DIR)") 0231 $(error SVN = $(SVN) not found)