Mercurial > archived > louis > epitech > mq > rathaxes
diff maintainers_add_rathaxes_cmake_library.patch @ 0:973e7bc6d13c
Add some patches to use and test rathaxes with CMake
author | Louis Opter <louis@lse.epitech.net> |
---|---|
date | Sun, 01 Jan 2012 15:31:17 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/maintainers_add_rathaxes_cmake_library.patch Sun Jan 01 15:31:17 2012 +0100 @@ -0,0 +1,229 @@ +# HG changeset patch +# Parent 237e60d20f4fd8063a48ff47cf37a8072f55478c +maintainers: add a new CMake "library" UseRathaxes.cmake to add a minimal Rathaxes support into CMake + +- Add the new ADD_RATHAXES_EXECUTABLE function to build a .rtx target; +- No more generated files in the source directory; +- No more tedious generate shell script to write; +- ADD_RATHAXES_TEST is renamed to ADD_RATHAXES_CWS_TEST. + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -33,7 +33,7 @@ + INCLUDE(AddFileDependencies) + INCLUDE(FileCopy) + INCLUDE(RathaxesCopyLatexClasses) +-INCLUDE(AddRathaxesTest) ++INCLUDE(UseRathaxes) + + # Global definitions ########################################################### + +diff --git a/maintainers/CMakeScripts/AddRathaxesTest.cmake b/maintainers/CMakeScripts/AddRathaxesTest.cmake +deleted file mode 100644 +--- a/maintainers/CMakeScripts/AddRathaxesTest.cmake ++++ /dev/null +@@ -1,8 +0,0 @@ +-# This function call codeworker + cnorm with the given codeworker script. +-# +-# The codeworker script must return 0 on success. +- +-FUNCTION(ADD_RATHAXES_TEST CW_SCRIPT) +- STRING(REGEX MATCH "(.*)\\.cws$" TEST_NAME "${CW_SCRIPT}") +- ADD_TEST("Rathaxes_${TEST_NAME}" ${CODEWORKER_BINARY_PATH} "-I" "${RATHAXES_SOURCE_DIR}/maintainers/cnorm/src" "-I" "${RATHAXES_SOURCE_DIR}/rathaxes/compiler/" "-script" "${CMAKE_CURRENT_SOURCE_DIR}/${CW_SCRIPT}" "-args" "${RATHAXES_SOURCE_DIR}/rathaxes") +-ENDFUNCTION(ADD_RATHAXES_TEST CW_SCRIPT) +diff --git a/maintainers/CMakeScripts/UseRathaxes.cmake b/maintainers/CMakeScripts/UseRathaxes.cmake +new file mode 100644 +--- /dev/null ++++ b/maintainers/CMakeScripts/UseRathaxes.cmake +@@ -0,0 +1,119 @@ ++FUNCTION(_RTX_PARSE_OPTIONS ARGS RTI_OUT BLT_OUT SYSTEM_OUT) ++ SET(OPTIONS "RTI" "BLT" "SYSTEM") ++ SET(FILE_LISTS ${RTI_OUT} ${BLT_OUT} ${SYSTEM_OUT}) ++ ++ FOREACH(I ${ARGS}) ++ LIST(FIND OPTIONS "${I}" OPTION_IDX) ++ IF (NOT ${OPTION_IDX} EQUAL -1) ++ LIST(GET FILE_LISTS ${OPTION_IDX} CURRENT_FILE_LIST) ++ ELSE (NOT ${OPTION_IDX} EQUAL -1) ++ IF (DEFINED CURRENT_FILE_LIST) ++ LIST(APPEND ${CURRENT_FILE_LIST} "${I}") ++ ELSE (DEFINED CURRENT_FILE_LIST) ++ MESSAGE(SEND_ERROR "Unexpected argument: ${I}") ++ ENDIF (DEFINED CURRENT_FILE_LIST) ++ ENDIF (NOT ${OPTION_IDX} EQUAL -1) ++ ENDFOREACH(I ${ARGS}) ++ ++ IF (NOT DEFINED ${SYSTEM_OUT}) ++ SET(${SYSTEM_OUT} ${CMAKE_SYSTEM_NAME}) ++ ENDIF (NOT DEFINED ${SYSTEM_OUT}) ++ ++ # It's a "return value" variable so we have to "export" it with ++ # PARENT_SCOPE, otherwise it will stay local to the function. ++ # ++ # {RTI,BLT,SYSTEM}_OUT point to a variable name hence the double ++ # expand to get the value. ++ SET(${RTI_OUT} ${${RTI_OUT}} PARENT_SCOPE) ++ SET(${BLT_OUT} ${${BLT_OUT}} PARENT_SCOPE) ++ SET(${SYSTEM_OUT} ${${SYSTEM_OUT}} PARENT_SCOPE) ++ENDFUNCTION(_RTX_PARSE_OPTIONS ARGS RTI_OUT BLT_OUT) ++ ++FUNCTION(_RTX_GENERATE_BUILD_COMMANDS REGISTER_COMMANDS_OUT RTI_FILES BLT_FILES GENERATE_COMMANDS_OUT SYSTEMS) ++ FOREACH(RTI ${RTI_FILES}) ++ LIST(APPEND ${REGISTER_COMMANDS_OUT} ++ "COMMAND" ${_RTX_CODEWORKER_COMMAND} ++ "rti-register" "${CMAKE_CURRENT_SOURCE_DIR}/${RTI}") ++ ENDFOREACH(RTI ${RTI_FILES}) ++ ++ FOREACH(BLT ${BLT_FILES}) ++ LIST(APPEND ${REGISTER_COMMANDS_OUT} ++ "COMMAND" ${_RTX_CODEWORKER_COMMAND} ++ "blt-register" "${CMAKE_CURRENT_SOURCE_DIR}/${BLT}") ++ ENDFOREACH(BLT ${BLT_FILES}) ++ ++ FOREACH(OS ${SYSTEMS}) ++ LIST(APPEND ${GENERATE_COMMANDS_OUT} ++ COMMAND ${_RTX_CODEWORKER_COMMAND} ++ "generate" "${OS}" ++ "${CMAKE_CURRENT_SOURCE_DIR}/${RTX_FILE}") ++ ENDFOREACH(OS ${SYSTEMS}) ++ ++ SET(${REGISTER_COMMANDS_OUT} ${${REGISTER_COMMANDS_OUT}} PARENT_SCOPE) ++ SET(${GENERATE_COMMANDS_OUT} ${${GENERATE_COMMANDS_OUT}} PARENT_SCOPE) ++ENDFUNCTION(_RTX_GENERATE_BUILD_COMMANDS REGISTER_COMMANDS_OUT RTI_FILES BLT_FILES GENERATE_COMMANDS_OUT SYSTEMS) ++ ++# This function will build a Rathaxes target. Usage: ++# ++# ADD_RATHAXES_EXECUTABLE(hello.rtx ++# [RTI hello.rti [file.rti]] ++# [BLT hello.blt [file.blt]] ++# [SYSTEM windows [linux]]) ++# ++# Files are built in the same order as they are listed, except for the rtx file ++# which is built last. ++# ++# If no system are specified with SYSTEM then the source will be generated for ++# the current system (as in CMAKE_SYSTEM_NAME). ++# ++# At some point we will certainly have our own language definition for CMake ++# but let's start with simpler things. ++FUNCTION(ADD_RATHAXES_EXECUTABLE OUT_NAME RTX_FILE) ++ SET(_RTX_CODEWORKER_COMMAND ++ ${CODEWORKER_BINARY_PATH} "-nologo" ++ "-I" "${RATHAXES_SOURCE_DIR}/maintainers/cnorm/src" ++ "-I" "${RATHAXES_SOURCE_DIR}/rathaxes/compiler/" ++ "-script" "${CMAKE_SOURCE_DIR}/rathaxes/compiler/rathaxes.cws" ++ "-args" "${CMAKE_SOURCE_DIR}/rathaxes/" "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/RathaxesCache/") ++ ++ LIST(REMOVE_ITEM ARGV ${OUT_NAME} ${RTX_FILE}) ++ ++ # We have to expand ARGV inside quotes, so it expand as a single LIST ++ # argument (otherwise it would expand as different arguments). ++ _RTX_PARSE_OPTIONS("${ARGV}" RTI_FILES BLT_FILES SYSTEMS) ++ ++ _RTX_GENERATE_BUILD_COMMANDS(REGISTER_COMMANDS ++ "${RTI_FILES}" ++ "${BLT_FILES}" ++ GENERATE_COMMANDS ++ "${SYSTEMS}") ++ ++ # As soon as we start to write the generation result to files this should ++ # be translated to an ADD_CUSTOM_COMMAND: ++ ADD_CUSTOM_TARGET(${OUT_NAME} ++ ${_RTX_CODEWORKER_COMMAND} "cache" "clear" ++ ${REGISTER_COMMANDS} ++ COMMENT "Registering .rti and .blt for the Rathaxes target ${OUT_NAME}" ++ VERBATIM ++ SOURCES ${RTX_FILE} ${RTI_FILES} ${BLT_FILES}) ++ ++ STRING(REPLACE ";" ", " SYSTEMS "${SYSTEMS}") ++ ADD_CUSTOM_COMMAND(TARGET ${OUT_NAME} POST_BUILD ++ ${GENERATE_COMMANDS} ++ COMMENT "Building Rathaxes target ${OUT_NAME} for ${SYSTEMS}" ++ VERBATIM) ++ENDFUNCTION(ADD_RATHAXES_EXECUTABLE OUT_NAME RTX_FILE) ++ ++# This function call codeworker + cnorm with the given codeworker script. The ++# path to the rathaxes source directory is given as the first argument (arg[0]). ++# ++# The codeworker script must return 0 on success. ++FUNCTION(ADD_RATHAXES_CWS_TEST CW_SCRIPT) ++ STRING(REGEX MATCH "(.*)\\.cws$" TEST_NAME "${CW_SCRIPT}") ++ ADD_TEST("Rathaxes_${TEST_NAME}" ++ ${CODEWORKER_BINARY_PATH} ++ "-I" "${RATHAXES_SOURCE_DIR}/maintainers/cnorm/src" ++ "-I" "${RATHAXES_SOURCE_DIR}/rathaxes/compiler/" ++ "-script" "${CMAKE_CURRENT_SOURCE_DIR}/${CW_SCRIPT}" ++ "-args" "${RATHAXES_SOURCE_DIR}/rathaxes") ++ENDFUNCTION(ADD_RATHAXES_CWS_TEST CW_SCRIPT) +diff --git a/rathaxes/compiler/tests/CMakeLists.txt b/rathaxes/compiler/tests/CMakeLists.txt +--- a/rathaxes/compiler/tests/CMakeLists.txt ++++ b/rathaxes/compiler/tests/CMakeLists.txt +@@ -1,39 +1,39 @@ + # Pure backend compilation and resolution tests +-ADD_RATHAXES_TEST(01_A_test_back_parse.cws) +-ADD_RATHAXES_TEST(01_B_test_back_compile.cws) +-ADD_RATHAXES_TEST(01_C_test_back_meta.cws) +-ADD_RATHAXES_TEST(01_D_test_back_type_hash.cws) +-ADD_RATHAXES_TEST(01_E_test_back_introspect.cws) +-ADD_RATHAXES_TEST(01_F_test_back_gen.cws) +-ADD_RATHAXES_TEST(01_G_test_back_registerToCache.cws) +-ADD_RATHAXES_TEST(01_H_test_back_loadFromCache.cws) +-ADD_RATHAXES_TEST(01_I_test_back_resolveCall.cws) +-ADD_RATHAXES_TEST(01_J_test_back_resolvePointcut.cws) +-ADD_RATHAXES_TEST(01_K_test_back_resolvePointcutDefault.cws) +-ADD_RATHAXES_TEST(01_L_test_back_resolveTypeMapping.cws) +-ADD_RATHAXES_TEST(01_M_test_back_resolveTypeChunkCall.cws) +-ADD_RATHAXES_TEST(01_N_test_back_resolveSequenceCall.cws) ++ADD_RATHAXES_CWS_TEST(01_A_test_back_parse.cws) ++ADD_RATHAXES_CWS_TEST(01_B_test_back_compile.cws) ++ADD_RATHAXES_CWS_TEST(01_C_test_back_meta.cws) ++ADD_RATHAXES_CWS_TEST(01_D_test_back_type_hash.cws) ++ADD_RATHAXES_CWS_TEST(01_E_test_back_introspect.cws) ++ADD_RATHAXES_CWS_TEST(01_F_test_back_gen.cws) ++ADD_RATHAXES_CWS_TEST(01_G_test_back_registerToCache.cws) ++ADD_RATHAXES_CWS_TEST(01_H_test_back_loadFromCache.cws) ++ADD_RATHAXES_CWS_TEST(01_I_test_back_resolveCall.cws) ++ADD_RATHAXES_CWS_TEST(01_J_test_back_resolvePointcut.cws) ++ADD_RATHAXES_CWS_TEST(01_K_test_back_resolvePointcutDefault.cws) ++ADD_RATHAXES_CWS_TEST(01_L_test_back_resolveTypeMapping.cws) ++ADD_RATHAXES_CWS_TEST(01_M_test_back_resolveTypeChunkCall.cws) ++ADD_RATHAXES_CWS_TEST(01_N_test_back_resolveSequenceCall.cws) + + # Pure middle-end validation tests +-ADD_RATHAXES_TEST(02_A_test_middle_parse.cws) +-ADD_RATHAXES_TEST(02_B_test_middle_parse_rti_file.cws) +-ADD_RATHAXES_TEST(02_C_test_middle_check_inheritance.cws) +-ADD_RATHAXES_TEST(02_D_test_middle_check_types_declaration.cws) ++ADD_RATHAXES_CWS_TEST(02_A_test_middle_parse.cws) ++ADD_RATHAXES_CWS_TEST(02_B_test_middle_parse_rti_file.cws) ++ADD_RATHAXES_CWS_TEST(02_C_test_middle_check_inheritance.cws) ++ADD_RATHAXES_CWS_TEST(02_D_test_middle_check_types_declaration.cws) + + # Required for test 2_B + FILE_COPY(full_lkm/simplified_lkm.rti full_lkm/simplified_lkm.rti) + + # Tests for configuration matching (against with blocks) +-ADD_RATHAXES_TEST(03_A_test_config_match_lesser.cws) +-ADD_RATHAXES_TEST(03_B_test_config_match_lesser_or_equal.cws) +-ADD_RATHAXES_TEST(03_C_test_config_match_equal.cws) +-ADD_RATHAXES_TEST(03_D_test_config_match_greater_or_equal.cws) +-ADD_RATHAXES_TEST(03_E_test_config_match_greater.cws) +-ADD_RATHAXES_TEST(03_F_test_config_match.cws) ++ADD_RATHAXES_CWS_TEST(03_A_test_config_match_lesser.cws) ++ADD_RATHAXES_CWS_TEST(03_B_test_config_match_lesser_or_equal.cws) ++ADD_RATHAXES_CWS_TEST(03_C_test_config_match_equal.cws) ++ADD_RATHAXES_CWS_TEST(03_D_test_config_match_greater_or_equal.cws) ++ADD_RATHAXES_CWS_TEST(03_E_test_config_match_greater.cws) ++ADD_RATHAXES_CWS_TEST(03_F_test_config_match.cws) + + # Tests for the Front-end +-ADD_RATHAXES_TEST(04_A_test_front_parse.cws) ++ADD_RATHAXES_CWS_TEST(04_A_test_front_parse.cws) + + # Tests for Link module +-ADD_RATHAXES_TEST(05_A_test_link_merge.cws) +-ADD_RATHAXES_TEST(05_B_test_link_merge_conflict.cws) ++ADD_RATHAXES_CWS_TEST(05_A_test_link_merge.cws) ++ADD_RATHAXES_CWS_TEST(05_B_test_link_merge_conflict.cws)