Skip to content

Commit

Permalink
Merge branch 'feature/Cpp11' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
vigsterkr committed Feb 28, 2017
2 parents ec6860a + 5f3e599 commit be8e005
Show file tree
Hide file tree
Showing 87 changed files with 419 additions and 1,177 deletions.
63 changes: 19 additions & 44 deletions CMakeLists.txt
Expand Up @@ -31,6 +31,17 @@ include(ShogunUtils)

SET(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)

#### set required C++ standard level of the compiler
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

### FIXME: remove these flags when the codebase
# is cleared up
set(HAVE_CXX11 ON)
set(HAVE_CXX11_ATOMIC ON)
set(HAVE_STD_UNORDERED_MAP ON)

############# minimum library versions ###################
SET(EIGEN_VERSION_MINIMUM 3.1.2)
SET(VIENNACL_VERSION_MINIMUM 1.5.0)
Expand Down Expand Up @@ -90,13 +101,9 @@ SET(LIBSHOGUN ON CACHE BOOL "Compile shogun library")

IsAnyTrue("${AVAILABLE_INTERFACES}" ANY_INTERFACE_ENABLED)
IF (${ANY_INTERFACE_ENABLED})
IF(RModular)
FIND_PACKAGE(SWIG 2.0.5 REQUIRED)
ELSE()
FIND_PACKAGE(SWIG 2.0.4 REQUIRED)
ENDIF()
# SWIG3 is the minimum requirement because of C++11 support
SET(SWIG_VERSION_MINIMUM 3.0.0)

SET(SWIG_VERSION_MINIMUM 2.0.4)
IF(CSharpModular)
# We require SWIG 3.0.7 to support functions with a few SGVector or
# SGMatrix arguments. The required SWIG feature is called
Expand All @@ -108,11 +115,14 @@ IF (${ANY_INTERFACE_ENABLED})
# typemapping created for earlier versions of SWIG.
# see: http://www.swig.org/Doc3.0/CSharp.html#CSharp_introduction_swig2_compatibility
LIST(APPEND CMAKE_SWIG_FLAGS "-DSWIG2_CSHARP")
ELSEIF(RModular)
SET(SWIG_VERSION_MINIMUM 2.0.5)
ELSEIF(PythonModular)
# SWIG was broken for combining -builtin and -modernargs
# from v3.0.0 and until 3.0.4. This bug was fixed in
# v3.0.5. Make CMake emit an error and fail to configure.
SET(SWIG_VERSION_MINIMUM 3.0.5)
ENDIF()
FIND_PACKAGE(SWIG ${SWIG_VERSION_MINIMUM} REQUIRED)

FIND_PACKAGE(SWIG ${SWIG_VERSION_MINIMUM} REQUIRED)
# use our own UseSWIG.cmake in order to be able to enable ccache-swig
SET(SWIG_USE_FILE ${CMAKE_SOURCE_DIR}/cmake/UseSWIG.cmake)
IF(ENABLE_CCACHE AND CCACHE_SWIG)
Expand Down Expand Up @@ -247,41 +257,6 @@ IF(ENABLE_UBSAN)
ENDIF()
ENDIF()

# check for supported c++11 features
#
# clang with -std=c++11 and -stdlib=libc++ does not work
# well with swig generated cxx hence disable c++11 for this case.

# this has been only fixed in swig 2.0.12 or later.
IF (NOT ((CYGWIN AND ENABLE_TESTING) OR (DARWIN AND COMPILE_MODULAR_INTERFACE
AND SWIG_VERSION VERSION_LESS "2.0.12")))
INCLUDE(CheckCXX11Features)

IF (MSVC)
IF(MSVC_VERSION VERSION_GREATER "1500")
SET(HAVE_CXX11 1)
ENDIF()
ELSE(MSVC)
IF(_HAS_CXX11_FLAG)
SET(HAVE_CXX11 1)
SET(CMAKE_CXX_FLAGS "${CXX11_COMPILER_FLAGS} ${CMAKE_CXX_FLAGS}")
SET(SWIG_CXX_COMPILER_FLAGS "${CXX11_COMPILER_FLAGS} ${SWIG_CXX_COMPILER_FLAGS}")
ENDIF()

IF(_HAS_CXX0X_FLAG)
SET(HAVE_CXX0X 1)
SET(CMAKE_CXX_FLAGS "${CXX11_COMPILER_FLAGS} ${CMAKE_CXX_FLAGS}")
SET(SWIG_CXX_COMPILER_FLAGS "${CXX11_COMPILER_FLAGS} ${SWIG_CXX_COMPILER_FLAGS}")
ENDIF()
ENDIF()
ELSEIF(DARWIN AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0.0"))
# osx clang 5.0.0 or later uses libc++ by default
# this is causing problems with source generated by swig version earlier than 3.0.0
# force to use libstdc++ for compilation of sources
SET(CMAKE_CXX_FLAGS "-stdlib=libstdc++ ${CMAKE_CXX_FLAGS}")
SET(SWIG_CXX_COMPILER_FLAGS "-stdlib=libstdc++ ${SWIG_CXX_COMPILER_FLAGS}")
ENDIF()

# Fix build on Mac OSX 10.10 Yosemite when using mp-gcc-4X.
# See: https://github.com/shogun-toolbox/shogun/issues/2635
IF(DARWIN AND (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
Expand Down
3 changes: 2 additions & 1 deletion NEWS
@@ -1,9 +1,10 @@
2016-11-05 Viktor Gal <viktor.gal@shogun-toolbox.org>

* SHOGUN Release version 5.1.0 (libshogun 17.2, data 0.11, parameter 1)
* SHOGUN Release version 6.0.0 (libshogun 18.0, data 0.11, parameter 1)

* NOTE: Contains major rewrite and clean-up of developer documentation in doc/readme [Heiko Strathmann]
* Add native MS Windows support [Viktor Gal]
* Shogun requires the compiler to support C++11 features

* Features:
- LDA now supports 32, 64 and 128 bit floating point numbers [Chris Goldsworthy]
Expand Down
164 changes: 0 additions & 164 deletions cmake/CheckCXX11Features.cmake

This file was deleted.

8 changes: 0 additions & 8 deletions cmake/CheckCXX11Features/cxx11-test-__func__.cpp

This file was deleted.

13 changes: 0 additions & 13 deletions cmake/CheckCXX11Features/cxx11-test-atomic.cpp

This file was deleted.

12 changes: 0 additions & 12 deletions cmake/CheckCXX11Features/cxx11-test-auto.cpp

This file was deleted.

7 changes: 0 additions & 7 deletions cmake/CheckCXX11Features/cxx11-test-auto_fail_compile.cpp

This file was deleted.

8 changes: 0 additions & 8 deletions cmake/CheckCXX11Features/cxx11-test-auto_ret_type.cpp

This file was deleted.

21 changes: 0 additions & 21 deletions cmake/CheckCXX11Features/cxx11-test-class_override_final.cpp

This file was deleted.

This file was deleted.

19 changes: 0 additions & 19 deletions cmake/CheckCXX11Features/cxx11-test-constexpr.cpp

This file was deleted.

0 comments on commit be8e005

Please sign in to comment.