Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Cosmetics.
[simgrid.git] / buildtools / Cmake / MaintainerMode.cmake
1 if(enable_maintainer_mode AND NOT WIN32)
2 find_program(FLEX_EXE NAMES flex)
3 find_program(FLEXML_EXE NAMES flexml)
4 find_program(SED_EXE NAMES sed)
5 find_program(PERL_EXE NAMES perl)
6
7 IF(FLEX_EXE)
8         set(HAVE_FLEX 1)
9 ENDIF(FLEX_EXE)
10
11 IF(FLEXML_EXE)
12         set(HAVE_FLEXML 1)
13 ENDIF(FLEXML_EXE)
14
15 if(HAVE_FLEXML AND HAVE_FLEX AND SED_EXE)
16 set(string1  "'s/extern  *\\([^ ]*[ \\*]*\\)/XBT_PUBLIC_DATA(\\1) /'")
17 set(string2  "'s/XBT_PUBLIC_DATA(\\([^)]*\\)) *\\([^(]*\\)(/XBT_PUBLIC(\\1) \\2(/'")
18 set(string3  "'s/extern  *\\([^ ]*[ \\*]*\\)/XBT_PUBLIC_DATA(\\1) /'")
19 set(string4  "'s/XBT_PUBLIC_DATA(\\([^)]*\\)) *\\([^(]*\\)(/XBT_PUBLIC(\\1) \\2(/'")
20 set(string5  "'s/SET(DOCTYPE)/SET(ROOT_dax__adag)/'")
21 set(string6  "'s/extern  *\\([^ ]*[ \\*]*\\)/XBT_PUBLIC_DATA(\\1) /'")
22 set(string7  "'s/XBT_PUBLIC_DATA(\\([^)]*\\)) *\\([^(]*\\)(/XBT_PUBLIC(\\1) \\2(/'")
23 set(string8  "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
24 set(string9  "'s/#include <unistd.h>/#if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)\\n#  ifndef __STRICT_ANSI__\\n#    include <io.h>\\n#    include <process.h>\\n#  endif\\n#else\\n#  include <unistd.h>\\n#endif/g'")
25 set(string10 "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
26 set(string11 "'s/#include <unistd.h>/#if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)\\n#  ifndef __STRICT_ANSI__\\n#    include <io.h>\\n#    include <process.h>\\n#  endif\\n#else\\n#  include <unistd.h>\\n#endif/g'")
27 set(string12 "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
28 set(string13 "'s/#include <unistd.h>/#if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)\\n#  ifndef __STRICT_ANSI__\\n#    include <io.h>\\n#    include <process.h>\\n#  endif\\n#else\\n#  include <unistd.h>\\n#endif/g'")
29
30 ADD_CUSTOM_COMMAND(
31         OUTPUT  ${PROJECT_DIRECTORY}/include/surf/simgrid_dtd.h
32                         ${PROJECT_DIRECTORY}/include/xbt/graphxml.h
33                         ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.h
34                         ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.c
35                         ${PROJECT_DIRECTORY}/src/xbt/graphxml.c
36                         ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.c
37                         
38         DEPENDS ${PROJECT_DIRECTORY}/src/surf/simgrid.dtd
39                         ${PROJECT_DIRECTORY}/src/xbt/graphxml.dtd
40                         ${PROJECT_DIRECTORY}/src/simdag/dax.dtd
41                                         
42         #${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.l: ${PROJECT_DIRECTORY}/src/surf/simgrid.dtd
43         COMMAND ${FLEXML_EXE} --root-tags platform -b 1000000 -P surfxml --sysid=simgrid.dtd -S src/surf/simgrid_dtd.l -L src/surf/simgrid.dtd
44         COMMAND ${CMAKE_COMMAND} -E echo "src/surf/simgrid_dtd.l"
45         #${PROJECT_DIRECTORY}/src/xbt/graphxml.l: ${PROJECT_DIRECTORY}/src/xbt/graphxml.dtd
46         COMMAND ${FLEXML_EXE} -b 1000000 -P graphxml --sysid=graphxml.dtd -S src/xbt/graphxml.l -L src/xbt/graphxml.dtd
47         COMMAND ${CMAKE_COMMAND} -E echo "src/xbt/graphxml.l"
48         #${PROJECT_DIRECTORY}/src/simdag/dax_dtd.l: ${PROJECT_DIRECTORY}/src/simdag/dax.dtd
49         COMMAND ${FLEXML_EXE} -b 1000000 --root-tags adag -P dax_ --sysid=dax.dtd -S ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.l -L ${PROJECT_DIRECTORY}/src/simdag/dax.dtd
50         COMMAND ${SED_EXE} ${string5} -i src/simdag/dax_dtd.l
51         COMMAND ${CMAKE_COMMAND} -E echo "src/simdag/dax_dtd.l"
52         
53         #${PROJECT_DIRECTORY}/include/surf/simgrid_dtd.h: ${PROJECT_DIRECTORY}/src/surf/simgrid.dtd
54         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/include/surf/simgrid.h
55         COMMAND ${FLEXML_EXE} --root-tags platform -P surfxml --sysid=simgrid.dtd -H include/surf/simgrid_dtd.h -L src/surf/simgrid.dtd
56         COMMAND ${SED_EXE} ${string1} -i include/surf/simgrid_dtd.h
57         COMMAND ${SED_EXE} ${string2} -i include/surf/simgrid_dtd.h     
58         COMMAND ${CMAKE_COMMAND} -E echo "include/surf/simgrid_dtd.h"
59         #${PROJECT_DIRECTORY}/include/xbt/graphxml.h: ${PROJECT_DIRECTORY}/src/xbt/graphxml.dtd
60         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/include/xbt/graphxml.h
61         COMMAND ${FLEXML_EXE} -P graphxml --sysid=graphxml.dtd -H include/xbt/graphxml.h -L src/xbt/graphxml.dtd
62         COMMAND ${SED_EXE} ${string3} -i include/xbt/graphxml.h 
63         COMMAND ${SED_EXE} ${string4} -i include/xbt/graphxml.h
64         COMMAND ${CMAKE_COMMAND} -E echo "include/xbt/graphxml.h"
65         #${PROJECT_DIRECTORY}/src/simdag/dax_dtd.h: ${PROJECT_DIRECTORY}/src/simdag/dax.dtd
66         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.h
67         COMMAND ${FLEXML_EXE} --root-tags adag -P dax_ --sysid=dax.dtd -H src/simdag/dax_dtd.h -L src/simdag/dax.dtd
68         COMMAND ${SED_EXE} ${string6} -i src/simdag/dax_dtd.h   
69         COMMAND ${SED_EXE} ${string7} -i src/simdag/dax_dtd.h
70         COMMAND ${FLEX_EXE} -o src/gras/DataDesc/ddt_parse.yy.c -Pgras_ddt_parse_ --noline src/gras/DataDesc/ddt_parse.yy.l
71         COMMAND ${CMAKE_COMMAND} -E echo "src/simdag/dax_dtd.h"
72         
73         #surf/simgrid_dtd.c: surf/simgrid_dtd.l
74         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.c
75         COMMAND ${SED_EXE} ${string8} -i src/surf/simgrid_dtd.l
76         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_DIRECTORY}/src/surf
77         COMMAND ${FLEX_EXE} -o src/surf/simgrid_dtd.c -Psurf_parse_ --noline src/surf/simgrid_dtd.l
78         COMMAND ${SED_EXE} ${string9} -i src/surf/simgrid_dtd.c
79         COMMAND ${CMAKE_COMMAND} -E echo "surf/simgrid_dtd.c"
80         #xbt/graphxml.c: xbt/graphxml.l
81         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt/graphxml.c
82         COMMAND ${SED_EXE} ${string10} -i src/xbt/graphxml.l    
83         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_DIRECTORY}/src/xbt
84         COMMAND ${FLEX_EXE} -o src/xbt/graphxml.c -Pxbt_graph_parse_ --noline src/xbt/graphxml.l
85         COMMAND ${SED_EXE} ${string11} -i src/xbt/graphxml.c
86         COMMAND ${CMAKE_COMMAND} -E echo "xbt/graphxml.c"
87         #simdag/dax_dtd.c: simdag/dax_dtd.l
88         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.c
89         COMMAND ${SED_EXE} ${string12} -i src/simdag/dax_dtd.l
90         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_DIRECTORY}/src/simdag
91         COMMAND ${FLEX_EXE} -o src/simdag/dax_dtd.c -Pdax_ --noline src/simdag/dax_dtd.l
92         COMMAND ${SED_EXE} ${string13} -i src/simdag/dax_dtd.c
93         COMMAND ${CMAKE_COMMAND} -E echo "simdag/dax_dtd.c"
94         
95         WORKING_DIRECTORY ${PROJECT_DIRECTORY}
96         COMMENT "Generating files in maintainer mode..."
97 )
98
99         add_custom_target(maintainer_files
100                                                 DEPENDS ${PROJECT_DIRECTORY}/include/surf/simgrid_dtd.h
101                                                                 ${PROJECT_DIRECTORY}/include/xbt/graphxml.h
102                                                                 ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.h
103                                                                 ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.c
104                                                                 ${PROJECT_DIRECTORY}/src/xbt/graphxml.c
105                                                                 ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.c
106                                                 )
107
108 else(HAVE_FLEXML AND HAVE_FLEX  AND SED_EXE)
109         message("  FLEX :       ${FLEX_EXE}")
110         message("FLEXML :       ${FLEXML_EXE}")
111         message("   SED :       ${SED_EXE}")
112         message(FATAL_ERROR "Install flex or flexml or sed before use maintainer mode")
113 endif(HAVE_FLEXML AND HAVE_FLEX  AND SED_EXE)
114
115 if(PERL_EXE)
116         
117         ADD_CUSTOM_COMMAND(
118         OUTPUT  ${PROJECT_DIRECTORY}/src/cunit_unit.c
119                         ${PROJECT_DIRECTORY}/src/ex_unit.c
120                         ${PROJECT_DIRECTORY}/src/dynar_unit.c
121                         ${PROJECT_DIRECTORY}/src/dict_unit.c
122                         ${PROJECT_DIRECTORY}/src/set_unit.c
123                         ${PROJECT_DIRECTORY}/src/swag_unit.c
124                         ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
125                         ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
126                         ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
127                         ${PROJECT_DIRECTORY}/src/config_unit.c
128                         ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
129                         
130         DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
131                         ${PROJECT_DIRECTORY}/src/xbt/cunit.c
132                         ${PROJECT_DIRECTORY}/src/xbt/ex.c
133                         ${PROJECT_DIRECTORY}/src/xbt/dynar.c
134                         ${PROJECT_DIRECTORY}/src/xbt/dict.c
135                         ${PROJECT_DIRECTORY}/src/xbt/set.c
136                         ${PROJECT_DIRECTORY}/src/xbt/swag.c
137                         ${PROJECT_DIRECTORY}/src/xbt/xbt_str.c
138                         ${PROJECT_DIRECTORY}/src/xbt/xbt_strbuff.c
139                         ${PROJECT_DIRECTORY}/src/xbt/xbt_sha.c
140                         ${PROJECT_DIRECTORY}/src/xbt/config.c
141                         ${PROJECT_DIRECTORY}/src/xbt/xbt_synchro.c
142         
143         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/simgrid_units_main.c
144         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/cunit_unit.c
145         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/ex_unit.c
146         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dynar_unit.c
147         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dict_unit.c
148         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/set_unit.c
149         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/swag_unit.c
150         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
151         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
152         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
153         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/config_unit.c
154         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
155         
156         COMMAND chmod a=rwx ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
157         
158         #$(TEST_UNITS): $(TEST_CFILES)
159         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c
160         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/ex.c
161         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dynar.c
162         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dict.c
163         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/set.c
164         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/swag.c
165         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_str.c
166         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_strbuff.c
167         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_sha.c
168         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/config.c
169         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_synchro.c
170         
171         #@builddir@/simgrid_units_main.c: $(TEST_UNITS)
172         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c
173         
174         WORKING_DIRECTORY ${PROJECT_DIRECTORY}/src
175         
176         COMMENT "Generating *_units files for testall..."
177         )
178         
179         add_custom_target(units_files
180                                                 DEPENDS ${PROJECT_DIRECTORY}/src/cunit_unit.c
181                                                                 ${PROJECT_DIRECTORY}/src/ex_unit.c
182                                                                 ${PROJECT_DIRECTORY}/src/dynar_unit.c
183                                                                 ${PROJECT_DIRECTORY}/src/dict_unit.c
184                                                                 ${PROJECT_DIRECTORY}/src/set_unit.c
185                                                                 ${PROJECT_DIRECTORY}/src/swag_unit.c
186                                                                 ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
187                                                                 ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
188                                                                 ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
189                                                                 ${PROJECT_DIRECTORY}/src/config_unit.c
190                                                                 ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
191                                                 )
192         
193 else(PERL_EXE)
194         message(FATAL_ERROR "Install perl before use maintainer mode")
195 endif(PERL_EXE)
196
197 endif(enable_maintainer_mode AND NOT WIN32)
198