15d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# Makefile that wraps the Gyp and build steps for Unix and Mac (but not Windows) 258d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com# Uses "ninja" to build the code. 35d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 45d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# Some usage examples (tested on both Linux and Mac): 55d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 65d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# # Clean everything 75d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# make clean 85d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 95d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# # Build and run tests (in Debug mode) 10e7ce26d360a5ca36085be2bbb2cee8b62a0ed935mtklein# make dm 11e7ce26d360a5ca36085be2bbb2cee8b62a0ed935mtklein# out/Debug/dm 125d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 135d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# # Build and run tests (in Release mode) 14e7ce26d360a5ca36085be2bbb2cee8b62a0ed935mtklein# make dm BUILDTYPE=Release 15e7ce26d360a5ca36085be2bbb2cee8b62a0ed935mtklein# out/Release/dm 165d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 175d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# # Build bench and SampleApp (both in Release mode), and then run them 185d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# make SampleApp bench BUILDTYPE=Release 195d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# out/Release/bench -repeat 2 205d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# out/Release/SampleApp 215d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 225d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# # Build all targets (in Debug mode) 235d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# make 245d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 255d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# If you want more fine-grained control, you can run gyp and then build the 265d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# gyp-generated projects yourself. 275d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com# 286714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# See https://sites.google.com/site/skiadocs/ for complete documentation. 295d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com 30ab5e91184b01fcfebbb7a4ae5723ede5367832dddjsollen@google.comSKIA_OUT ?= out 315d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.comBUILDTYPE ?= Debug 325d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.comCWD := $(shell pwd) 33c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com 346714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# Soon we should be able to get rid of VALID_TARGETS, and just pass control 356714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# to the gyp-generated Makefile for *any* target name. 366714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# But that will be a bit complicated, so let's keep it for a future CL. 376714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# Tracked as https://code.google.com/p/skia/issues/detail?id=947 ('eliminate 386714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# need for VALID_TARGETS in toplevel Makefile') 3958d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com# 4058d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com# TODO(epoger): I'm not sure if the above comment is still valid in a ninja 4158d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com# world. 426714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.comVALID_TARGETS := \ 43970e106b883a7b52155b94d01437dfb8ee1eb1e3mtklein nanobench \ 446714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com debugger \ 457eb529fb7236e3c1a50b19741e3a266d838f1969commit-bot@chromium.org dm \ 466714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com everything \ 476714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com gm \ 486714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com most \ 493e475dc8d0a156521bd9963edb80b10398a14160caryclark@google.com pathops_unittest \ 5001cd4d5c8ff9c6b251021ce07936c71f9c20054cedisonn@google.com pdfviewer \ 516714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com SampleApp \ 52cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com SampleApp_APK \ 53bb5228888253b21ce81f0a89b605cdd7f88c0efcborenet@google.com skhello \ 5452f0297aafc1e267fda6e612f168a9fe5bc62784djsollen@google.com skia_lib \ 55a2bbc6e19d5332e81784e582c290cc060f40c4c7caryclark@google.com skpskgr_test \ 56be19b9ef9a46df7d7308f273f6f7efa905cc7d72commit-bot@chromium.org tools \ 57be19b9ef9a46df7d7308f273f6f7efa905cc7d72commit-bot@chromium.org skpdiff 58dd3d08ea8e3394da42e2dd9631ea5eccb3fb24b6borenet@google.com 59c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com# Default target. This must be listed before all other targets. 60c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com.PHONY: default 619c875d34ff13d82f581448ced0d9eb5b067368b9epoger@google.comdefault: most 62c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com 63c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com# As noted in http://code.google.com/p/skia/issues/detail?id=330 , building 64c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com# multiple targets in parallel was failing. The special .NOTPARALLEL target 6558d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com# tells gnu make not to run targets within this Makefile in parallel. 6658d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com# Targets that ninja builds at this Makefile's behest should not be affected. 67c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com.NOTPARALLEL: 685d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com 695d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.comuname := $(shell uname) 705d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.comifneq (,$(findstring CYGWIN, $(uname))) 716714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com $(error Cannot build using Make on Windows. See https://sites.google.com/site/skiadocs/user-documentation/quick-start-guides/windows) 725d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.comendif 735d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com 746714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# If user requests "make all", chain to our explicitly-declared "everything" 756714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# target. See https://code.google.com/p/skia/issues/detail?id=932 ("gyp 766714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com# automatically creates "all" target on some build flavors but not others") 775d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com.PHONY: all 786714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.comall: everything 795d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com 805d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com.PHONY: clean 815d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.comclean: 825d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com rm -rf out xcodebuild 83ab5e91184b01fcfebbb7a4ae5723ede5367832dddjsollen@google.comifneq (out, $(SKIA_OUT)) 84ab5e91184b01fcfebbb7a4ae5723ede5367832dddjsollen@google.com rm -rf $(SKIA_OUT) 85ab5e91184b01fcfebbb7a4ae5723ede5367832dddjsollen@google.comendif 865d2e4cc165ede8cc5e08bf493839c0c4ab2974e7epoger@google.com 87c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com# Run gyp no matter what. 88c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com.PHONY: gyp 89c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.comgyp: 902d75cc0c163d60276f5f9e39299a4225fd0e2f8depoger@google.com $(CWD)/gyp_skia 91c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com 92c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com# For all specific targets: run gyp if necessary, and then pass control to 93c9493a4a688b22cbfcfb8381a63c58215eab54feepoger@google.com# the gyp-generated buildfiles. 946714ea4e4d96ad49c79ad51959db980141c56c38epoger@google.com.PHONY: $(VALID_TARGETS) 9558d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com$(VALID_TARGETS):: gyp 9658d69d846071ff9a84e879041f2f092006bfcd14epoger@google.com ninja -C $(SKIA_OUT)/$(BUILDTYPE) $@ 97