| OLD | NEW |
| 1 .. _tutorial2: | 1 .. _tutorial2: |
| 2 | 2 |
| 3 ###################################### | 3 ###################################### |
| 4 C++ Tutorial: Getting Started (Part 2) | 4 C++ Tutorial: Getting Started (Part 2) |
| 5 ###################################### | 5 ###################################### |
| 6 | 6 |
| 7 .. contents:: | 7 .. contents:: |
| 8 :local: | 8 :local: |
| 9 :backlinks: none | 9 :backlinks: none |
| 10 :depth: 2 | 10 :depth: 2 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 TARGET = part2 | 62 TARGET = part2 |
| 63 LIBS = ppapi_cpp ppapi | 63 LIBS = ppapi_cpp ppapi |
| 64 | 64 |
| 65 CFLAGS = -Wall | 65 CFLAGS = -Wall |
| 66 SOURCES = hello_tutorial.cc | 66 SOURCES = hello_tutorial.cc |
| 67 | 67 |
| 68 # Build rules generated by macros from common.mk: | 68 # Build rules generated by macros from common.mk: |
| 69 | 69 |
| 70 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) | 70 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) |
| 71 | 71 |
| 72 ifeq ($(CONFIG),Release) | 72 # The PNaCl workflow uses both an unstripped and finalized/stripped binary. |
| 73 # Or, only produce a stripped binary for Release configurations (not Debug). |
| 74 ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG)
))) |
| 73 $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) | 75 $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) |
| 74 $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) | 76 $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) |
| 75 else | 77 else |
| 76 $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) | 78 $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) |
| 77 endif | 79 endif |
| 78 | 80 |
| 79 $(eval $(call NMF_RULE,$(TARGET),)) | 81 $(eval $(call NMF_RULE,$(TARGET),)) |
| 80 | 82 |
| 81 Choosing valid toolchains, and including common.mk | 83 Choosing valid toolchains, and including common.mk |
| 82 -------------------------------------------------- | 84 -------------------------------------------------- |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 Build macros | 177 Build macros |
| 176 ------------ | 178 ------------ |
| 177 | 179 |
| 178 For many projects, the following build macros do not need to be changed; they | 180 For many projects, the following build macros do not need to be changed; they |
| 179 will use the variables we've defined above. | 181 will use the variables we've defined above. |
| 180 | 182 |
| 181 .. naclcode:: | 183 .. naclcode:: |
| 182 | 184 |
| 183 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) | 185 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) |
| 184 | 186 |
| 185 ifeq ($(CONFIG),Release) | 187 ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG)
))) |
| 186 $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) | 188 $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) |
| 187 $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) | 189 $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) |
| 188 else | 190 else |
| 189 $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) | 191 $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) |
| 190 endif | 192 endif |
| 191 | 193 |
| 192 $(eval $(call NMF_RULE,$(TARGET),)) | 194 $(eval $(call NMF_RULE,$(TARGET),)) |
| 193 | 195 |
| 194 The first line defines rules to compile each source in ``SOURCES``, using the | 196 The first line defines rules to compile each source in ``SOURCES``, using the |
| 195 flags in ``CFLAGS``: | 197 flags in ``CFLAGS``: |
| 196 | 198 |
| 197 .. naclcode:: | 199 .. naclcode:: |
| 198 | 200 |
| 199 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) | 201 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) |
| 200 | 202 |
| 201 The next six lines define rules to link the object files into one or more | 203 The next six lines define rules to link the object files into one or more |
| 202 executables. When ``TOOLCHAIN`` is ``pnacl``, there is only one executable | 204 executables. When ``TOOLCHAIN`` is ``pnacl``, there is only one executable |
| 203 generated: in the example above, ``part2.pexe``. When using a NaCl toolchain, | 205 generated: in the example above, ``part2.pexe``. When using a NaCl toolchain, |
| 204 there will be three executables generated, one for each architecture: in the | 206 there will be three executables generated, one for each architecture: in the |
| 205 example above, ``part2_arm.nexe``, ``part2_x86_32.nexe`` and | 207 example above, ``part2_arm.nexe``, ``part2_x86_32.nexe`` and |
| 206 ``part2_x86_64.nexe``. | 208 ``part2_x86_64.nexe``. |
| 207 | 209 |
| 208 When ``CONFIG`` is ``Release``, each executable is also stripped to remove | 210 When ``CONFIG`` is ``Release``, each executable is also stripped to remove |
| 209 debug information and reduce the file size: | 211 debug information and reduce the file size. Otherwise, when the ``TOOLCHAIN`` |
| 212 is ``pnacl``, the workflow involves creating an unstripped binary for debugging |
| 213 and then finalizing it and stripping it for publishing. |
| 210 | 214 |
| 211 .. naclcode:: | 215 .. naclcode:: |
| 212 | 216 |
| 213 ifeq ($(CONFIG),Release) | 217 ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG)
))) |
| 214 $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) | 218 $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) |
| 215 $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) | 219 $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) |
| 216 else | 220 else |
| 217 $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) | 221 $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) |
| 218 endif | 222 endif |
| 219 | 223 |
| 220 Finally, the NMF rule generates a NaCl manifest file (``.nmf``) that references | 224 Finally, the NMF rule generates a NaCl manifest file (``.nmf``) that references |
| 221 each executable generated in the previous step: | 225 each executable generated in the previous step: |
| 222 | 226 |
| 223 .. naclcode:: | 227 .. naclcode:: |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 // postMessage sends a message to it. | 491 // postMessage sends a message to it. |
| 488 common.naclModule.postMessage('hello'); | 492 common.naclModule.postMessage('hello'); |
| 489 } | 493 } |
| 490 | 494 |
| 491 // This function is called by common.js when a message is received from the | 495 // This function is called by common.js when a message is received from the |
| 492 // NaCl module. | 496 // NaCl module. |
| 493 function handleMessage(message) { | 497 function handleMessage(message) { |
| 494 var logEl = document.getElementById('log'); | 498 var logEl = document.getElementById('log'); |
| 495 logEl.textContent += message.data; | 499 logEl.textContent += message.data; |
| 496 } | 500 } |
| OLD | NEW |