|
| 1 | +# |
| 2 | +# Copyright 2011-2025 Branimir Karadzic. All rights reserved. |
| 3 | +# License: https://github.com/bkaradzic/bimg/blob/master/LICENSE |
| 4 | +# |
| 5 | + |
| 6 | +UNAME := $(shell uname) |
| 7 | +ifeq ($(UNAME),$(filter $(UNAME),Linux Darwin)) |
| 8 | +ifeq ($(UNAME),$(filter $(UNAME),Darwin)) |
| 9 | +OS=darwin |
| 10 | +else |
| 11 | +OS=linux |
| 12 | +endif |
| 13 | + |
| 14 | +help: |
| 15 | + @echo Available targets: |
| 16 | + @grep -E "^[a-zA-Z0-9_-]+:.*?## .*$$" $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
| 17 | + |
| 18 | +else |
| 19 | +OS=windows |
| 20 | + |
| 21 | +help: projgen |
| 22 | + |
| 23 | +endif |
| 24 | + |
| 25 | +# $(info $(OS)) |
| 26 | + |
| 27 | +BX_DIR?=../bx |
| 28 | +GENIE?=$(BX_DIR)/tools/bin/$(OS)/genie $(EXTRA_GENIE_ARGS) |
| 29 | + |
| 30 | +.PHONY: help |
| 31 | + |
| 32 | +clean: ## Clean all intermediate files. |
| 33 | + @echo Cleaning... |
| 34 | + -@rm -rf .build |
| 35 | + @mkdir .build |
| 36 | + |
| 37 | +projgen: ## Generate project files for all configurations. |
| 38 | + $(GENIE) --with-tools --with-shared-lib vs2022 |
| 39 | + $(GENIE) --with-tools --with-shared-lib --gcc=mingw-gcc gmake |
| 40 | + $(GENIE) --with-tools --with-shared-lib --gcc=mingw-clang gmake |
| 41 | + $(GENIE) --with-tools --with-shared-lib --gcc=linux-gcc gmake |
| 42 | + $(GENIE) --with-tools --with-shared-lib --gcc=linux-clang gmake |
| 43 | + $(GENIE) --with-tools --with-shared-lib --gcc=osx-arm64 gmake |
| 44 | + $(GENIE) --with-tools --with-shared-lib --xcode=osx xcode9 |
| 45 | + $(GENIE) --with-tools --with-shared-lib --xcode=ios xcode9 |
| 46 | + $(GENIE) --with-shared-lib --gcc=android-arm64 gmake |
| 47 | + $(GENIE) --gcc=ios-arm64 gmake |
| 48 | + $(GENIE) --gcc=rpi gmake |
| 49 | + |
| 50 | +.build/projects/gmake-android-arm64: |
| 51 | + $(GENIE) --gcc=android-arm64 --with-shared-lib gmake |
| 52 | +android-arm64-debug: .build/projects/gmake-android-arm64 ## Build - Android ARM64 Debug |
| 53 | + $(MAKE) -R -C .build/projects/gmake-android-arm64 config=debug |
| 54 | +android-arm64-release: .build/projects/gmake-android-arm64 ## Build - Android ARM64 Release |
| 55 | + $(MAKE) -R -C .build/projects/gmake-android-arm64 config=release |
| 56 | +android-arm64: android-arm64-debug android-arm64-release ## Build - Android ARM64 Debug and Release |
| 57 | + |
| 58 | +.build/projects/gmake-wasm: |
| 59 | + $(GENIE) --gcc=wasm gmake |
| 60 | +wasm-debug: .build/projects/gmake-wasm ## Build - Emscripten Debug |
| 61 | + $(MAKE) -R -C .build/projects/gmake-wasm config=debug |
| 62 | +wasm-release: .build/projects/gmake-wasm ## Build - Emscripten Release |
| 63 | + $(MAKE) -R -C .build/projects/gmake-wasm config=release |
| 64 | +wasm: wasm-debug wasm-release ## Build - Emscripten Debug and Release |
| 65 | + |
| 66 | +.build/projects/gmake-linux-gcc: |
| 67 | + $(GENIE) --with-tools --with-shared-lib --gcc=linux-gcc gmake |
| 68 | +linux-gcc-debug64: .build/projects/gmake-linux-gcc ## Build - Linux GCC x64 Debug |
| 69 | + $(MAKE) -R -C .build/projects/gmake-linux-gcc config=debug64 |
| 70 | +linux-gcc-release64: .build/projects/gmake-linux-gcc ## Build - Linux GCC x64 Release |
| 71 | + $(MAKE) -R -C .build/projects/gmake-linux-gcc config=release64 |
| 72 | +linux-gcc: linux-gcc-debug64 linux-gcc-release64 ## Build - Linux GCC x86/x64 Debug and Release |
| 73 | + |
| 74 | +.build/projects/gmake-linux-clang: |
| 75 | + $(GENIE) --with-tools --with-shared-lib --gcc=linux-clang gmake |
| 76 | +linux-clang-debug64: .build/projects/gmake-linux-clang ## Build - Linux Clang x64 Debug |
| 77 | + $(MAKE) -R -C .build/projects/gmake-linux-clang config=debug64 |
| 78 | +linux-clang-release64: .build/projects/gmake-linux-clang ## Build - Linux Clang x64 Release |
| 79 | + $(MAKE) -R -C .build/projects/gmake-linux-clang config=release64 |
| 80 | +linux-clang: linux-clang-debug64 linux-clang-release64 ## Build - Linux Clang x86/x64 Debug and Release |
| 81 | + |
| 82 | +.build/projects/gmake-mingw-gcc: |
| 83 | + $(GENIE) --with-tools --with-shared-lib --gcc=mingw-gcc gmake |
| 84 | +mingw-gcc-debug32: .build/projects/gmake-mingw-gcc ## Build - MinGW GCC x86 Debug |
| 85 | + $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=debug32 |
| 86 | +mingw-gcc-release32: .build/projects/gmake-mingw-gcc ## Build - MinGW GCC x86 Release |
| 87 | + $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=release32 |
| 88 | +mingw-gcc-debug64: .build/projects/gmake-mingw-gcc ## Build - MinGW GCC x64 Debug |
| 89 | + $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=debug64 |
| 90 | +mingw-gcc-release64: .build/projects/gmake-mingw-gcc ## Build - MinGW GCC x64 Release |
| 91 | + $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=release64 |
| 92 | +mingw-gcc: mingw-gcc-debug32 mingw-gcc-release32 mingw-gcc-debug64 mingw-gcc-release64 ## Build - MinGW GCC x86/x64 Debug and Release |
| 93 | + |
| 94 | +.build/projects/gmake-mingw-clang: |
| 95 | + $(GENIE) --with-tools --with-shared-lib --gcc=mingw-clang gmake |
| 96 | +mingw-clang-debug32: .build/projects/gmake-mingw-clang ## Build - MinGW Clang x86 Debug |
| 97 | + $(MAKE) -R -C .build/projects/gmake-mingw-clang config=debug32 |
| 98 | +mingw-clang-release32: .build/projects/gmake-mingw-clang ## Build - MinGW Clang x86 Release |
| 99 | + $(MAKE) -R -C .build/projects/gmake-mingw-clang config=release32 |
| 100 | +mingw-clang-debug64: .build/projects/gmake-mingw-clang ## Build - MinGW Clang x64 Debug |
| 101 | + $(MAKE) -R -C .build/projects/gmake-mingw-clang config=debug64 |
| 102 | +mingw-clang-release64: .build/projects/gmake-mingw-clang ## Build - MinGW Clang x64 Release |
| 103 | + $(MAKE) -R -C .build/projects/gmake-mingw-clang config=release64 |
| 104 | +mingw-clang: mingw-clang-debug32 mingw-clang-release32 mingw-clang-debug64 mingw-clang-release64 ## Build - MinGW Clang x86/x64 Debug and Release |
| 105 | + |
| 106 | +.build/projects/vs2022: |
| 107 | + $(GENIE) --with-tools --with-shared-lib vs2022 |
| 108 | +vs2022-debug32: .build/projects/vs2022 ## Build - vs2022 x86 Debug |
| 109 | + devenv .build/projects/vs2022/bimg.sln /Build "Debug|Win32" |
| 110 | +vs2022-release32: .build/projects/vs2022 ## Build - vs2022 x86 Release |
| 111 | + devenv .build/projects/vs2022/bimg.sln /Build "Release|Win32" |
| 112 | +vs2022-debug64: .build/projects/vs2022 ## Build - vs2022 x64 Debug |
| 113 | + devenv .build/projects/vs2022/bimg.sln /Build "Debug|x64" |
| 114 | +vs2022-release64: .build/projects/vs2022 ## Build - vs2022 x64 Release |
| 115 | + devenv .build/projects/vs2022/bimg.sln /Build "Release|x64" |
| 116 | +vs2022: vs2022-debug32 vs2022-release32 vs2022-debug64 vs2022-release64 ## Build - vs2022 x86/x64 Debug and Release |
| 117 | + |
| 118 | +.build/projects/gmake-osx-arm64: |
| 119 | + $(GENIE) --with-tools --with-shared-lib --gcc=osx-arm64 gmake |
| 120 | +osx-arm64-debug: .build/projects/gmake-osx-arm64 ## Build - macOS ARM Debug |
| 121 | + $(MAKE) -C .build/projects/gmake-osx-arm64 config=debug |
| 122 | +osx-arm64-release: .build/projects/gmake-osx-arm64 ## Build - macOS ARM Release |
| 123 | + $(MAKE) -C .build/projects/gmake-osx-arm64 config=release |
| 124 | +osx-arm64: osx-arm64-debug osx-arm64-release ## Build - macOS ARM Debug and Release |
| 125 | + |
| 126 | +.build/projects/gmake-ios-arm64: |
| 127 | + $(GENIE) --gcc=ios-arm64 gmake |
| 128 | +ios-arm64-debug: .build/projects/gmake-ios-arm64 ## Build - iOS ARM64 Debug |
| 129 | + $(MAKE) -R -C .build/projects/gmake-ios-arm64 config=debug |
| 130 | +ios-arm64-release: .build/projects/gmake-ios-arm64 ## Build - iOS ARM64 Release |
| 131 | + $(MAKE) -R -C .build/projects/gmake-ios-arm64 config=release |
| 132 | +ios-arm64: ios-arm64-debug ios-arm64-release ## Build - iOS ARM64 Debug and Release |
| 133 | + |
| 134 | +.build/projects/gmake-rpi: |
| 135 | + $(GENIE) --gcc=rpi gmake |
| 136 | +rpi-debug: .build/projects/gmake-rpi ## Build - RasberryPi Debug |
| 137 | + $(MAKE) -R -C .build/projects/gmake-rpi config=debug |
| 138 | +rpi-release: .build/projects/gmake-rpi ## Build - RasberryPi Release |
| 139 | + $(MAKE) -R -C .build/projects/gmake-rpi config=release |
| 140 | +rpi: rpi-debug rpi-release ## Build - RasberryPi Debug and Release |
| 141 | + |
| 142 | +### |
| 143 | + |
| 144 | +SILENT ?= @ |
| 145 | + |
| 146 | +UNAME := $(shell uname) |
| 147 | +ifeq ($(UNAME),$(filter $(UNAME),Linux Darwin)) |
| 148 | +ifeq ($(UNAME),$(filter $(UNAME),Darwin)) |
| 149 | +OS=darwin |
| 150 | +BUILD_PROJECT_DIR=gmake-osx-arm64 |
| 151 | +BUILD_OUTPUT_DIR=osx-arm64 |
| 152 | +BUILD_TOOLS_CONFIG=release |
| 153 | +BUILD_TOOLS_SUFFIX=Release |
| 154 | +EXE= |
| 155 | +else |
| 156 | +OS=linux |
| 157 | +BUILD_PROJECT_DIR=gmake-linux-gcc |
| 158 | +BUILD_OUTPUT_DIR=linux64_gcc |
| 159 | +BUILD_TOOLS_CONFIG=release64 |
| 160 | +BUILD_TOOLS_SUFFIX=Release |
| 161 | +EXE= |
| 162 | +endif |
| 163 | +else |
| 164 | +OS=windows |
| 165 | +BUILD_PROJECT_DIR=gmake-mingw-gcc |
| 166 | +BUILD_OUTPUT_DIR=win64_mingw-gcc |
| 167 | +BUILD_TOOLS_CONFIG=release64 |
| 168 | +BUILD_TOOLS_SUFFIX=Release |
| 169 | +EXE=.exe |
| 170 | +endif |
| 171 | + |
| 172 | +texturec: .build/projects/$(BUILD_PROJECT_DIR) ## Build texturec tool. |
| 173 | + $(SILENT) $(MAKE) -C .build/projects/$(BUILD_PROJECT_DIR) texturec config=$(BUILD_TOOLS_CONFIG) |
| 174 | + $(SILENT) cp .build/$(BUILD_OUTPUT_DIR)/bin/texturec$(BUILD_TOOLS_SUFFIX)$(EXE) tools/bin/$(OS)/texturec$(EXE) |
| 175 | + |
| 176 | +texturev: .build/projects/$(BUILD_PROJECT_DIR) ## Build texturev tool. |
| 177 | + $(SILENT) $(MAKE) -C .build/projects/$(BUILD_PROJECT_DIR) texturev config=$(BUILD_TOOLS_CONFIG) |
| 178 | + $(SILENT) cp .build/$(BUILD_OUTPUT_DIR)/bin/texturev$(BUILD_TOOLS_SUFFIX)$(EXE) tools/bin/$(OS)/texturev$(EXE) |
| 179 | + |
| 180 | +tools: texturec texturev ## Build tools. |
| 181 | + |
| 182 | +clean-tools: ## Clean tools projects. |
| 183 | + -$(SILENT) rm -r .build/projects/$(BUILD_PROJECT_DIR) |
0 commit comments