Migration from SVN

This commit is contained in:
quemy 2012-08-30 11:30:11 +02:00
commit 8cd56f37db
29069 changed files with 0 additions and 4096888 deletions

93
cmake/Config.cmake Normal file
View file

@ -0,0 +1,93 @@
######################################################################################
# Inspired by Boost and SFML CMake files
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(MACOSX 1)
# detect OS X version. (use '/usr/bin/sw_vers -productVersion' to extract V from '10.V.x'.)
execute_process (COMMAND /usr/bin/sw_vers -productVersion OUTPUT_VARIABLE MACOSX_VERSION_RAW)
string(REGEX REPLACE "10\\.([0-9]).*" "\\1" MACOSX_VERSION "${MACOSX_VERSION_RAW}")
if(${MACOSX_VERSION} LESS 5)
message(FATAL_ERROR "Unsupported version of OS X : ${MACOSX_VERSION_RAW}")
return()
endif()
endif()
# Determine architecture
include(CheckTypeSize)
check_type_size(void* SIZEOF_VOID_PTR)
if("${SIZEOF_VOID_PTR}" STREQUAL "4")
set(ARCH x86)
set(LIB lib32)
elseif("${SIZEOF_VOID_PTR}" STREQUAL "8")
set(ARCH x86_64)
set(LIB lib64)
else()
message(FATAL_ERROR "Unsupported architecture")
return()
endif()
######################################################################################
### 0) Define general CXX flags for DEBUG and RELEASE
######################################################################################
if(DEBUG)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "" FORCE)
else(DEBUG)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
endif(DEBUG)
add_definitions(-DDEPRECATED_MESSAGES)
set(CMAKE_CXX_FLAGS_DEBUG "-Wunknown-pragmas -O0 -g -Wall -Wextra -ansi -pedantic" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Wunknown-pragmas -O2" CACHE STRING "" FORCE)
if(SMP)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11 -pthread" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11 -pthread" CACHE STRING "" FORCE)
endif(SMP)
######################################################################################
### 1) Define installation type
######################################################################################
if(INSTALL_TYPE STREQUAL full)
set(ENABLE_CMAKE_EXAMPLE "true" CACHE PATH "ParadisEO examples")
set(ENABLE_CMAKE_TESTING "true" CACHE PATH "ParadisEO tests")
elseif(INSTALL_TYPE STREQUAL min OR NOT DEFINED INSTALL_TYPE)
set(ENABLE_CMAKE_EXAMPLE "false" CACHE PATH "ParadisEO examples")
set(ENABLE_CMAKE_TESTING "false" CACHE PATH "ParadisEO tests")
endif()
######################################################################################
### 2) Define profiling flags
######################################################################################
if(PROFILING)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg --coverage" CACHE STRING "" FORCE)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "" FORCE)
set(ENABLE_CMAKE_TESTING "true" CACHE STRING "" FORCE)
endif(PROFILING)
######################################################################################
### 3) Testing part
######################################################################################
if(ENABLE_CMAKE_TESTING)
enable_testing()
include(CTest REQUIRED)
endif(ENABLE_CMAKE_TESTING)
######################################################################################
### 5) Build examples ?
######################################################################################
set(ENABLE_CMAKE_EXAMPLE "true" CACHE PATH "ParadisEO examples")
######################################################################################
### 6) Determine prefix for installation
######################################################################################
if(UNIX)
set(INSTALL_SUB_DIR /paradiseo)
endif()

40
cmake/Macro.cmake Normal file
View file

@ -0,0 +1,40 @@
######################################################################################
### add_lesson(module target files)
### Macro to add a lesson to a specific module.
### Currently module must be "mo" or "moeo".
### The target name will be prefixed by module name.
### Paramaters files must have the same name as cpp file. No need to have a .param
### file. CMake will check if such a file exists.
######################################################################################
macro(add_lesson module target files)
foreach(i ${files})
if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${i}.param)
add_executable(${i} ${i}.cpp)
else(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${i}.param)
if(${CMAKE_VERBOSE_MAKEFILE})
message(STATUS "Copying ${i}.param")
endif(${CMAKE_VERBOSE_MAKEFILE})
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/${i}.param
${CMAKE_CURRENT_BINARY_DIR}/${i}.param)
add_executable(${i}
${i}.cpp
${CMAKE_CURRENT_BINARY_DIR}/${i}.param)
endif(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${i}.param)
if(${module} MATCHES mo)
target_link_libraries(${i} eoutils ga eo)
elseif(${module} MATCHES moeo)
target_link_libraries(${i} moeo flowshop eo eoutils)
elseif(${module} MATCHES smp)
target_link_libraries(${i} smp eo eoutils)
endif()
install(TARGETS ${i} RUNTIME DESTINATION local/share${INSTALL_SUB_DIR}/${module}/tutorial/${target} COMPONENT examples)
endforeach(i)
# Custom target
add_custom_target(${module}${target} DEPENDS
${files}
${files}.param)
endmacro()

104
cmake/Package.cmake Normal file
View file

@ -0,0 +1,104 @@
######################################################################################
### 0) Set up components
######################################################################################
set(CPACK_COMPONENTS_ALL
libraries
headers
tests
examples
doc
)
set(CPACK_ALL_INSTALL_TYPES Minimal Full)
######################################################################################
### 1) Describing components
######################################################################################
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION "ParadisEO Libraries : EO, MO, MOEO")
set(CPACK_COMPONENT_LIBRARIES_INSTALL_TYPES Minimal Full)
set(CPACK_COMPONENT_LIBRARIES_REQUIRED)
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Headers")
set(CPACK_COMPONENT_HEADERS_DESCRIPTION "C++ headers for using ParadisEO")
set(CPACK_COMPONENT_HEADERS_DEPENDS libraries)
set(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Minimal Full)
set(CPACK_COMPONENT_LIBRARIES_REQUIRED)
set(CPACK_COMPONENT_TESTS_DISPLAY_NAME "Tests")
set(CPACK_COMPONENT_TESTS_DESCRIPTION "Tests")
set(CPACK_COMPONENT_TESTS_DEPENDS libraries)
set(CPACK_COMPONENT_TESTS_INSTALL_TYPES Full)
set(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Examples")
set(CPACK_COMPONENT_EXAMPLES_DESCRIPTION "Examples and lessons")
set(CPACK_COMPONENT_EXAMPLES_DEPENDS libraries)
set(CPACK_COMPONENT_EXAMPLES_INSTALL_TYPES Full)
set(CPACK_COMPONENT_DOC_DISPLAY_NAME "Documentation")
set(CPACK_COMPONENT_DOC_DESCRIPTION "ParadisEO documentation")
set(CPACK_COMPONENT_DOC_INSTALL_TYPES Full)
######################################################################################
### 2) Set up general information about packaging
######################################################################################
# For more details: http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack
#cpack package information
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README")
set(CPACK_PACKAGE_DESCRIPTION "ParadisEO is a white-box object-oriented framework dedicated to the flexible design of metaheuristics. This template-based, ANSI-C++ compliant computation library is portable across both Windows system and sequential platforms (Unix, Linux, Mac OS X, etc.). ParadisEO is distributed under the CeCill license and can be used under several environments.")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Software Framework for Metaheuristics")
set(CPACK_PACKAGE_VENDOR "Inria")
set(CPACK_PACKAGE_CONTACT "paradiseo-help@lists.gforge.inria.fr")
set(CPACK_PACKAGE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
set(CPACK_STRIP_FILES ${PACKAGE_NAME})
set(CPACK_SOURCE_STRIP_FILES "bin/${PROJECT_NAME}")
set(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}")
set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${ARCH}")
if(UNIX)
if(APPLE)
# Generators for Mac OS X
set(CPACK_BINARY_PACKAGEMARKER "ON")
set(CPACK_BINARY_TGZ "OFF")
set(CPACK_BINARY_STGZ "OFF")
#set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/mac.rtf")
else()
# Generators for Unix-like
set(CPACK_GENERATOR "DEB;RPM")
# Determine architecture
include(CheckTypeSize)
check_type_size(void* SIZEOF_VOID_PTR)
if("${SIZEOF_VOID_PTR}" STREQUAL "4")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
elseif("${SIZEOF_VOID_PTR}" STREQUAL "8")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64)
else()
message(FATAL_ERROR "Unsupported architecture")
return()
endif()
endif()
else(UNIX)
# Generator for Windows
set(CPACK_GENERATOR "NSIS")
#set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/winicon.bpm")
endif()
######################################################################################
### 3) And finally, include cpack, this is the last thing to do.
######################################################################################
include(CPack)

54
cmake/Target.cmake Normal file
View file

@ -0,0 +1,54 @@
######################################################################################
### Mrproper will delete all files and folders in build directory
######################################################################################
if(UNIX)
add_custom_target(mrproper COMMAND cd ${CMAKE_BINARY_DIR} && rm -rf *)
endif(UNIX)
######################################################################################
### Doc-all enable to build all documentations in one target
######################################################################################
if(DOXYGEN_FOUND AND DOXYGEN_EXECUTABLE)
if(SMP)
add_custom_target(doc
COMMAND make doc-eo
COMMAND make doc-mo
COMMAND make doc-moeo
COMMAND make doc-smp
)
else()
add_custom_target(doc
COMMAND make doc-eo
COMMAND make doc-mo
COMMAND make doc-moeo
)
endif()
endif(DOXYGEN_FOUND AND DOXYGEN_EXECUTABLE)
######################################################################################
### Perform covering test if lcov is found
######################################################################################
if(PROFILING)
find_program(LCOV
NAMES lcov
PATHS
"/usr/local/bin /usr/bin [HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder] [HKEY_CURRENT_USER\\Software]"
DOC "Path to the memory checking command, used for memory error detection.")
if(LCOV)
add_custom_target(coverage
COMMAND make
COMMAND ctest
COMMAND lcov -d . -c -o output.info
COMMAND lcov -r output.info '*/tutorial*' -o output.info
COMMAND lcov -r output.info '/usr*' -o output.info
COMMAND lcov -r output.info '*/test*' -o output.info
COMMAND genhtml output.info -o coverage/ --highlight --legend
)
else(LCOV)
message(STATUS "Could NOT find Lcov")
endif(LCOV)
endif(PROFILING)

View file

@ -0,0 +1,163 @@
# File: FindParadiseo.cmake
# Version: 0.0.1
#
# The following variables are filled out:
# - PARADISEO_INCLUDE_DIR : EO, MO and MOEO source dir
# - EO_INCLUDE_DIR : EO source dir
# - MO_INCLUDE_DIR : MO source dir
# - MOEO_INCLUDE_DIR : MOEO source dir. WARNING : You have ton include MO before !
# - PARADISEO_LIBRARIES : the list of all required modules
# - PARADISEO_XXX_LIBRARY : the name of the library to link for the required module
# - PARADISEO_XXX_FOUND : true if the required module is found
# - PARADISEO_FOUND : true if all required modules are found
#
# Here are the components:
# - eo
# - PyEO
# - es
# - ga
# - cma
# - flowshop
# - moeo
# - smp
# - peo
# You can use find_package(Paradiseo COMPONENTS ... ) to enable one or several components. If you not specifie component, all components will be load except SMP for compatibility reasons.
#
# Output
# ------
#
# example:
# find_package(Paradiseo COMPONENTS eo eoutils cma es flowshop ga moeo REQUIRED)
# include_directories(${PARADISEO_INCLUDE_DIR})
# add_executable(example ...)
# target_link_libraries(examplep ${PARADISEO_LIBRARIES})
if(UNIX)
set(INSTALL_SUB_DIR /paradiseo)
endif()
# enabled components
if ("${Paradiseo_FIND_COMPONENTS}" STREQUAL "")
set(PARADISEO_LIBRARIES_TO_FIND eo eoutils cma es flowshop ga moeo)
else()
set(PARADISEO_LIBRARIES_TO_FIND ${Paradiseo_FIND_COMPONENTS})
endif()
#set the build directory
set(BUILD_DIR build)
# Path
set(PARADISEO_SRC_PATHS
${PARADISEO_ROOT}
$ENV{PARADISEO_ROOT}
/usr/local/
/usr/
/sw # Fink
/opt/local/ # DarwinPorts
/opt/csw/ # Blastwave
/opt/
[KEY_CURRENT_USER\\Software\\Inria\\ParadisEO]/local
[HKEY_LOCAL_MACHINE\\Software\\Inria\\ParadisEO]/local
)
find_path(EO_INCLUDE_DIR eo
PATH_SUFFIXES include${INSTALL_SUB_DIR}/eo eo/src
PATHS ${PARADISEO_SRC_PATHS})
find_path(MO_INCLUDE_DIR mo
PATH_SUFFIXES include${INSTALL_SUB_DIR}/mo mo/src
PATHS ${PARADISEO_SRC_PATHS})
find_path(MOEO_INCLUDE_DIR moeo
PATH_SUFFIXES include${INSTALL_SUB_DIR}/moeo moeo/src
PATHS ${PARADISEO_SRC_PATHS})
# Specific for SMP and PEO
foreach(COMP ${PARADISEO_LIBRARIES_TO_FIND})
if(${COMP} STREQUAL "smp")
set(SMP_FOUND true)
find_path(SMP_INCLUDE_DIR smp
PATH_SUFFIXES include${INSTALL_SUB_DIR}/smp smp/src
PATHS ${PARADISEO_SRC_PATHS})
elseif(${COMP} STREQUAL "peo")
set(PEO_FOUND true)
find_path(PEO_INCLUDE_DIR peo
PATH_SUFFIXES include${INSTALL_SUB_DIR}/peo peo/src
PATHS ${PARADISEO_SRC_PATHS})
endif()
endforeach()
set(PARADISEO_INCLUDE_DIR ${EO_INCLUDE_DIR} ${MO_INCLUDE_DIR} ${MOEO_INCLUDE_DIR})
if(SMP_FOUND)
set(PARADISEO_INCLUDE_DIR ${PARADISEO_INCLUDE_DIR} ${SMP_INCLUDE_DIR})
endif()
if(PEO_FOUND)
set(PARADISEO_INCLUDE_DIR ${PARADISEO_INCLUDE_DIR} ${PEO_INCLUDE_DIR})
endif()
# find the requested modules
set(PARADISEO_FOUND true) # will be set to false if one of the required modules is not found
set(FIND_PARADISEO_LIB_PATHS
${PARADISEO_ROOT}/${BUILD_DIR}
$ENV{PARADISEO_ROOT}
/usr/local/
/usr/
/sw # Fink
/opt/local/ # DarwinPorts
/opt/csw/ # Blastwave
/opt/
[KEY_CURRENT_USER\\Software\\Inria\\ParadisEO]/local
[HKEY_LOCAL_MACHINE\\Software\\Inria\\ParadisEO]/local
)
#Suffixes
set(PARADISEO_LIB_PATHS_SUFFIXES
eo/lib
mo/lib
moeo/lib
moeo/tutorial/examples/flowshop/lib #For flowshop library
smp/lib
peo/lib
lib
lib32
lib64
)
foreach(FIND_PARADISEO_COMPONENT ${PARADISEO_LIBRARIES_TO_FIND})
string(TOUPPER ${FIND_PARADISEO_COMPONENT} FIND_PARADISEO_COMPONENT_UPPER)
# release library
find_library(PARADISEO_${FIND_PARADISEO_COMPONENT_UPPER}_LIBRARY
NAMES ${FIND_PARADISEO_COMPONENT}
PATH_SUFFIXES ${PARADISEO_LIB_PATHS_SUFFIXES}
PATHS ${FIND_PARADISEO_LIB_PATHS})
if (PARADISEO_${FIND_PARADISEO_COMPONENT_UPPER}_LIBRARY)
# library found
set(PARADISEO_${FIND_PARADISEO_COMPONENT_UPPER}_FOUND true)
else()
# library not found
set(PARADISEO_FOUND false)
set(PARADISEO_${FIND_PARADISEO_COMPONENT_UPPER}_FOUND false)
set(FIND_PARADISEO_MISSING "${FIND_PARADISEO_MISSING} ${FIND_PARADISEO_COMPONENT}")
endif()
set(PARADISEO_LIBRARIES ${PARADISEO_LIBRARIES} "${PARADISEO_${FIND_PARADISEO_COMPONENT_UPPER}_LIBRARY}")
endforeach()
# handle result
if(PARADISEO_FOUND)
message(STATUS "Found ParadisEO includes :")
message(${EO_INCLUDE_DIR})
message(${MO_INCLUDE_DIR})
message(${MOEO_INCLUDE_DIR})
if(SMP_FOUND)
message(${SMP_INCLUDE_DIR})
endif()
if(PEO_FOUND)
message(${PEO_INCLUDE_DIR})
endif()
else()
# include directory or library not found
message(FATAL_ERROR "Could NOT find ParadisEO (missing : ${FIND_PARADISEO_MISSING})")
endif()