Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Files for compil Simgrid with cmake and make a distrib with cpack.
[simgrid.git] / buildtools / CPACK / CMakeCompleteInFiles.txt
1 cmake_minimum_required(VERSION 2.6)
2 include(CheckFunctionExists)
3 include(CheckIncludeFile)
4 include(CheckIncludeFiles)
5 include(CheckLibraryExists)
6
7
8 ###############
9 ## SVN version check
10 ##
11 if(IS_DIRECTORY ${PROJECT_DIRECTORY}/.svn)
12         find_file(SVN ".svn" ${PROJECT_DIRECTORY})
13         exec_program("svnversion" OUTPUT_VARIABLE "SVN_VERSION")
14         message("SVN_VERSION ${SVN_VERSION}")
15 endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.svn)
16
17 if(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git)
18         find_file(GIT ".git" ${PROJECT_DIRECTORY})
19         exec_program("git log --oneline -1 | sed 's| .*||'" OUTPUT_VARIABLE "GIT_VERSION")
20         message("GIT_VERSION ${GIT_VERSION}")
21 endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git)
22
23 #--------------------------------------------------------------------------------------------------
24 ### Initialize of CONTEXT JAVA
25 if(${disable_java})
26         SET(HAVE_JAVA 0)
27 else(${disable_java})
28         include(FindJava)
29         include(FindJNI)
30         find_path(JAR   NAMES jar       PATHS NO_DEFAULT_PATHS  )       
31         if(JAVA_RUNTIME AND JAVA_COMPILE AND JAR AND JAVA_INCLUDE_PATH)
32                 SET(HAVE_JAVA 1)
33         else(JAVA_RUNTIME AND JAVA_COMPILE AND JAR AND JAVA_INCLUDE_PATH) 
34                 SET(HAVE_JAVA 0)
35         endif(JAVA_RUNTIME AND JAVA_COMPILE AND JAR AND JAVA_INCLUDE_PATH)
36 endif(${disable_java})
37 message("HAVE_JAVA ${HAVE_JAVA}")
38
39 #--------------------------------------------------------------------------------------------------
40 ### Initialize of CONTEXT GTNETS
41 if(${disable_gtnets})
42         SET(HAVE_GTNETS 0)
43 else(${disable_gtnets})
44         set(GTNETS_LDFLAGS "-lgtnets -L${gtnets_path}/lib")
45         set(GTNETS_CPPFLAGS "-I${gtnets_path}/include -I${gtnets_path}/include/gtnets")
46         try_compile(COMPILE_GTNETS_VAR
47                 ${PROJECT_DIRECTORY}
48                 ${PROJECT_DIRECTORY}/src/tmp/prog_gtnets.c
49                 CMAKE_FLAGS ${GTNETS_CPPFLAGS}
50                 COMPILE_DEFINITIONS ${GTNETS_LDFLAGS}
51                 OUTPUT_VARIABLE GETLINE_OUTPUT
52         )
53         if(COMPILE_GTNETS_VAR MATCHES "FALSE")
54                 SET(HAVE_GTNETS 0)
55         else(COMPILE_GTNETS_VAR MATCHES "FALSE")
56                 SET(HAVE_GTNETS 1)
57                 set(INCLUDES
58                         ${INCLUDES}
59                         ${GTNETS_CPPFLAGS}
60                 )
61                 add_definitions(${GTNETS_LDFLAGS})
62         endif(COMPILE_GTNETS_VAR MATCHES "FALSE")
63 endif(${disable_gtnets})
64 message("HAVE_GTNETS ${HAVE_GTNETS}")
65
66 ###################################
67 ## SimGrid and GRAS specific checks
68 ##
69
70 CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
71 CHECK_LIBRARY_EXISTS(pthread pthread_create NO_DEFAULT_PATHS HAVE_pthread_create)
72
73 if(HAVE_pthread_create)
74         ### HAVE_SEM_INIT
75         CHECK_LIBRARY_EXISTS(pthread sem_init NO_DEFAULT_PATHS HAVE_SEM_INIT_LIB)
76         if(HAVE_SEM_INIT_LIB)
77                 try_compile(HAVE_SEM_INIT_run
78                 ${PROJECT_DIRECTORY}
79                 ${PROJECT_DIRECTORY}/src/tmp/prog_sem_init.c
80                 )
81                 if(HAVE_SEM_INIT_run)
82                         set(HAVE_SEM_INIT 1)
83                         message("HAVE_SEM_INIT ${HAVE_SEM_INIT}")
84                 endif(HAVE_SEM_INIT_run)
85         endif(HAVE_SEM_INIT_LIB)
86
87         ### HAVE_SEM_TIMEDWAIT
88         CHECK_LIBRARY_EXISTS(pthread sem_timedwait NO_DEFAULT_PATHS HAVE_SEM_TIMEDWAIT_LIB)
89         if(HAVE_SEM_TIMEDWAIT_LIB)
90                 try_compile(HAVE_SEM_TIMEDWAIT_run
91                 ${PROJECT_DIRECTORY}
92                 ${PROJECT_DIRECTORY}/src/tmp/prog_sem_timedwait.c
93                 )
94                 if(HAVE_SEM_TIMEDWAIT_run)
95                         set(HAVE_SEM_TIMEDWAIT 1)
96                         message("HAVE_SEM_TIMEDWAIT ${HAVE_SEM_TIMEDWAIT}")
97                 endif(HAVE_SEM_TIMEDWAIT_run)
98         endif(HAVE_SEM_TIMEDWAIT_LIB)
99
100         ### HAVE_MUTEX_TIMEDLOCK
101         CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock NO_DEFAULT_PATHS HAVE_MUTEX_TIMEDLOCK_LIB)
102         if(HAVE_MUTEX_TIMEDLOCK_LIB)
103                 try_compile(HAVE_MUTEX_TIMEDLOCK_run
104                 ${PROJECT_DIRECTORY}
105                 ${PROJECT_DIRECTORY}/src/tmp/prog_mutex_timedlock.c
106                 )
107                 if(HAVE_MUTEX_TIMEDLOCK_run)
108                         set(HAVE_MUTEX_TIMEDLOCK 1)
109                         message("HAVE_MUTEX_TIMEDLOCK ${HAVE_MUTEX_TIMEDLOCK}")
110                 endif(HAVE_MUTEX_TIMEDLOCK_run)
111         endif(HAVE_MUTEX_TIMEDLOCK_LIB)
112
113 endif(HAVE_pthread_create)
114
115 #--------------------------------------------------------------------------------------------------
116 ### Initialize of CONTEXT THREADS
117 if(${disable_context_threads})
118         SET(CONTEXT_THREADS 0)
119 else(${disable_context_threads})
120         SET(CONTEXT_THREADS 1)
121 endif(${disable_context_threads})
122 message("CONTEXT_THREADS ${CONTEXT_THREADS}")
123
124 CHECK_FUNCTION_EXISTS(makecontext HAVE_FCT_makecontext)
125 message("HAVE_FCT_makecontext ${HAVE_FCT_makecontext}")
126
127 if(HAVE_FCT_makecontext)
128
129         set(makecontext_CPPFLAGS "-DTEST_makecontext")
130         try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR
131                 ${PROJECT_DIRECTORY}
132                 ${PROJECT_DIRECTORY}/src/tmp/prog_stacksetup.c
133                 COMPILE_DEFINITIONS ${makecontext_CPPFLAGS}
134                 )
135         find_program(CAT_EXE NAMES cat)
136         exec_program("${CAT_EXE}" ARGS "${PROJECT_SOURCE_DIRECTORY}/conftestval" OUTPUT_VARIABLE "ac_cv_stacksetup_makecontext")
137
138         if(COMPILE_makecontext_VAR)
139                 set(makecontext_type "ok")
140         elseif(COMPILE_makecontext_VAR)
141                 set(makecontext_type "guessed")
142         endif(COMPILE_makecontext_VAR)
143
144         find_program(SED_EXE NAMES sed)
145         exec_program("${SED_EXE}" ARGS "-e 's;,.*$;;' ${PROJECT_SOURCE_DIRECTORY}/conftestval" OUTPUT_VARIABLE "makecontext_addr")
146         exec_program("${SED_EXE}" ARGS "-e 's;^.*,;;' ${PROJECT_SOURCE_DIRECTORY}/conftestval" OUTPUT_VARIABLE "makecontext_size")
147
148         set(pth_skaddr_makecontext "#define pth_skaddr_makecontext(skaddr,sksize) (${makecontext_addr})")
149         set(pth_sksize_makecontext "#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})")
150
151 endif(HAVE_FCT_makecontext)
152
153 configure_file(${PROJECT_DIRECTORY}/src/context_sysv_config.h.in ${PROJECT_DIRECTORY}/src/context_sysv_config.h)
154
155 #--------------------------------------------------------------------------------------------------
156
157 ###############
158 ## System checks
159 ##
160
161 #SG_CONFIGURE_PART([System checks...])
162 #AC_PROG_CC(xlC gcc cc) -auto
163 #AM_SANITY_CHECK -auto
164
165 #AC_PROG_MAKE_SET
166 find_program(SET_MAKE NAMES make)
167
168 #AC_PRINTF_NULL
169 try_run(RUN_PRINTF_NULL_VAR COMPILE_PRINTF_NULL_VAR
170         ${PROJECT_DIRECTORY}
171         ${PROJECT_DIRECTORY}/src/tmp/prog_printf_null.c
172         )
173
174 if(RUN_PRINTF_NULL_VAR MATCHES "FAILED_TO_RUN")
175 SET(PRINTF_NULL_WORKING "0")
176 else(RUN_PRINTF_NULL_VAR MATCHES "FAILED_TO_RUN")
177 SET(PRINTF_NULL_WORKING "1")
178 endif(RUN_PRINTF_NULL_VAR MATCHES "FAILED_TO_RUN")
179 message("PRINTF_NULL_WORKING ${PRINTF_NULL_WORKING}")
180
181 #AC_CHECK_VA_COPY
182
183 # Checks for header files.
184
185 CHECK_INCLUDE_FILES("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
186 CHECK_INCLUDE_FILES("time.h;sys/time.h" TIME_WITH_SYS_TIME)
187
188 message("STDC_HEADERS ${STDC_HEADERS}")
189 message("TIME_WITH_SYS_TIME ${TIME_WITH_SYS_TIME}")
190
191 CHECK_INCLUDE_FILE(sys/socket.h HAVE_SOCKET_H)
192 CHECK_INCLUDE_FILE(sys/stat.h HAVE_STAT_H)
193 CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H)
194 CHECK_INCLUDE_FILE(winsock.h HAVE_WINSOCK_H)
195 CHECK_INCLUDE_FILE(winsock2.h HAVE_WINSOCK2_H)
196 CHECK_INCLUDE_FILE(sys/time.h HAVE_TIME_H)
197 CHECK_INCLUDE_FILE(errno.h HAVE_ERRNO_H)
198 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
199 CHECK_INCLUDE_FILE(execinfo.h HAVE_EXECINFO_H)
200 CHECK_INCLUDE_FILE(signal.h HAVE_SIGNAL_H)
201
202 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_gettimeofday)
203 CHECK_FUNCTION_EXISTS(usleep HAVE_usleep)
204 CHECK_FUNCTION_EXISTS(getdtablesize HAVE_getdtablesize)
205 CHECK_FUNCTION_EXISTS(sysconf HAVE_sysconf)
206 CHECK_FUNCTION_EXISTS(readv HAVE_readv)
207 CHECK_FUNCTION_EXISTS(popen HAVE_popen)
208 CHECK_FUNCTION_EXISTS(signal HAVE_signal)
209
210 #--------------------------------------------------------------------------------------------------
211 ### Try execut getline command
212 try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
213         ${PROJECT_DIRECTORY}
214         ${PROJECT_DIRECTORY}/src/tmp/prog_getline.c
215         OUTPUT_VARIABLE GETLINE_OUTPUT
216         )
217
218 if(RUN_RESULT_VAR MATCHES "FAILED_TO_RUN")
219 SET(need_getline "")
220 else(RUN_RESULT_VAR MATCHES "FAILED_TO_RUN")
221 SET(need_getline "#define SIMGRID_NEED_GETLINE 1")
222 endif(RUN_RESULT_VAR MATCHES "FAILED_TO_RUN")
223
224 ### check for a working snprintf
225 CHECK_FUNCTION_EXISTS(snprintf SNPRINTF_FUNC)
226 CHECK_FUNCTION_EXISTS(vsnprintf VSNPRINTF_FUNC)
227 if(SNPRINTF_FUNC AND VSNPRINTF_FUNC)
228
229         try_run(RUN_SNPRINTF_FUNC_VAR COMPILE_SNPRINTF_FUNC_VAR
230                 ${PROJECT_DIRECTORY}
231                 ${PROJECT_DIRECTORY}/src/tmp/prog_snprintf.c
232                 )
233         if(CMAKE_CROSSCOMPILING)
234                 message("SNPRINTF_FUNC CROSSCOMPILING")
235                 set(RUN_SNPRINTF_FUNC "cross") 
236         endif(CMAKE_CROSSCOMPILING)
237
238         try_run(RUN_VSNPRINTF_FUNC_VAR COMPILE_VSNPRINTF_FUNC_VAR
239                 ${PROJECT_DIRECTORY}
240                 ${PROJECT_DIRECTORY}/src/tmp/prog_vsnprintf.c
241                 )
242         if(CMAKE_CROSSCOMPILING)
243                 message("VSNPRINTF_FUNC CROSSCOMPILING")
244                 set(RUN_VSNPRINTF_FUNC "cross")
245         endif(CMAKE_CROSSCOMPILING)
246         
247         if(RUN_VSNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN" AND RUN_SNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
248         else(RUN_VSNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN" AND RUN_SNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
249                 set(PREFER_PORTABLE_SNPRINTF 1)
250                 message("PREFER_PORTABLE_SNPRINTF ${PREFER_PORTABLE_SNPRINTF}")
251         endif(RUN_VSNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN" AND RUN_SNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
252 endif(SNPRINTF_FUNC AND VSNPRINTF_FUNC)
253
254 ### check for asprintf function familly
255 CHECK_FUNCTION_EXISTS(asprintf ASPRINTF_FUNC)
256 if(ASPRINTF_FUNC)
257         SET(need_asprintf "")
258 else(ASPRINTF_FUNC)
259         SET(need_asprintf "#define SIMGRID_NEED_ASPRINTF 1")
260 endif(ASPRINTF_FUNC)
261 CHECK_FUNCTION_EXISTS(vasprintf VASPRINTF_FUNC)
262 if(VASPRINTF_FUNC)
263         SET(need_vasprintf "")
264 else(VASPRINTF_FUNC)
265         SET(need_vasprintf "#define SIMGRID_NEED_VASPRINTF 1")
266 endif(VASPRINTF_FUNC)
267
268 configure_file(${PROJECT_DIRECTORY}/include/simgrid_config.h.in ${PROJECT_DIRECTORY}/include/simgrid_config.h)