| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 # | 5 # |
| 6 # GNU Make based build file. For details on GNU Make see: | 6 # GNU Make based build file. For details on GNU Make see: |
| 7 # http://www.gnu.org/software/make/manual/make.html | 7 # http://www.gnu.org/software/make/manual/make.html |
| 8 # | 8 # |
| 9 # | 9 # |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 # | 22 # |
| 23 # Top Make file, which we want to trigger a rebuild on if it changes | 23 # Top Make file, which we want to trigger a rebuild on if it changes |
| 24 # | 24 # |
| 25 TOP_MAKE:=$(word 1,$(MAKEFILE_LIST)) | 25 TOP_MAKE:=$(word 1,$(MAKEFILE_LIST)) |
| 26 | 26 |
| 27 | 27 |
| 28 # | 28 # |
| 29 # Verify we selected a valid toolchain for this example | 29 # Verify we selected a valid toolchain for this example |
| 30 # | 30 # |
| 31 ifeq (,$(findstring $(TOOLCHAIN),$(VALID_TOOLCHAINS))) | 31 ifeq (,$(findstring $(TOOLCHAIN),$(VALID_TOOLCHAINS))) |
| 32 $(warning Availbile choices are: $(VALID_TOOLCHAINS)) | 32 $(warning Availbile choices are: $(VALID_TOOLCHAINS)) |
| 33 $(error Can not use TOOLCHAIN=$(TOOLCHAIN) on this example.) | 33 $(error Can not use TOOLCHAIN=$(TOOLCHAIN) on this example.) |
| 34 endif | 34 endif |
| 35 | 35 |
| 36 | 36 |
| 37 # | 37 # |
| 38 # Build Configuration | 38 # Build Configuration |
| 39 # | 39 # |
| 40 # The SDK provides two sets of libraries, Debug and Release. Debug libraries | 40 # The SDK provides two sets of libraries, Debug and Release. Debug libraries |
| 41 # are compiled without optimizations to make debugging easier. By default | 41 # are compiled without optimizations to make debugging easier. By default |
| 42 # this will build a Debug configuration. | 42 # this will build a Debug configuration. |
| 43 # | 43 # |
| 44 CONFIG?=Debug | 44 CONFIG?=Debug |
| 45 | 45 |
| 46 | 46 |
| 47 | |
| 48 # Note for Windows: | 47 # Note for Windows: |
| 49 # Both GCC and LLVM bases tools (include the version of Make.exe that comes | 48 # The GCC and LLVM toolchains (include the version of Make.exe that comes |
| 50 # with the SDK) both expect and are capable of dealing with the '/' seperator. | 49 # with the SDK) expect and are capable of dealing with the '/' seperator. |
| 51 # For that reason, the tools in the SDK, including build, compilers, scripts | 50 # For this reason, the tools in the SDK, including Makefiles and build scripts |
| 52 # all have a preference for POSIX style command-line arguments. | 51 # have a preference for POSIX style command-line arguments. |
| 53 # | 52 # |
| 54 # Keep in mind however that the shell is responsible for command-line escaping, | 53 # Keep in mind however that the shell is responsible for command-line escaping, |
| 55 # globbing, and variable expansion, so those may change based on which shell | 54 # globbing, and variable expansion, so those may change based on which shell |
| 56 # is used. For Cygwin shells this can include automatic and incorrect expansion | 55 # is used. For Cygwin shells this can include automatic and incorrect expansion |
| 57 # of response files (files starting with '@'). | 56 # of response files (files starting with '@'). |
| 58 # | 57 # |
| 59 # Disable DOS PATH warning when using Cygwin based NaCl tools on Windows. | 58 # Disable DOS PATH warning when using Cygwin based NaCl tools on Windows. |
| 60 # | 59 # |
| 61 CYGWIN?=nodosfilewarning | 60 ifeq ($(OSNAME),win) |
| 62 export CYGWIN | 61 CYGWIN?=nodosfilewarning |
| 62 export CYGWIN |
| 63 endif |
| 63 | 64 |
| 64 | 65 |
| 65 # | 66 # |
| 66 # If NACL_SDK_ROOT is not already set, then set it relative to this makefile. | 67 # If NACL_SDK_ROOT is not already set, then set it relative to this makefile. |
| 67 # | 68 # |
| 68 THIS_MAKEFILE:=$(CURDIR)/$(lastword $(MAKEFILE_LIST)) | 69 THIS_MAKEFILE:=$(CURDIR)/$(lastword $(MAKEFILE_LIST)) |
| 69 ifndef NACL_SDK_ROOT | 70 NACL_SDK_ROOT?=$(realpath $(dir $(THIS_MAKEFILE))/..) |
| 70 NACL_SDK_ROOT:=$(realpath $(dir $(THIS_MAKEFILE))/..) | |
| 71 endif | |
| 72 | 71 |
| 73 | 72 |
| 74 # | 73 # |
| 75 # Check that NACL_SDK_ROOT is set to a valid location. | 74 # Check that NACL_SDK_ROOT is set to a valid location. |
| 76 # We use the existence of tools/oshelpers.py to verify the validity of the SDK | 75 # We use the existence of tools/oshelpers.py to verify the validity of the SDK |
| 77 # root. | 76 # root. |
| 78 # | 77 # |
| 79 ifeq (,$(wildcard $(NACL_SDK_ROOT)/tools/oshelpers.py)) | 78 ifeq (,$(wildcard $(NACL_SDK_ROOT)/tools/oshelpers.py)) |
| 80 $(error NACL_SDK_ROOT is set to an invalid location: $(NACL_SDK_ROOT)) | 79 $(error NACL_SDK_ROOT is set to an invalid location: $(NACL_SDK_ROOT)) |
| 81 endif | 80 endif |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 +$(MAKE) TOOLCHAIN=$(1) | 152 +$(MAKE) TOOLCHAIN=$(1) |
| 154 TOOLCHAIN_LIST+=all_$(1) | 153 TOOLCHAIN_LIST+=all_$(1) |
| 155 endef | 154 endef |
| 156 | 155 |
| 157 | 156 |
| 158 # | 157 # |
| 159 # The target for all versions | 158 # The target for all versions |
| 160 # | 159 # |
| 161 USABLE_TOOLCHAINS=$(filter $(OSNAME) newlib glibc pnacl,$(VALID_TOOLCHAINS)) | 160 USABLE_TOOLCHAINS=$(filter $(OSNAME) newlib glibc pnacl,$(VALID_TOOLCHAINS)) |
| 162 | 161 |
| 163 ifeq (1,$(NO_HOST_BUILDS)) | 162 ifeq ($(NO_HOST_BUILDS),1) |
| 164 USABLE_TOOLCHAINS:=$(filter-out $(OSNAME),$(USABLE_TOOLCHAINS)) | 163 USABLE_TOOLCHAINS:=$(filter-out $(OSNAME),$(USABLE_TOOLCHAINS)) |
| 165 endif | 164 endif |
| 166 | 165 |
| 167 $(foreach tool,$(USABLE_TOOLCHAINS),$(eval $(call TOOLCHAIN_RULE,$(tool),$(dep))
)) | 166 $(foreach tool,$(USABLE_TOOLCHAINS),$(eval $(call TOOLCHAIN_RULE,$(tool),$(dep))
)) |
| 168 | 167 |
| 169 .PHONY: all_versions | 168 .PHONY: all_versions |
| 170 all_versions: $(TOOLCHAIN_LIST) | 169 all_versions: $(TOOLCHAIN_LIST) |
| 171 | 170 |
| 172 | 171 |
| 173 OUTBASE?=. | 172 OUTBASE?=. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 198 | 197 |
| 199 | 198 |
| 200 # | 199 # |
| 201 # Dependency Macro | 200 # Dependency Macro |
| 202 # | 201 # |
| 203 # $1 = Name of stamp | 202 # $1 = Name of stamp |
| 204 # $2 = Directory for the sub-make | 203 # $2 = Directory for the sub-make |
| 205 # $3 = Extra Settings | 204 # $3 = Extra Settings |
| 206 # | 205 # |
| 207 define DEPEND_RULE | 206 define DEPEND_RULE |
| 208 ifeq (,$(IGNORE_DEPS)) | 207 ifndef $(IGNORE_DEPS) |
| 209 .PHONY : rebuild_$(1) | 208 .PHONY : rebuild_$(1) |
| 210 | 209 |
| 211 rebuild_$(1) :| $(STAMPDIR)/dir.stamp | 210 rebuild_$(1) :| $(STAMPDIR)/dir.stamp |
| 212 ifeq (,$(2)) | 211 ifeq (,$(2)) |
| 213 +$(MAKE) -C $(NACL_SDK_ROOT)/src/$(1) STAMPDIR=$(abspath $(STAMPDIR)) $(
abspath $(STAMPDIR)/$(1).stamp) $(3) | 212 +$(MAKE) -C $(NACL_SDK_ROOT)/src/$(1) STAMPDIR=$(abspath $(STAMPDIR)) $(
abspath $(STAMPDIR)/$(1).stamp) $(3) |
| 214 else | 213 else |
| 215 +$(MAKE) -C $(2) STAMPDIR=$(abspath $(STAMPDIR)) $(abspath $(STAMPDIR)/$
(1).stamp) $(3) | 214 +$(MAKE) -C $(2) STAMPDIR=$(abspath $(STAMPDIR)) $(abspath $(STAMPDIR)/$
(1).stamp) $(3) |
| 216 endif | 215 endif |
| 217 | 216 |
| 218 all: rebuild_$(1) | 217 all: rebuild_$(1) |
| 219 $(STAMPDIR)/$(1).stamp : rebuild_$(1) | 218 $(STAMPDIR)/$(1).stamp : rebuild_$(1) |
| 220 | 219 |
| 221 else | 220 else |
| 222 | 221 |
| 223 .PHONY : $(STAMPDIR)/$(1).stamp | 222 .PHONY : $(STAMPDIR)/$(1).stamp |
| 224 $(STAMPDIR)/$(1).stamp : | 223 $(STAMPDIR)/$(1).stamp : |
| 225 @echo Ignore $(1) | 224 @echo Ignore $(1) |
| 226 endif | 225 endif |
| 227 endef | 226 endef |
| 228 | 227 |
| 229 | 228 |
| 230 | 229 ifeq ($(TOOLCHAIN),win) |
| 231 ifeq ('win','$(TOOLCHAIN)') | |
| 232 HOST_EXT=.dll | 230 HOST_EXT=.dll |
| 233 else | 231 else |
| 234 HOST_EXT=.so | 232 HOST_EXT=.so |
| 235 endif | 233 endif |
| 236 | 234 |
| 237 | 235 |
| 238 # | 236 # |
| 239 # Common Compile Options | 237 # Common Compile Options |
| 240 # | 238 # |
| 241 ifeq ('Release','$(CONFIG)') | 239 ifeq ($(CONFIG),Release) |
| 242 POSIX_FLAGS?=-g -O2 -pthread -MMD | 240 POSIX_FLAGS?=-g -O2 -pthread -MMD |
| 243 else | 241 else |
| 244 POSIX_FLAGS?=-g -O0 -pthread -MMD | 242 POSIX_FLAGS?=-g -O0 -pthread -MMD |
| 245 endif | 243 endif |
| 246 | 244 |
| 247 NACL_CFLAGS?=-Wno-long-long -Werror | 245 NACL_CFLAGS?=-Wno-long-long -Werror |
| 248 NACL_CXXFLAGS?=-Wno-long-long -Werror | 246 NACL_CXXFLAGS?=-Wno-long-long -Werror |
| 249 NACL_LDFLAGS?=-Wl,-as-needed | 247 NACL_LDFLAGS?=-Wl,-as-needed |
| 250 | 248 |
| 251 # | 249 # |
| (...skipping 29 matching lines...) Expand all Loading... |
| 281 endef | 279 endef |
| 282 else | 280 else |
| 283 define LOG | 281 define LOG |
| 284 @echo " $(1) $(2)" && $(3) | 282 @echo " $(1) $(2)" && $(3) |
| 285 endef | 283 endef |
| 286 endif | 284 endif |
| 287 endif | 285 endif |
| 288 | 286 |
| 289 | 287 |
| 290 # | 288 # |
| 289 # Convert a source path to a object file path. |
| 290 # |
| 291 # $1 = Source Name |
| 292 # $2 = Arch suffix |
| 293 # |
| 294 define SRC_TO_OBJ |
| 295 $(OUTDIR)/$(basename $(subst ..,__,$(1)))$(2).o |
| 296 endef |
| 297 |
| 298 |
| 299 # |
| 300 # Convert a source path to a dependency file path. |
| 301 # |
| 302 # $1 = Source Name |
| 303 # $2 = Arch suffix |
| 304 # |
| 305 define SRC_TO_DEP |
| 306 $(patsubst %.o,%.d,$(call SRC_TO_OBJ,$(1),$(2))) |
| 307 endef |
| 308 |
| 309 |
| 310 # |
| 291 # If the requested toolchain is a NaCl or PNaCl toolchain, the use the | 311 # If the requested toolchain is a NaCl or PNaCl toolchain, the use the |
| 292 # macros and targets defined in nacl.mk, otherwise use the host sepecific | 312 # macros and targets defined in nacl.mk, otherwise use the host sepecific |
| 293 # macros and targets. | 313 # macros and targets. |
| 294 # | 314 # |
| 295 ifneq (,$(findstring $(TOOLCHAIN),linux mac)) | 315 ifneq (,$(findstring $(TOOLCHAIN),linux mac)) |
| 296 include $(NACL_SDK_ROOT)/tools/host_gcc.mk | 316 include $(NACL_SDK_ROOT)/tools/host_gcc.mk |
| 297 endif | 317 endif |
| 298 | 318 |
| 299 ifneq (,$(findstring $(TOOLCHAIN),win)) | 319 ifneq (,$(findstring $(TOOLCHAIN),win)) |
| 300 include $(NACL_SDK_ROOT)/tools/host_vc.mk | 320 include $(NACL_SDK_ROOT)/tools/host_vc.mk |
| (...skipping 12 matching lines...) Expand all Loading... |
| 313 # | 333 # |
| 314 ifeq ($(OSNAME),win) | 334 ifeq ($(OSNAME),win) |
| 315 DEV_NULL=nul | 335 DEV_NULL=nul |
| 316 else | 336 else |
| 317 DEV_NULL=/dev/null | 337 DEV_NULL=/dev/null |
| 318 endif | 338 endif |
| 319 | 339 |
| 320 # | 340 # |
| 321 # Assign a sensible default to CHROME_PATH. | 341 # Assign a sensible default to CHROME_PATH. |
| 322 # | 342 # |
| 323 ifndef CHROME_PATH | 343 CHROME_PATH?=$(shell python $(NACL_SDK_ROOT)/tools/getos.py --chrome 2> $(DEV_NU
LL)) |
| 324 CHROME_PATH:=$(shell python $(NACL_SDK_ROOT)/tools/getos.py --chrome 2> $(DEV_NU
LL)) | |
| 325 endif | |
| 326 | 344 |
| 327 # | 345 # |
| 328 # Verify we can find the Chrome executable if we need to launch it. | 346 # Verify we can find the Chrome executable if we need to launch it. |
| 329 # | 347 # |
| 330 CHECK_FOR_CHROME: | 348 CHECK_FOR_CHROME: |
| 331 ifeq (,$(wildcard $(CHROME_PATH))) | 349 ifeq (,$(wildcard $(CHROME_PATH))) |
| 332 $(warning No valid Chrome found at CHROME_PATH=$(CHROME_PATH)) | 350 $(warning No valid Chrome found at CHROME_PATH=$(CHROME_PATH)) |
| 333 $(error Set CHROME_PATH via an environment variable, or command-line.) | 351 $(error Set CHROME_PATH via an environment variable, or command-line.) |
| 334 else | 352 else |
| 335 $(warning Using chrome at: $(CHROME_PATH)) | 353 $(warning Using chrome at: $(CHROME_PATH)) |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 GDB_ARGS+=-D $(abspath $(OUTDIR))/$(TARGET)_$(SYSARCH).nexe | 392 GDB_ARGS+=-D $(abspath $(OUTDIR))/$(TARGET)_$(SYSARCH).nexe |
| 375 | 393 |
| 376 DEBUG: CHECK_FOR_CHROME all | 394 DEBUG: CHECK_FOR_CHROME all |
| 377 $(RUN_PY) $(GDB_ARGS) \ | 395 $(RUN_PY) $(GDB_ARGS) \ |
| 378 -C $(CURDIR) -P $(PAGE_TC_CONFIG) \ | 396 -C $(CURDIR) -P $(PAGE_TC_CONFIG) \ |
| 379 $(addprefix -E ,$(CHROME_ENV)) -- $(CHROME_PATH) $(CHROME_ARGS) \ | 397 $(addprefix -E ,$(CHROME_ENV)) -- $(CHROME_PATH) $(CHROME_ARGS) \ |
| 380 --enable-nacl-debug \ | 398 --enable-nacl-debug \ |
| 381 --register-pepper-plugins="$(PPAPI_DEBUG),$(PPAPI_RELEASE)" | 399 --register-pepper-plugins="$(PPAPI_DEBUG),$(PPAPI_RELEASE)" |
| 382 | 400 |
| 383 .PHONY: CHECK_FOR_CHROME RUN LAUNCH | 401 .PHONY: CHECK_FOR_CHROME RUN LAUNCH |
| OLD | NEW |