diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-07-31 20:04:18 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-01-12 00:30:31 +0300 |
commit | 6b3d85fa51f376b282dfa2fd648dab2c902c554b (patch) | |
tree | 7181278a7223364a52a8ee1701426fee79eb8a9e | |
parent | 610459658777e73e50671ddbcebd70294a6ad76e (diff) |
Build: auto detection of libraries built by "make deps" on Linux.
Use the libraries if they exist in ../lib/linux_x86_64 or similar, so
that you can run "make deps && make full" to get a full static build.
Note that install_deps.sh is still the only officially supported way to
build Blender dependencies on Linux, but this may be useful to some.
Differential Revision: https://developer.blender.org/D2980
-rw-r--r-- | GNUmakefile | 5 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 32 |
2 files changed, 35 insertions, 2 deletions
diff --git a/GNUmakefile b/GNUmakefile index 1143ac6e1f1..46f0fa18eec 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -48,6 +48,11 @@ DEPS_SOURCE_DIR:=$(BLENDER_DIR)/build_files/build_environment DEPS_BUILD_DIR:=$(BUILD_DIR)/deps DEPS_INSTALL_DIR:=$(shell dirname "$(BLENDER_DIR)")/lib/$(OS_NCASE) +ifneq ($(OS_NCASE),darwin) + # Add processor type to directory name + DEPS_INSTALL_DIR:=$(DEPS_INSTALL_DIR)_$(shell uname -p) +endif + # Allow to use alternative binary (pypy3, etc) ifndef PYTHON PYTHON:=python3 diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index 79bbcfc0cee..6796e254c27 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -23,6 +23,19 @@ # Libraries configuration for any *nix system including Linux and Unix. +# Detect precompiled library directory +set(LIBDIR_NAME ${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR}) +string(TOLOWER ${LIBDIR_NAME} LIBDIR_NAME) +set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_NAME}) + +if(EXISTS ${LIBDIR}) + file(GLOB LIB_SUBDIRS ${LIBDIR}/*) + set(CMAKE_PREFIX_PATH ${LIB_SUBDIRS}) + set(WITH_STATIC_LIBS ON) + set(WITH_OPENMP_STATIC ON) +endif() + +# Wrapper to prefer static libraries macro(find_package_wrapper) if(WITH_STATIC_LIBS) find_package_static(${ARGV}) @@ -141,8 +154,15 @@ if(WITH_CODEC_SNDFILE) endif() if(WITH_CODEC_FFMPEG) - set(FFMPEG /usr CACHE PATH "FFMPEG Directory") - set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") + if(EXISTS ${LIBDIR}) + # For precompiled lib directory, all ffmpeg dependencies are in the same folder + file(GLOB ffmpeg_libs ${LIBDIR}/ffmpeg/lib/*.a ${LIBDIR}/sndfile/lib/*.a) + set(FFMPEG ${LIBDIR}/ffmpeg CACHE PATH "FFMPEG Directory") + set(FFMPEG_LIBRARIES ${ffmpeg_libs} ${ffmpeg_libs} CACHE STRING "FFMPEG Libraries") + else() + set(FFMPEG /usr CACHE PATH "FFMPEG Directory") + set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") + endif() mark_as_advanced(FFMPEG) @@ -329,6 +349,14 @@ if(WITH_OPENCOLORIO) endif() if(WITH_LLVM) + # Symbol conflicts with same UTF library used by OpenCollada + if(EXISTS ${LIBDIR}) + set(LLVM_STATIC ON) + if(WITH_OPENCOLLADA) + list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY}) + endif() + endif() + find_package_wrapper(LLVM) if(NOT LLVM_FOUND) |