diff --git a/eo/BuildConfig.cmake b/eo/BuildConfig.cmake new file mode 100644 index 00000000..fe3820a2 --- /dev/null +++ b/eo/BuildConfig.cmake @@ -0,0 +1,43 @@ +# the user should choose the build type on windows environments,excepted under cygwin (default=none) + +#SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE) + +SET(CMAKE_BUILD_TYPE Debug) # allows to enable assert calls and -g flag + +FIND_PROGRAM(MEMORYCHECK_COMMAND + NAMES purify valgrind + PATHS + "/usr/local/bin /usr/bin [HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]" + DOC "Path to the memory checking command, used for memory error detection.") + +IF(NOT CMAKE_BUILD_TYPE) + SET( CMAKE_BUILD_TYPE + ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." + FORCE) +ENDIF(NOT CMAKE_BUILD_TYPE) + +IF(WIN32 AND NOT CYGWIN) + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008") + SET(CMAKE_CXX_FLAGS "/nologo /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/W3 /MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/w /MT /O2 /wd4530") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +ELSE(WIN32 AND NOT CYGWIN) + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -fprofile-arcs -ftest-coverage -Wall -Wextra -Wno-unused-parameter") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O6") + ENDIF(CMAKE_COMPILER_IS_GNUCXX) +ENDIF(WIN32 AND NOT CYGWIN) + +IF(CMAKE_BUILD_TYPE MATCHES Debug) + ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON) +ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) diff --git a/eo/CMakeLists.txt b/eo/CMakeLists.txt index dcfd9d60..eea4df29 100644 --- a/eo/CMakeLists.txt +++ b/eo/CMakeLists.txt @@ -5,20 +5,28 @@ INCLUDE(eo-conf.cmake OPTIONAL) ###################################################################################### -### 1) Main project config + + +###################################################################################### +### 1) Main project config ###################################################################################### # set the project name and other variables PROJECT(EO) -SET(PACKAGE_BUGREPORT "eodev-help@sourceforge.net" CACHE STRING "Package bug report" FORCE) -SET(PACKAGE_NAME "Evolving Objects" CACHE STRING "Package name" FORCE) -SET(PACKAGE_STRING "Evolving Objects 1.02-cvs1"CACHE STRING "Package string full name" FORCE) -SET(PACKAGE_TARNAME "eo" CACHE STRING "Package tar name" FORCE) -SET(PACKAGE_VERSION "1.02-cvs1" CACHE STRING "Package version" FORCE) +SET(PROJECT_VERSION_MAJOR 1) +SET(PROJECT_VERSION_MINOR 02) +SET(PROJECT_VERSION_PATCH 1) +SET(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" CACHE STRING "Package version" FORCE) +SET(VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" CACHE STRING "Global version" FORCE) SET(VERSION "1.02" CACHE STRING "Global version" FORCE) SET(GLOBAL_VERSION "${VERSION}") +SET(PACKAGE_BUGREPORT "eodev-help@sourceforge.net" CACHE STRING "Package bug report" FORCE) +SET(PACKAGE_NAME "Evolving Objects" CACHE STRING "Package name" FORCE) +SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}"CACHE STRING "Package string full name" FORCE) +SET(PACKAGE_TARNAME "eo" CACHE STRING "Package tar name" FORCE) + # check cmake version compatibility CMAKE_MINIMUM_REQUIRED(VERSION 2.6) @@ -29,6 +37,9 @@ INCLUDE_REGULAR_EXPRESSION("^.*$" "^$") ENABLE_LANGUAGE(CXX) ENABLE_LANGUAGE(C) +###################################################################################### + + ##################################################################################### ### 2) Include required modules / configuration files ##################################################################################### @@ -43,59 +54,27 @@ INCLUDE(CheckLibraryExists) INCLUDE(ConfigureChecks.cmake) -INCLUDE(Dart OPTIONNAL) - +INCLUDE(Dart OPTIONNAL) + # now create config headers configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) # Set a special flag if the environment is windows (should do the same in a config.g file) IF (WIN32) - ADD_DEFINITIONS(-D_WINDOWS=1) + ADD_DEFINITIONS(-D_WINDOWS=1) ENDIF (WIN32) - + +###################################################################################### + + ##################################################################################### ### 3) Manage the build type ##################################################################################### -# the user should choose the build type on windows environments,excepted under cygwin (default=none) -SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE) +INCLUDE(BuildConfig.cmake) -FIND_PROGRAM(MEMORYCHECK_COMMAND - NAMES purify valgrind - PATHS - "/usr/local/bin /usr/bin [HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]" - DOC "Path to the memory checking command, used for memory error detection.") -IF(NOT CMAKE_BUILD_TYPE) - SET( CMAKE_BUILD_TYPE - ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING - "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." - FORCE) -ENDIF(NOT CMAKE_BUILD_TYPE) - -IF(WIN32 AND NOT CYGWIN) - IF(CMAKE_CXX_COMPILER MATCHES cl) - IF(NOT WITH_SHARED_LIBS) - IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008" OR CMAKE_GENERATOR STREQUAL "Visual Studio 10") - SET(CMAKE_CXX_FLAGS "/nologo /Gy") - SET(CMAKE_CXX_FLAGS_DEBUG "/W3 /MTd /Z7 /Od") - SET(CMAKE_CXX_FLAGS_RELEASE "/w /MT /O2 /wd4530") - SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") - ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008" OR CMAKE_GENERATOR STREQUAL "Visual Studio 10") - ENDIF(NOT WITH_SHARED_LIBS) - ENDIF(CMAKE_CXX_COMPILER MATCHES cl) -ELSE(WIN32 AND NOT CYGWIN) - IF(CMAKE_COMPILER_IS_GNUCXX) - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -fprofile-arcs -ftest-coverage -Wall -Wextra -Wno-unused-parameter") - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") - SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O6") - ENDIF(CMAKE_COMPILER_IS_GNUCXX) -ENDIF(WIN32 AND NOT CYGWIN) +###################################################################################### -IF(CMAKE_BUILD_TYPE MATCHES Debug) - ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON) -ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) ###################################################################################### ### compilation of examples? @@ -103,14 +82,20 @@ ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) SET(ENABLE_CMAKE_EXAMPLE TRUE CACHE BOOL "Enable copy of benchs and parameters file?") +###################################################################################### + + ###################################################################################### ### 4) Test config ###################################################################################### -IF (ENABLE_CMAKE_TESTING) - ENABLE_TESTING() +IF (ENABLE_CMAKE_TESTING) + ENABLE_TESTING() ENDIF (ENABLE_CMAKE_TESTING) +###################################################################################### + + ###################################################################################### ### 5) Where must cmake go now ? ###################################################################################### @@ -122,3 +107,21 @@ ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(tutorial) ###################################################################################### + + +###################################################################################### +### 6) Install pkg-config config file for EO +###################################################################################### + +INSTALL(FILES eo.pc DESTINATION lib/pkgconfig COMPONENT headers) + +###################################################################################### + + +###################################################################################### +### 7) Include packaging +###################################################################################### + +INCLUDE(Packaging.cmake) + +###################################################################################### diff --git a/eo/Packaging.cmake b/eo/Packaging.cmake new file mode 100644 index 00000000..7bdaa5de --- /dev/null +++ b/eo/Packaging.cmake @@ -0,0 +1,74 @@ +###################################################################################### +### 1) Check dependencies +###################################################################################### + +IF (NOT DEFINED PROJECT_NAME OR + NOT DEFINED PROJECT_VERSION_MAJOR OR + NOT DEFINED PROJECT_VERSION_MINOR OR + NOT DEFINED PROJECT_VERSION_PATCH OR + NOT DEFINED PROJECT_VERSION) + MESSAGE(FATAL_ERROR "Be sure you have defined PROJECT_NAME and PROJECT_VERSION*.") +ENDIF() + +###################################################################################### + + +###################################################################################### +### 2) Set up components +###################################################################################### + +SET(CPACK_COMPONENTS_ALL libraries) +SET(CPACK_ALL_INSTALL_TYPES Full) + +SET(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "${PACKAGE_NAME}") +SET(CPACK_COMPONENT_LIBRARIES_DESCRIPTION "${PACKAGE_NAME} library") +SET(CPACK_COMPONENT_LIBRARIES_GROUP "Devel") +SET(CPACK_COMPONENT_LIBRARIES_INSTALL_TYPES Full) + +###################################################################################### + + +###################################################################################### +### 3) 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_PACKAGE_DESCRIPTION "${PACKAGE_NAME}") +SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME}") +SET(CPACK_PACKAGE_VENDOR "${PACKAGE_NAME}") +SET(CPACK_PACKAGE_CONTACT "${PACKAGE_BUGREPORT}") +SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) +SET(CPACK_STRIP_FILES ${PROJECT_NAME}) +SET(CPACK_SOURCE_STRIP_FILES "bin/${PROJECT_NAME}") +SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}") +SET(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +SET(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +SET(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME} ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") + +###################################################################################### + + +###################################################################################### +### 4) Set up debian packaging information +###################################################################################### + +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libstdc++6, libgcc1, libc6, libxml2, libmpich2-1.2") + +SET(CPACK_DEBIAN_PACKAGE_SECTION "devel") +SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") + +###################################################################################### + + +###################################################################################### +### 5) And finally, include cpack, this is the last thing to do. +###################################################################################### + +INCLUDE(CPack) + +###################################################################################### diff --git a/eo/build_gcc_linux_debug b/eo/build_gcc_linux_debug new file mode 100755 index 00000000..da385fdb --- /dev/null +++ b/eo/build_gcc_linux_debug @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +mkdir debug +cd debug +cmake -DCMAKE_BUILD_TYPE=Debug .. +make +cd .. diff --git a/eo/build_gcc_linux_release b/eo/build_gcc_linux_release new file mode 100755 index 00000000..78a66c55 --- /dev/null +++ b/eo/build_gcc_linux_release @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +mkdir release +cd release +cmake .. +make +cd .. diff --git a/eo/distclean b/eo/distclean new file mode 100755 index 00000000..e4a02bc4 --- /dev/null +++ b/eo/distclean @@ -0,0 +1,4 @@ +#!/usr/bin/env sh + +rm -rf debug +rm -rf release diff --git a/eo/eo.pc b/eo/eo.pc new file mode 100644 index 00000000..d15d1081 --- /dev/null +++ b/eo/eo.pc @@ -0,0 +1,12 @@ +# Package Information for pkg-config + +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/eo + +Name: Evolving Object +Description: Evolving Object +Version: 1.02-cvs1 +Libs: -L${libdir} -leoutils -leo -les -lga -lcma -leomoo -lgcov +Cflags: -I${includedir} diff --git a/eo/package_deb b/eo/package_deb new file mode 100755 index 00000000..1a44d021 --- /dev/null +++ b/eo/package_deb @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +cd release +cpack -G DEB +cd .. diff --git a/eo/package_rpm b/eo/package_rpm new file mode 100755 index 00000000..8d46b7d0 --- /dev/null +++ b/eo/package_rpm @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +cd release +cpack -G RPM +cd .. diff --git a/eo/src/CMakeLists.txt b/eo/src/CMakeLists.txt index df7c8231..ec471597 100644 --- a/eo/src/CMakeLists.txt +++ b/eo/src/CMakeLists.txt @@ -21,6 +21,10 @@ SET (EO_SOURCES eoFunctorStore.cpp ADD_LIBRARY(eo STATIC ${EO_SOURCES}) +INSTALL(TARGETS eo ARCHIVE DESTINATION lib COMPONENT libraries) + +FILE(GLOB HDRS *.h eo) +INSTALL(FILES ${HDRS} DESTINATION include/eo COMPONENT headers) ###################################################################################### ### 3) Optionnal: define your target(s)'s version: no effect for windows diff --git a/eo/src/do/CMakeLists.txt b/eo/src/do/CMakeLists.txt index 508012c6..d8c84906 100644 --- a/eo/src/do/CMakeLists.txt +++ b/eo/src/do/CMakeLists.txt @@ -1,2 +1,2 @@ - -## Nothing to generate here \ No newline at end of file +FILE(GLOB HDRS *.h) +INSTALL(FILES ${HDRS} DESTINATION include/eo/do COMPONENT headers) diff --git a/eo/src/es/CMakeLists.txt b/eo/src/es/CMakeLists.txt index 0ffff0eb..e7b24901 100644 --- a/eo/src/es/CMakeLists.txt +++ b/eo/src/es/CMakeLists.txt @@ -35,7 +35,13 @@ SET (CMA_SOURCES eig.cpp ADD_LIBRARY(es STATIC ${ES_SOURCES}) +INSTALL(TARGETS es ARCHIVE DESTINATION lib COMPONENT libraries) + ADD_LIBRARY(cma STATIC ${CMA_SOURCES}) +INSTALL(TARGETS cma ARCHIVE DESTINATION lib COMPONENT libraries) + +FILE(GLOB HDRS *.h) +INSTALL(FILES ${HDRS} DESTINATION include/eo/es COMPONENT headers) ###################################################################################### ### 3) Optionnal diff --git a/eo/src/ga/CMakeLists.txt b/eo/src/ga/CMakeLists.txt index 61bef494..7d048b6c 100644 --- a/eo/src/ga/CMakeLists.txt +++ b/eo/src/ga/CMakeLists.txt @@ -22,6 +22,10 @@ SET (GA_SOURCES make_algo_scalar_ga.cpp ADD_LIBRARY(ga STATIC ${GA_SOURCES}) +INSTALL(TARGETS ga ARCHIVE DESTINATION lib COMPONENT libraries) + +FILE(GLOB HDRS *.h) +INSTALL(FILES ${HDRS} DESTINATION include/eo/ga COMPONENT headers) ###################################################################################### ### 3) Optionnal diff --git a/eo/src/gp/CMakeLists.txt b/eo/src/gp/CMakeLists.txt index d9131e1a..c0ae8aff 100644 --- a/eo/src/gp/CMakeLists.txt +++ b/eo/src/gp/CMakeLists.txt @@ -1,3 +1,3 @@ - -## Nothing to generate here +FILE(GLOB HDRS *.h) +INSTALL(FILES ${HDRS} DESTINATION include/eo/gp COMPONENT headers) diff --git a/eo/src/moo/CMakeLists.txt b/eo/src/moo/CMakeLists.txt index b4160974..6d1c717c 100644 --- a/eo/src/moo/CMakeLists.txt +++ b/eo/src/moo/CMakeLists.txt @@ -18,6 +18,10 @@ SET (EOMOO_SOURCES eoFrontSorter.cpp ADD_LIBRARY(eomoo STATIC ${EOMOO_SOURCES}) +INSTALL(TARGETS eomoo ARCHIVE DESTINATION lib COMPONENT libraries) + +FILE(GLOB HDRS *.h) +INSTALL(FILES ${HDRS} DESTINATION include/eo/moo COMPONENT headers) ###################################################################################### ### 3) Optionnal diff --git a/eo/src/other/CMakeLists.txt b/eo/src/other/CMakeLists.txt index 02d49793..4f8e1a7d 100644 --- a/eo/src/other/CMakeLists.txt +++ b/eo/src/other/CMakeLists.txt @@ -1,2 +1,2 @@ - -## Nothing to generate +FILE(GLOB HDRS *.h external_eo) +INSTALL(FILES ${HDRS} DESTINATION include/eo/other COMPONENT headers) diff --git a/eo/src/utils/CMakeLists.txt b/eo/src/utils/CMakeLists.txt index 2d094a08..ea36d4bb 100644 --- a/eo/src/utils/CMakeLists.txt +++ b/eo/src/utils/CMakeLists.txt @@ -31,6 +31,10 @@ SET (EOUTILS_SOURCES eoData.cpp ADD_LIBRARY(eoutils STATIC ${EOUTILS_SOURCES}) +INSTALL(TARGETS eoutils ARCHIVE DESTINATION lib COMPONENT libraries) + +FILE(GLOB HDRS *.h checkpointing) +INSTALL(FILES ${HDRS} DESTINATION include/eo/utils COMPONENT headers) ###################################################################################### ### 3) Optionnal