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)