Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Correctely write ${TEST_UNITS} against $(TEST_UNITS)
[simgrid.git] / buildtools / Cmake / UnitTesting.cmake
index c651532..e5f12bd 100644 (file)
-if(PERL_EXECUTABLE)
-       
-       ADD_CUSTOM_COMMAND(
-       OUTPUT  ${PROJECT_DIRECTORY}/src/cunit_unit.c
-                       ${PROJECT_DIRECTORY}/src/ex_unit.c
-                       ${PROJECT_DIRECTORY}/src/dynar_unit.c
-                       ${PROJECT_DIRECTORY}/src/dict_unit.c
-                       ${PROJECT_DIRECTORY}/src/set_unit.c
-                       ${PROJECT_DIRECTORY}/src/swag_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
-                       ${PROJECT_DIRECTORY}/src/config_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
-                       
-       DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
-                       ${PROJECT_DIRECTORY}/src/xbt/cunit.c
-                       ${PROJECT_DIRECTORY}/src/xbt/ex.c
-                       ${PROJECT_DIRECTORY}/src/xbt/dynar.c
-                       ${PROJECT_DIRECTORY}/src/xbt/dict.c
-                       ${PROJECT_DIRECTORY}/src/xbt/set.c
-                       ${PROJECT_DIRECTORY}/src/xbt/swag.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_str.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_strbuff.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_sha.c
-                       ${PROJECT_DIRECTORY}/src/xbt/config.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_synchro.c
-       
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/simgrid_units_main.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/cunit_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/ex_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dynar_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dict_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/set_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/swag_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/config_unit.c
-       COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
-       
-       COMMAND chmod a=rwx ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
-       
-       #$(TEST_UNITS): $(TEST_CFILES)
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/ex.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dynar.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dict.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/set.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/swag.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_str.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_strbuff.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_sha.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/config.c
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_synchro.c
-       
-       #@builddir@/simgrid_units_main.c: $(TEST_UNITS)
-       COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c
-       
-       WORKING_DIRECTORY ${PROJECT_DIRECTORY}/src
-       
-       COMMENT "Generating *_units files for testall..."
-       )
-       
-       add_custom_target(units_files
-                                               DEPENDS ${PROJECT_DIRECTORY}/src/cunit_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/ex_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/dynar_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/dict_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/set_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/swag_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/config_unit.c
-                                                               ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
-                                               )
+# To add a new tested file, simply add the original file in
+# TEST_CFILES and generated file in TEST_UNITS. The rest is automatic.
+
+set(TEST_CFILES
+       src/xbt/cunit.c
+       src/xbt/ex.c
+       src/xbt/dynar.c
+       src/xbt/dict.c
+       src/xbt/set.c
+       src/xbt/swag.c
+       src/xbt/xbt_str.c
+       src/xbt/xbt_strbuff.c
+       src/xbt/xbt_sha.c
+       src/xbt/config.c
+       src/xbt/xbt_synchro.c
+       src/xbt/parmap.c
+)
+set(TEST_UNITS
+       ${CMAKE_CURRENT_BINARY_DIR}/src/cunit_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/ex_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/dynar_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/dict_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/set_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/swag_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_str_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_strbuff_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_sha_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/config_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_synchro_unit.c
+       ${CMAKE_CURRENT_BINARY_DIR}/src/parmap_unit.c
        
-else(PERL_EXECUTABLE)
-       ADD_CUSTOM_COMMAND(
-       OUTPUT  ${PROJECT_DIRECTORY}/src/cunit_unit.c
-                       ${PROJECT_DIRECTORY}/src/ex_unit.c
-                       ${PROJECT_DIRECTORY}/src/dynar_unit.c
-                       ${PROJECT_DIRECTORY}/src/dict_unit.c
-                       ${PROJECT_DIRECTORY}/src/set_unit.c
-                       ${PROJECT_DIRECTORY}/src/swag_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
-                       ${PROJECT_DIRECTORY}/src/config_unit.c
-                       ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
-                       
-       DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
-                       ${PROJECT_DIRECTORY}/src/xbt/cunit.c
-                       ${PROJECT_DIRECTORY}/src/xbt/ex.c
-                       ${PROJECT_DIRECTORY}/src/xbt/dynar.c
-                       ${PROJECT_DIRECTORY}/src/xbt/dict.c
-                       ${PROJECT_DIRECTORY}/src/xbt/set.c
-                       ${PROJECT_DIRECTORY}/src/xbt/swag.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_str.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_strbuff.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_sha.c
-                       ${PROJECT_DIRECTORY}/src/xbt/config.c
-                       ${PROJECT_DIRECTORY}/src/xbt/xbt_synchro.c
-                       
-       COMMAND ${CMAKE_COMMAND} message "Unit files need to be regenerated, but no Perl installed")
-endif(PERL_EXECUTABLE)
+       ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_units_main.c
+)
+
+
 
+ADD_CUSTOM_COMMAND(
+       OUTPUT  ${TEST_UNITS}
+               
+       DEPENDS ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
+               ${TEST_CFILES}
 
+       COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_UNITS}
+
+       COMMAND chmod +x ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
+
+       COMMAND ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl --root=src/ --outdir=${CMAKE_CURRENT_BINARY_DIR}/src/ ${TEST_CFILES}
+
+       WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
+
+        COMMENT "Generating *_units files for testall..."
+)
+
+
+### Ensure the build of testall
+
+set_source_files_properties(${TEST_UNITS} PROPERTIES GENERATED true)
+
+set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/src/")
+add_executable(testall ${TEST_UNITS})
+
+### Add definitions for compile
+if(NOT WIN32)
+    target_link_libraries(testall gras m)
+else(NOT WIN32)
+    target_link_libraries(testall gras)
+endif(NOT WIN32)
+       
+add_dependencies(testall ${TEST_UNITS})
\ No newline at end of file