Subzero: 'make presubmit' checks for certain prerequisites.
A fresh checkout of native_client lacks some components that Subzero's "make -f Makefile.standalone presubmit" needs.
Add explicit checks for these components, and when missing, print suggestions for how to create them.
BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4359
R=jpp@chromium.org, smklein@chromium.org
Review URL: https://codereview.chromium.org/1782343003 .
diff --git a/Makefile.standalone b/Makefile.standalone
index 95f3093..3c2350f 100644
--- a/Makefile.standalone
+++ b/Makefile.standalone
@@ -337,7 +337,7 @@
sb:
@echo "Skipping pnacl-sz.*.nexe: TSAN isn't supported under NaCl."
else
-sb: $(NEXES) sb_make_symlink
+sb: $(NEXES) sb_make_symlink exists-sbtc
endif
# SHOW_BUILD_ATTS is an executable that is run to show what build
@@ -360,7 +360,8 @@
$(SB_FINALIZE) -o $@ $<
.PHONY: all compile_only make_symlink runtime bloat sb docs help \
- help-check-lit help-check-xtest
+ help-check-lit help-check-xtest exists-nonsfi-x8632 \
+ exists-nonsfi-arm32 exists-sbtc exists-spec
compile_only: $(OBJS)
@@ -467,7 +468,8 @@
check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
@echo "Crosstests disabled, minimal build"
else
-check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
+check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime \
+ exists-nonsfi-x8632 exists-nonsfi-arm32
# Do all native/sse2 tests, but only test_vector_ops for native/sse4.1.
# For (slow) sandboxed tests, limit to Om1/sse4.1.
# run.py (used to run the sandboxed xtests) does not support
@@ -524,11 +526,51 @@
$(SPECBUILDONLY) || ( cd ../../../tests/spec2k; \
./run_all.sh RunTimedBenchmarks $(SETUP) train $< )
-check-spec: $(ALLSPEC:=.spec2k)
+check-spec: exists-spec $(ALLSPEC:=.spec2k)
check: check-lit check-unit check-xtest
-check-presubmit presubmit:
+NONSFI_LOADER_X8632 = \
+ $(NACL_ROOT)/scons-out/opt-linux-x86-32/obj/src/nonsfi/loader/nonsfi_loader
+NONSFI_LOADER_ARM32 = \
+ $(NACL_ROOT)/scons-out/opt-linux-arm/obj/src/nonsfi/loader/nonsfi_loader
+SBTC_LIBFILE = $(SB_LLVM_PATH)/lib/libLLVMSupport.a
+SPEC_SAMPLE_PEXE = $(NACL_ROOT)/tests/spec2k/176.gcc/gcc.opt.stripped.pexe
+
+exists-nonsfi-x8632:
+ @if [ ! -f $(NONSFI_LOADER_X8632) ] ; then \
+ echo "Missing file $(NONSFI_LOADER_X8632)"; \
+ echo "Consider running 'scons nonsfi_loader'" \
+ "in the native_client directory."; \
+ exit 1 ; \
+ fi
+
+exists-nonsfi-arm32:
+ @if [ ! -f $(NONSFI_LOADER_ARM32) ] ; then \
+ echo "Missing file $(NONSFI_LOADER_ARM32)"; \
+ echo "Consider running 'scons platform=arm32 nonsfi_loader'" \
+ "in the native_client directory."; \
+ exit 1 ; \
+ fi
+
+exists-sbtc:
+ @if [ ! -f $(SBTC_LIBFILE) ] ; then \
+ echo "Missing file $(SBTC_LIBFILE)"; \
+ echo "Consider running 'toolchain_build_pnacl.py --build-sbtc'."; \
+ exit 1 ; \
+ fi
+
+exists-spec:
+ @if [ ! -f $(SPEC_SAMPLE_PEXE) ] ; then \
+ echo "Missing file $(SPEC_SAMPLE_PEXE)"; \
+ echo "Consider running" \
+ "'run_all.sh BuildBenchmarks 0 SetupPnaclX8632Opt'" \
+ "in the native_client/tests/spec2k directory."; \
+ exit 1 ; \
+ fi
+
+check-presubmit presubmit: exists-nonsfi-x8632 exists-nonsfi-arm32 \
+ exists-sbtc exists-spec
# Make sure clang-format gets run.
+make -f Makefile.standalone format
# Verify MINIMAL build, plus proper usage of REQUIRES in lit tests.
@@ -618,4 +660,4 @@
$(OBJDIR) $(SB_OBJDIR) $(SBB_OBJDIR) build/*.bloat.json
clean-all: clean
- rm -rf build/ crosstest/Output/
+ rm -rf build/ crosstest/Output/