| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # GNU Makefile based on shared rules provided by the Native Client SDK. |
| # See README.Makefiles for more details. |
| |
| # In order to build with newlib by default change "pnacl newlib" to |
| # "newlib pnacl" or use make VAILD_TOOLCHAINS=newlib. |
| VALID_TOOLCHAINS := pnacl newlib |
| |
| TOP_SRCDIR = $(CURDIR)/../.. |
| include $(TOP_SRCDIR)/third-party/settings.mk |
| |
| # The directory where the NaCl code to test is. |
| CODE_DIR = ../../unpacker/cpp |
| |
| include $(NACL_SDK_ROOT)/tools/common.mk |
| |
| # For NaCl use 'newlib/[Release|Debug]/module.nmf' as pathToNmfFile and |
| # 'application/x-nacl' as mimeType. |
| # For PNaCl use 'pnacl/[Release|Debug]/module.nmf' as pathToNmfFile and |
| # and 'application/x-pnacl' as mimeType. |
| TEST_PAGE = index.html |
| |
| # By default CONFIG is Release, but in case of using a rule that contains the |
| # "debug" string it will be set to Debug. See $NACL_SDK_ROOT/tools/common.mk. |
| TEST_PAGE_CONFIG = \ |
| "$(TEST_PAGE)?pathToNmfFile=pnacl/$(CONFIG)/main.nmf&mimeType=application/x-pnacl" |
| |
| TARGET = main |
| LIBS = ppapi_simple_cpp nacl_io ppapi_cpp ppapi pthread |
| |
| GTEST_SRC = $(NACL_SDK_ROOT)/src/gtest |
| |
| CFLAGS = -Wall -Wno-sign-compare -I$(CODE_DIR) -I$(GTEST_SRC) -I$(GTEST_SRC)/include |
| SOURCES = \ |
| $(GTEST_SRC)/src/gtest-all.cc \ |
| fake_lib_archive.cc \ |
| fake_volume_reader.cc \ |
| main.cc \ |
| $(CODE_DIR)/request.cc \ |
| request_test.cc \ |
| $(CODE_DIR)/volume.cc \ |
| volume_test.cc \ |
| $(CODE_DIR)/volume_archive_libarchive.cc \ |
| volume_archive_libarchive_read_test.cc \ |
| volume_archive_libarchive_test.cc \ |
| $(CODE_DIR)/volume_reader_javascript_stream.cc \ |
| volume_reader_javascript_stream_test.cc |
| |
| # Build rules generated by macros from common.mk: |
| |
| $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) |
| |
| # The PNaCl workflow uses both an unstripped and finalized/stripped binary. |
| # On NaCl, only produce a stripped binary for Release configs (not Debug). |
| ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG)))) |
| $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS))) |
| $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) |
| else |
| $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) |
| endif |
| |
| $(eval $(call NMF_RULE,$(TARGET),)) |
| |
| # Run tests. By default it will run the Release tests, but if used as a |
| # dependency rule to debug_tests_run then it will run the Debug tests. |
| # In case tests are run for desktop Chrome build, the window is automatically |
| # closed, but not for Chrome OS build. For Chrome OS build, it has to be closed |
| # manually. |
| # -disable-setuid-sandbox is optional, but otherwise it is necessary to set up |
| # the sandbox for development. See |
| # https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md |
| .PHONY: tests_run |
| tests_run: check_for_chrome all $(TEST_PAGE) |
| $(RUN_PY) -C $(CURDIR) -P $(TEST_PAGE_CONFIG) \ |
| $(addprefix -E ,$(CHROME_ENV)) -- $(CHROME_PATH_ESCAPE) \ |
| $(CHROME_ARGS) --disable-setuid-sandbox \ |
| --register-pepper-plugins="$(PPAPI_DEBUG),$(PPAPI_RELEASE)" |
| |
| # Run Debug tests. Every rule that contains "debug" will build and use the |
| # debug executables (see #line 113 from $NACL_SDK_ROOT/tools/common.mk with |
| # findstring). |
| .PHONY: debug_tests_run |
| debug_tests_run: tests_run |