Logo AND Algorithmique Numérique Distribuée

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