| CFLAGS:=-Wno-incompatible-library-redeclaration |
| |
| ifeq ($(NACL_ARCH),arm) |
| QEMU := $(NATIVE_CLIENT_PATH)/toolchain/linux_x86/arm_trusted/run_under_qemu_arm |
| HELPER := ./nacl_helper_bootstrap |
| ARGS := --r_debug=0xXXXXXXXXXXXXXXXX --reserved_at_zero=0xXXXXXXXXXXXXXXXX |
| endif |
| |
| RUN_STATIC_CMD:=$(QEMU) $(HELPER) ./sel_ldr $(ARGS) -a -c -c -Q -B irt_core.nexe |
| |
| define BUILD_STATIC |
| $(call BASIC_LINK_TARGET,$(1)_static.nexe,$(2),$(LD),$(3),$(4)) |
| |
| .PHONY : $(1)_static_test |
| $(1)_static_test : $(1)_static.nexe |
| ifneq ($(V),) |
| @echo "V=$(V)" |
| @echo "**************************************************************" |
| @echo RUN STATIC TEST $(1) |
| @echo "**************************************************************" |
| @echo "" |
| endif |
| $(RUN_STATIC_CMD) $(1)_static.nexe $(5) || (echo "FAILED $(1), non-zero return."; exit 1) |
| ifneq ($(V),) |
| @echo "**************************************************************" |
| @echo "PASSED STATIC $(1)" |
| @echo "**************************************************************" |
| @echo "" |
| endif |
| static_tests: $(basename $(1))_static_test |
| $(basename $(1))_test : $(basename $(1))_static_test |
| endef |
| |
| TEST_C_FILES:= \ |
| micro_hello.c \ |
| libc_hello.c \ |
| glibc_compat.c |
| |
| |
| $(foreach src,$(TEST_C_FILES),$(eval $(call BASIC_COMPILE_TARGET,$(basename $(src)).o,$(SRC_ROOT)/$(src),$(CC),-std=gnu99 -g $(TARGET_COMPILE_ARGS) $(CFLAGS)))) |
| |
| $(eval $(call BUILD_STATIC,micro_hello,micro_hello.o)) |
| $(eval $(call BUILD_STATIC,libc_hello,libc_hello.o,$(INS_ROOT)/crtbeginT.o,$(INS_ROOT)/crtend.o $(INS_ROOT)/libc.a $(INS_ROOT)/libgcc.a)) |
| $(eval $(call BUILD_STATIC,glibc_compat,glibc_compat.o,$(INS_ROOT)/crtbeginT.o,$(INS_ROOT)/crtend.o $(INS_ROOT)/libc.a $(INS_ROOT)/libgcc.a)) |
| |
| # |
| # LINKER TESTS |
| # |
| |
| # Verify R_ARM_COPY happens after local relocations in libdynamic |
| #$(eval $(call BUILD_SO,dynamic.c,-nostdlib)) |
| #$(eval $(call BUILD_DYNAMIC,micro.c,-nostdlib -ldynamic,libdynamic.so)) |
| |
| # Verify re-order of of dependencies Main (A,C); A (B); B (C) puts |
| # C ahead of B. |
| #$(eval $(call BUILD_SO,dyn_c.c,-nostdlib)) |
| #$(eval $(call BUILD_SO,dyn_b.c,-nostdlib -ldyn_c,libdyn_c.so)) |
| #$(eval $(call BUILD_SO,dyn_a.c,-nostdlib -ldyn_b,libdyn_b.so)) |
| #$(eval $(call BUILD_DYNAMIC,order.c,-nostdlib -ldyn_a -ldyn_c,libdyn_a.so)) |
| #$(eval $(call BUILD_BOTH,basic_cpp.cpp,,,1 2 3 4)) |