-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy pathMakefile
More file actions
60 lines (47 loc) · 1.6 KB
/
Makefile
File metadata and controls
60 lines (47 loc) · 1.6 KB
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
CC = gcc
CFLAGS = -std=gnu11 -Wall -g -pthread
OBJS = list.o threadpool.o merge_sort.o main.o
.PHONY: all clean test
$(GIT_HOOKS):
@scripts/install-git-hooks
@echo
GIT_HOOKS := .git/hooks/applied
all: $(GIT_HOOKS) sort tools/util-average
$(GIT_HOOKS):
@scripts/install-git-hooks
@echo
deps := $(OBJS:%.o=.%.o.d)
%.o: %.c
$(CC) $(CFLAGS) -o $@ -MMD -MF .$@.d -c $<
sort: $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS) -rdynamic
genData:
uniq test_data/words.txt | sort -R > test_data/input.txt
tools/util-average: tools/util-average.c
$(CC) $(CFLAGS) -o $@ $<
# Default variables for auto testing
THREADS ?= 4
TEST_DATA_FILE ?= /tmp/test_number.txt
NUM_OF_DATA ?= 1024
SORTED_DATA_FILE ?= $(TEST_DATA_FILE).sorted
SORTED_RESULT ?= /tmp/sort_result.txt
ITERATIONS ?= 100
check: sort
# Generate testing data
@bash scripts/gen-random-numbers.sh $(NUM_OF_DATA) $(TEST_DATA_FILE)
# Sort the testing data first to generate ground truth
@sort -g $(TEST_DATA_FILE) > $(SORTED_DATA_FILE)
# Time for user program to sort the testing data, and ignore first the 3 lines of output.
# Because we only want the sorting result.
@./sort $(THREADS) $(TEST_DATA_FILE) | tail -n +4 > $(SORTED_RESULT)
@bash scripts/compare.sh $(SORTED_DATA_FILE) $(SORTED_RESULT)
repeat-test: sort tools/util-average
# Generate testing data
@bash scripts/gen-random-numbers.sh $(NUM_OF_DATA) $(TEST_DATA_FILE)
@echo 3 | sudo tee /proc/sys/vm/drop_caches
@bash scripts/repeat-test.sh $(THREADS) $(TEST_DATA_FILE) $(ITERATIONS)
@./tools/util-average ./out/repeat-test-result.dat
clean:
rm -f $(OBJS) sort
@rm -rf $(deps)
-include $(deps)