aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/Makefile
blob: d2d83099b7664548e3c1cd31f8c0d795ae0243c6 (plain)
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
TARGET = make_nm normalize_prefix bad_address misc cvt_test cvt_test32 noexception misc32 detect_x32
XBYAK_INC=../xbyak/xbyak.h ../xbyak/xbyak_mnemonic.h
UNAME_S=$(shell uname -s)
ifeq ($(shell ./detect_x32),x32)
X32?=1
endif
BIT=32
ifeq ($(shell uname -m),x86_64)
BIT=64
endif
ONLY_64BIT=0
ifeq ($(UNAME_S),Darwin)
  # 32-bit binary is not supported
  ONLY_64BIT=1
endif
ifeq ($(findstring MINGW64,$(UNAME_S)),MINGW64)
  ONLY_64BIT=1
endif
ifeq ($(ONLY_64BIT),0)
  TARGET += jmp address
endif

ifeq ($(BIT),64)
	TARGET += jmp64 address64 apx
endif

all: $(TARGET)

CFLAGS_WARN=-Wall -Wextra -Wformat=2 -Wcast-qual -Wwrite-strings -Wfloat-equal -Wpointer-arith

CFLAGS=-O2 -Wall -I.. -I. $(CFLAGS_WARN) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) #-std=c++0x
make_nm:
	$(CXX) $(CFLAGS) make_nm.cpp -o $@
normalize_prefix: normalize_prefix.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) normalize_prefix.cpp -o $@
test_mmx: test_mmx.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) test_mmx.cpp -o $@ -lpthread
jmp: jmp.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) jmp.cpp -o $@ -m32
jmp64: jmp.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) jmp.cpp -o $@ -m64
address: address.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) address.cpp -o $@ -m32
address64: address.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) address.cpp -o $@ -m64
bad_address: bad_address.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) bad_address.cpp -o $@
misc: misc.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) misc.cpp -o $@
misc32: misc.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) misc.cpp -o $@ -DXBYAK32
cvt_test: cvt_test.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) $< -o $@
cvt_test32: cvt_test.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) $< -o $@ -DXBYAK32
noexception: noexception.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) $< -o $@ -fno-exceptions
apx: apx.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) apx.cpp -o $@

test_nm: normalize_prefix $(TARGET)
	$(MAKE) -C ../gen
ifneq ($(ONLY_64BIT),1)
	CXX=$(CXX) ./test_nm.sh
	CXX=$(CXX) ./test_nm.sh noexcept
	CXX=$(CXX) ./test_nm.sh Y
	CXX=$(CXX) ./test_nm.sh avx512
	CXX=$(CXX) ./test_address.sh
	./jmp
	./cvt_test32
endif
	./bad_address
	./misc
	./misc32
	./cvt_test
ifeq ($(BIT),64)
	CXX=$(CXX) ./test_address.sh 64
ifneq ($(X32),1)
	CXX=$(CXX) ./test_nm.sh 64
	CXX=$(CXX) ./test_nm.sh Y64
endif
	./jmp64
	./apx
endif

test_avx: normalize_prefix
ifneq ($(ONLY_64BIT),0)
	CXX=$(CXX) ./test_avx.sh
	CXX=$(CXX) ./test_avx.sh Y
endif
ifeq ($(BIT),64)
	CXX=$(CXX) ./test_avx.sh 64
ifneq ($(X32),1)
	CXX=$(CXX) ./test_avx.sh Y64
endif
endif

test_avx512: normalize_prefix
ifneq ($(ONLY_64BIT),0)
	CXX=$(CXX) ./test_avx512.sh
endif
ifeq ($(BIT),64)
	CXX=$(CXX) ./test_avx512.sh 64
endif

detect_x32: detect_x32.c
	$(CC) $< -o $@

test: detect_x32
	$(MAKE) test_nm
	$(MAKE) test_avx
	$(MAKE) test_avx512

clean:
	$(RM) a.asm *.lst *.obj *.o $(TARGET) lib_run nm.cpp nm_frame make_512

lib_run: lib_test.cpp lib_run.cpp lib.h
	$(CXX) $(CFLAGS) lib_run.cpp lib_test.cpp -o lib_run
make_nm: make_nm.cpp $(XBYAK_INC)

.PHONY: test