Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add dependancies for libraries and testall.
[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(chaine1  "'s/extern  *\\([^ ]*[ \\*]*\\)/XBT_PUBLIC_DATA(\\1) /'")
17 set(chaine2  "'s/XBT_PUBLIC_DATA(\\([^)]*\\)) *\\([^(]*\\)(/XBT_PUBLIC(\\1) \\2(/'")
18 set(chaine3  "'s/extern  *\\([^ ]*[ \\*]*\\)/XBT_PUBLIC_DATA(\\1) /'")
19 set(chaine4  "'s/XBT_PUBLIC_DATA(\\([^)]*\\)) *\\([^(]*\\)(/XBT_PUBLIC(\\1) \\2(/'")
20 set(chaine5  "'s/SET(DOCTYPE)/SET(ROOT_dax__adag)/'")
21 set(chaine6  "'s/extern  *\\([^ ]*[ \\*]*\\)/XBT_PUBLIC_DATA(\\1) /'")
22 set(chaine7  "'s/XBT_PUBLIC_DATA(\\([^)]*\\)) *\\([^(]*\\)(/XBT_PUBLIC(\\1) \\2(/'")
23 set(chaine8  "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
24 set(chaine9  "'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(chaine10 "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
26 set(chaine11 "'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(chaine12 "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
28 set(chaine13 "'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} ${chaine5} -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} ${chaine1} -i include/surf/simgrid_dtd.h
57         COMMAND ${SED_EXE} ${chaine2} -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} ${chaine3} -i include/xbt/graphxml.h 
63         COMMAND ${SED_EXE} ${chaine4} -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} ${chaine6} -i src/simdag/dax_dtd.h   
69         COMMAND ${SED_EXE} ${chaine7} -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} ${chaine8} -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} ${chaine9} -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} ${chaine10} -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} ${chaine11} -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} ${chaine12} -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} ${chaine13} -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 else(HAVE_FLEXML AND HAVE_FLEX  AND SED_EXE)
100         message("  FLEX :       ${FLEX_EXE}")
101         message("FLEXML :       ${FLEXML_EXE}")
102         message("   SED :       ${SED_EXE}")
103         message(FATAL_ERROR "Install flex or flexml or sed before use maintainer mode")
104 endif(HAVE_FLEXML AND HAVE_FLEX  AND SED_EXE)
105
106 if(PERL_EXE)
107         
108         ADD_CUSTOM_COMMAND(
109         OUTPUT  ${PROJECT_DIRECTORY}/src/cunit_unit.c
110                         ${PROJECT_DIRECTORY}/src/ex_unit.c
111                         ${PROJECT_DIRECTORY}/src/dynar_unit.c
112                         ${PROJECT_DIRECTORY}/src/dict_unit.c
113                         ${PROJECT_DIRECTORY}/src/set_unit.c
114                         ${PROJECT_DIRECTORY}/src/swag_unit.c
115                         ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
116                         ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
117                         ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
118                         ${PROJECT_DIRECTORY}/src/config_unit.c
119                         ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
120                         
121         DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
122                         ${PROJECT_DIRECTORY}/src/xbt/cunit.c
123                         ${PROJECT_DIRECTORY}/src/xbt/ex.c
124                         ${PROJECT_DIRECTORY}/src/xbt/dynar.c
125                         ${PROJECT_DIRECTORY}/src/xbt/dict.c
126                         ${PROJECT_DIRECTORY}/src/xbt/set.c
127                         ${PROJECT_DIRECTORY}/src/xbt/swag.c
128                         ${PROJECT_DIRECTORY}/src/xbt/xbt_str.c
129                         ${PROJECT_DIRECTORY}/src/xbt/xbt_strbuff.c
130                         ${PROJECT_DIRECTORY}/src/xbt/xbt_sha.c
131                         ${PROJECT_DIRECTORY}/src/xbt/config.c
132                         ${PROJECT_DIRECTORY}/src/xbt/xbt_synchro.c
133         
134         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/simgrid_units_main.c
135         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/cunit_unit.c
136         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/ex_unit.c
137         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dynar_unit.c
138         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dict_unit.c
139         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/set_unit.c
140         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/swag_unit.c
141         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
142         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
143         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
144         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/config_unit.c
145         COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
146         
147         COMMAND chmod a=rwx ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl
148         
149         #$(TEST_UNITS): $(TEST_CFILES)
150         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c
151         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/ex.c
152         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dynar.c
153         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dict.c
154         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/set.c
155         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/swag.c
156         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_str.c
157         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_strbuff.c
158         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_sha.c
159         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/config.c
160         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_synchro.c
161         
162         #@builddir@/simgrid_units_main.c: $(TEST_UNITS)
163         COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c
164         
165         WORKING_DIRECTORY ${PROJECT_DIRECTORY}/src
166         
167         COMMENT "Generating *_units files for testall..."
168         )
169         
170         add_custom_target(units_files
171                                                 DEPENDS ${PROJECT_DIRECTORY}/src/cunit_unit.c
172                                                                 ${PROJECT_DIRECTORY}/src/ex_unit.c
173                                                                 ${PROJECT_DIRECTORY}/src/dynar_unit.c
174                                                                 ${PROJECT_DIRECTORY}/src/dict_unit.c
175                                                                 ${PROJECT_DIRECTORY}/src/set_unit.c
176                                                                 ${PROJECT_DIRECTORY}/src/swag_unit.c
177                                                                 ${PROJECT_DIRECTORY}/src/xbt_str_unit.c
178                                                                 ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c
179                                                                 ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c
180                                                                 ${PROJECT_DIRECTORY}/src/config_unit.c
181                                                                 ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
182                                                 )
183         
184 else(PERL_EXE)
185         message(FATAL_ERROR "Install perl before use maintainer mode")
186 endif(PERL_EXE)
187
188 endif(enable_maintainer_mode AND NOT WIN32)
189