2015-09-07 20:07:48 +00:00
|
|
|
CFLAGS += -Wall -Werror -Wno-unused-function -g
|
2017-06-25 02:11:35 +00:00
|
|
|
CFLAGS += -D__USE_MINGW_ANSI_STDIO=1
|
2016-11-19 09:17:48 +00:00
|
|
|
CFLAGS += -L ../../ -I ../../include
|
Unit testing in CI (#651)
- in appveyor, install clang and cmake in cygwin, enable package upgrades, and build cmocka and enable testing for gcc only
- in `gitignore`, ignore generated cmocka folder
- in travis, use brew in osx to install cmocka, and enable testing for gcc and clang on os x and linux
- in `Makefile`, change to use `uname -s` to determine os type
- make `install-cmocka-linux.sh`, a simple shell script to download and install cmocka on linux
- in `bindings/Makefile`, enable `make -c` to call subdirectory makefiles instead of `cd [dir] && make` and include environment variables for runtime access to generated libraries
- in `samples/Makefile`, change to use `uname -s` to determine os type, remove `clean_bins` from `all` command, and include `Werror` for compile strictness
- in `tests/unit/Makefile`, add `cflags` for compile time access to cmocka headers and library, include execute vars for runtime access to cmocka and unicorn libs
- in `tests/unit/test_tb_x86.c`, comment out assert that would not compile
2016-10-21 16:21:10 +00:00
|
|
|
CFLAGS += -L ../../cmocka/src -I ../../cmocka/include
|
2020-01-14 14:45:48 +00:00
|
|
|
CFLAGS += -L /usr/local/lib -I /usr/local/include
|
2017-06-25 02:14:22 +00:00
|
|
|
ASFLAGS += --32
|
|
|
|
OBJCOPY = objcopy
|
2015-09-04 01:52:41 +00:00
|
|
|
|
2016-12-26 06:16:56 +00:00
|
|
|
UNAME_S := $(shell uname -s)
|
2020-01-14 14:45:48 +00:00
|
|
|
LDLIBS += -pthread
|
2016-12-26 06:16:56 +00:00
|
|
|
ifeq ($(UNAME_S), Linux)
|
2020-01-14 14:45:48 +00:00
|
|
|
LDLIBS += -lrt
|
2017-06-25 02:14:22 +00:00
|
|
|
else ifeq ($(UNAME_S), Darwin)
|
|
|
|
OBJCOPY = gobjcopy
|
|
|
|
ASFLAGS = -arch i386
|
2016-12-26 06:16:56 +00:00
|
|
|
endif
|
|
|
|
|
2017-01-21 14:22:09 +00:00
|
|
|
LDLIBS += -lcmocka -lunicorn
|
2016-12-26 06:16:56 +00:00
|
|
|
|
2016-11-19 09:17:48 +00:00
|
|
|
EXECUTE_VARS = LD_LIBRARY_PATH=../../cmocka/src:../../ DYLD_LIBRARY_PATH=../../
|
2016-08-21 01:47:45 +00:00
|
|
|
|
2016-04-20 22:38:27 +00:00
|
|
|
ifeq ($(UNICORN_ASAN),yes)
|
|
|
|
CC = clang -fsanitize=address -fno-omit-frame-pointer
|
|
|
|
CXX = clang++ -fsanitize=address -fno-omit-frame-pointer
|
|
|
|
AR = llvm-ar
|
|
|
|
LDFLAGS := -fsanitize=address ${LDFLAGS}
|
|
|
|
endif
|
|
|
|
|
2016-11-19 09:17:48 +00:00
|
|
|
ALL_TESTS_SOURCES = $(wildcard *.c)
|
2017-06-25 02:14:22 +00:00
|
|
|
TEST_ASSEMBLY = $(wildcard *.s)
|
|
|
|
TEST_PROGS = $(TEST_ASSEMBLY:%.s=%.o)
|
|
|
|
TEST_BINS = $(TEST_PROGS:%.o=%.bin)
|
2016-11-19 09:17:48 +00:00
|
|
|
ALL_TESTS = $(ALL_TESTS_SOURCES:%.c=%)
|
2015-09-04 01:52:41 +00:00
|
|
|
|
2015-09-07 19:05:55 +00:00
|
|
|
.PHONY: all
|
2017-06-25 02:14:22 +00:00
|
|
|
all: ${TEST_BINS} ${ALL_TESTS}
|
2015-09-04 01:52:41 +00:00
|
|
|
|
2015-09-07 19:05:55 +00:00
|
|
|
.PHONY: clean
|
2015-09-04 01:52:41 +00:00
|
|
|
clean:
|
2017-06-25 02:14:22 +00:00
|
|
|
rm -rf ${TEST_BINS} ${ALL_TESTS}
|
|
|
|
|
|
|
|
%.bin: %.o
|
|
|
|
${OBJCOPY} -O binary $^ $@
|
|
|
|
hexdump -C $@
|
2015-09-04 01:52:41 +00:00
|
|
|
|
2015-09-07 19:05:55 +00:00
|
|
|
.PHONY: test
|
2017-06-25 02:14:22 +00:00
|
|
|
test: all
|
Unit testing in CI (#651)
- in appveyor, install clang and cmake in cygwin, enable package upgrades, and build cmocka and enable testing for gcc only
- in `gitignore`, ignore generated cmocka folder
- in travis, use brew in osx to install cmocka, and enable testing for gcc and clang on os x and linux
- in `Makefile`, change to use `uname -s` to determine os type
- make `install-cmocka-linux.sh`, a simple shell script to download and install cmocka on linux
- in `bindings/Makefile`, enable `make -c` to call subdirectory makefiles instead of `cd [dir] && make` and include environment variables for runtime access to generated libraries
- in `samples/Makefile`, change to use `uname -s` to determine os type, remove `clean_bins` from `all` command, and include `Werror` for compile strictness
- in `tests/unit/Makefile`, add `cflags` for compile time access to cmocka headers and library, include execute vars for runtime access to cmocka and unicorn libs
- in `tests/unit/test_tb_x86.c`, comment out assert that would not compile
2016-10-21 16:21:10 +00:00
|
|
|
${EXECUTE_VARS} ./test_sanity
|
|
|
|
${EXECUTE_VARS} ./test_x86
|
|
|
|
${EXECUTE_VARS} ./test_mem_map
|
|
|
|
${EXECUTE_VARS} ./test_mem_map_ptr
|
|
|
|
${EXECUTE_VARS} ./test_mem_high
|
|
|
|
${EXECUTE_VARS} ./test_multihook
|
|
|
|
${EXECUTE_VARS} ./test_pc_change
|
|
|
|
${EXECUTE_VARS} ./test_hookcounts
|
2016-11-19 09:17:48 +00:00
|
|
|
echo "skipping test_tb_x86"
|
|
|
|
echo "skipping test_x86_soft_paging"
|
|
|
|
echo "skipping test_hang"
|
|
|
|
echo "skipping test_x86_sh1_enter_leave"
|
|
|
|
echo "skipping test_x86_rip_bug"
|