1 cmake_minimum_required(VERSION 2.6)
2 include(CheckFunctionExists)
3 include(CheckIncludeFile)
4 include(CheckIncludeFiles)
5 include(CheckLibraryExists)
7 message("\n_______CONTEXT________")
8 #--------------------------------------------------------------------------------------------------
9 ### Initialize of CONTEXT JAVA
15 find_path(JAR NAMES jar PATHS NO_DEFAULT_PATHS )
16 if(JAVA_RUNTIME AND JAVA_COMPILE AND JAR AND JAVA_INCLUDE_PATH)
18 else(JAVA_RUNTIME AND JAVA_COMPILE AND JAR AND JAVA_INCLUDE_PATH)
20 endif(JAVA_RUNTIME AND JAVA_COMPILE AND JAR AND JAVA_INCLUDE_PATH)
22 message("HAVE_JAVA ${HAVE_JAVA}")
24 #--------------------------------------------------------------------------------------------------
25 ### Initialize of CONTEXT 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
33 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_gtnets.c
34 CMAKE_FLAGS ${GTNETS_CPPFLAGS}
35 COMPILE_DEFINITIONS ${GTNETS_LDFLAGS}
36 OUTPUT_VARIABLE GETLINE_OUTPUT
38 if(COMPILE_GTNETS_VAR MATCHES "FALSE")
40 else(COMPILE_GTNETS_VAR MATCHES "FALSE")
46 add_definitions(${GTNETS_LDFLAGS})
47 endif(COMPILE_GTNETS_VAR MATCHES "FALSE")
49 message("HAVE_GTNETS ${HAVE_GTNETS}")
51 #--------------------------------------------------------------------------------------------------
52 ### Initialize of CONTEXT THREADS
54 SET(CONTEXT_THREADS 0)
56 SET(CONTEXT_THREADS 1)
57 endif(disable_threads)
58 message("CONTEXT_THREADS ${CONTEXT_THREADS}")
60 message("______END_CONTEXT______")
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)
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________")
79 message("\n_____GRAS_&_SIMGRID____")
80 ###################################
81 ## SimGrid and GRAS specific checks
84 CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
85 CHECK_LIBRARY_EXISTS(pthread pthread_create NO_DEFAULT_PATHS HAVE_pthread_create)
87 if(HAVE_pthread_create)
89 CHECK_LIBRARY_EXISTS(pthread sem_init NO_DEFAULT_PATHS HAVE_SEM_INIT_LIB)
91 try_compile(HAVE_SEM_INIT_run
93 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_sem_init.c
97 else(HAVE_SEM_INIT_run)
99 endif(HAVE_SEM_INIT_run)
100 message("HAVE_SEM_INIT ${HAVE_SEM_INIT}")
101 endif(HAVE_SEM_INIT_LIB)
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
108 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_sem_timedwait.c
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)
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
123 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_mutex_timedlock.c
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)
133 endif(HAVE_pthread_create)
135 #--------------------------------------------------------------------------------------------------
137 CHECK_FUNCTION_EXISTS(makecontext HAVE_FCT_makecontext)
138 message("HAVE_FCT_makecontext ${HAVE_FCT_makecontext}")
140 if(HAVE_FCT_makecontext)
141 set(makecontext_CPPFLAGS "-DTEST_makecontext")
142 try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR
144 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_stacksetup.c
145 COMPILE_DEFINITIONS ${makecontext_CPPFLAGS}
147 find_program(CAT_EXE NAMES cat)
148 exec_program("${CAT_EXE}" ARGS "${PROJECT_SOURCE_DIRECTORY}/conftestval" OUTPUT_VARIABLE "ac_cv_stacksetup_makecontext")
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)
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")
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})")
162 endif(HAVE_FCT_makecontext)
164 configure_file(${PROJECT_DIRECTORY}/src/context_sysv_config.h.in ${PROJECT_DIRECTORY}/src/context_sysv_config.h)
166 #--------------------------------------------------------------------------------------------------
172 #SG_CONFIGURE_PART([System checks...])
173 #AC_PROG_CC(xlC gcc cc) -auto
174 #AM_SANITY_CHECK -auto
177 find_program(SET_MAKE NAMES make)
180 try_run(RUN_PRINTF_NULL_VAR COMPILE_PRINTF_NULL_VAR
182 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_printf_null.c
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}")
194 # Checks for header files.
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}")
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}")
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}")
237 #--------------------------------------------------------------------------------------------------
238 ### Try execut getline command
239 try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
241 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_getline.c
242 OUTPUT_VARIABLE GETLINE_OUTPUT
245 if(RUN_RESULT_VAR MATCHES "FAILED_TO_RUN")
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")
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)
256 try_run(RUN_SNPRINTF_FUNC_VAR COMPILE_SNPRINTF_FUNC_VAR
258 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_snprintf.c
260 if(CMAKE_CROSSCOMPILING)
261 message("SNPRINTF_FUNC CROSSCOMPILING")
262 set(RUN_SNPRINTF_FUNC "cross")
263 endif(CMAKE_CROSSCOMPILING)
265 try_run(RUN_VSNPRINTF_FUNC_VAR COMPILE_VSNPRINTF_FUNC_VAR
267 ${PROJECT_DIRECTORY}/CPACK/tmp/prog_vsnprintf.c
269 if(CMAKE_CROSSCOMPILING)
270 message("VSNPRINTF_FUNC CROSSCOMPILING")
271 set(RUN_VSNPRINTF_FUNC "cross")
272 endif(CMAKE_CROSSCOMPILING)
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)
282 ### check for asprintf function familly
283 CHECK_FUNCTION_EXISTS(asprintf ASPRINTF_FUNC)
285 SET(need_asprintf "")
287 SET(need_asprintf "#define SIMGRID_NEED_ASPRINTF 1")
289 CHECK_FUNCTION_EXISTS(vasprintf VASPRINTF_FUNC)
291 SET(need_vasprintf "")
293 SET(need_vasprintf "#define SIMGRID_NEED_VASPRINTF 1")
294 endif(VASPRINTF_FUNC)
296 configure_file(${PROJECT_DIRECTORY}/include/simgrid_config.h.in ${PROJECT_DIRECTORY}/include/simgrid_config.h)
297 message("__END_GRAS_&_SIMGRID____\n")