From 2b73402547a7c765f302a0d4218f96b5a710e96f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 16 May 2016 20:03:59 +0200 Subject: Fix C++11 build issues on OS X, remove references to outdated libs. --- CMakeLists.txt | 39 ++++++++++++++++----------------- intern/cycles/CMakeLists.txt | 4 +++- intern/cycles/bvh/bvh_build.cpp | 4 +++- source/blender/depsgraph/CMakeLists.txt | 4 +++- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index af457de21fa..32c67ba3134 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -592,8 +592,6 @@ if(APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") endif() - - option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF) endif() @@ -1954,20 +1952,8 @@ elseif(WIN32) elseif(APPLE) - if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5") - set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9 - endif() - if(NOT DEFINED LIBDIR) - if(WITH_LIBS10.5) - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal) - else() - if(CMAKE_OSX_ARCHITECTURES MATCHES i386) - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386) - else() - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc) - endif() - endif() + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal) else() message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") endif() @@ -2082,9 +2068,7 @@ elseif(APPLE) ) mark_as_advanced(SYSTEMSTUBS_LIBRARY) if(SYSTEMSTUBS_LIBRARY) - list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs) - else() - list(APPEND PLATFORM_LINKLIBS stdc++) + list(APPEND PLATFORM_LINKLIBS SystemStubs) endif() set(PLATFORM_CFLAGS "-pipe -funsigned-char") @@ -2097,6 +2081,12 @@ elseif(APPLE) endif() endif() + if(WITH_CXX11) + list(APPEND PLATFORM_LINKLIBS c++) + else() + list(APPEND PLATFORM_LINKLIBS stdc++) + endif() + # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED! # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL if(WITH_INPUT_NDOF) @@ -2324,6 +2314,11 @@ elseif(APPLE) # Get rid of eventually clashes, we export some symbols explicite as local set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map") + if(WITH_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -stdlib=libc++") + endif() + # Suppress ranlib "has no symbols" warnings (workaround for T48250) set(CMAKE_C_ARCHIVE_CREATE " Scr ") set(CMAKE_CXX_ARCHIVE_CREATE " Scr ") @@ -2682,7 +2677,9 @@ endif() if(WITH_LIBMV) set(CERES_DEFINES) - if(SHARED_PTR_FOUND) + if(WITH_CXX11) + # nothing to be done + elseif(SHARED_PTR_FOUND) if(SHARED_PTR_TR1_MEMORY_HEADER) list(APPEND CERES_DEFINES -DCERES_TR1_MEMORY_HEADER) endif() @@ -2693,7 +2690,9 @@ if(WITH_LIBMV) message(FATAL_ERROR "Ceres: Unable to find shared_ptr.") endif() - if(HAVE_STD_UNORDERED_MAP_HEADER) + if(WITH_CXX11) + list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP) + elseif(HAVE_STD_UNORDERED_MAP_HEADER) if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE) list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP) else() diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt index 3b6c25c370e..efc36f0e6b8 100644 --- a/intern/cycles/CMakeLists.txt +++ b/intern/cycles/CMakeLists.txt @@ -153,7 +153,9 @@ set(WITH_CYCLES_DEVICE_MULTI TRUE) if(CYCLES_STANDALONE_REPOSITORY) TEST_UNORDERED_MAP_SUPPORT() endif() -if(HAVE_STD_UNORDERED_MAP_HEADER) +if(WITH_CXX11) + add_definitions(-DCYCLES_STD_UNORDERED_MAP) +elseif(HAVE_STD_UNORDERED_MAP_HEADER) if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE) add_definitions(-DCYCLES_STD_UNORDERED_MAP) else() diff --git a/intern/cycles/bvh/bvh_build.cpp b/intern/cycles/bvh/bvh_build.cpp index 63edbc9998f..6af4d25eefc 100644 --- a/intern/cycles/bvh/bvh_build.cpp +++ b/intern/cycles/bvh/bvh_build.cpp @@ -607,8 +607,10 @@ BVHNode* BVHBuild::create_leaf_node(const BVHRange& range, vector p_type[PRIMITIVE_NUM_TOTAL]; vector p_index[PRIMITIVE_NUM_TOTAL]; vector p_object[PRIMITIVE_NUM_TOTAL]; + /* TODO(sergey): In theory we should be able to store references. */ - vector object_references; + typedef StackAllocator<256, BVHReference> LeafReferenceStackAllocator; + vector object_references; uint visibility[PRIMITIVE_NUM_TOTAL] = {0}; /* NOTE: Keep initializtion in sync with actual number of primitives. */ diff --git a/source/blender/depsgraph/CMakeLists.txt b/source/blender/depsgraph/CMakeLists.txt index e1dc8b020fb..2b4df85f29c 100644 --- a/source/blender/depsgraph/CMakeLists.txt +++ b/source/blender/depsgraph/CMakeLists.txt @@ -83,7 +83,9 @@ set(SRC util/depsgraph_util_transitive.h ) -if(HAVE_STD_UNORDERED_MAP_HEADER) +if(WITH_CXX11) + add_definitions(-DDEG_STD_UNORDERED_MAP) +elseif(HAVE_STD_UNORDERED_MAP_HEADER) if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE) add_definitions(-DDEG_STD_UNORDERED_MAP) else() -- cgit v1.2.3