blob: 0fe6a7a0ebe6c96357409a1ea83003d708dbd361 [file] [edit]
# To compile with -m32
# apt install g++-multilib
CXX_32 = $(CXX) -m32
CXX_64 = $(CXX) -m64
TARGET = make_nm.exe normalize_prefix.exe bad_address.exe misc.exe cvt_test.exe cvt_test32.exe noexception.exe misc32.exe detect_x32.exe avx10_test.exe
XBYAK_INC=../xbyak/xbyak.h ../xbyak/xbyak_mnemonic.h ../xbyak/xbyak_util.h
UNAME_S=$(shell uname -s)
ifeq ($(shell ./detect_x32.exe),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.exe address.exe
endif
ifeq ($(BIT),64)
TARGET += jmp64.exe address64.exe apx.exe
TARGET += sf_test.exe cpumask_test.exe
endif
all: $(TARGET)
CFLAGS_WARN=$(shell cat CFLAGS_WARN.cfg)
CFLAGS=-O2 -Wall -I.. -I. $(CFLAGS_WARN) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) #-std=c++0x
make_nm.exe:
$(CXX) $(CFLAGS) make_nm.cpp -o $@
normalize_prefix.exe: 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.exe: jmp.cpp $(XBYAK_INC)
$(CXX_32) $(CFLAGS) $< -o $@
jmp64.exe: jmp.cpp $(XBYAK_INC)
$(CXX_64) $(CFLAGS) $< -o $@
address.exe: address.cpp $(XBYAK_INC)
$(CXX_32) $(CFLAGS) $< -o $@
address64.exe: address.cpp $(XBYAK_INC)
$(CXX_64) $(CFLAGS) $< -o $@
bad_address.exe: bad_address.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@
misc.exe: misc.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@
misc32.exe: misc.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@ -DXBYAK32
cvt_test.exe: cvt_test.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@
cvt_test32.exe: cvt_test.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@ -DXBYAK32
noexception.exe: noexception.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@ -fno-exceptions
apx.exe: apx.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@
avx10_test.exe: avx10_test.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@ -DXBYAK64
sf_test.exe: sf_test.cpp $(XBYAK_INC) sf_test_win.h sf_test_gcc.h
$(CXX) $(CFLAGS) $< -o $@ #-DXBYAK64
cpumask_test.exe: cpumask_test.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@
TEST_FILES=old.txt bf16.txt comp.txt misc.txt convert.txt minmax.txt saturation.txt apx.txt amx.txt
xed_test: detect_x32.exe
@set -e; \
for target in $(addprefix dataset/, $(TEST_FILES)); do \
./test_by_xed.sh $$target || exit 1; \
done
test_nm: normalize_prefix.exe $(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_address.sh
./jmp.exe
./cvt_test32.exe
endif
./bad_address.exe
./misc.exe
./misc32.exe
./cvt_test.exe
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.exe
./apx.exe
./avx10_test.exe
endif
test_avx: normalize_prefix.exe
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.exe
ifneq ($(ONLY_64BIT),0)
CXX=$(CXX) ./test_avx512.sh
endif
ifeq ($(BIT),64)
CXX=$(CXX) ./test_avx512.sh 64
endif
test_avx10: avx10_test.exe
./avx10_test.exe
detect_x32.exe: detect_x32.c
$(CC) $< -o $@
test: detect_x32.exe
$(MAKE) test_nm
$(MAKE) test_avx
$(MAKE) test_avx512
test_all:
$(MAKE) test
$(MAKE) test_by_xed
update_sf_test: sf_test.cpp
$(CXX) $(CFLAGS) sf_test.cpp -DXBYAK64_WIN -DDUMP -o sf_test_dump.exe && ./sf_test_dump.exe > sf_test_win.h
$(CXX) $(CFLAGS) sf_test.cpp -DXBYAK64_GCC -DDUMP -o sf_test_dump.exe && ./sf_test_dump.exe > sf_test_gcc.h
clean:
$(RM) a.asm *.lst *.obj *.o *.exe $(TARGET) nm.cpp
lib_run.exe: lib_test.cpp lib_run.cpp lib.h detect_x32.exe
$(CXX) $(CFLAGS) lib_run.cpp lib_test.cpp -o lib_run.exe
make_nm.exe: make_nm.cpp make.h $(XBYAK_INC)
.PHONY: test