X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1b30f00857843f1cee60814ed519ff82e8ef4787..1180bb9c605c2c429e8339be413574876893637e:/buildtools/Cmake/src/CMakeCompleteInFiles.txt diff --git a/buildtools/Cmake/src/CMakeCompleteInFiles.txt b/buildtools/Cmake/src/CMakeCompleteInFiles.txt index 95dd3920f5..bc298c9fd5 100644 --- a/buildtools/Cmake/src/CMakeCompleteInFiles.txt +++ b/buildtools/Cmake/src/CMakeCompleteInFiles.txt @@ -3,9 +3,6 @@ include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckLibraryExists) -find_program(SET_MAKE NAMES make) -find_program(CAT_EXE NAMES cat) - # Checks for header libraries functions. CHECK_LIBRARY_EXISTS(pthread pthread_create NO_DEFAULT_PATHS pthread) @@ -50,48 +47,127 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF) CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT) +CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) set(CONTEXT_UCONTEXT 0) SET(CONTEXT_THREADS 0) -SET(HAVE_RUBY_H 0) -set(libruby "ruby1.8") -if(NOT disable_ruby) - include(FindRuby) - set(OKITOKI no) - foreach(path ${RUBY_INCLUDE_PATH}) - if(NOT OKITOKI) - set(RUBY_INCLUDE_PATH ${path}) - set(OKITOKI yes) - endif(NOT OKITOKI) - endforeach(path ${RUBY_INCLUDE_PATH}) - if(RUBY_INCLUDE_PATH) - find_library(RUBY_LIB_PATH_1 - NAMES ruby1.8 - PATHS ${RUBY_INCLUDE_PATH} +SET(HAVE_RUBY 0) +set(HAVE_LUA 0) +SET(HAVE_JAVA 0) +SET(HAVE_TRACING 0) + +if(enable_tracing) + SET(HAVE_TRACING 1) +endif(enable_tracing) + +if(enable_lua) + exec_program("lua -v" OUTPUT_VARIABLE LUA_VERSION) + string(REGEX MATCH "[0-9].[0-9].[0-9]" LUA_VERSION "${LUA_VERSION}") + string(REGEX MATCH "^[0-9]" LUA_MAJOR_VERSION "${LUA_VERSION}") + string(REPLACE "${LUA_MAJOR_VERSION}." "" LUA_VERSION "${LUA_VERSION}") + string(REGEX MATCH "^[0-9]" LUA_MINOR_VERSION "${LUA_VERSION}") + string(REPLACE "${LUA_MINOR_VERSION}." "" LUA_PATCH_VERSION "${LUA_VERSION}") + + if(LUA_MAJOR_VERSION MATCHES "5" AND LUA_MINOR_VERSION MATCHES "1") + + find_path(HAVE_LUA5_1_LUALIB_H + NAMES lualib.h + PATHS "/sw/include/" "/usr/include/lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}/" + ) + find_path(HAVE_LUA5_1_LAUXLIB_H + NAMES lauxlib.h + PATHS "/sw/include/" "/usr/include/lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}/" + ) + find_library(LUA_LIB_PATH_1 + NAMES lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION} + PATHS /usr ) - find_library(RUBY_LIB_PATH_2 - NAMES ruby.1.8 - PATHS ${RUBY_INCLUDE_PATH} + find_library(LUA_LIB_PATH_2 + NAMES lua-${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION} + PATHS /usr ) - if(RUBY_LIB_PATH_2) - set(libruby "ruby.1.8") - endif(RUBY_LIB_PATH_2) + find_library(LUA_LIB_PATH_3 + NAMES lua.${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}.${LUA_PATCH_VERSION} + PATHS /sw + ) + + if(HAVE_LUA5_1_LUALIB_H AND HAVE_LUA5_1_LAUXLIB_H) + set(HAVE_LUA 1) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${HAVE_LUA5_1_LUALIB_H} ") + + if(NOT HAVE_LUA5_1_LUALIB_H STREQUAL HAVE_LUA5_1_LAUXLIB_H) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${HAVE_LUA5_1_LAUXLIB_H} ") + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-I${HAVE_LUA5_1_LAUXLIB_H} ") + endif(NOT HAVE_LUA5_1_LUALIB_H STREQUAL HAVE_LUA5_1_LAUXLIB_H) + endif(HAVE_LUA5_1_LUALIB_H AND HAVE_LUA5_1_LAUXLIB_H) + + if(LUA_LIB_PATH_1) + set(liblua lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}) + set(lua_lib_path_to_use ${LUA_LIB_PATH_1}) + endif(LUA_LIB_PATH_1) + + if(LUA_LIB_PATH_2) + set(liblua lua-${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}) + set(lua_lib_path_to_use ${LUA_LIB_PATH_2}) + endif(LUA_LIB_PATH_2) + + if(LUA_LIB_PATH_3) + set(liblua lua.${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}.${LUA_PATCH_VERSION}) + set(lua_lib_path_to_use ${LUA_LIB_PATH_3}) + endif(LUA_LIB_PATH_3) + + if(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) + set(HAVE_LUA 0) + else(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) + string(REGEX REPLACE "liblua.*" "" lua_lib_path_to_use ${lua_lib_path_to_use}) + string(REGEX MATCH "-L${lua_lib_path_to_use}" operation "${CMAKE_EXE_LINKER_FLAGS}") + if(NOT operation) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}-L${lua_lib_path_to_use} ") + endif(NOT operation) + endif(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${RUBY_INCLUDE_PATH} -fPIC ") - ADD_DEFINITIONS("-I${PROJECT_DIRECTORY}/src/bindings/ruby -I${PROJECT_DIRECTORY}/src/simix") - SET(HAVE_RUBY_H 1) - endif(RUBY_INCLUDE_PATH) -endif(NOT disable_ruby) + else(LUA_MAJOR_VERSION MATCHES "5" AND LUA_MINOR_VERSION MATCHES "1") + message("Lua binding need version 5.1.x actually version ${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}.x") + endif(LUA_MAJOR_VERSION MATCHES "5" AND LUA_MINOR_VERSION MATCHES "1") + +endif(enable_lua) -if(tracing) - SET(HAVE_TRACING 1) -endif(tracing) +if(enable_ruby) + include(FindRuby) + if(RUBY_LIBRARY) + if(RUBY_VERSION_MAJOR MATCHES "1" AND RUBY_VERSION_MINOR MATCHES "8") + set(LIB_RUBY_VERSION "${RUBY_VERSION_MAJOR}.${RUBY_VERSION_MINOR}.${RUBY_VERSION_PATCH}") + string(REGEX MATCH "ruby.*[0-9]" RUBY_LIBRARY_NAME ${RUBY_LIBRARY}) + if(NOT RUBY_LIBRARY_NAME) + set(RUBY_LIBRARY_NAME ruby) + endif(NOT RUBY_LIBRARY_NAME) + string(REGEX REPLACE "libruby.*$" "" RUBY_LIBRARY ${RUBY_LIBRARY}) + SET(CMAKE_EXE_LINKER_FLAGS "-L${RUBY_LIBRARY}") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${RUBY_CONFIG_INCLUDE_DIR} ") #path to config.h + string(COMPARE EQUAL "${RUBY_INCLUDE_DIR}" "${RUBY_CONFIG_INCLUDE_DIR}" operation) + if(NOT operation) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${RUBY_INCLUDE_DIR} ") #path to ruby.h + endif(NOT operation) + ADD_DEFINITIONS("-I${PROJECT_DIRECTORY}/src/bindings/ruby -I${PROJECT_DIRECTORY}/src/simix") + SET(HAVE_RUBY 1) + else(RUBY_VERSION_MAJOR MATCHES "1" AND RUBY_VERSION_MINOR MATCHES "8") + message("Ruby binding need version 1.8.x actually version ${RUBY_VERSION_MAJOR}.${RUBY_VERSION_MINOR}.x") + SET(HAVE_RUBY 0) + endif(RUBY_VERSION_MAJOR MATCHES "1" AND RUBY_VERSION_MINOR MATCHES "8") + else(RUBY_LIBRARY) + SET(HAVE_RUBY 0) + endif(RUBY_LIBRARY) + + if(NOT RUBY_EXECUTABLE) + message("Take care : you don't have ruby executable so you can compile and build examples but can't execute them!!!") + endif(NOT RUBY_EXECUTABLE) + +endif(enable_ruby) #-------------------------------------------------------------------------------------------------- ### Initialize of CONTEXT JAVA -if(disable_java) - SET(HAVE_JAVA 0) -else(disable_java) + +if(enable_java) include(FindJava) include(FindJNI) if(JAVA_INCLUDE_PATH) @@ -99,41 +175,39 @@ else(disable_java) endif(JAVA_INCLUDE_PATH) if(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2) SET(HAVE_JAVA 1) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${JAVA_INCLUDE_PATH}") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${JAVA_INCLUDE_PATH} ") if(NOT JAVA_INCLUDE_PATH STREQUAL JAVA_INCLUDE_PATH2) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${JAVA_INCLUDE_PATH2}") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${JAVA_INCLUDE_PATH2} ") endif(NOT JAVA_INCLUDE_PATH STREQUAL JAVA_INCLUDE_PATH2) else(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2) SET(HAVE_JAVA 0) endif(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2) -endif(disable_java) +endif(enable_java) #-------------------------------------------------------------------------------------------------- ### Initialize of CONTEXT GTNETS -if(disable_gtnets) +if(NOT enable_gtnets) SET(HAVE_GTNETS 0) -else(disable_gtnets) - SET(BUILDNAME "GTNETS" CACHE TYPE INTERNAL FORCE) +else(NOT enable_gtnets) set(GTNETS_LDFLAGS "-L${gtnets_path}/lib") set(GTNETS_CPPFLAGS "-I${gtnets_path}/include/gtnets") exec_program("${CMAKE_CXX_COMPILER} ${GTNETS_CPPFLAGS} -lgtnets ${GTNETS_LDFLAGS} ${PROJECT_DIRECTORY}/buildtools/Cmake/prog_test/prog_gtnets.cpp " OUTPUT_VARIABLE COMPILE_GTNETS_VAR) if(COMPILE_GTNETS_VAR) SET(HAVE_GTNETS 0) - message("GTnetS doesn't works : set -Ddisable_gtnets=on") else(COMPILE_GTNETS_VAR) SET(HAVE_GTNETS 1) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GTNETS_LDFLAGS} ${GTNETS_CPPFLAGS} ") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTNETS_LDFLAGS} ${GTNETS_CPPFLAGS} ") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}${GTNETS_LDFLAGS} ${GTNETS_CPPFLAGS} ") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${GTNETS_LDFLAGS} ${GTNETS_CPPFLAGS} ") endif(COMPILE_GTNETS_VAR) -endif(disable_gtnets) +endif(NOT enable_gtnets) #-------------------------------------------------------------------------------------------------- ### Initialize of CONTEXT THREADS if(pthread) -set(pthread 1) + set(pthread 1) elseif(pthread) -set(pthread 0) + set(pthread 0) endif(pthread) if(pthread) @@ -182,12 +256,13 @@ try_run(RUN_mcsc_VAR COMPILE_mcsc_VAR ${PROJECT_DIRECTORY}/buildtools/Cmake/prog_test/prog_AC_CHECK_MCSC.c COMPILE_DEFINITIONS "${mcsc_flags}" ) -file(READ "${PROJECT_DIRECTORY}/conftestval" mcsc) -if(mcsc MATCHES "yes") +file(READ "${Simgrid_BINARY_DIR}/conftestval" mcsc) +STRING(REPLACE "\n" "" mcsc ${mcsc}) +if(mcsc) set(mcsc "yes") -elseif(mcsc MATCHES "yes") +elseif(mcsc) set(mcsc "no") -endif(mcsc MATCHES "yes") +endif(mcsc) if(mcsc MATCHES "no" AND pthread) if(HAVE_WINDOWS_H) @@ -223,9 +298,9 @@ endif(with_context MATCHES "auto") if(with_context MATCHES "ucontext") set(with_context_ok 1) - if(mcsc MATCHES "yes") + if(mcsc) set(CONTEXT_UCONTEXT 1) - else(mcsc MATCHES "yes") + else(mcsc) if(windows_context MATCHES "yes") set(with_context "windows") message("with_context ucontext change to windows") @@ -233,7 +308,7 @@ if(with_context MATCHES "ucontext") set(with_context "pthread") message("with_context ucontext change to pthread") endif(windows_context MATCHES "yes") - endif(mcsc MATCHES "yes") + endif(mcsc) endif(with_context MATCHES "ucontext") if(with_context MATCHES "pthread") @@ -252,75 +327,34 @@ if(NOT with_context_ok) message(FATAL_ERROR "-Dwith-context must be either ucontext or pthread") endif(NOT with_context_ok) -set(HAVE_LUA 0) - -if(NOT disable_lua) - find_path(HAVE_LUA5_1_LUALIB_H - NAMES lualib.h - PATHS "/sw/include/" "/usr/include/lua5.1/" - ) - find_path(HAVE_LUA5_1_LAUXLIB_H - NAMES lauxlib.h - PATHS "/sw/include/" "/usr/include/lua5.1/" - ) - find_library(LUA_LIB_PATH_1 - NAMES lua5.1 - PATHS /usr - ) - find_library(LUA_LIB_PATH_2 - NAMES lua-5.1 - PATHS /usr - ) - find_library(LUA_LIB_PATH_3 - NAMES lua.5.1.1 - PATHS /sw - ) - - if(HAVE_LUA5_1_LUALIB_H AND HAVE_LUA5_1_LAUXLIB_H) - set(HAVE_LUA 1) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${HAVE_LUA5_1_LUALIB_H} ") - #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${HAVE_LUA5_1_LUALIB_H} ") - - if(NOT HAVE_LUA5_1_LUALIB_H STREQUAL HAVE_LUA5_1_LAUXLIB_H) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${HAVE_LUA5_1_LAUXLIB_H} ") - #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-I${HAVE_LUA5_1_LAUXLIB_H} ") - endif(NOT HAVE_LUA5_1_LUALIB_H STREQUAL HAVE_LUA5_1_LAUXLIB_H) - endif(HAVE_LUA5_1_LUALIB_H AND HAVE_LUA5_1_LAUXLIB_H) - - if(LUA_LIB_PATH_1) - set(liblua lua5.1) - endif(LUA_LIB_PATH_1) - - if(LUA_LIB_PATH_2) - set(liblua lua-5.1) - endif(LUA_LIB_PATH_2) - - if(LUA_LIB_PATH_3) - set(liblua lua.5.1.1) - endif(LUA_LIB_PATH_3) - - if(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) - set(HAVE_LUA 0) - endif(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) - -endif(NOT disable_lua) - ############### ## SVN version check ## if(IS_DIRECTORY ${PROJECT_DIRECTORY}/.svn) find_file(SVN ".svn" ${PROJECT_DIRECTORY}) exec_program("svnversion ${PROJECT_DIRECTORY}" OUTPUT_VARIABLE "SVN_VERSION") + message("SVN_VERSION : ${SVN_VERSION}") endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.svn) if(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git) find_file(GIT ".git" ${PROJECT_DIRECTORY}) exec_program("git --git-dir=${PROJECT_DIRECTORY}/.git log --oneline -1 | sed 's| .*||'" OUTPUT_VARIABLE "GIT_VERSION") exec_program("git --git-dir=${PROJECT_DIRECTORY}/.git log -n 1 --format=%ai ." OUTPUT_VARIABLE "GIT_DATE") + exec_program("git svn info" ${PROJECT_DIRECTORY} OUTPUT_VARIABLE "GIT_SVN_VERSION") + string(REPLACE "\n" ";" GIT_SVN_VERSION ${GIT_SVN_VERSION}) STRING(REPLACE " +0000" "" GIT_DATE ${GIT_DATE}) STRING(REPLACE " " "~" GIT_DATE ${GIT_DATE}) STRING(REPLACE ":" "-" GIT_DATE ${GIT_DATE}) - message("GIT_DATE : ${GIT_DATE}") + message("GIT_DATE : ${GIT_DATE}") + message("GIT_VERSION : ${GIT_VERSION}") + foreach(line ${GIT_SVN_VERSION}) + string(REGEX MATCH "^Revision:.*" line_good ${line}) + if(line_good) + string(REPLACE "Revision: " "" line_good ${line_good}) + set(SVN_VERSION ${line_good}) + endif(line_good) + endforeach(line ${GIT_SVN_VERSION}) + message("GIT_SVN_VERSION : ${SVN_VERSION}") endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git) ################################### @@ -434,9 +468,12 @@ if(HAVE_MAKECONTEXT) COMPILE_DEFINITIONS "${makecontext_CPPFLAGS} ${makecontext_CPPFLAGS_2}" ) - - exec_program("${SED_EXE}" ARGS "-e 's;,.*$;;' ${PROJECT_DIRECTORY}/conftestval" OUTPUT_VARIABLE "makecontext_addr") - exec_program("${SED_EXE}" ARGS "-e 's;^.*,;;' ${PROJECT_DIRECTORY}/conftestval" OUTPUT_VARIABLE "makecontext_size") + file(READ ${Simgrid_BINARY_DIR}/conftestval MAKECONTEXT_ADDR_SIZE) + string(REPLACE "\n" "" MAKECONTEXT_ADDR_SIZE "${MAKECONTEXT_ADDR_SIZE}") + string(REGEX MATCH ;^.*,;MAKECONTEXT_ADDR "${MAKECONTEXT_ADDR_SIZE}") + string(REGEX MATCH ;,.*$; MAKECONTEXT_SIZE "${MAKECONTEXT_ADDR_SIZE}") + string(REPLACE "," "" makecontext_addr "${MAKECONTEXT_ADDR}") + string(REPLACE "," "" makecontext_size "${MAKECONTEXT_SIZE}") set(pth_skaddr_makecontext "#define pth_skaddr_makecontext(skaddr,sksize) (${makecontext_addr})") set(pth_sksize_makecontext "#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})") @@ -450,7 +487,7 @@ endif(HAVE_MAKECONTEXT) ${PROJECT_DIRECTORY} ${PROJECT_DIRECTORY}/buildtools/Cmake/prog_test/prog_stackgrowth.c ) -file(READ "${PROJECT_DIRECTORY}/conftestval" stack) +file(READ "${Simgrid_BINARY_DIR}/conftestval" stack) if(stack MATCHES "down") set(PTH_STACKGROWTH "-1") endif(stack MATCHES "down") @@ -650,6 +687,8 @@ SET( CMAKEDEFINE "#cmakedefine" ) configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/src/c_gras_config.h.in" "${PROJECT_DIRECTORY}/buildtools/Cmake/src/tmp_gras_config.h.in" @ONLY IMMEDIATE) configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/src/tmp_gras_config.h.in" "${PROJECT_DIRECTORY}/src/gras_config.h" @ONLY IMMEDIATE) configure_file(${PROJECT_DIRECTORY}/include/simgrid_config.h.in ${PROJECT_DIRECTORY}/include/simgrid_config.h) +configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/src/tracing_config.h.in" "${PROJECT_DIRECTORY}/buildtools/Cmake/src/tmp_tracing_config.h.in" @ONLY IMMEDIATE) +configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/src/tmp_tracing_config.h.in" "${PROJECT_DIRECTORY}/include/instr/tracing_config.h" @ONLY IMMEDIATE) if(NOT prefix) set(prefix /usr/local)