Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
change the way unit testing is handled by cmake. Put it all in one file only instead...
[simgrid.git] / buildtools / Cmake / UnitTesting.cmake
1 # To add a new tested file, simply add the original file in
2 # TEST_CFILES and generated file in TEST_UNITS. The rest is automatic.
3
4 set(TEST_CFILES
5         src/xbt/cunit.c
6         src/xbt/ex.c
7         src/xbt/dynar.c
8         src/xbt/dict.c
9         src/xbt/set.c
10         src/xbt/swag.c
11         src/xbt/xbt_str.c
12         src/xbt/xbt_strbuff.c
13         src/xbt/xbt_sha.c
14         src/xbt/config.c
15         src/xbt/xbt_synchro.c
16 )
17 set(TEST_UNITS
18         ${PROJECT_DIRECTORY}/src/cunit_unit.c
19         ${PROJECT_DIRECTORY}/src/ex_unit.c
20         ${PROJECT_DIRECTORY}/src/dynar_unit.c
21         ${PROJECT_DIRECTORY}/src/dict_unit.c
22         ${PROJECT_DIRECTORY}/src/set_unit.c
23         ${PROJECT_DIRECTORY}/src/swag_unit.c
24         ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
25         ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
26         ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
27         ${PROJECT_DIRECTORY}/src/config_unit.c
28         ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
29         
30         ${PROJECT_DIRECTORY}/src/simgrid_units_main.c
31 )
32
33
34
35 if(PERL_EXECUTABLE)
36         
37         ADD_CUSTOM_COMMAND(
38                 OUTPUT  ${TEST_UNITS}
39                         
40                 DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
41                         ${TEST_CFILES}
42         
43                 COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_UNITS}
44         
45                 COMMAND chmod a=rwx ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
46         
47                 COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl ${TEST_CFILES}
48         
49                 WORKING_DIRECTORY ${PROJECT_DIRECTORY}/src
50         
51                 COMMENT "Generating *_units files for testall..."
52         )
53         
54 #       add_custom_target(units_files   
55 #                       DEPENDS ${TEST_UNITS}
56 #       )
57         
58 else(PERL_EXECUTABLE)
59         ADD_CUSTOM_COMMAND(
60         OUTPUT  ${TEST_UNITS}
61                         
62         DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
63                 ${TEST_CFILES}
64                         
65         COMMAND ${CMAKE_COMMAND} message WARNING "Unit files need to be regenerated, but no Perl installed")
66 endif(PERL_EXECUTABLE)
67
68
69
70
71 ### Ensure the build of testall
72
73 set_source_files_properties(${TEST_UNITS} PROPERTIES GENERATED true)
74
75 set(EXECUTABLE_OUTPUT_PATH "${PROJECT_DIRECTORY}/src/")
76 add_executable(testall ${TEST_UNITS})
77
78 ### Add definitions for compile
79 if(NOT WIN32)
80     target_link_libraries(testall gras m)
81 else(NOT WIN32)
82     target_link_libraries(testall gras)
83 endif(NOT WIN32)
84         
85 add_dependencies(testall $(TEST_UNITS))