From 0e15537bf2185555cb7d60be6f046c565f17ee2c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 19 Nov 2012 19:43:03 +0000 Subject: Adding a linux-only WITH_STATIC_LIBS option, which will try to link against static libs. This should help building more portable blender. Still experimental and WIP. --- CMakeLists.txt | 58 +++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 19 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 30f61fb062b..c2e2ca20b2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,6 +234,7 @@ option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON) if(UNIX AND NOT APPLE) option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON) + option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF) endif() option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON) option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON) @@ -502,10 +503,23 @@ set(PLATFORM_LINKFLAGS_DEBUG "") #Platform specifics if(UNIX AND NOT APPLE) - find_package(JPEG REQUIRED) - find_package(PNG REQUIRED) - find_package(ZLIB REQUIRED) - find_package(Freetype REQUIRED) + macro(find_package_wrapper) + STRING(TOUPPER ${ARGV0} _NAME_UPPER) + if(${WITH_STATIC_LIBS}) + set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) + endif() + find_package(${ARGV}) + if(${WITH_STATIC_LIBS}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) + unset(_cmake_find_library_suffixes_back) + endif() + endmacro() + + find_package_wrapper(JPEG REQUIRED) + find_package_wrapper(PNG REQUIRED) + find_package_wrapper(ZLIB REQUIRED) + find_package_wrapper(Freetype REQUIRED) if(WITH_PYTHON) # No way to set py32. remove for now. @@ -513,25 +527,28 @@ if(UNIX AND NOT APPLE) # Use our own instead, since wothout py is such a rare case, # require this package + # XXX Linking errors with debian static python :/ +# find_package_wrapper(PythonLibsUnix REQUIRED) find_package(PythonLibsUnix REQUIRED) endif() - if(WITH_IMAGE_OPENEXR) - find_package(OpenEXR) # our own module + find_package_wrapper(OpenEXR) # our own module if(NOT OPENEXR_FOUND) set(WITH_IMAGE_OPENEXR OFF) endif() endif() if(WITH_IMAGE_OPENJPEG) - find_package(OpenJPEG) + find_package_wrapper(OpenJPEG) if(NOT OPENJPEG_FOUND) set(WITH_IMAGE_OPENJPEG OFF) endif() endif() if(WITH_IMAGE_TIFF) + # XXX Linking errors with debian static tiff :/ +# find_package_wrapper(TIFF) find_package(TIFF) if(NOT TIFF_FOUND) set(WITH_IMAGE_TIFF OFF) @@ -540,14 +557,14 @@ if(UNIX AND NOT APPLE) # Audio IO if(WITH_OPENAL) - find_package(OpenAL) + find_package_wrapper(OpenAL) if(NOT OPENAL_FOUND) set(WITH_OPENAL OFF) endif() endif() if(WITH_SDL) - find_package(SDL) + find_package_wrapper(SDL) mark_as_advanced( SDLMAIN_LIBRARY SDL_INCLUDE_DIR @@ -561,7 +578,7 @@ if(UNIX AND NOT APPLE) endif() if(WITH_JACK) - find_package(Jack) + find_package_wrapper(Jack) if(NOT JACK_FOUND) set(WITH_JACK OFF) endif() @@ -569,7 +586,7 @@ if(UNIX AND NOT APPLE) # Codecs if(WITH_CODEC_SNDFILE) - find_package(SndFile) + find_package_wrapper(SndFile) if(NOT SNDFILE_FOUND) set(WITH_CODEC_SNDFILE OFF) endif() @@ -594,31 +611,31 @@ if(UNIX AND NOT APPLE) endif() if(WITH_FFTW3) - find_package(Fftw3) + find_package_wrapper(Fftw3) if(NOT FFTW3_FOUND) set(WITH_FFTW3 OFF) endif() endif() if(WITH_OPENCOLLADA) - find_package(OpenCOLLADA) + find_package_wrapper(OpenCOLLADA) if(OPENCOLLADA_FOUND) - find_package(XML2) - find_package(PCRE) + find_package_wrapper(XML2) + find_package_wrapper(PCRE) else() set(WITH_OPENCOLLADA OFF) endif() endif() if(WITH_MEM_JEMALLOC) - find_package(JeMalloc) + find_package_wrapper(JeMalloc) if(NOT JEMALLOC_FOUND) set(WITH_MEM_JEMALLOC OFF) endif() endif() if (WITH_INPUT_NDOF) - find_package(Spacenav) + find_package_wrapper(Spacenav) if(NOT SPACENAV_FOUND) set(WITH_INPUT_NDOF OFF) endif() @@ -634,6 +651,9 @@ if(UNIX AND NOT APPLE) # uses in build instructions to override include and library variables if(NOT BOOST_CUSTOM) # XXX No more lib dir, is this multithread stuff still needed? + if(${WITH_STATIC_LIBS}) + set(Boost_USE_STATIC_LIBS ON) + endif() if(NOT BOOST_ROOT) set(Boost_USE_MULTITHREADED OFF) else() @@ -657,7 +677,7 @@ if(UNIX AND NOT APPLE) endif() if(WITH_OPENIMAGEIO) - find_package(OpenImageIO) + find_package_wrapper(OpenImageIO) set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES}) set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere @@ -677,7 +697,7 @@ if(UNIX AND NOT APPLE) endif() if(WITH_OPENCOLORIO) - find_package(OpenColorIO) + find_package_wrapper(OpenColorIO) set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES}) set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere -- cgit v1.2.3