X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7951b2d0118b44426367d128f5229eb3e3960536..c8d813c5dd9d73334cd249e22648a950418b51f7:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a598eb457..aa4fb63171 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,43 @@ cmake_minimum_required(VERSION 2.6) -project(simgrid CXX C) +### Need to set rc ccompiler before enable language +if(WIN32) + SET(CMAKE_RC_COMPILER "windres") +endif(WIN32) +project(SimGrid CXX C) + set(CMAKE_C_FLAGS "" CACHE TYPE INTERNAL FORCE) set(CMAKE_CXX_FLAGS "" CACHE TYPE INTERNAL FORCE) set(CMAKE_EXE_LINKER_FLAGS "" CACHE TYPE INTERNAL FORCE) -set(release_version "3.5") + +## Mapping version number -> version name +# 3.5.99 -> alpha1 (oops) +# 3.5.9{1,2} -> beta{1,2} +# 3.5.9{3,4,5} -> rc{1,2,3} +# 3.6.{0,1,2} -> release 3.6, 3.6.1, 3.6.2 +# 3.7.0 + +set(SIMGRID_VERSION_MAJOR "3") +set(SIMGRID_VERSION_MINOR "7") +set(SIMGRID_VERSION_PATCH "0") + +if(${SIMGRID_VERSION_PATCH} EQUAL "0") + set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}") +else(${SIMGRID_VERSION_PATCH} EQUAL "0") + set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}") +endif(${SIMGRID_VERSION_PATCH} EQUAL "0") set(libsimgrid_version "${release_version}") set(libgras_version "${release_version}") set(libsmpi_version "${release_version}") set(GCC_NEED_VERSION "4.0") +set(APPLE_NEED_GCC_VERSION "4.6") ### SET THE LIBRARY EXTENSION AND GCC VERSION if(APPLE) #MAC - set(GCC_NEED_VERSION "4.5") set(LIB_EXE "dylib") else(APPLE) if(WIN32) #WINDOWS set(LIB_EXE "a") + set(BIN_EXE ".exe") else(WIN32) #UNIX set(LIB_EXE "so") endif(WIN32) @@ -43,14 +65,14 @@ endif(VBC) ### Find programs and paths FIND_PROGRAM(GCOV_PATH gcov) -FIND_PROGRAM(VALGRIND_PATH valgrind) include(FindPerl) if(NOT PERL_EXECUTABLE) message(FATAL_ERROR "-- SimGrid cannot be compiled without Perl installed -- sorry. Bailling out.") endif(NOT PERL_EXECUTABLE) -if(UNIX AND NOT APPLE) - exec_program("${CMAKE_COMMAND} -E chdir \"${CMAKE_HOME_DIRECTORY}\" pwd -P" OUTPUT_VARIABLE TRUE_CMAKE_HOME_DIRECTORY) +if(CMAKE_CACHE_MAJOR_VERSION EQUAL "2" AND CMAKE_CACHE_MINOR_VERSION GREATER "7") #need cmake version 2.8 + get_filename_component(TRUE_CMAKE_HOME_DIRECTORY "${CMAKE_HOME_DIRECTORY}" REALPATH) + get_filename_component(TRUE_CMAKE_BINARY_DIR "${CMAKE_BINARY_DIR}" REALPATH) if(${TRUE_CMAKE_HOME_DIRECTORY} STREQUAL ${CMAKE_HOME_DIRECTORY}) else(${TRUE_CMAKE_HOME_DIRECTORY} STREQUAL ${CMAKE_HOME_DIRECTORY}) message(STATUS "Change link path '${CMAKE_HOME_DIRECTORY}' to true path '${TRUE_CMAKE_HOME_DIRECTORY}'") @@ -58,13 +80,12 @@ if(UNIX AND NOT APPLE) set(CMAKE_SOURCE_DIR "${TRUE_CMAKE_HOME_DIRECTORY}" CACHE TYPE INTERNAL FORCE) endif(${TRUE_CMAKE_HOME_DIRECTORY} STREQUAL ${CMAKE_HOME_DIRECTORY}) - exec_program("${CMAKE_COMMAND} -E chdir \"${CMAKE_BINARY_DIR}\" pwd -P" OUTPUT_VARIABLE TRUE_CMAKE_BINARY_DIR) if(${TRUE_CMAKE_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR}) else(${TRUE_CMAKE_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(STATUS "Change link path '${CMAKE_BINARY_DIR}' to true path '${TRUE_CMAKE_BINARY_DIR}'") set(CMAKE_BINARY_DIR "${TRUE_CMAKE_BINARY_DIR}" CACHE TYPE INTERNAL FORCE) endif(${TRUE_CMAKE_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR}) -endif(UNIX AND NOT APPLE) +endif(CMAKE_CACHE_MAJOR_VERSION EQUAL "2" AND CMAKE_CACHE_MINOR_VERSION GREATER "7") ### Set some variables for Cmake SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) @@ -100,48 +121,22 @@ endif(NOT CMAKE_CROSSCOMPILING AND EXISTS /usr/include/) ### Check 32bits or 64bits INCLUDE (CheckTypeSize) -CHECK_TYPE_SIZE("long" SIZEOF_LONG) -IF(SIZEOF_LONG EQUAL 4) +CHECK_TYPE_SIZE("void*" SIZEOF_VOIDSTAR) +IF(SIZEOF_VOIDSTAR EQUAL 4) SET(ARCH_32_BITS 1) -ELSE(SIZEOF_LONG EQUAL 4) +ELSE(SIZEOF_VOIDSTAR EQUAL 4) SET(ARCH_32_BITS 0) -ENDIF(SIZEOF_LONG EQUAL 4) +ENDIF(SIZEOF_VOIDSTAR EQUAL 4) if(WIN32) - set(INCLUDES_MORE $ENV{INCLUDE}) - string(REPLACE "\\" "/" INCLUDES_MORE "${INCLUDES_MORE}") - foreach(include_dir ${INCLUDES_MORE}) - if(IS_DIRECTORY ${include_dir}) - string(REGEX MATCH ".*[ ].*" testoki "${include_dir}") - if(testoki) - string(REPLACE " " "\\ " include_dir "${include_dir}") - set(INCLUDES ${INCLUDES} \"${include_dir}\") - else(testoki) - set(INCLUDES ${INCLUDES} ${include_dir}) - endif(testoki) - else(IS_DIRECTORY ${include_dir}) - message(FATAL_ERROR "${include_dir} not find") - endif(IS_DIRECTORY ${include_dir}) - endforeach(include_dir ${INCLUDES_MORE}) - - if(BORLAND) ### BORLAND COMPILER - set(__BORLANDC__ 1) - set(CMAKE_COMPILER_IS_GNUCC 0) - set(MSVC 0) - set(_XBT_BORLANDC_COMPILER 1) - endif(BORLAND) - - if(MSVC) ### MicroSoftVisualC COMPILER - set(__VISUALC__ 1) - set(BORLAND 0) - set(CMAKE_COMPILER_IS_GNUCC 0) - set(_XBT_VISUALC_COMPILER 1) - set(_MSC_VER 1) - set(__STRICT_ANSI__ 1) - set(_M_IX86 1) - endif(MSVC) - + #Need env INCLUDE + set(CMAKE_INCLUDE_WIN "${CMAKE_C_COMPILER}") + set(CMAKE_LIB_WIN "${CMAKE_C_COMPILER}") + string(REGEX REPLACE "/bin/gcc.*" "/include" CMAKE_INCLUDE_WIN "${CMAKE_INCLUDE_WIN}") + string(REGEX REPLACE "/bin/gcc.*" "/lib" CMAKE_LIB_WIN "${CMAKE_LIB_WIN}") + set(INCLUDES ${INCLUDES} ${CMAKE_INCLUDE_WIN}) + if(CMAKE_COMPILER_IS_GNUCC) set(__GNUC__ 1) exec_program("${CMAKE_C_COMPILER} --version" OUTPUT_VARIABLE "COMPILER_C_VERSION") @@ -157,6 +152,8 @@ if(WIN32) endif(COMPILER_C_MINOR_VERSION) set(MSVC 0) set(BORLAND 0) + else(CMAKE_COMPILER_IS_GNUCC) + message(FATAL_ERROR "Please use MinGW to compile SimGrid!") endif(CMAKE_COMPILER_IS_GNUCC) if(ARCH_32_BITS) ### Arch 32bits @@ -164,13 +161,20 @@ if(WIN32) else(ARCH_32_BITS) ### Arch 64bits set(_WIN64 1) endif(ARCH_32_BITS) + + set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITEW6432}) + if(NSIS_WIN_VERSION MATCHES "") + set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITECTURE}) + endif(NSIS_WIN_VERSION MATCHES "") + string(TOLOWER ${NSIS_WIN_VERSION} NSIS_WIN_VERSION) set(_XBT_WIN32 1) - message(STATUS "C_COMPILER $ENV{CC}") - message(STATUS "CXX_COMPILER $ENV{CXX}") - message(STATUS "INCLUDE $ENV{INCLUDE}") - message(STATUS "LIB $ENV{LIB}") + message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${COMPILER_C_VERSION}") + message(STATUS "CXX_COMPILER ${CMAKE_CXX_COMPILER} ${COMPILER_CXX_VERSION}") + message(STATUS "CMAKE_RC_COMPILER ${CMAKE_RC_COMPILER}") + message(STATUS "INCLUDE ${CMAKE_INCLUDE_WIN}") + message(STATUS "LIB ${CMAKE_LIB_WIN}") message(STATUS "MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}") message(STATUS "CMAKE_BUILD_TOOL ${CMAKE_BUILD_TOOL}") message(STATUS "LINKER ${CMAKE_LINKER}") @@ -215,18 +219,8 @@ endif(NOT WIN32) ### Make Exes include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeExe.cmake) -### Make Simgrid.jar and Java examples -if(HAVE_JAVA) - include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeJava.cmake) -endif(HAVE_JAVA) - ### Make tests -if(NOT WIN32) include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/AddTests.cmake) -else(NOT WIN32) - -endif(NOT WIN32) - include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/CTestConfig.cmake) ### Setup the distrib @@ -235,10 +229,13 @@ include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Distrib.cmake) ### Pipol compilation include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Pipol.cmake) -if(NOT WIN32) ### Build the doc +if(NOT WIN32) include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/GenerateDoc.cmake) +else(NOT WIN32) +include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/GenerateDocWin.cmake) endif(NOT WIN32) + ### Print ARGS include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/PrintArgs.cmake)