Added CMake build system (to facilitate Win64 builds)
[tinycc.git] / tests / CMakeLists.txt
blob22a355210671f916141182f3a088afa1713c9342
1 include_directories(${CMAKE_SOURCE_DIR})
3 add_executable(abitest-cc abitest.c)
4 target_link_libraries(abitest-cc libtcc)
5 add_test(NAME abitest-cc WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND abitest-cc lib_path=${CMAKE_BINARY_DIR} include=${CMAKE_SOURCE_DIR}/include)
7 set(ABITEST_TCC abitest-tcc${CMAKE_EXECUTABLE_SUFFIX})
8 get_property(LIBTCC_LIB TARGET libtcc PROPERTY LOCATION)
9 add_custom_command(OUTPUT ${ABITEST_TCC} COMMAND tcc ${TCC_CFLAGS} -I${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/abitest.c ${LIBTCC_LIB} -o ${ABITEST_TCC} DEPENDS abitest.c)
10 add_custom_target(abitest-tcc-exe ALL DEPENDS ${ABITEST_TCC})
12 add_test(NAME abitest-tcc WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${ABITEST_TCC} lib_path=${CMAKE_BINARY_DIR} include=${CMAKE_SOURCE_DIR}/include)
14 add_executable(tcctest-cc tcctest.c)
15 target_link_libraries(tcctest-cc libtcc)
16 set_target_properties(tcctest-cc PROPERTIES INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR};${CMAKE_SOURCE_DIR}/include" COMPILE_FLAGS -std=gnu99)
18 set(TCC_TEST_CFLAGS ${TCC_CFLAGS} -B${CMAKE_BINARY_DIR} -I${CMAKE_BINARY_DIR})
19 if(WIN32)
20   set(TCC_TEST_CFLAGS ${TCC_TEST_CFLAGS} -I${CMAKE_SOURCE_DIR}/win32/include/winapi)
21 endif()
22 set(TCC_TEST_SOURCE ${TCC_TEST_CFLAGS} -run ${CMAKE_CURRENT_SOURCE_DIR}/tcctest.c)
23 set(TCC_TEST_RUN ${TCC_TEST_CFLAGS} -DONE_SOURCE -run ${CMAKE_SOURCE_DIR}/tcc.c)
25 add_custom_command(OUTPUT tcctest.ref COMMAND tcctest-cc > tcctest.ref)
26 add_custom_command(OUTPUT tcctest.1 COMMAND tcc ${TCC_TEST_SOURCE} > tcctest.1)
27 add_custom_command(OUTPUT tcctest.2 COMMAND tcc ${TCC_TEST_RUN} ${TCC_TEST_SOURCE} > tcctest.2)
28 add_custom_command(OUTPUT tcctest.3 COMMAND tcc ${TCC_TEST_RUN} ${TCC_TEST_RUN} ${TCC_TEST_SOURCE} > tcctest.3)
29 add_custom_target(tcctest-ref ALL DEPENDS tcctest.ref tcctest.1 tcctest.2 tcctest.3)
31 find_program(DIFF diff C:/MinGW/msys/1.0/bin)
33 add_test(test1 ${DIFF} tcctest.ref tcctest.1)
34 add_test(test2 ${DIFF} tcctest.ref tcctest.2)
35 add_test(test3 ${DIFF} tcctest.ref tcctest.3)
37 set(MORETESTS
38  00_assignment
39  01_comment
40  02_printf
41  03_struct
42  04_for
43  05_array
44  06_case
45  07_function
46  08_while
47  09_do_while
48  10_pointer
49  11_precedence
50  12_hashdefine
51  13_integer_literals
52  14_if
53  15_recursion
54  16_nesting
55  17_enum
56  18_include
57  19_pointer_arithmetic
58  20_pointer_comparison
59  21_char_array
60  22_floating_point
61  23_type_coercion
62  24_math_library
63  25_quicksort
64  26_character_constants
65  27_sizeof
66  28_strings
67  29_array_address
68  31_args
69  32_led
70  33_ternary_op
71  35_sizeof
72  36_array_initialisers
73  37_sprintf
74  38_multiple_array_index
75  39_typedef
76  40_stdio
77  41_hashif
78  42_function_pointer
79  43_void_param
80  44_scoped_declarations
81  45_empty_for
82  47_switch_return
83  48_nested_break
84  49_bracket_evaluation
85  50_logical_second_arg
86  51_static
87  52_unnamed_enum
88  54_goto
89  55_lshift_type
91 if(WIN32)
92   list(REMOVE_ITEM MORETESTS 24_math_library)
93   list(REMOVE_ITEM MORETESTS 28_strings)
94 endif()
95 foreach(testfile ${MORETESTS})
96   add_test(NAME ${testfile} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests2
97            COMMAND tcc ${TCC_CFLAGS} -run ${testfile}.c - arg1 arg2 arg3 arg4 | ${DIFF} - ${testfile}.expect)
98 endforeach()