Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: Makefile

Issue 206463007: change default build (in "make" wrapper) to ninja on all platforms (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | gyp/common_conditions.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Makefile that wraps the Gyp and build steps for Unix and Mac (but not Windows) 1 # Makefile that wraps the Gyp and build steps for Unix and Mac (but not Windows)
2 # Uses "make" to build on Unix, and "xcodebuild" to build on Mac. 2 # Uses "ninja" to build the code.
3 # 3 #
4 # Some usage examples (tested on both Linux and Mac): 4 # Some usage examples (tested on both Linux and Mac):
5 # 5 #
6 # # Clean everything 6 # # Clean everything
7 # make clean 7 # make clean
8 # 8 #
9 # # Build and run tests (in Debug mode) 9 # # Build and run tests (in Debug mode)
10 # make tests 10 # make tests
11 # out/Debug/tests 11 # out/Debug/tests
12 # 12 #
(...skipping 16 matching lines...) Expand all
29 29
30 SKIA_OUT ?= out 30 SKIA_OUT ?= out
31 BUILDTYPE ?= Debug 31 BUILDTYPE ?= Debug
32 CWD := $(shell pwd) 32 CWD := $(shell pwd)
33 33
34 # Soon we should be able to get rid of VALID_TARGETS, and just pass control 34 # Soon we should be able to get rid of VALID_TARGETS, and just pass control
35 # to the gyp-generated Makefile for *any* target name. 35 # to the gyp-generated Makefile for *any* target name.
36 # But that will be a bit complicated, so let's keep it for a future CL. 36 # But that will be a bit complicated, so let's keep it for a future CL.
37 # Tracked as https://code.google.com/p/skia/issues/detail?id=947 ('eliminate 37 # Tracked as https://code.google.com/p/skia/issues/detail?id=947 ('eliminate
38 # need for VALID_TARGETS in toplevel Makefile') 38 # need for VALID_TARGETS in toplevel Makefile')
39 #
40 # TODO(epoger): I'm not sure if the above comment is still valid in a ninja
41 # world.
39 VALID_TARGETS := \ 42 VALID_TARGETS := \
40 bench \ 43 bench \
41 debugger \ 44 debugger \
42 everything \ 45 everything \
43 gm \ 46 gm \
44 most \ 47 most \
45 pathops_unittest \ 48 pathops_unittest \
46 pdfviewer \ 49 pdfviewer \
47 SampleApp \ 50 SampleApp \
48 SampleApp_APK \ 51 SampleApp_APK \
49 skhello \ 52 skhello \
50 skia_lib \ 53 skia_lib \
51 skpskgr_test \ 54 skpskgr_test \
52 tests \ 55 tests \
53 tools \ 56 tools \
54 skpdiff 57 skpdiff
55 58
56 # Default target. This must be listed before all other targets. 59 # Default target. This must be listed before all other targets.
57 .PHONY: default 60 .PHONY: default
58 default: most 61 default: most
59 62
60 # As noted in http://code.google.com/p/skia/issues/detail?id=330 , building 63 # As noted in http://code.google.com/p/skia/issues/detail?id=330 , building
61 # multiple targets in parallel was failing. The special .NOTPARALLEL target 64 # multiple targets in parallel was failing. The special .NOTPARALLEL target
62 # tells gnu make not to run targets within _this_ Makefile in parallel, but the 65 # tells gnu make not to run targets within this Makefile in parallel.
63 # recursively invoked Makefile within out/ _is_ allowed to run in parallel 66 # Targets that ninja builds at this Makefile's behest should not be affected.
64 # (so you can still get some speedup that way).
65 .NOTPARALLEL: 67 .NOTPARALLEL:
66 68
67 uname := $(shell uname) 69 uname := $(shell uname)
68 ifneq (,$(findstring CYGWIN, $(uname))) 70 ifneq (,$(findstring CYGWIN, $(uname)))
69 $(error Cannot build using Make on Windows. See https://sites.google.com/site/ skiadocs/user-documentation/quick-start-guides/windows) 71 $(error Cannot build using Make on Windows. See https://sites.google.com/site/ skiadocs/user-documentation/quick-start-guides/windows)
70 endif 72 endif
71 73
72 # If user requests "make all", chain to our explicitly-declared "everything" 74 # If user requests "make all", chain to our explicitly-declared "everything"
73 # target. See https://code.google.com/p/skia/issues/detail?id=932 ("gyp 75 # target. See https://code.google.com/p/skia/issues/detail?id=932 ("gyp
74 # automatically creates "all" target on some build flavors but not others") 76 # automatically creates "all" target on some build flavors but not others")
75 .PHONY: all 77 .PHONY: all
76 all: everything 78 all: everything
77 79
78 .PHONY: clean 80 .PHONY: clean
79 clean: 81 clean:
80 rm -rf out xcodebuild 82 rm -rf out xcodebuild
81 ifneq (out, $(SKIA_OUT)) 83 ifneq (out, $(SKIA_OUT))
82 rm -rf $(SKIA_OUT) 84 rm -rf $(SKIA_OUT)
83 endif 85 endif
84 86
85 # Run gyp no matter what. 87 # Run gyp no matter what.
86 .PHONY: gyp 88 .PHONY: gyp
87 gyp: 89 gyp:
88 $(CWD)/gyp_skia 90 $(CWD)/gyp_skia
89 91
90 # Run gyp if necessary.
91 #
92 # On Linux, only run gyp if we haven't already generated the platform-specific
93 # Makefiles. If the underlying gyp configuration has changed since these
94 # Makefiles were generated, they will rerun gyp on their own.
95 #
96 # This does not work for Mac, though... so for now, we ALWAYS rerun gyp on Mac.
97 # TODO(epoger): Figure out a better solution for Mac... maybe compare the
98 # gypfile timestamps to the xcodebuild project timestamps?
99 .PHONY: gyp_if_needed
100 gyp_if_needed:
101 ifneq (,$(findstring Linux, $(uname)))
102 $(MAKE) $(SKIA_OUT)/Makefile
103 endif
104 ifneq (,$(findstring Darwin, $(uname)))
105 $(CWD)/gyp_skia
106 endif
107
108 $(SKIA_OUT)/Makefile:
109 $(CWD)/gyp_skia
110
111 # For all specific targets: run gyp if necessary, and then pass control to 92 # For all specific targets: run gyp if necessary, and then pass control to
112 # the gyp-generated buildfiles. 93 # the gyp-generated buildfiles.
113 #
114 # For the Mac, we create a convenience symlink to the generated binary.
115 .PHONY: $(VALID_TARGETS) 94 .PHONY: $(VALID_TARGETS)
116 $(VALID_TARGETS):: gyp_if_needed 95 $(VALID_TARGETS):: gyp
117 ifneq (,$(findstring skia_os=android, $(GYP_DEFINES))) 96 » ninja -C $(SKIA_OUT)/$(BUILDTYPE) $@
118 » $(MAKE) -C $(SKIA_OUT) $@ BUILDTYPE=$(BUILDTYPE)
119 else ifneq (,$(findstring Linux, $(uname)))
120 » $(MAKE) -C $(SKIA_OUT) $@ BUILDTYPE=$(BUILDTYPE)
121 else ifneq (,$(findstring make, $(GYP_GENERATORS)))
122 » $(MAKE) -C $(SKIA_OUT) $@ BUILDTYPE=$(BUILDTYPE)
123 else ifneq (,$(findstring Darwin, $(uname)))
124 » rm -f out/$(BUILDTYPE) || if test -d out/$(BUILDTYPE); then echo "run 'm ake clean' or otherwise delete out/$(BUILDTYPE)"; exit 1; fi
125 » xcodebuild -project out/gyp/$@.xcodeproj -configuration $(BUILDTYPE)
126 » ln -s $(CWD)/xcodebuild/$(BUILDTYPE) out/$(BUILDTYPE)
127 else
128 » echo "unknown platform $(uname)"
129 » exit 1
130 endif
OLDNEW
« no previous file with comments | « no previous file | gyp/common_conditions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698