This repository has been archived by the owner on Sep 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathtests.mk
158 lines (119 loc) · 7.01 KB
/
tests.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# LIBTRANSISTOR TESTS
libtransistor_TESTS := malloc bsd_ai_packing bsd sfdnsres nv helloworld hid hexdump args ssp stdin vi gpu display am sqfs_img audio_output init_fini_arrays ipc_server pthread ipc_fs fs_stress cpp unwind cpp_exceptions cpp_dynamic_memory hid_init_stress usb usb_serial thread mutex override_heap condvar # fs_release_inodes
libtransistor_DYNAMIC_TESTS := simple dlfcn bad_resolution preemption elf
# RUN RULES
run_tests: run_helloworld_test run_hexdump_test run_malloc_test run_bsd_ai_packing_test run_bsd_test run_sfdnsres_test run_init_fini_arrays_test run_ipc_fs_test run_fs_stress_test run_cpp_test run_unwind_test run_cpp_exceptions_test run_cpp_dynamic_memory_test run_thread_test run_mutex_test run_override_heap_test run_dynamic_simple_test run_dynamic_bad_resolution_test run_dynamic_preemption_test # run_fs_releases_inodes_test
run_bsd_test: $(BUILD_DIR)/test/test_bsd.nro $(SOURCE_ROOT)/test_helpers/bsd.rb
$(RUBY) $(SOURCE_ROOT)/test_helpers/bsd.rb $(MEPHISTO)
run_sfdnsres_test: $(BUILD_DIR)/test/test_sfdnsres.nro
$(MEPHISTO) --enable-sockets --initialize-memory --load-nro $<
run_ssp_test: $(BUILD_DIR)/test/test_ssp.nro
$(MEPHISTO) --enable-sockets --initialize-memory --load-nro $<
run_fs_stress_test: $(BUILD_DIR)/test/test_fs_stress.nro
mkdir -p $(BUILD_DIR)/SwitchFS/SDCard/
echo "test text" > $(BUILD_DIR)/SwitchFS/SDCard/test_file
cd $(BUILD_DIR); $(realpath $(MEPHISTO)) --initialize-memory --load-nro $(realpath $<)
run_ipc_fs_test: $(BUILD_DIR)/test/test_fs_stress.nro
mkdir -p $(BUILD_DIR)/SwitchFS/SDCard/
echo "test text" > $(BUILD_DIR)/SwitchFS/SDCard/test_file
cd $(BUILD_DIR); $(realpath $(MEPHISTO)) --initialize-memory --load-nro $(realpath $<)
run_%_test: $(BUILD_DIR)/test/test_%.nro
$(MEPHISTO) --initialize-memory --load-nro $<
run_dynamic_%_test: $(BUILD_DIR)/test/dynamic/test_%.nro
$(MEPHISTO) --initialize-memory --load-nro $<
run_dynamic_bad_resolution_test: $(BUILD_DIR)/test/dynamic/test_bad_resolution.nro
$(MEPHISTO) --initialize-memory --load-nro $<; test $$? -eq 221
# LINK RULES
$(BUILD_DIR)/test/dynamic/test_simple.nro.so: \
$(BUILD_DIR)/test/dynamic/test_simple.o \
$(BUILD_DIR)/test/dynamic/test_simple.squashfs.o \
$(BUILD_DIR)/test/dynamic/libdynamic_simple.so \
$(BUILD_DIR)/test/dynamic/libdynamic_simple.nro \
$(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/dynamic/test_simple.squashfs.o $(LIBTRANSISTOR_NRO_LDFLAGS) -L $(realpath $(BUILD_DIR)/test/dynamic)/ -ldynamic_simple
$(BUILD_DIR)/test/dynamic/test_elf.nro.so: \
$(BUILD_DIR)/test/dynamic/test_simple.o \
$(BUILD_DIR)/test/dynamic/test_elf.squashfs.o \
$(BUILD_DIR)/test/dynamic/libdynamic_simple.so \
$(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/dynamic/test_elf.squashfs.o $(LIBTRANSISTOR_NRO_LDFLAGS) -L $(realpath $(BUILD_DIR)/test/dynamic)/ -ldynamic_simple
$(BUILD_DIR)/test/dynamic/test_preemption.nro.so: \
$(BUILD_DIR)/test/dynamic/test_preemption.o \
$(BUILD_DIR)/test/dynamic/test_preemption.squashfs.o \
$(BUILD_DIR)/test/dynamic/libdynamic_preemption.so \
$(BUILD_DIR)/test/dynamic/libdynamic_preemption.nro \
$(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/dynamic/test_preemption.squashfs.o $(LIBTRANSISTOR_NRO_LDFLAGS) -L $(realpath $(BUILD_DIR)/test/dynamic)/ -ldynamic_preemption
# link this test against libdynamic_simple, but give it libdynamic_bad_resolution
# at runtime
$(BUILD_DIR)/test/dynamic/test_bad_resolution.nro.so: \
$(BUILD_DIR)/test/dynamic/test_bad_resolution.o \
$(BUILD_DIR)/test/dynamic/test_bad_resolution.squashfs.o \
$(BUILD_DIR)/test/dynamic/libdynamic_bad_resolution.so \
$(BUILD_DIR)/test/dynamic/bad_resolution/libdynamic_simple.nro \
$(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/dynamic/test_bad_resolution.squashfs.o $(LIBTRANSISTOR_NRO_LDFLAGS) -L $(realpath $(BUILD_DIR)/test/dynamic)/ -ldynamic_simple
$(BUILD_DIR)/test/dynamic/test_dlfcn.nro.so: \
$(BUILD_DIR)/test/dynamic/test_dlfcn.o \
$(BUILD_DIR)/test/dynamic/test_dlfcn.squashfs.o \
$(BUILD_DIR)/test/dynamic/libdynamic_dlfcn.so \
$(BUILD_DIR)/test/dynamic/libdynamic_dlfcn.nro \
$(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/dynamic/test_dlfcn.squashfs.o $(LIBTRANSISTOR_NRO_LDFLAGS) -L $(realpath $(BUILD_DIR)/test/dynamic)/
$(BUILD_DIR)/test/test_%.nro.so: $(BUILD_DIR)/test/test_%.o $(BUILD_DIR)/test/test_%.squashfs.o $(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/test_$*.squashfs.o $(LIBTRANSISTOR_NRO_LDFLAGS)
$(BUILD_DIR)/test/test_%.nso.so: $(BUILD_DIR)/test/test_%.o $(BUILD_DIR)/test/test_%.squashfs.o $(DIST)
mkdir -p $(@D)
$(LD) $(LD_FLAGS) -o $@ $< $(BUILD_DIR)/test/test_$*.squashfs.o $(LIBTRANSISTOR_NSO_LDFLAGS)
$(BUILD_DIR)/test/dynamic/libdynamic_%.so: $(BUILD_DIR)/test/dynamic/libdynamic_%.o $(DIST)
mkdir -p $(@D)
$(LD) $(LD_SHARED_LIBRARY_FLAGS) -o $@ $< -ltransistor.lib.nro $(LIBTRANSISTOR_LIB_LDFLAGS)
$(BUILD_DIR)/test/dynamic/libdynamic_%.nro: $(BUILD_DIR)/test/dynamic/libdynamic_%.so
$(PYTHON3) $(LIBTRANSISTOR_HOME)/tools/elf2nxo.py $< $@ nro
# compile libdynamic_bad_resolution, but name it libdynamic_simple
$(BUILD_DIR)/test/dynamic/bad_resolution/libdynamic_simple.nro: $(BUILD_DIR)/test/dynamic/libdynamic_bad_resolution.so
mkdir -p $(@D)
$(PYTHON3) $(LIBTRANSISTOR_HOME)/tools/elf2nxo.py $< $@ nro
# BUILD RULES
$(BUILD_DIR)/test/%.o $(BUILD_DIR)/test/%.d: $(SOURCE_ROOT)/test/%.c $(DIST)
mkdir -p $(@D)
$(CC) $(CC_FLAGS) $(libtransistor_WARNINGS) -MMD -MP -c -o $(BUILD_DIR)/test/$*.o $<
$(BUILD_DIR)/test/%.o $(BUILD_DIR)/test/%.d: $(SOURCE_ROOT)/test/%.cpp $(DIST)
mkdir -p $(@D)
$(CXX) $(CXX_FLAGS) $(libtransistor_WARNINGS) -MMD -MP -c -o $(BUILD_DIR)/test/$*.o $<
#include $(addprefix $(BUILD_DIR)/test/test_,$(addsuffix .d,$(libtransistor_TESTS)))
# SQUASHFS RULES
$(BUILD_DIR)/test/%.squashfs.o: $(BUILD_DIR)/test/%.squashfs $(LIBTRANSISTOR_HOME)/fs.T
mkdir -p $(@D)
$(LD) -s -r -b binary -m aarch64elf -T $(LIBTRANSISTOR_HOME)/fs.T -o $@ $<
$(BUILD_DIR)/empty_file:
touch $@
$(BUILD_DIR)/test/dynamic/test_bad_resolution.squashfs: $(BUILD_DIR)/test/dynamic/bad_resolution/libdynamic_simple.nro
mkdir -p $(@D)
mksquashfs $^ $@ -comp xz -nopad -noappend
$(BUILD_DIR)/test/dynamic/test_elf.squashfs: $(BUILD_DIR)/test/dynamic/libdynamic_simple.so
mkdir -p $(@D)
mksquashfs $^ $@ -comp xz -nopad -noappend
$(BUILD_DIR)/test/dynamic/test_%.squashfs: $(BUILD_DIR)/test/dynamic/libdynamic_%.nro
mkdir -p $(@D)
mksquashfs $^ $@ -comp xz -nopad -noappend
$(BUILD_DIR)/test/test_%.squashfs: $(LIBTRANSISTOR_HOME)/test/fs_test_%/*
mkdir -p $(@D)
mksquashfs $^ $@ -comp xz -nopad -noappend
$(BUILD_DIR)/test/test_%.squashfs: $(BUILD_DIR)/empty_file
mkdir -p $(@D)
mksquashfs $^ $@ -comp xz -nopad -noappend
# CLEAN RULES
clean_test:
rm -rf $(BUILD_DIR)/test
# add tests to default target
default: \
$(addprefix $(BUILD_DIR)/test/test_,$(addsuffix .nro,$(libtransistor_TESTS))) \
$(addprefix $(BUILD_DIR)/test/test_,$(addsuffix .nso,$(libtransistor_TESTS))) \
$(addprefix $(BUILD_DIR)/test/dynamic/test_,$(addsuffix .nro,$(libtransistor_DYNAMIC_TESTS))) \