Mercurial > archived > louis > epitech > mq > rathaxes
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:973e7bc6d13c |
---|---|
1 # HG changeset patch | |
2 # Parent 237e60d20f4fd8063a48ff47cf37a8072f55478c | |
3 maintainers: add a new CMake "library" UseRathaxes.cmake to add a minimal Rathaxes support into CMake | |
4 | |
5 - Add the new ADD_RATHAXES_EXECUTABLE function to build a .rtx target; | |
6 - No more generated files in the source directory; | |
7 - No more tedious generate shell script to write; | |
8 - ADD_RATHAXES_TEST is renamed to ADD_RATHAXES_CWS_TEST. | |
9 | |
10 | |
11 diff --git a/CMakeLists.txt b/CMakeLists.txt | |
12 --- a/CMakeLists.txt | |
13 +++ b/CMakeLists.txt | |
14 @@ -33,7 +33,7 @@ | |
15 INCLUDE(AddFileDependencies) | |
16 INCLUDE(FileCopy) | |
17 INCLUDE(RathaxesCopyLatexClasses) | |
18 -INCLUDE(AddRathaxesTest) | |
19 +INCLUDE(UseRathaxes) | |
20 | |
21 # Global definitions ########################################################### | |
22 | |
23 diff --git a/maintainers/CMakeScripts/AddRathaxesTest.cmake b/maintainers/CMakeScripts/AddRathaxesTest.cmake | |
24 deleted file mode 100644 | |
25 --- a/maintainers/CMakeScripts/AddRathaxesTest.cmake | |
26 +++ /dev/null | |
27 @@ -1,8 +0,0 @@ | |
28 -# This function call codeworker + cnorm with the given codeworker script. | |
29 -# | |
30 -# The codeworker script must return 0 on success. | |
31 - | |
32 -FUNCTION(ADD_RATHAXES_TEST CW_SCRIPT) | |
33 - STRING(REGEX MATCH "(.*)\\.cws$" TEST_NAME "${CW_SCRIPT}") | |
34 - 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") | |
35 -ENDFUNCTION(ADD_RATHAXES_TEST CW_SCRIPT) | |
36 diff --git a/maintainers/CMakeScripts/UseRathaxes.cmake b/maintainers/CMakeScripts/UseRathaxes.cmake | |
37 new file mode 100644 | |
38 --- /dev/null | |
39 +++ b/maintainers/CMakeScripts/UseRathaxes.cmake | |
40 @@ -0,0 +1,119 @@ | |
41 +FUNCTION(_RTX_PARSE_OPTIONS ARGS RTI_OUT BLT_OUT SYSTEM_OUT) | |
42 + SET(OPTIONS "RTI" "BLT" "SYSTEM") | |
43 + SET(FILE_LISTS ${RTI_OUT} ${BLT_OUT} ${SYSTEM_OUT}) | |
44 + | |
45 + FOREACH(I ${ARGS}) | |
46 + LIST(FIND OPTIONS "${I}" OPTION_IDX) | |
47 + IF (NOT ${OPTION_IDX} EQUAL -1) | |
48 + LIST(GET FILE_LISTS ${OPTION_IDX} CURRENT_FILE_LIST) | |
49 + ELSE (NOT ${OPTION_IDX} EQUAL -1) | |
50 + IF (DEFINED CURRENT_FILE_LIST) | |
51 + LIST(APPEND ${CURRENT_FILE_LIST} "${I}") | |
52 + ELSE (DEFINED CURRENT_FILE_LIST) | |
53 + MESSAGE(SEND_ERROR "Unexpected argument: ${I}") | |
54 + ENDIF (DEFINED CURRENT_FILE_LIST) | |
55 + ENDIF (NOT ${OPTION_IDX} EQUAL -1) | |
56 + ENDFOREACH(I ${ARGS}) | |
57 + | |
58 + IF (NOT DEFINED ${SYSTEM_OUT}) | |
59 + SET(${SYSTEM_OUT} ${CMAKE_SYSTEM_NAME}) | |
60 + ENDIF (NOT DEFINED ${SYSTEM_OUT}) | |
61 + | |
62 + # It's a "return value" variable so we have to "export" it with | |
63 + # PARENT_SCOPE, otherwise it will stay local to the function. | |
64 + # | |
65 + # {RTI,BLT,SYSTEM}_OUT point to a variable name hence the double | |
66 + # expand to get the value. | |
67 + SET(${RTI_OUT} ${${RTI_OUT}} PARENT_SCOPE) | |
68 + SET(${BLT_OUT} ${${BLT_OUT}} PARENT_SCOPE) | |
69 + SET(${SYSTEM_OUT} ${${SYSTEM_OUT}} PARENT_SCOPE) | |
70 +ENDFUNCTION(_RTX_PARSE_OPTIONS ARGS RTI_OUT BLT_OUT) | |
71 + | |
72 +FUNCTION(_RTX_GENERATE_BUILD_COMMANDS REGISTER_COMMANDS_OUT RTI_FILES BLT_FILES GENERATE_COMMANDS_OUT SYSTEMS) | |
73 + FOREACH(RTI ${RTI_FILES}) | |
74 + LIST(APPEND ${REGISTER_COMMANDS_OUT} | |
75 + "COMMAND" ${_RTX_CODEWORKER_COMMAND} | |
76 + "rti-register" "${CMAKE_CURRENT_SOURCE_DIR}/${RTI}") | |
77 + ENDFOREACH(RTI ${RTI_FILES}) | |
78 + | |
79 + FOREACH(BLT ${BLT_FILES}) | |
80 + LIST(APPEND ${REGISTER_COMMANDS_OUT} | |
81 + "COMMAND" ${_RTX_CODEWORKER_COMMAND} | |
82 + "blt-register" "${CMAKE_CURRENT_SOURCE_DIR}/${BLT}") | |
83 + ENDFOREACH(BLT ${BLT_FILES}) | |
84 + | |
85 + FOREACH(OS ${SYSTEMS}) | |
86 + LIST(APPEND ${GENERATE_COMMANDS_OUT} | |
87 + COMMAND ${_RTX_CODEWORKER_COMMAND} | |
88 + "generate" "${OS}" | |
89 + "${CMAKE_CURRENT_SOURCE_DIR}/${RTX_FILE}") | |
90 + ENDFOREACH(OS ${SYSTEMS}) | |
91 + | |
92 + SET(${REGISTER_COMMANDS_OUT} ${${REGISTER_COMMANDS_OUT}} PARENT_SCOPE) | |
93 + SET(${GENERATE_COMMANDS_OUT} ${${GENERATE_COMMANDS_OUT}} PARENT_SCOPE) | |
94 +ENDFUNCTION(_RTX_GENERATE_BUILD_COMMANDS REGISTER_COMMANDS_OUT RTI_FILES BLT_FILES GENERATE_COMMANDS_OUT SYSTEMS) | |
95 + | |
96 +# This function will build a Rathaxes target. Usage: | |
97 +# | |
98 +# ADD_RATHAXES_EXECUTABLE(hello.rtx | |
99 +# [RTI hello.rti [file.rti]] | |
100 +# [BLT hello.blt [file.blt]] | |
101 +# [SYSTEM windows [linux]]) | |
102 +# | |
103 +# Files are built in the same order as they are listed, except for the rtx file | |
104 +# which is built last. | |
105 +# | |
106 +# If no system are specified with SYSTEM then the source will be generated for | |
107 +# the current system (as in CMAKE_SYSTEM_NAME). | |
108 +# | |
109 +# At some point we will certainly have our own language definition for CMake | |
110 +# but let's start with simpler things. | |
111 +FUNCTION(ADD_RATHAXES_EXECUTABLE OUT_NAME RTX_FILE) | |
112 + SET(_RTX_CODEWORKER_COMMAND | |
113 + ${CODEWORKER_BINARY_PATH} "-nologo" | |
114 + "-I" "${RATHAXES_SOURCE_DIR}/maintainers/cnorm/src" | |
115 + "-I" "${RATHAXES_SOURCE_DIR}/rathaxes/compiler/" | |
116 + "-script" "${CMAKE_SOURCE_DIR}/rathaxes/compiler/rathaxes.cws" | |
117 + "-args" "${CMAKE_SOURCE_DIR}/rathaxes/" "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/RathaxesCache/") | |
118 + | |
119 + LIST(REMOVE_ITEM ARGV ${OUT_NAME} ${RTX_FILE}) | |
120 + | |
121 + # We have to expand ARGV inside quotes, so it expand as a single LIST | |
122 + # argument (otherwise it would expand as different arguments). | |
123 + _RTX_PARSE_OPTIONS("${ARGV}" RTI_FILES BLT_FILES SYSTEMS) | |
124 + | |
125 + _RTX_GENERATE_BUILD_COMMANDS(REGISTER_COMMANDS | |
126 + "${RTI_FILES}" | |
127 + "${BLT_FILES}" | |
128 + GENERATE_COMMANDS | |
129 + "${SYSTEMS}") | |
130 + | |
131 + # As soon as we start to write the generation result to files this should | |
132 + # be translated to an ADD_CUSTOM_COMMAND: | |
133 + ADD_CUSTOM_TARGET(${OUT_NAME} | |
134 + ${_RTX_CODEWORKER_COMMAND} "cache" "clear" | |
135 + ${REGISTER_COMMANDS} | |
136 + COMMENT "Registering .rti and .blt for the Rathaxes target ${OUT_NAME}" | |
137 + VERBATIM | |
138 + SOURCES ${RTX_FILE} ${RTI_FILES} ${BLT_FILES}) | |
139 + | |
140 + STRING(REPLACE ";" ", " SYSTEMS "${SYSTEMS}") | |
141 + ADD_CUSTOM_COMMAND(TARGET ${OUT_NAME} POST_BUILD | |
142 + ${GENERATE_COMMANDS} | |
143 + COMMENT "Building Rathaxes target ${OUT_NAME} for ${SYSTEMS}" | |
144 + VERBATIM) | |
145 +ENDFUNCTION(ADD_RATHAXES_EXECUTABLE OUT_NAME RTX_FILE) | |
146 + | |
147 +# This function call codeworker + cnorm with the given codeworker script. The | |
148 +# path to the rathaxes source directory is given as the first argument (arg[0]). | |
149 +# | |
150 +# The codeworker script must return 0 on success. | |
151 +FUNCTION(ADD_RATHAXES_CWS_TEST CW_SCRIPT) | |
152 + STRING(REGEX MATCH "(.*)\\.cws$" TEST_NAME "${CW_SCRIPT}") | |
153 + ADD_TEST("Rathaxes_${TEST_NAME}" | |
154 + ${CODEWORKER_BINARY_PATH} | |
155 + "-I" "${RATHAXES_SOURCE_DIR}/maintainers/cnorm/src" | |
156 + "-I" "${RATHAXES_SOURCE_DIR}/rathaxes/compiler/" | |
157 + "-script" "${CMAKE_CURRENT_SOURCE_DIR}/${CW_SCRIPT}" | |
158 + "-args" "${RATHAXES_SOURCE_DIR}/rathaxes") | |
159 +ENDFUNCTION(ADD_RATHAXES_CWS_TEST CW_SCRIPT) | |
160 diff --git a/rathaxes/compiler/tests/CMakeLists.txt b/rathaxes/compiler/tests/CMakeLists.txt | |
161 --- a/rathaxes/compiler/tests/CMakeLists.txt | |
162 +++ b/rathaxes/compiler/tests/CMakeLists.txt | |
163 @@ -1,39 +1,39 @@ | |
164 # Pure backend compilation and resolution tests | |
165 -ADD_RATHAXES_TEST(01_A_test_back_parse.cws) | |
166 -ADD_RATHAXES_TEST(01_B_test_back_compile.cws) | |
167 -ADD_RATHAXES_TEST(01_C_test_back_meta.cws) | |
168 -ADD_RATHAXES_TEST(01_D_test_back_type_hash.cws) | |
169 -ADD_RATHAXES_TEST(01_E_test_back_introspect.cws) | |
170 -ADD_RATHAXES_TEST(01_F_test_back_gen.cws) | |
171 -ADD_RATHAXES_TEST(01_G_test_back_registerToCache.cws) | |
172 -ADD_RATHAXES_TEST(01_H_test_back_loadFromCache.cws) | |
173 -ADD_RATHAXES_TEST(01_I_test_back_resolveCall.cws) | |
174 -ADD_RATHAXES_TEST(01_J_test_back_resolvePointcut.cws) | |
175 -ADD_RATHAXES_TEST(01_K_test_back_resolvePointcutDefault.cws) | |
176 -ADD_RATHAXES_TEST(01_L_test_back_resolveTypeMapping.cws) | |
177 -ADD_RATHAXES_TEST(01_M_test_back_resolveTypeChunkCall.cws) | |
178 -ADD_RATHAXES_TEST(01_N_test_back_resolveSequenceCall.cws) | |
179 +ADD_RATHAXES_CWS_TEST(01_A_test_back_parse.cws) | |
180 +ADD_RATHAXES_CWS_TEST(01_B_test_back_compile.cws) | |
181 +ADD_RATHAXES_CWS_TEST(01_C_test_back_meta.cws) | |
182 +ADD_RATHAXES_CWS_TEST(01_D_test_back_type_hash.cws) | |
183 +ADD_RATHAXES_CWS_TEST(01_E_test_back_introspect.cws) | |
184 +ADD_RATHAXES_CWS_TEST(01_F_test_back_gen.cws) | |
185 +ADD_RATHAXES_CWS_TEST(01_G_test_back_registerToCache.cws) | |
186 +ADD_RATHAXES_CWS_TEST(01_H_test_back_loadFromCache.cws) | |
187 +ADD_RATHAXES_CWS_TEST(01_I_test_back_resolveCall.cws) | |
188 +ADD_RATHAXES_CWS_TEST(01_J_test_back_resolvePointcut.cws) | |
189 +ADD_RATHAXES_CWS_TEST(01_K_test_back_resolvePointcutDefault.cws) | |
190 +ADD_RATHAXES_CWS_TEST(01_L_test_back_resolveTypeMapping.cws) | |
191 +ADD_RATHAXES_CWS_TEST(01_M_test_back_resolveTypeChunkCall.cws) | |
192 +ADD_RATHAXES_CWS_TEST(01_N_test_back_resolveSequenceCall.cws) | |
193 | |
194 # Pure middle-end validation tests | |
195 -ADD_RATHAXES_TEST(02_A_test_middle_parse.cws) | |
196 -ADD_RATHAXES_TEST(02_B_test_middle_parse_rti_file.cws) | |
197 -ADD_RATHAXES_TEST(02_C_test_middle_check_inheritance.cws) | |
198 -ADD_RATHAXES_TEST(02_D_test_middle_check_types_declaration.cws) | |
199 +ADD_RATHAXES_CWS_TEST(02_A_test_middle_parse.cws) | |
200 +ADD_RATHAXES_CWS_TEST(02_B_test_middle_parse_rti_file.cws) | |
201 +ADD_RATHAXES_CWS_TEST(02_C_test_middle_check_inheritance.cws) | |
202 +ADD_RATHAXES_CWS_TEST(02_D_test_middle_check_types_declaration.cws) | |
203 | |
204 # Required for test 2_B | |
205 FILE_COPY(full_lkm/simplified_lkm.rti full_lkm/simplified_lkm.rti) | |
206 | |
207 # Tests for configuration matching (against with blocks) | |
208 -ADD_RATHAXES_TEST(03_A_test_config_match_lesser.cws) | |
209 -ADD_RATHAXES_TEST(03_B_test_config_match_lesser_or_equal.cws) | |
210 -ADD_RATHAXES_TEST(03_C_test_config_match_equal.cws) | |
211 -ADD_RATHAXES_TEST(03_D_test_config_match_greater_or_equal.cws) | |
212 -ADD_RATHAXES_TEST(03_E_test_config_match_greater.cws) | |
213 -ADD_RATHAXES_TEST(03_F_test_config_match.cws) | |
214 +ADD_RATHAXES_CWS_TEST(03_A_test_config_match_lesser.cws) | |
215 +ADD_RATHAXES_CWS_TEST(03_B_test_config_match_lesser_or_equal.cws) | |
216 +ADD_RATHAXES_CWS_TEST(03_C_test_config_match_equal.cws) | |
217 +ADD_RATHAXES_CWS_TEST(03_D_test_config_match_greater_or_equal.cws) | |
218 +ADD_RATHAXES_CWS_TEST(03_E_test_config_match_greater.cws) | |
219 +ADD_RATHAXES_CWS_TEST(03_F_test_config_match.cws) | |
220 | |
221 # Tests for the Front-end | |
222 -ADD_RATHAXES_TEST(04_A_test_front_parse.cws) | |
223 +ADD_RATHAXES_CWS_TEST(04_A_test_front_parse.cws) | |
224 | |
225 # Tests for Link module | |
226 -ADD_RATHAXES_TEST(05_A_test_link_merge.cws) | |
227 -ADD_RATHAXES_TEST(05_B_test_link_merge_conflict.cws) | |
228 +ADD_RATHAXES_CWS_TEST(05_A_test_link_merge.cws) | |
229 +ADD_RATHAXES_CWS_TEST(05_B_test_link_merge_conflict.cws) |