1# 2# Copyright 2011-2019 Branimir Karadzic. All rights reserved. 3# License: https://github.com/bkaradzic/bx#license-bsd-2-clause 4# 5 6GENIE=../bx/tools/bin/$(OS)/genie 7 8all: 9 $(GENIE) vs2017 10 $(GENIE) --gcc=android-arm gmake 11 $(GENIE) --gcc=android-arm64 gmake 12 $(GENIE) --gcc=android-mips gmake 13 $(GENIE) --gcc=android-x86 gmake 14 $(GENIE) --gcc=mingw-gcc gmake 15 $(GENIE) --gcc=linux-gcc gmake 16 $(GENIE) --gcc=haiku gmake 17 $(GENIE) --gcc=osx gmake 18 $(GENIE) --gcc=ios-arm gmake 19 $(GENIE) --gcc=ios-simulator gmake 20 $(GENIE) --gcc=ios-simulator64 gmake 21 $(GENIE) xcode8 22 23.build/projects/gmake-android-arm: 24 $(GENIE) --gcc=android-arm gmake 25android-arm-debug: .build/projects/gmake-android-arm 26 make -R -C .build/projects/gmake-android-arm config=debug 27android-arm-release: .build/projects/gmake-android-arm 28 make -R -C .build/projects/gmake-android-arm config=release 29android-arm: android-arm-debug android-arm-release 30 31.build/projects/gmake-android-arm64: 32 $(GENIE) --gcc=android-arm64 gmake 33android-arm64-debug: .build/projects/gmake-android-arm64 34 make -R -C .build/projects/gmake-android-arm64 config=debug 35android-arm64-release: .build/projects/gmake-android-arm64 36 make -R -C .build/projects/gmake-android-arm64 config=release 37android-arm64: android-arm64-debug android-arm64-release 38 39.build/projects/gmake-android-mips: 40 $(GENIE) --gcc=android-mips gmake 41android-mips-debug: .build/projects/gmake-android-mips 42 make -R -C .build/projects/gmake-android-mips config=debug 43android-mips-release: .build/projects/gmake-android-mips 44 make -R -C .build/projects/gmake-android-mips config=release 45android-mips: android-mips-debug android-mips-release 46 47.build/projects/gmake-android-x86: 48 $(GENIE) --gcc=android-x86 gmake 49android-x86-debug: .build/projects/gmake-android-x86 50 make -R -C .build/projects/gmake-android-x86 config=debug 51android-x86-release: .build/projects/gmake-android-x86 52 make -R -C .build/projects/gmake-android-x86 config=release 53android-x86: android-x86-debug android-x86-release 54 55.build/projects/gmake-linux: 56 $(GENIE) --gcc=linux-gcc gmake 57linux-debug64: .build/projects/gmake-linux 58 make -R -C .build/projects/gmake-linux config=debug64 59linux-release64: .build/projects/gmake-linux 60 make -R -C .build/projects/gmake-linux config=release64 61linux: linux-debug64 linux-release64 62 63.build/projects/gmake-haiku: 64 $(GENIE) --gcc=haiku gmake 65haiku-debug64: .build/projects/gmake-haiku 66 make -R -C .build/projects/gmake-haiku config=debug64 67haiku-release64: .build/projects/gmake-haiku 68 make -R -C .build/projects/gmake-haiku config=release64 69haiku: haiku-debug64 haiku-release64 70 71.build/projects/gmake-mingw-gcc: 72 $(GENIE) --gcc=mingw-gcc gmake 73mingw-gcc-debug32: .build/projects/gmake-mingw-gcc 74 make -R -C .build/projects/gmake-mingw-gcc config=debug32 75mingw-gcc-release32: .build/projects/gmake-mingw-gcc 76 make -R -C .build/projects/gmake-mingw-gcc config=release32 77mingw-gcc-debug64: .build/projects/gmake-mingw-gcc 78 make -R -C .build/projects/gmake-mingw-gcc config=debug64 79mingw-gcc-release64: .build/projects/gmake-mingw-gcc 80 make -R -C .build/projects/gmake-mingw-gcc config=release64 81mingw-gcc: mingw-gcc-debug32 mingw-gcc-release32 mingw-gcc-debug64 mingw-gcc-release64 82 83.build/projects/gmake-mingw-clang: 84 $(GENIE) --clang=mingw-clang gmake 85mingw-clang-debug32: .build/projects/gmake-mingw-clang 86 make -R -C .build/projects/gmake-mingw-clang config=debug32 87mingw-clang-release32: .build/projects/gmake-mingw-clang 88 make -R -C .build/projects/gmake-mingw-clang config=release32 89mingw-clang-debug64: .build/projects/gmake-mingw-clang 90 make -R -C .build/projects/gmake-mingw-clang config=debug64 91mingw-clang-release64: .build/projects/gmake-mingw-clang 92 make -R -C .build/projects/gmake-mingw-clang config=release64 93mingw-clang: mingw-clang-debug32 mingw-clang-release32 mingw-clang-debug64 mingw-clang-release64 94 95.build/projects/vs2017: 96 $(GENIE) vs2017 97 98.build/projects/gmake-osx: 99 $(GENIE) --gcc=osx gmake 100osx-debug64: .build/projects/gmake-osx 101 make -C .build/projects/gmake-osx config=debug64 102osx-release64: .build/projects/gmake-osx 103 make -C .build/projects/gmake-osx config=release64 104osx: osx-debug64 osx-release64 105 106.build/projects/gmake-ios-arm: 107 $(GENIE) --gcc=ios-arm gmake 108ios-arm-debug: .build/projects/gmake-ios-arm 109 make -R -C .build/projects/gmake-ios-arm config=debug 110ios-arm-release: .build/projects/gmake-ios-arm 111 make -R -C .build/projects/gmake-ios-arm config=release 112ios-arm: ios-arm-debug ios-arm-release 113 114.build/projects/gmake-ios-simulator: 115 $(GENIE) --gcc=ios-simulator gmake 116ios-simulator-debug: .build/projects/gmake-ios-simulator 117 make -R -C .build/projects/gmake-ios-simulator config=debug 118ios-simulator-release: .build/projects/gmake-ios-simulator 119 make -R -C .build/projects/gmake-ios-simulator config=release 120ios-simulator: ios-simulator-debug ios-simulator-release 121 122.build/projects/gmake-ios-simulator64: 123 $(GENIE) --gcc=ios-simulator64 gmake 124ios-simulator64-debug: .build/projects/gmake-ios-simulator64 125 make -R -C .build/projects/gmake-ios-simulator64 config=debug 126ios-simulator64-release: .build/projects/gmake-ios-simulator64 127 make -R -C .build/projects/gmake-ios-simulator64 config=release 128ios-simulator64: ios-simulator64-debug ios-simulator64-release 129 130rebuild-shaders: 131 make -R -C examples rebuild 132 133analyze: 134 cppcheck src/ 135 cppcheck examples/ 136 137docs: 138 doxygen scripts/bgfx.doxygen 139 markdown README.md > .build/docs/readme.html 140 141clean: 142 @echo Cleaning... 143 -@rm -rf .build 144 @mkdir .build 145 146### 147 148SILENT ?= @ 149 150UNAME := $(shell uname) 151ifeq ($(UNAME),$(filter $(UNAME),Linux GNU Darwin Haiku)) 152ifeq ($(UNAME),$(filter $(UNAME),Darwin Haiku)) 153ifeq ($(UNAME),$(filter $(UNAME),Darwin)) 154OS=darwin 155BUILD_PROJECT_DIR=gmake-osx 156BUILD_OUTPUT_DIR=osx64_clang 157BUILD_TOOLS_CONFIG=release64 158EXE= 159else 160OS=haiku 161BUILD_PROJECT_DIR=gmake-haiku 162BUILD_OUTPUT_DIR=haiku64_gcc 163BUILD_TOOLS_CONFIG=release64 164EXE= 165endif 166else 167OS=linux 168BUILD_PROJECT_DIR=gmake-linux 169BUILD_OUTPUT_DIR=linux64_gcc 170BUILD_TOOLS_CONFIG=release64 171EXE= 172endif 173else 174OS=windows 175BUILD_PROJECT_DIR=gmake-mingw-gcc 176BUILD_OUTPUT_DIR=win32_mingw-gcc 177BUILD_TOOLS_CONFIG=release64 178EXE=.exe 179endif 180 181# bin2c 182.build/osx64_clang/bin/bin2cRelease: .build/projects/gmake-osx 183 $(SILENT) make -C .build/projects/gmake-osx bin2c config=$(BUILD_TOOLS_CONFIG) 184 185tools/bin/darwin/bin2c: .build/osx64_clang/bin/bin2cRelease 186 $(SILENT) cp $(<) $(@) 187 188.build/linux64_gcc/bin/bin2cRelease: .build/projects/gmake-linux 189 $(SILENT) make -C .build/projects/gmake-linux bin2c config=$(BUILD_TOOLS_CONFIG) 190 191tools/bin/linux/bin2c: .build/linux64_gcc/bin/bin2cRelease 192 $(SILENT) cp $(<) $(@) 193 194.build/haiku64_gcc/bin/bin2cRelease: .build/projects/gmake-haiku 195 $(SILENT) make -C .build/projects/gmake-haiku bin2c config=$(BUILD_TOOLS_CONFIG) 196 197tools/bin/haiku/bin2c: .build/haiku64_gcc/bin/bin2cRelease 198 $(SILENT) cp $(<) $(@) 199 200.build/win64_mingw-gcc/bin/bin2cRelease.exe: .build/projects/gmake-mingw-gcc 201 $(SILENT) make -C .build/projects/gmake-mingw-gcc bin2c config=$(BUILD_TOOLS_CONFIG) 202 203tools/bin/windows/bin2c.exe: .build/win64_mingw-gcc/bin/bin2cRelease.exe 204 $(SILENT) cp $(<) $(@) 205 206bin2c: tools/bin/$(OS)/bin2c$(EXE) 207 208# lemon 209.build/osx64_clang/bin/lemonRelease: .build/projects/gmake-osx 210 $(SILENT) make -C .build/projects/gmake-osx lemon config=$(BUILD_TOOLS_CONFIG) 211 212tools/bin/darwin/lemon: .build/osx64_clang/bin/lemonRelease 213 $(SILENT) cp $(<) $(@) 214 215.build/linux64_gcc/bin/lemonRelease: .build/projects/gmake-linux 216 $(SILENT) make -C .build/projects/gmake-linux lemon config=$(BUILD_TOOLS_CONFIG) 217 218tools/bin/linux/lemon: .build/linux64_gcc/bin/lemonRelease 219 $(SILENT) cp $(<) $(@) 220 221.build/haiku64_gcc/bin/lemonRelease: .build/projects/gmake-haiku 222 $(SILENT) make -C .build/projects/gmake-haiku lemon config=$(BUILD_TOOLS_CONFIG) 223 224tools/bin/haiku/lemon: .build/haiku64_gcc/bin/lemonRelease 225 $(SILENT) cp $(<) $(@) 226 227.build/win64_mingw-gcc/bin/lemonRelease.exe: .build/projects/gmake-mingw-gcc 228 $(SILENT) make -C .build/projects/gmake-mingw-gcc lemon config=$(BUILD_TOOLS_CONFIG) 229 230tools/bin/windows/lemon.exe: .build/win64_mingw-gcc/bin/lemonRelease.exe 231 $(SILENT) cp $(<) $(@) 232 233tools/bin/$(OS)/lempar.c: tools/lemon/lempar.c 234 $(SILENT) cp $(<) $(@) 235 236lemon: tools/bin/$(OS)/lemon$(EXE) tools/bin/$(OS)/lempar.c 237 238tools: bin2c lemon 239 240dist: tools/bin/darwin/bin2c tools/bin/linux/bin2c tools/bin/windows/bin2c.exe tools/bin/haiku/bin2c 241 242.build/$(BUILD_OUTPUT_DIR)/bin/bx.testRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR) 243 $(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) bx.test config=$(BUILD_TOOLS_CONFIG) 244 245test: .build/$(BUILD_OUTPUT_DIR)/bin/bx.testRelease$(EXE) 246