diff --git a/CMakeLists.txt b/CMakeLists.txt index f767b2c3e3f..d65e62d88fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,8 +49,13 @@ endif() cmake_minimum_required(VERSION 2.8) +if(NOT EXECUTABLE_OUTPUT_PATH) + set(FIRST_RUN "TRUE") +endif() + + # this starts out unset -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules/") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules") # quiet output for Makefiles, 'make -s' helps too # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF) @@ -99,6 +104,9 @@ option(WITH_BULLET "Enable Bullet (Physics Engine)" ON) option(WITH_GAMEENGINE "Enable Game Engine" ON) option(WITH_PLAYER "Build Player" OFF) +option(WITH_AUDASPACE "Build with blenders audio library" ON) +mark_as_advanced(WITH_AUDASPACE) + option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF) mark_as_advanced(WITH_HEADLESS) @@ -195,8 +203,8 @@ if(NOT WITH_GAMEENGINE AND WITH_PLAYER) message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE") endif() -if(NOT WITH_SAMPLERATE AND (WITH_OPENAL OR WITH_SDL OR WITH_JACK)) - message(FATAL_ERROR "WITH_OPENAL/WITH_SDL/WITH_JACK require WITH_SAMPLERATE") +if(NOT WITH_AUDASPACE AND (WITH_OPENAL OR WITH_SDL OR WITH_JACK)) + message(FATAL_ERROR "WITH_OPENAL/WITH_SDL/WITH_JACK/WITH_CODEC_FFMPEG require WITH_AUDASPACE") endif() if(NOT WITH_IMAGE_OPENJPEG AND WITH_IMAGE_REDCODE) @@ -246,13 +254,12 @@ set(CXX_WARNINGS "") # On Unix: # cmake ../blender \ # -D PYTHON_VERSION=3.2 \ -# -D PYTHON_INCLUDE_DIRS=/opt/py32/include/python3.2d \ -# -D PYTHON_LIBPATH=/opt/py32/lib \ -# -D PYTHON_LIBRARY=python3.2d +# -D PYTHON_INCLUDE_DIR=/opt/py32/include/python3.2d \ +# -D PYTHON_LIBRARY=/opt/py32/lib/libpython3.2d.so # # On Macs: # cmake ../blender \ -# -D PYTHON_INCLUDE_DIRS=/System/Library/Frameworks/Python.framework/Versions/3.2/include/python3.2 \ +# -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.2/include/python3.2 \ # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config \ # -G Xcode # @@ -268,6 +275,43 @@ if(UNIX AND NOT APPLE) set(CMAKE_LIBRARY_PATH "/usr/lib/x86_64-linux-gnu;${CMAKE_LIBRARY_PATH}") endif() + find_package(JPEG REQUIRED) + find_package(PNG REQUIRED) + find_package(ZLIB REQUIRED) + find_package(Freetype REQUIRED) + + if(WITH_PYTHON) + # No way to set py32. remove for now. + # find_package(PythonLibs) + + # Use our own instead, since wothout py is such a rare case, + # require this package + find_package(PythonLibsUnix REQUIRED) + endif() + + + if(WITH_IMAGE_OPENEXR) + find_package(OpenEXR) # our own module + if(NOT OPENEXR_FOUND) + set(WITH_IMAGE_OPENEXR OFF) + endif() + endif() + + if(WITH_IMAGE_OPENJPEG) + find_package(OpenJPEG) + if(NOT OPENJPEG_FOUND) + set(WITH_IMAGE_OPENJPEG OFF) + endif() + endif() + + if(WITH_IMAGE_TIFF) + find_package(TIFF) + if(NOT TIFF_FOUND) + set(WITH_IMAGE_TIFF OFF) + endif() + endif() + + # Audio IO if(WITH_OPENAL) find_package(OpenAL) if(NOT OPENAL_FOUND) @@ -275,18 +319,41 @@ if(UNIX AND NOT APPLE) endif() endif() - if(WITH_JACK) - set(JACK /usr) - set(JACK_INC ${JACK}/include/jack) - set(JACK_LIB jack) - set(JACK_LIBPATH ${JACK}/lib) + if(WITH_SDL) + find_package(SDL) + mark_as_advanced(SDLMAIN_LIBRARY) + mark_as_advanced(SDL_INCLUDE_DIR) + mark_as_advanced(SDL_LIBRARY) + mark_as_advanced(SDL_LIBRARY_TEMP) + # unset(SDLMAIN_LIBRARY CACHE) + if(NOT SDL_FOUND) + set(WITH_SDL OFF) + endif() endif() + if(WITH_JACK) + find_package(Jack) + if(NOT JACK_FOUND) + set(WITH_JACK OFF) + endif() + endif() + + # Codecs if(WITH_CODEC_SNDFILE) - set(SNDFILE /usr) - set(SNDFILE_INC ${SNDFILE}/include) - set(SNDFILE_LIB sndfile) - set(SNDFILE_LIBPATH ${SNDFILE}/lib) + find_package(SndFile) + if(NOT SNDFILE_FOUND) + set(WITH_CODEC_SNDFILE OFF) + endif() + endif() + + if(WITH_CODEC_FFMPEG) + set(FFMPEG /usr CACHE FILEPATH "FFMPEG Directory") + mark_as_advanced(FFMPEG) + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) + set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") + mark_as_advanced(FFMPEG_LIBRARIES) + set(FFMPEG_LIBPATH ${FFMPEG}/lib) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS") endif() if(WITH_INTERNATIONAL) @@ -309,88 +376,26 @@ if(UNIX AND NOT APPLE) endif() endif() - find_package(Freetype) - # unset(FREETYPE_INCLUDE_DIRS CACHE) # cant use - - - if(WITH_PYTHON) - # No way to set py32. remove for now. - # find_package(PythonLibs) - - # defines... - - # PYTHON_VERSION - # PYTHON_INCLUDE_DIRS - # PYTHON_LIBRARY - # PYTHON_LIBPATH - # PYTHON_LINKFLAGS - - include(build_files/cmake/FindPythonLibsUnix.cmake) - - endif() - - if(WITH_SDL) - find_package(SDL) - mark_as_advanced(SDLMAIN_LIBRARY) - mark_as_advanced(SDL_INCLUDE_DIR) - mark_as_advanced(SDL_LIBRARY) - mark_as_advanced(SDL_LIBRARY_TEMP) - # unset(SDLMAIN_LIBRARY CACHE) - if(NOT SDL_FOUND) - set(WITH_SDL OFF) - endif() - endif() - - if(WITH_IMAGE_OPENEXR) - find_package(OpenEXR) # our own module - if(NOT OPENEXR_FOUND) - set(WITH_IMAGE_OPENEXR OFF) - endif() - endif() - - if(WITH_IMAGE_TIFF) - find_package(TIFF) - if(NOT TIFF_FOUND) - set(WITH_IMAGE_TIFF OFF) - endif() - endif() - - find_package(JPEG REQUIRED) - - find_package(PNG REQUIRED) - - find_package(ZLIB REQUIRED) - - if(WITH_CODEC_FFMPEG) - set(FFMPEG /usr CACHE FILEPATH "FFMPEG Directory") - mark_as_advanced(FFMPEG) - set(FFMPEG_INC ${FFMPEG}/include) - set(FFMPEG_LIB avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") - mark_as_advanced(FFMPEG_LIB) - set(FFMPEG_LIBPATH ${FFMPEG}/lib) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS") - endif() - if(WITH_FFTW3) - set(FFTW3 /usr) - set(FFTW3_INC ${FFTW3}/include) - set(FFTW3_LIB fftw3) - set(FFTW3_LIBPATH ${FFTW3}/lib) + find_package(Fftw3) + if(NOT FFTW3_FOUND) + set(WITH_FFTW3 OFF) + endif() endif() if(WITH_SAMPLERATE) - set(LIBSAMPLERATE /usr) - set(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include) - set(LIBSAMPLERATE_LIB samplerate) - set(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib) + find_package(Samplerate) + if(NOT SAMPLERATE_FOUND) + set(WITH_SAMPLERATE OFF) + endif() endif() if(WITH_OPENCOLLADA) set(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH "OpenCollada Directory") mark_as_advanced(OPENCOLLADA) set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) - set(OPENCOLLADA_LIB OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre ftoa buffer xml2) - set(OPENCOLLADA_INC ${OPENCOLLADA}) + set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre ftoa buffer xml2) + set(OPENCOLLADA_INCLUDE_DIR ${OPENCOLLADA}) set(PCRE /usr CACHE FILEPATH "PCRE Directory") mark_as_advanced(PCRE) @@ -404,12 +409,10 @@ if(UNIX AND NOT APPLE) endif() if(WITH_MEM_JEMALLOC) - set(JEMALLOC /usr) - set(JEMALLOC_LIBRARY jemalloc CACHE STRING "JeMalloc library") - set(JEMALLOC_LIBPATH ${JEMALLOC}/lib CACHE FILEPATH "JeMalloc library path") - # no use for this yet. - # set(JEMALLOC_INCLUDE_DIR ${JEMALLOC}/include CACHE FILEPATH "JeMalloc include path") - unset(JEMALLOC) + find_package(JeMalloc) + if(NOT JEMALLOC_FOUND) + set(WITH_MEM_JEMALLOC OFF) + endif() endif() # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed @@ -431,10 +434,8 @@ if(UNIX AND NOT APPLE) if(NOT WITH_PYTHON_MODULE) # BSD's dont use libdl.so list(APPEND LLIBS -ldl) - # binreloc is linux only - set(BINRELOC ${CMAKE_SOURCE_DIR}/extern/binreloc) - set(BINRELOC_INC ${BINRELOC}/include) + set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include) set(WITH_BINRELOC ON) endif() endif() @@ -487,16 +488,16 @@ elseif(WIN32) if(WITH_INTERNATIONAL) set(ICONV ${LIBDIR}/iconv) - set(ICONV_INC ${ICONV}/include) - set(ICONV_LIB iconv) + set(ICONV_INCLUDE_DIRS ${ICONV}/include) + set(ICONV_LIBRARIES iconv) set(ICONV_LIBPATH ${ICONV}/lib) endif() if(WITH_SAMPLERATE) - set(LIBSAMPLERATE ${LIBDIR}/samplerate) - set(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include) - set(LIBSAMPLERATE_LIB libsamplerate) - set(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib) + set(SAMPLERATE ${LIBDIR}/samplerate) + set(SAMPLERATE_INCLUDE_DIRS ${SAMPLERATE}/include) + set(SAMPLERATE_LIBRARIES libsamplerate) + set(SAMPLERATE_LIBPATH ${SAMPLERATE}/lib) endif() set(PNG "${LIBDIR}/png") @@ -518,9 +519,9 @@ elseif(WIN32) if(WITH_CODEC_SNDFILE) set(SNDFILE ${LIBDIR}/sndfile) - set(SNDFILE_INC ${SNDFILE}/include) - set(SNDFILE_LIB libsndfile-1) - set(SNDFILE_LIBPATH ${SNDFILE}/lib) + set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include) + set(SNDFILE_LIBRARIES libsndfile-1) + set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate endif() if(WITH_SDL) @@ -532,8 +533,8 @@ elseif(WIN32) if(WITH_CODEC_QUICKTIME) set(QUICKTIME ${LIBDIR}/QTDevWin) - set(QUICKTIME_INC ${QUICKTIME}/CIncludes) - set(QUICKTIME_LIB qtmlClient) + set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes) + set(QUICKTIME_LIBRARIES qtmlClient) set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries) endif() @@ -543,13 +544,13 @@ elseif(WIN32) if(MSVC) if(CMAKE_CL_64) - set(LLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid ) + set(LLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid) else() - set(LLIBS kernel32 user32 gdi32 comdlg32 advapi32 shell32 ole32 oleaut32 uuid ws2_32 vfw32 winmm) + set(LLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid) endif() - set(CMAKE_CXX_FLAGS "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /we4013 /wd4018 /wd4800 /wd4244 /wd4305 /wd4065 /wd4267" CACHE STRING "MSVC MT C++ flags " FORCE) - set(CMAKE_C_FLAGS "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /we4013 /wd4018 /wd4800 /wd4244 /wd4305 /wd4065 /wd4267" CACHE STRING "MSVC MT C++ flags " FORCE) + set(CMAKE_CXX_FLAGS "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB /nologo /Ob1 /J /W0 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013" CACHE STRING "MSVC MT C++ flags " FORCE) + set(CMAKE_C_FLAGS "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB /nologo /Ob1 /J /W0 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013 /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE) if(CMAKE_CL_64) set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE) @@ -596,9 +597,9 @@ elseif(WIN32) endif() set(PTHREADS ${LIBDIR}/pthreads) - set(PTHREADS_INC ${PTHREADS}/include) + set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include) set(PTHREADS_LIBPATH ${PTHREADS}/lib) - set(PTHREADS_LIB pthreadVC2) + set(PTHREADS_LIBRARIES pthreadVC2) set(FREETYPE ${LIBDIR}/freetype) set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2) @@ -607,23 +608,36 @@ elseif(WIN32) if(WITH_FFTW3) set(FFTW3 ${LIBDIR}/fftw3) - set(FFTW3_LIB libfftw) - set(FFTW3_INC ${FFTW3}/include) + set(FFTW3_LIBRARIES libfftw) + set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) set(FFTW3_LIBPATH ${FFTW3}/lib) endif() if(WITH_OPENCOLLADA) - set(OPENCOLLADA ${LIBDIR}/opencollada) - set(OPENCOLLADA_INC ${OPENCOLLADA}/include) - set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) - set(OPENCOLLADA_LIB OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser xml2 buffer ftoa UTF) - set(PCRE_LIB pcre) + set(OPENCOLLADA_INCLUDE_DIR + ${LIBDIR}/opencollada/include + ) + set(OPENCOLLADA_LIBRARIES + ${LIBDIR}/opencollada/lib/OpenCOLLADASaxFrameworkLoader.lib + ${LIBDIR}/opencollada/lib/OpenCOLLADAFramework.lib + ${LIBDIR}/opencollada/lib/OpenCOLLADABaseUtils.lib + ${LIBDIR}/opencollada/lib/OpenCOLLADAStreamWriter.lib + ${LIBDIR}/opencollada/lib/MathMLSolver.lib + ${LIBDIR}/opencollada/lib/GeneratedSaxParser.lib + ${LIBDIR}/opencollada/lib/xml2.lib + ${LIBDIR}/opencollada/lib/buffer.lib + ${LIBDIR}/opencollada/lib/ftoa.lib + ${LIBDIR}/opencollada/lib/UTF.lib + ) + set(PCRE_LIB + ${LIBDIR}/opencollada/lib/pcre.lib + ) endif() - + if(WITH_CODEC_FFMPEG) set(FFMPEG ${LIBDIR}/ffmpeg) - set(FFMPEG_INC ${FFMPEG}/include ${FFMPEG}/include/msvc) - set(FFMPEG_LIB avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0) + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include ${FFMPEG}/include/msvc) + set(FFMPEG_LIBRARIES avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0) set(FFMPEG_LIBPATH ${FFMPEG}/lib) endif() @@ -667,25 +681,23 @@ elseif(WIN32) if(WITH_JACK) set(JACK ${LIBDIR}/jack) - set(JACK_INC ${JACK}/include/jack ${JACK}/include) - set(JACK_LIB libjack) + set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include) + set(JACK_LIBRARIES libjack) set(JACK_LIBPATH ${JACK}/lib) endif() if(WITH_PYTHON) - set(PYTHON ${LIBDIR}/python) set(PYTHON_VERSION 3.2) - set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}") + set(PYTHON_INCLUDE_DIRS "${LIBDIR}/python/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY python) # not used yet - set(PYTHON_LIBRARY python32) - set(PYTHON_LIBPATH ${PYTHON}/lib) + set(PYTHON_LIBRARIES ${LIBDIR}/python/lib/python32.lib) endif() # MSVC only, Mingw doesnt need if(CMAKE_CL_64) - set(PLATFORM_LINKFLAGS "/MACHINE:X64 /NODEFAULTLIB:libc.lib /STACK:2097152 ") + set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /MACHINE:X64 /STACK:2097152 /OPT:NOREF /INCREMENTAL:NO /NODEFAULTLIB:\"msvcrt.lib\" /NODEFAULTLIB:\"msvcmrt.lib\" /NODEFAULTLIB:\"msvcurt.lib\" /NODEFAULTLIB:\"msvcrtd.lib\" ") else() - set(PLATFORM_LINKFLAGS "/NODEFAULTLIB:libc.lib /STACK:2097152 ") + set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /MACHINE:IX86 /STACK:2097152 /INCREMENTAL:NO /LARGEADDRESSAWARE /NODEFAULTLIB:\"msvcrt.lib\" /NODEFAULTLIB:\"msvcmrt.lib\" /NODEFAULTLIB:\"msvcurt.lib\" /NODEFAULTLIB:\"msvcrtd.lib\" ") endif() set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib;libc.lib ") @@ -721,9 +733,9 @@ elseif(WIN32) set(ZLIB_LIBRARIES z) set(PTHREADS ${LIBDIR}/pthreads) - set(PTHREADS_INC ${PTHREADS}/include) + set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include) set(PTHREADS_LIBPATH ${PTHREADS}/lib) - set(PTHREADS_LIB pthreadGC2) + set(PTHREADS_LIBRARIES pthreadGC2) set(FREETYPE ${LIBDIR}/gcc/freetype) set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2) @@ -732,23 +744,23 @@ elseif(WIN32) if(WITH_FFTW3) set(FFTW3 ${LIBDIR}/gcc/fftw3) - set(FFTW3_LIB fftw3) - set(FFTW3_INC ${FFTW3}/include) + set(FFTW3_LIBRARIES fftw3) + set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) set(FFTW3_LIBPATH ${FFTW3}/lib) endif() if(WITH_OPENCOLLADA) set(OPENCOLLADA ${LIBDIR}/gcc/opencollada) - set(OPENCOLLADA_INC ${OPENCOLLADA}/include) + set(OPENCOLLADA_INCLUDE_DIR ${OPENCOLLADA}/include) set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib) - set(OPENCOLLADA_LIB OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa) + set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa) set(PCRE_LIB pcre) endif() if(WITH_CODEC_FFMPEG) set(FFMPEG ${LIBDIR}/ffmpeg) - set(FFMPEG_INC ${FFMPEG}/include ${FFMPEG}/include) - set(FFMPEG_LIB avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0) + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include ${FFMPEG}/include) + set(FFMPEG_LIBRARIES avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0) set(FFMPEG_LIBPATH ${FFMPEG}/lib) endif() @@ -771,8 +783,8 @@ elseif(WIN32) if(WITH_JACK) set(JACK ${LIBDIR}/jack) - set(JACK_INC ${JACK}/include/jack ${JACK}/include) - set(JACK_LIB jack) + set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include) + set(JACK_LIBRARIES jack) set(JACK_LIBPATH ${JACK}/lib) # TODO, gives linking errors, force off @@ -784,7 +796,7 @@ elseif(WIN32) set(PYTHON_VERSION 3.2) set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY python) # not used yet - set(PYTHON_LIBRARY python32mw) + set(PYTHON_LIBRARIES ${PYTHON}/lib/python32mw.lib) set(PYTHON_LIBPATH ${PYTHON}/lib) endif() @@ -793,7 +805,7 @@ elseif(WIN32) endif() # used in many places so include globally, like OpenGL - blender_include_dirs("${PTHREADS_INC}") + blender_include_dirs("${PTHREADS_INCLUDE_DIRS}") elseif(APPLE) @@ -824,16 +836,16 @@ elseif(APPLE) if(WITH_JACK) set(JACK /usr) - set(JACK_INC ${JACK}/include/jack) - set(JACK_LIB jack) + set(JACK_INCLUDE_DIRS ${JACK}/include/jack) + set(JACK_LIBRARIES jack) set(JACK_LIBPATH ${JACK}/lib) endif() if(WITH_CODEC_SNDFILE) set(SNDFILE ${LIBDIR}/sndfile) - set(SNDFILE_INC ${SNDFILE}/include) - set(SNDFILE_LIB sndfile FLAC ogg vorbis vorbisenc) - set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) + set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include) + set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc) + set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate endif() set(PYTHON_VERSION 3.2) @@ -844,7 +856,7 @@ elseif(APPLE) set(PYTHON ${LIBDIR}/python) set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY "${PYTHON}/bin/python${PYTHON_VERSION}") # not used yet - set(PYTHON_LIBRARY python${PYTHON_VERSION}) + set(PYTHON_LIBRARIES python${PYTHON_VERSION}) set(PYTHON_LIBPATH "${PYTHON}/lib/python${PYTHON_VERSION}") # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled else() @@ -854,7 +866,7 @@ elseif(APPLE) set(PYTHON_VERSION 3.2) set(PYTHON_INCLUDE_DIRS "${PYTHON}${PYTHON_VERSION}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY ${PYTHON}${PYTHON_VERSION}/bin/python${PYTHON_VERSION}) # not used yet - set(PYTHON_LIBRARY "") + set(PYTHON_LIBRARIES "") set(PYTHON_LIBPATH ${PYTHON}${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config) set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework System -framework Python") endif() @@ -868,8 +880,8 @@ elseif(APPLE) if(WITH_FFTW3) set(FFTW3 ${LIBDIR}/fftw3) - set(FFTW3_INC ${FFTW3}/include) - set(FFTW3_LIB fftw3) + set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) + set(FFTW3_LIBRARIES fftw3) set(FFTW3_LIBPATH ${FFTW3}/lib) endif() @@ -894,17 +906,17 @@ elseif(APPLE) if(WITH_CODEC_FFMPEG) set(FFMPEG ${LIBDIR}/ffmpeg) - set(FFMPEG_INC ${FFMPEG}/include) - set(FFMPEG_LIB avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg) + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) + set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg) set(FFMPEG_LIBPATH ${FFMPEG}/lib) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS") endif() if(WITH_SAMPLERATE) - set(LIBSAMPLERATE ${LIBDIR}/samplerate) - set(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include) - set(LIBSAMPLERATE_LIB samplerate) - set(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib) + set(SAMPLERATE ${LIBDIR}/samplerate) + set(SAMPLERATE_INCLUDE_DIRS ${SAMPLERATE}/include) + set(SAMPLERATE_LIBRARIES samplerate) + set(SAMPLERATE_LIBPATH ${SAMPLERATE}/lib) endif() set(LLIBS stdc++ SystemStubs) @@ -929,9 +941,9 @@ elseif(APPLE) if(WITH_OPENCOLLADA) set(OPENCOLLADA ${LIBDIR}/opencollada) - set(OPENCOLLADA_INC ${OPENCOLLADA}/include) + set(OPENCOLLADA_INCLUDE_DIR ${OPENCOLLADA}/include) set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) - set(OPENCOLLADA_LIB "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa" ) + set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa" ) #pcre is bundled with openCollada #set(PCRE ${LIBDIR}/pcre) #set(PCRE_LIBPATH ${PCRE}/lib) @@ -984,7 +996,7 @@ endif() # Common. if(APPLE OR WIN32) - if(NOT IS_DIRECTORY "${LIBDIR}") + if(NOT EXISTS "${LIBDIR}/") message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'") endif() endif() @@ -1007,13 +1019,9 @@ endif() if(WITH_IMAGE_OPENJPEG) if(UNIX AND NOT APPLE) - set(OPENJPEG /usr) - set(OPENJPEG_INC ${OPENJPEG}/include) - set(OPENJPEG_LIB openjpeg) - set(OPENJPEG_LIBPATH ${OPENJPEG}/lib) + # dealt with above else() - set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg) - set(OPENJPEG_INC ${OPENJPEG}) + set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg") endif() endif() @@ -1183,3 +1191,83 @@ endif() #----------------------------------------------------------------------------- # CPack for generating packages include(build_files/cmake/packaging.cmake) + + +#----------------------------------------------------------------------------- +# Print Final Configuration + +if(FIRST_RUN) + set(_config_msg "\n* Blender Configuration *") + macro(info_cfg_option + _setting) + set(_msg " * ${_setting}") + string(LENGTH "${_msg}" _len) + while("28" GREATER "${_len}") + set(_msg "${_msg} ") + math(EXPR _len "${_len} + 1") + endwhile() + + set(_config_msg "${_config_msg}\n${_msg}${${_setting}}") + endmacro() + + macro(info_cfg_text + _text) + set(_config_msg "${_config_msg}\n\n ${_text}") + + + endmacro() + + info_cfg_text("Build Options:") + info_cfg_option(WITH_GAMEENGINE) + info_cfg_option(WITH_PLAYER) + info_cfg_option(WITH_BULLET) + info_cfg_option(WITH_IK_ITASC) + info_cfg_option(WITH_OPENCOLLADA) + info_cfg_option(WITH_FFTW3) + info_cfg_option(WITH_INTERNATIONAL) + + info_cfg_text("Compiler Options:") + info_cfg_option(WITH_BUILDINFO) + info_cfg_option(WITH_OPENMP) + info_cfg_option(WITH_RAYOPTIMIZATION) + + info_cfg_text("System Options:") + info_cfg_option(WITH_INSTALL_PORTABLE) + info_cfg_option(WITH_X11_XINPUT) + info_cfg_option(WITH_BUILTIN_GLEW) + + info_cfg_text("Image Formats:") + info_cfg_option(WITH_IMAGE_CINEON) + info_cfg_option(WITH_IMAGE_DDS) + info_cfg_option(WITH_IMAGE_HDR) + info_cfg_option(WITH_IMAGE_OPENEXR) + info_cfg_option(WITH_IMAGE_OPENJPEG) + info_cfg_option(WITH_IMAGE_REDCODE) + info_cfg_option(WITH_IMAGE_TIFF) + + info_cfg_text("Audio:") + info_cfg_option(WITH_OPENAL) + info_cfg_option(WITH_SDL) + info_cfg_option(WITH_JACK) + info_cfg_option(WITH_CODEC_FFMPEG) + info_cfg_option(WITH_CODEC_SNDFILE) + info_cfg_option(WITH_SAMPLERATE) + + info_cfg_text("Compression:") + info_cfg_option(WITH_LZMA) + info_cfg_option(WITH_LZO) + + info_cfg_text("Python:") + info_cfg_option(WITH_PYTHON_INSTALL) + info_cfg_option(WITH_PYTHON_MODULE) + info_cfg_option(WITH_PYTHON_SAFETY) + + info_cfg_text("Modifiers:") + info_cfg_option(WITH_MOD_BOOLEAN) + info_cfg_option(WITH_MOD_DECIMATE) + info_cfg_option(WITH_MOD_FLUID) + + info_cfg_text("") + + message("${_config_msg}") +endif() diff --git a/SConstruct b/SConstruct index 2f63ddf0501..29146018704 100644 --- a/SConstruct +++ b/SConstruct @@ -306,6 +306,11 @@ if env['BF_NO_ELBEEM'] == 1: env['CXXFLAGS'].append('-DDISABLE_ELBEEM') env['CCFLAGS'].append('-DDISABLE_ELBEEM') +# TODO, make optional +env['CPPFLAGS'].append('-DWITH_AUDASPACE') +env['CXXFLAGS'].append('-DWITH_AUDASPACE') +env['CCFLAGS'].append('-DWITH_AUDASPACE') + # lastly we check for root_build_dir ( we should not do before, otherwise we might do wrong builddir B.root_build_dir = env['BF_BUILDDIR'] B.doc_build_dir = os.path.join(env['BF_INSTALLDIR'], 'doc') diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index b4d69a289ee..fd712f1b832 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -74,6 +74,7 @@ def svn_step(branch=''): else: return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/blender', mode='update', defaultBranch='trunk', workdir='blender') + def lib_svn_step(dir): return SVN(name='lib svn', baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/lib/' + dir, mode='update', defaultBranch='trunk', workdir='lib/' + dir) diff --git a/build_files/buildbot/master_unpack.py b/build_files/buildbot/master_unpack.py index 3e1dec726e5..ad7c09933c6 100644 --- a/build_files/buildbot/master_unpack.py +++ b/build_files/buildbot/master_unpack.py @@ -64,10 +64,11 @@ def get_platform(filename): return '-'.join(platform_tokens) + def get_branch(filename): tokens = filename.split("-") branch = "" - + for token in tokens: if branch == "": branch = token diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py index cdc7cff3275..4c19b723fc8 100644 --- a/build_files/buildbot/slave_pack.py +++ b/build_files/buildbot/slave_pack.py @@ -36,7 +36,7 @@ builder = sys.argv[1] branch = '' if len(sys.argv) >= 3: - branch = sys.argv[2] + branch = sys.argv[2] # scons does own packaging if builder.find('scons') != -1: diff --git a/build_files/cmake/FindPythonLibsUnix.cmake b/build_files/cmake/FindPythonLibsUnix.cmake deleted file mode 100644 index 90bd79a924a..00000000000 --- a/build_files/cmake/FindPythonLibsUnix.cmake +++ /dev/null @@ -1,89 +0,0 @@ -# - Find python libraries -# -# PYTHON_VERSION -# PYTHON_INCLUDE_DIRS -# PYTHON_LIBRARY -# PYTHON_LIBPATH -# PYTHON_LINKFLAGS - -#============================================================================= - -set(PYTHON_VERSION 3.2 CACHE STRING "") -mark_as_advanced(PYTHON_VERSION) - -set(PYTHON_LINKFLAGS "-Xlinker -export-dynamic") -mark_as_advanced(PYTHON_LINKFLAGS) - -set(_Python_ABI_FLAGS - "m;mu;u; ") - -string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) - -set(_Python_PATHS - "$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}" - "/opt/py${_PYTHON_VERSION_NO_DOTS}" - "/usr" - "/usr/local" -) - -if(NOT DEFINED PYTHON_INCLUDE_DIRS OR - NOT DEFINED PYTHON_LIBRARY OR - NOT DEFINED PYTHON_LIBPATH) - - message(STATUS "Looking for include Python.h") - set(_Found_PYTHON_H OFF) - - foreach(_CURRENT_PATH ${_Python_PATHS}) - foreach(_CURRENT_ABI_FLAGS ${_Python_ABI_FLAGS}) - if(CMAKE_BUILD_TYPE STREQUAL Debug) - set(_CURRENT_ABI_FLAGS "d${_CURRENT_ABI_FLAGS}") - endif() - string(REPLACE " " "" _CURRENT_ABI_FLAGS ${_CURRENT_ABI_FLAGS}) - - set(_Python_HEADER "${_CURRENT_PATH}/include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}/Python.h") - - if(EXISTS ${_Python_HEADER}) - message(STATUS "Checking for header: ${_Python_HEADER} - found") - set(_Found_PYTHON_H ON) - set(PYTHON ${_CURRENT_PATH}) - set(PYTHON_ABI_FLAGS ${_CURRENT_ABI_FLAGS}) - break() - else() - message(STATUS "Checking for header: ${_Python_HEADER}") - endif() - endforeach() - - if(_Found_PYTHON_H) - break() - endif() - endforeach() - - if(NOT _Found_PYTHON_H) - message(FATAL_ERROR "Python.h not found") - endif() - - unset(_Found_PYTHON_H) - unset(_Python_HEADER) - unset(_CURRENT_ABI_FLAGS) - unset(_CURRENT_PATH) - - - set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}${PYTHON_ABI_FLAGS}" CACHE STRING "") - mark_as_advanced(PYTHON_INCLUDE_DIRS) - set(PYTHON_LIBRARY "python${PYTHON_VERSION}${PYTHON_ABI_FLAGS}" CACHE STRING "") - mark_as_advanced(PYTHON_LIBRARY) - set(PYTHON_LIBPATH ${PYTHON}/lib CACHE STRING "") - mark_as_advanced(PYTHON_LIBPATH) - # set(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "") -endif() - -unset(_Python_ABI_FLAGS) -unset(_Python_PATHS) - -#============================================================================= -# now the python versions are found - - -if(NOT EXISTS "${PYTHON_INCLUDE_DIRS}/Python.h") - message(FATAL_ERROR " Missing python header: ${PYTHON_INCLUDE_DIRS}/Python.h") -endif() diff --git a/build_files/cmake/Modules/FindFftw3.cmake b/build_files/cmake/Modules/FindFftw3.cmake new file mode 100644 index 00000000000..197d4aab7b6 --- /dev/null +++ b/build_files/cmake/Modules/FindFftw3.cmake @@ -0,0 +1,70 @@ +# - Find Fftw3 library +# Find the native Fftw3 includes and library +# This module defines +# FFTW3_INCLUDE_DIRS, where to find fftw3.h, Set when +# FFTW3_INCLUDE_DIR is found. +# FFTW3_LIBRARIES, libraries to link against to use Fftw3. +# FFTW3_ROOT_DIR, The base directory to search for Fftw3. +# This can also be an environment variable. +# FFTW3_FOUND, If false, do not try to use Fftw3. +# +# also defined, but not for general use are +# FFTW3_LIBRARY, where to find the Fftw3 library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If FFTW3_ROOT_DIR was defined in the environment, use it. +IF(NOT FFTW3_ROOT_DIR AND NOT $ENV{FFTW3_ROOT_DIR} STREQUAL "") + SET(FFTW3_ROOT_DIR $ENV{FFTW3_ROOT_DIR}) +ENDIF() + +SET(_fftw3_SEARCH_DIRS + ${FFTW3_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(FFTW3_INCLUDE_DIR + NAMES + fftw3.h + HINTS + ${_fftw3_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(FFTW3_LIBRARY + NAMES + fftw3 + HINTS + ${_fftw3_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Fftw3 DEFAULT_MSG + FFTW3_LIBRARY FFTW3_INCLUDE_DIR) + +IF(FFTW3_FOUND) + SET(FFTW3_LIBRARIES ${FFTW3_LIBRARY}) + SET(FFTW3_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR}) +ENDIF(FFTW3_FOUND) + +MARK_AS_ADVANCED( + FFTW3_INCLUDE_DIR + FFTW3_LIBRARY +) diff --git a/build_files/cmake/Modules/FindJack.cmake b/build_files/cmake/Modules/FindJack.cmake new file mode 100644 index 00000000000..9a847fabf70 --- /dev/null +++ b/build_files/cmake/Modules/FindJack.cmake @@ -0,0 +1,70 @@ +# - Find Jack library +# Find the native Jack includes and library +# This module defines +# JACK_INCLUDE_DIRS, where to find jack.h, Set when +# JACK_INCLUDE_DIR is found. +# JACK_LIBRARIES, libraries to link against to use Jack. +# JACK_ROOT_DIR, The base directory to search for Jack. +# This can also be an environment variable. +# JACK_FOUND, If false, do not try to use Jack. +# +# also defined, but not for general use are +# JACK_LIBRARY, where to find the Jack library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If JACK_ROOT_DIR was defined in the environment, use it. +IF(NOT JACK_ROOT_DIR AND NOT $ENV{JACK_ROOT_DIR} STREQUAL "") + SET(JACK_ROOT_DIR $ENV{JACK_ROOT_DIR}) +ENDIF() + +SET(_jack_SEARCH_DIRS + ${JACK_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(JACK_INCLUDE_DIR + NAMES + jack.h + HINTS + ${_jack_SEARCH_DIRS} + PATH_SUFFIXES + include/jack +) + +FIND_LIBRARY(JACK_LIBRARY + NAMES + jack + HINTS + ${_jack_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set JACK_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Jack DEFAULT_MSG + JACK_LIBRARY JACK_INCLUDE_DIR) + +IF(JACK_FOUND) + SET(JACK_LIBRARIES ${JACK_LIBRARY}) + SET(JACK_INCLUDE_DIRS ${JACK_INCLUDE_DIR}) +ENDIF(JACK_FOUND) + +MARK_AS_ADVANCED( + JACK_INCLUDE_DIR + JACK_LIBRARY +) diff --git a/build_files/cmake/Modules/FindJeMalloc.cmake b/build_files/cmake/Modules/FindJeMalloc.cmake new file mode 100644 index 00000000000..5c7aa2cf1e1 --- /dev/null +++ b/build_files/cmake/Modules/FindJeMalloc.cmake @@ -0,0 +1,70 @@ +# - Find JeMalloc library +# Find the native JeMalloc includes and library +# This module defines +# JEMALLOC_INCLUDE_DIRS, where to find jemalloc.h, Set when +# JEMALLOC_INCLUDE_DIR is found. +# JEMALLOC_LIBRARIES, libraries to link against to use JeMalloc. +# JEMALLOC_ROOT_DIR, The base directory to search for JeMalloc. +# This can also be an environment variable. +# JEMALLOC_FOUND, If false, do not try to use JeMalloc. +# +# also defined, but not for general use are +# JEMALLOC_LIBRARY, where to find the JeMalloc library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If JEMALLOC_ROOT_DIR was defined in the environment, use it. +IF(NOT JEMALLOC_ROOT_DIR AND NOT $ENV{JEMALLOC_ROOT_DIR} STREQUAL "") + SET(JEMALLOC_ROOT_DIR $ENV{JEMALLOC_ROOT_DIR}) +ENDIF() + +SET(_jemalloc_SEARCH_DIRS + ${JEMALLOC_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(JEMALLOC_INCLUDE_DIR + NAMES + jemalloc.h + HINTS + ${_jemalloc_SEARCH_DIRS} + PATH_SUFFIXES + include/jemalloc +) + +FIND_LIBRARY(JEMALLOC_LIBRARY + NAMES + jemalloc + HINTS + ${_jemalloc_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(JeMalloc DEFAULT_MSG + JEMALLOC_LIBRARY JEMALLOC_INCLUDE_DIR) + +IF(JEMALLOC_FOUND) + SET(JEMALLOC_LIBRARIES ${JEMALLOC_LIBRARY}) + SET(JEMALLOC_INCLUDE_DIRS ${JEMALLOC_INCLUDE_DIR}) +ENDIF(JEMALLOC_FOUND) + +MARK_AS_ADVANCED( + JEMALLOC_INCLUDE_DIR + JEMALLOC_LIBRARY +) diff --git a/build_files/cmake/Modules/FindOpenEXR.cmake b/build_files/cmake/Modules/FindOpenEXR.cmake index 9a116973348..546f690dbf6 100644 --- a/build_files/cmake/Modules/FindOpenEXR.cmake +++ b/build_files/cmake/Modules/FindOpenEXR.cmake @@ -19,7 +19,7 @@ # OPENEXR_LIBRARY, where to find the OpenEXR library. #============================================================================= -# Copyright 2002-2009 Kitware, Inc. +# Copyright 2011 Blender Foundation. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -28,8 +28,6 @@ # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) # If OPENEXR_ROOT_DIR was defined in the environment, use it. IF(NOT OPENEXR_ROOT_DIR AND NOT $ENV{OPENEXR_ROOT_DIR} STREQUAL "") @@ -52,7 +50,9 @@ SET(_openexr_SEARCH_DIRS /opt/csw # Blastwave ) -FIND_PATH(OPENEXR_INCLUDE_DIR ImfXdr.h +FIND_PATH(OPENEXR_INCLUDE_DIR + NAMES + ImfXdr.h HINTS ${_openexr_SEARCH_DIRS} PATH_SUFFIXES @@ -63,10 +63,14 @@ SET(_openexr_LIBRARIES) FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) - FIND_LIBRARY(OPENEXR_${UPPERCOMPONENT}_LIBRARY NAMES ${COMPONENT} - HINTS ${_openexr_SEARCH_DIRS} - PATH_SUFFIXES lib64 lib - ) + FIND_LIBRARY(OPENEXR_${UPPERCOMPONENT}_LIBRARY + NAMES + ${COMPONENT} + HINTS + ${_openexr_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) LIST(APPEND _openexr_LIBRARIES "${OPENEXR_${UPPERCOMPONENT}_LIBRARY}") ENDFOREACH() @@ -79,7 +83,7 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenEXR DEFAULT_MSG IF(OPENEXR_FOUND) SET(OPENEXR_LIBRARIES ${_openexr_LIBRARIES}) SET(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR}) -ENDIF(OPENEXR_FOUND) +ENDIF() MARK_AS_ADVANCED(OPENEXR_INCLUDE_DIR) FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) diff --git a/build_files/cmake/Modules/FindOpenJPEG.cmake b/build_files/cmake/Modules/FindOpenJPEG.cmake new file mode 100644 index 00000000000..8d901ed633c --- /dev/null +++ b/build_files/cmake/Modules/FindOpenJPEG.cmake @@ -0,0 +1,70 @@ +# - Find OpenJPEG library +# Find the native OpenJPEG includes and library +# This module defines +# OPENJPEG_INCLUDE_DIRS, where to find openjpeg.h, Set when +# OPENJPEG_INCLUDE_DIR is found. +# OPENJPEG_LIBRARIES, libraries to link against to use OpenJPEG. +# OPENJPEG_ROOT_DIR, The base directory to search for OpenJPEG. +# This can also be an environment variable. +# OPENJPEG_FOUND, If false, do not try to use OpenJPEG. +# +# also defined, but not for general use are +# OPENJPEG_LIBRARY, where to find the OpenJPEG library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If OPENJPEG_ROOT_DIR was defined in the environment, use it. +IF(NOT OPENJPEG_ROOT_DIR AND NOT $ENV{OPENJPEG_ROOT_DIR} STREQUAL "") + SET(OPENJPEG_ROOT_DIR $ENV{OPENJPEG_ROOT_DIR}) +ENDIF() + +SET(_openjpeg_SEARCH_DIRS + ${OPENJPEG_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(OPENJPEG_INCLUDE_DIR + NAMES + openjpeg.h + HINTS + ${_openjpeg_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(OPENJPEG_LIBRARY + NAMES + openjpeg + HINTS + ${_openjpeg_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set OPENJPEG_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenJPEG DEFAULT_MSG + OPENJPEG_LIBRARY OPENJPEG_INCLUDE_DIR) + +IF(OPENJPEG_FOUND) + SET(OPENJPEG_LIBRARIES ${OPENJPEG_LIBRARY}) + SET(OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_DIR}) +ENDIF(OPENJPEG_FOUND) + +MARK_AS_ADVANCED( + OPENJPEG_INCLUDE_DIR + OPENJPEG_LIBRARY +) diff --git a/build_files/cmake/Modules/FindPythonLibsUnix.cmake b/build_files/cmake/Modules/FindPythonLibsUnix.cmake new file mode 100644 index 00000000000..882f1e2ea77 --- /dev/null +++ b/build_files/cmake/Modules/FindPythonLibsUnix.cmake @@ -0,0 +1,121 @@ +# - Find Python libraries +# Find the native Python includes and library +# +# Note:, This is not _yet_ intended to be a general python module for other +# projects to use since its hard coded to python 3.2 as blender only supports +# a single python version. +# This is for blender/unix python only. +# +# This module defines +# PYTHON_VERSION +# PYTHON_INCLUDE_DIRS +# PYTHON_LIBRARIES +# PYTHON_LIBPATH, Used for installation +# PYTHON_LINKFLAGS +# PYTHON_ROOT_DIR, The base directory to search for Python. +# This can also be an environment variable. +# +# also defined, but not for general use are +# PYTHON_LIBRARY, where to find the python library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If PYTHON_ROOT_DIR was defined in the environment, use it. +IF(NOT PYTHON_ROOT_DIR AND NOT $ENV{PYTHON_ROOT_DIR} STREQUAL "") + SET(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR}) +ENDIF() + +IF(DEFINED PYTHON_VERSION) + SET(PYTHON_VERSION "${PYTHON_VERSION}" CACHE STRING "") +ELSE() + SET(PYTHON_VERSION 3.2 CACHE STRING "") +ENDIF() +MARK_AS_ADVANCED(PYTHON_VERSION) + +SET(PYTHON_LINKFLAGS "-Xlinker -export-dynamic") +MARK_AS_ADVANCED(PYTHON_LINKFLAGS) + +SET(_python_ABI_FLAGS + "m;mu;u; " # release + "md;mud;ud;d" # debug +) + +STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) + +SET(_python_SEARCH_DIRS + ${PYTHON_ROOT_DIR} + "$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}" + "/opt/py${_PYTHON_VERSION_NO_DOTS}" +) + +FOREACH(_CURRENT_ABI_FLAGS ${_python_ABI_FLAGS}) + #IF(CMAKE_BUILD_TYPE STREQUAL Debug) + # SET(_CURRENT_ABI_FLAGS "d${_CURRENT_ABI_FLAGS}") + #ENDIF() + STRING(REPLACE " " "" _CURRENT_ABI_FLAGS ${_CURRENT_ABI_FLAGS}) + + FIND_PATH(PYTHON_INCLUDE_DIR + NAMES + Python.h + HINTS + ${_python_SEARCH_DIRS} + PATH_SUFFIXES + include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS} + ) + + FIND_LIBRARY(PYTHON_LIBRARY + NAMES + "python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}" + HINTS + ${_python_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + + IF(PYTHON_LIBRARY AND PYTHON_INCLUDE_DIR) + break() + ELSE() + # ensure we dont find values from 2 different ABI versions + UNSET(PYTHON_INCLUDE_DIR CACHE) + UNSET(PYTHON_LIBRARY CACHE) + ENDIF() +ENDFOREACH() + +UNSET(_CURRENT_ABI_FLAGS) +UNSET(_CURRENT_PATH) + +UNSET(_python_ABI_FLAGS) +UNSET(_python_SEARCH_DIRS) + +# handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibsUnix DEFAULT_MSG + PYTHON_LIBRARY PYTHON_INCLUDE_DIR) + + +IF(PYTHONLIBSUNIX_FOUND) + # Assign cache items + SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR}) + SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY}) + + # we need this for installation + GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH) + + # not used + # SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "") + + MARK_AS_ADVANCED( + PYTHON_INCLUDE_DIR + PYTHON_LIBRARY + ) +ENDIF() diff --git a/build_files/cmake/Modules/FindSamplerate.cmake b/build_files/cmake/Modules/FindSamplerate.cmake new file mode 100644 index 00000000000..ea7a0d7a18c --- /dev/null +++ b/build_files/cmake/Modules/FindSamplerate.cmake @@ -0,0 +1,70 @@ +# - Find Samplerate library +# Find the native Samplerate includes and library +# This module defines +# SAMPLERATE_INCLUDE_DIRS, where to find samplerate.h, Set when +# SAMPLERATE_INCLUDE_DIR is found. +# SAMPLERATE_LIBRARIES, libraries to link against to use Samplerate. +# SAMPLERATE_ROOT_DIR, The base directory to search for Samplerate. +# This can also be an environment variable. +# SAMPLERATE_FOUND, If false, do not try to use Samplerate. +# +# also defined, but not for general use are +# SAMPLERATE_LIBRARY, where to find the Samplerate library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If SAMPLERATE_ROOT_DIR was defined in the environment, use it. +IF(NOT SAMPLERATE_ROOT_DIR AND NOT $ENV{SAMPLERATE_ROOT_DIR} STREQUAL "") + SET(SAMPLERATE_ROOT_DIR $ENV{SAMPLERATE_ROOT_DIR}) +ENDIF() + +SET(_samplerate_SEARCH_DIRS + ${SAMPLERATE_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(SAMPLERATE_INCLUDE_DIR + NAMES + samplerate.h + HINTS + ${_samplerate_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(SAMPLERATE_LIBRARY + NAMES + samplerate + HINTS + ${_samplerate_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set SAMPLERATE_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Samplerate DEFAULT_MSG + SAMPLERATE_LIBRARY SAMPLERATE_INCLUDE_DIR) + +IF(SAMPLERATE_FOUND) + SET(SAMPLERATE_LIBRARIES ${SAMPLERATE_LIBRARY}) + SET(SAMPLERATE_INCLUDE_DIRS ${SAMPLERATE_INCLUDE_DIR}) +ENDIF(SAMPLERATE_FOUND) + +MARK_AS_ADVANCED( + SAMPLERATE_INCLUDE_DIR + SAMPLERATE_LIBRARY +) diff --git a/build_files/cmake/Modules/FindSndFile.cmake b/build_files/cmake/Modules/FindSndFile.cmake new file mode 100644 index 00000000000..1b685eacfbd --- /dev/null +++ b/build_files/cmake/Modules/FindSndFile.cmake @@ -0,0 +1,68 @@ +# - Find SndFile library +# Find the native SndFile includes and library +# This module defines +# SNDFILE_INCLUDE_DIRS, where to find sndfile.h, Set when +# SNDFILE_INCLUDE_DIR is found. +# SNDFILE_LIBRARIES, libraries to link against to use SndFile. +# SNDFILE_ROOT_DIR, The base directory to search for SndFile. +# This can also be an environment variable. +# SNDFILE_FOUND, If false, do not try to use SndFile. +# +# also defined, but not for general use are +# SNDFILE_LIBRARY, where to find the SndFile library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If SNDFILE_ROOT_DIR was defined in the environment, use it. +IF(NOT SNDFILE_ROOT_DIR AND NOT $ENV{SNDFILE_ROOT_DIR} STREQUAL "") + SET(SNDFILE_ROOT_DIR $ENV{SNDFILE_ROOT_DIR}) +ENDIF() + +SET(_sndfile_SEARCH_DIRS + ${SNDFILE_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(SNDFILE_INCLUDE_DIR sndfile.h + HINTS + ${_sndfile_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(SNDFILE_LIBRARY + NAMES + sndfile + HINTS + ${_sndfile_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set SNDFILE_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SndFile DEFAULT_MSG + SNDFILE_LIBRARY SNDFILE_INCLUDE_DIR) + +IF(SNDFILE_FOUND) + SET(SNDFILE_LIBRARIES ${SNDFILE_LIBRARY}) + SET(SNDFILE_INCLUDE_DIRS ${SNDFILE_INCLUDE_DIR}) +ENDIF(SNDFILE_FOUND) + +MARK_AS_ADVANCED( + SNDFILE_INCLUDE_DIR + SNDFILE_LIBRARY +) diff --git a/build_files/cmake/cmake_consistency_check.py b/build_files/cmake/cmake_consistency_check.py index 8dbfadb1187..b0fd242db4a 100755 --- a/build_files/cmake/cmake_consistency_check.py +++ b/build_files/cmake/cmake_consistency_check.py @@ -23,28 +23,16 @@ # -IGNORE = ( - "/test/", - "/decimate_glut_test/", - "/BSP_GhostTest/", - "/release/", - "/xembed/", - "/decimation/intern/future/", - "/TerraplayNetwork/", - "/ik_glut_test/", - ) +from cmake_consistency_check_config import IGNORE, UTF8_CHECK, SOURCE_DIR import os from os.path import join, dirname, normpath, abspath, splitext -base = join(os.path.dirname(__file__), "..", "..") -base = normpath(base) -base = abspath(base) - -print("Scanning:", base) +print("Scanning:", SOURCE_DIR) global_h = set() global_c = set() +global_refs = {} def source_list(path, filename_check=None): @@ -147,11 +135,17 @@ def cmake_get_src(f): if is_c_header(new_file): sources_h.append(new_file) + global_refs.setdefault(new_file, []).append((f, i)) elif is_c(new_file): sources_c.append(new_file) + global_refs.setdefault(new_file, []).append((f, i)) elif l in ("PARENT_SCOPE", ): # cmake var, ignore pass + elif new_file.endswith(".list"): + pass + elif new_file.endswith(".def"): + pass else: raise Exception("unknown file type - not c or h %s -> %s" % (f, new_file)) @@ -176,7 +170,7 @@ def cmake_get_src(f): filen.close() -for cmake in source_list(base, is_cmake): +for cmake in source_list(SOURCE_DIR, is_cmake): cmake_get_src(cmake) @@ -186,39 +180,75 @@ def is_ignore(f): return True return False + # First do stupid check, do these files exist? +print("\nChecking for missing references:") +import sys +is_err = False +errs = [] for f in (global_h | global_c): if f.endswith("dna.c"): continue if not os.path.exists(f): - raise Exception("CMake referenced file missing: " + f) + refs = global_refs[f] + if refs: + for cf, i in refs: + errs.append((cf, i)) + else: + raise Exception("CMake referenecs missing, internal error, aborting!") + is_err = True +errs.sort() +errs.reverse() +for cf, i in errs: + print("%s:%d" % (cf, i)) + # Write a 'sed' script, useful if we get a lot of these + # print("sed '%dd' '%s' > '%s.tmp' ; mv '%s.tmp' '%s'" % (i, cf, cf, cf, cf)) + + +if is_err: + raise Exception("CMake referenecs missing files, aborting!") +del is_err +del errs # now check on files not accounted for. print("\nC/C++ Files CMake doesnt know about...") -for cf in sorted(source_list(base, is_c)): +for cf in sorted(source_list(SOURCE_DIR, is_c)): if not is_ignore(cf): if cf not in global_c: print("missing_c: ", cf) + + # check if automake builds a corrasponding .o file. + ''' + if cf in global_c: + out1 = os.path.splitext(cf)[0] + ".o" + out2 = os.path.splitext(cf)[0] + ".Po" + out2_dir, out2_file = out2 = os.path.split(out2) + out2 = os.path.join(out2_dir, ".deps", out2_file) + if not os.path.exists(out1) and not os.path.exists(out2): + print("bad_c: ", cf) + ''' + print("\nC/C++ Headers CMake doesnt know about...") -for hf in sorted(source_list(base, is_c_header)): +for hf in sorted(source_list(SOURCE_DIR, is_c_header)): if not is_ignore(hf): if hf not in global_h: print("missing_h: ", hf) -# test encoding -import traceback -for files in (global_c, global_h): - for f in sorted(files): - if os.path.exists(f): - # ignore outside of our source tree - if "extern" not in f: - i = 1 - try: - for l in open(f, "r", encoding="utf8"): - i += 1 - except: - print("Non utf8: %s:%d" % (f, i)) - if i > 1: - traceback.print_exc() +if UTF8_CHECK: + # test encoding + import traceback + for files in (global_c, global_h): + for f in sorted(files): + if os.path.exists(f): + # ignore outside of our source tree + if "extern" not in f: + i = 1 + try: + for l in open(f, "r", encoding="utf8"): + i += 1 + except: + print("Non utf8: %s:%d" % (f, i)) + if i > 1: + traceback.print_exc() diff --git a/build_files/cmake/cmake_consistency_check_config.py b/build_files/cmake/cmake_consistency_check_config.py new file mode 100644 index 00000000000..60a46d3a1dd --- /dev/null +++ b/build_files/cmake/cmake_consistency_check_config.py @@ -0,0 +1,48 @@ +import os + +IGNORE = ( + "/test/", + "/decimate_glut_test/", + "/BSP_GhostTest/", + "/release/", + "/xembed/", + "/decimation/intern/future/", + "/TerraplayNetwork/", + "/ik_glut_test/", + + # specific source files + "extern/Eigen2/Eigen/src/Cholesky/CholeskyInstantiations.cpp", + "extern/Eigen2/Eigen/src/Core/CoreInstantiations.cpp", + "extern/Eigen2/Eigen/src/QR/QrInstantiations.cpp", + "extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp", + "extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp", + "extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp", + "extern/bullet2/src/BulletCollision/CollisionShapes/btBox2dShape.cpp", + "extern/bullet2/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp", + "extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp", + "extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp", + "extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp", + "extern/eltopo/common/meshes/ObjLoader.cpp", + "extern/eltopo/common/meshes/meshloader.cpp", + "extern/eltopo/common/openglutils.cpp", + "extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp", + "source/blender/imbuf/intern/imbuf_cocoa.m", + + "extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h", + "extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h", + "extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h", + "extern/bullet2/src/BulletCollision/CollisionShapes/btBox2dShape.h", + "extern/bullet2/src/BulletCollision/CollisionShapes/btConvex2dShape.h", + "extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.h", + "extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h", + "extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h", + "extern/eltopo/common/meshes/Edge.hpp", + "extern/eltopo/common/meshes/ObjLoader.hpp", + "extern/eltopo/common/meshes/TriangleIndex.hpp", + "extern/eltopo/common/meshes/meshloader.h", + "extern/eltopo/eltopo3d/broadphase_blenderbvh.h" + ) + +UTF8_CHECK = True + +SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..")))) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 7a8158227a9..8ae73451e31 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -1,6 +1,59 @@ # -*- mode: cmake; indent-tabs-mode: t; -*- # $Id$ + +# foo_bar.spam --> foo_barMySuffix.spam +macro(file_suffix + file_name_new file_name file_suffix + ) + + get_filename_component(_file_name_PATH ${file_name} PATH) + get_filename_component(_file_name_NAME_WE ${file_name} NAME_WE) + get_filename_component(_file_name_EXT ${file_name} EXT) + set(${file_name_new} "${_file_name_PATH}/${_file_name_NAME_WE}${file_suffix}${_file_name_EXT}") + + unset(_file_name_PATH) + unset(_file_name_NAME_WE) + unset(_file_name_EXT) +endmacro() + +# usefil for adding debug suffix to library lists: +# /somepath/foo.lib --> /somepath/foo_d.lib +macro(file_list_suffix + fp_list_new fp_list fn_suffix + ) + + # incase of empty list + set(_fp) + set(_fp_suffixed) + + set(fp_list_new) + + foreach(_fp ${fp_list}) + file_suffix(_fp_suffixed "${_fp}" "${fn_suffix}") + list(APPEND "${fp_list_new}" "${_fp_suffixed}") + endforeach() + + unset(_fp) + unset(_fp_suffixed) + +endmacro() + + +macro(target_link_libraries_optimized TARGET LIBS) + foreach(_LIB ${LIBS}) + target_link_libraries(${TARGET} optimized "${_LIB}") + endforeach() + unset(_LIB) +endmacro() + +macro(target_link_libraries_debug TARGET LIBS) + foreach(_LIB ${LIBS}) + target_link_libraries(${TARGET} debug "${_LIB}") + endforeach() + unset(_LIB) +endmacro() + # Nicer makefiles with -I/1/foo/ instead of -I/1/2/3/../../foo/ # use it instead of include_directories() macro(blender_include_dirs @@ -37,7 +90,7 @@ macro(blender_source_group foreach(_SRC ${sources}) get_filename_component(_SRC_EXT ${_SRC} EXT) - if(${_SRC_EXT} MATCHES ".h" OR ${_SRC_EXT} MATCHES ".hpp") + if((${_SRC_EXT} MATCHES ".h") OR (${_SRC_EXT} MATCHES ".hpp")) source_group("Header Files" FILES ${_SRC}) else() source_group("Source Files" FILES ${_SRC}) @@ -127,7 +180,7 @@ macro(SETUP_LIBDIRS) link_directories(${SNDFILE_LIBPATH}) endif() if(WITH_SAMPLERATE) - link_directories(${LIBSAMPLERATE_LIBPATH}) + link_directories(${SAMPLERATE_LIBPATH}) endif() if(WITH_FFTW3) link_directories(${FFTW3_LIBPATH}) @@ -163,11 +216,12 @@ macro(setup_liblinks target_link_libraries(${target} ${PYTHON_LINKFLAGS}) if(WIN32 AND NOT UNIX) - target_link_libraries(${target} - debug ${PYTHON_LIBRARY}_d - optimized ${PYTHON_LIBRARY}) + file_list_suffix(PYTHON_LIBRARIES_DEBUG "${PYTHON_LIBRARIES}" "_d") + target_link_libraries_debug(${target} "${PYTHON_LIBRARIES_DEBUG}") + target_link_libraries_optimized(${target} "${PYTHON_LIBRARIES}") + unset(PYTHON_LIBRARIES_DEBUG) else() - target_link_libraries(${target} ${PYTHON_LIBRARY}) + target_link_libraries(${target} ${PYTHON_LIBRARIES}) endif() endif() @@ -186,7 +240,7 @@ macro(setup_liblinks target_link_libraries(${target} ${GETTEXT_LIB}) if(WIN32 AND NOT UNIX) - target_link_libraries(${target} ${ICONV_LIB}) + target_link_libraries(${target} ${ICONV_LIBRARIES}) endif() endif() @@ -194,74 +248,72 @@ macro(setup_liblinks target_link_libraries(${target} ${OPENAL_LIBRARY}) endif() if(WITH_FFTW3) - target_link_libraries(${target} ${FFTW3_LIB}) + target_link_libraries(${target} ${FFTW3_LIBRARIES}) endif() if(WITH_JACK) - target_link_libraries(${target} ${JACK_LIB}) + target_link_libraries(${target} ${JACK_LIBRARIES}) endif() if(WITH_CODEC_SNDFILE) - target_link_libraries(${target} ${SNDFILE_LIB}) + target_link_libraries(${target} ${SNDFILE_LIBRARIES}) endif() if(WITH_SAMPLERATE) - target_link_libraries(${target} ${LIBSAMPLERATE_LIB}) + target_link_libraries(${target} ${SAMPLERATE_LIBRARIES}) endif() if(WITH_SDL) target_link_libraries(${target} ${SDL_LIBRARY}) endif() if(WITH_CODEC_QUICKTIME) - target_link_libraries(${target} ${QUICKTIME_LIB}) + target_link_libraries(${target} ${QUICKTIME_LIBRARIES}) endif() if(WITH_IMAGE_TIFF) target_link_libraries(${target} ${TIFF_LIBRARY}) endif() if(WITH_IMAGE_OPENEXR) if(WIN32 AND NOT UNIX) - foreach(_LOOP_VAR ${OPENEXR_LIBRARIES}) - string(REGEX REPLACE ".lib$" "_d.lib" _LOOP_VAR_DEBUG ${_LOOP_VAR}) - target_link_libraries(${target} - debug ${_LOOP_VAR_DEBUG} - optimized ${_LOOP_VAR}) - endforeach() - unset(_LOOP_VAR) - unset(_LOOP_VAR_DEBUG) + file_list_suffix(OPENEXR_LIBRARIES_DEBUG "${OPENEXR_LIBRARIES}" "_d") + target_link_libraries_debug(${target} "${OPENEXR_LIBRARIES_DEBUG}") + target_link_libraries_optimized(${target} "${OPENEXR_LIBRARIES}") + unset(OPENEXR_LIBRARIES_DEBUG) else() target_link_libraries(${target} ${OPENEXR_LIBRARIES}) endif() endif() if(WITH_IMAGE_OPENJPEG AND UNIX AND NOT APPLE) - target_link_libraries(${target} ${OPENJPEG_LIB}) + target_link_libraries(${target} ${OPENJPEG_LIBRARIES}) endif() if(WITH_CODEC_FFMPEG) - target_link_libraries(${target} ${FFMPEG_LIB}) + target_link_libraries(${target} ${FFMPEG_LIBRARIES}) endif() if(WITH_OPENCOLLADA) if(WIN32 AND NOT UNIX) - foreach(_LOOP_VAR ${OPENCOLLADA_LIB}) - target_link_libraries(${target} - debug ${_LOOP_VAR}_d - optimized ${_LOOP_VAR}) - endforeach() - unset(_LOOP_VAR) - target_link_libraries(${target} - debug ${PCRE_LIB}_d - optimized ${PCRE_LIB}) + file_list_suffix(OPENCOLLADA_LIBRARIES_DEBUG "${OPENCOLLADA_LIBRARIES}" "_d") + target_link_libraries_debug(${target} "${OPENCOLLADA_LIBRARIES_DEBUG}") + target_link_libraries_optimized(${target} "${OPENCOLLADA_LIBRARIES}") + unset(OPENCOLLADA_LIBRARIES_DEBUG) + + file_list_suffix(PCRE_LIB_DEBUG "${PCRE_LIB}" "_d") + target_link_libraries_debug(${target} "${PCRE_LIB_DEBUG}") + target_link_libraries_optimized(${target} "${PCRE_LIB}") + unset(PCRE_LIB_DEBUG) + if(EXPAT_LIB) - target_link_libraries(${target} - debug ${EXPAT_LIB}_d - optimized ${EXPAT_LIB}) + file_list_suffix(EXPAT_LIB_DEBUG "${EXPAT_LIB}" "_d") + target_link_libraries_debug(${target} "${EXPAT_LIB_DEBUG}") + target_link_libraries_optimized(${target} "${EXPAT_LIB}") + unset(EXPAT_LIB_DEBUG) endif() else() target_link_libraries(${target} - ${OPENCOLLADA_LIB} + ${OPENCOLLADA_LIBRARIES} ${PCRE_LIB} ${EXPAT_LIB}) endif() endif() if(WITH_MEM_JEMALLOC) - target_link_libraries(${target} ${JEMALLOC_LIBRARY}) + target_link_libraries(${target} ${JEMALLOC_LIBRARIES}) endif() if(WIN32 AND NOT UNIX) - target_link_libraries(${target} ${PTHREADS_LIB}) + target_link_libraries(${target} ${PTHREADS_LIBRARIES}) endif() endmacro() diff --git a/build_files/scons/config/aix4-config.py b/build_files/scons/config/aix4-config.py index e8004338271..f8b3e750e74 100644 --- a/build_files/scons/config/aix4-config.py +++ b/build_files/scons/config/aix4-config.py @@ -76,11 +76,6 @@ BF_GETTEXT_INC = '${BF_GETTEXT}/include' BF_GETTEXT_LIB = 'gettextpo intl' BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' -WITH_BF_FTGL = 'false' -BF_FTGL = '#extern/bFTGL' -BF_FTGL_INC = '${BF_FTGL}/include' -BF_FTGL_LIB = 'extern_ftgl' - WITH_BF_GAMEENGINE='false' WITH_BF_BULLET = 'true' diff --git a/build_files/scons/config/linux2-config.py b/build_files/scons/config/linux2-config.py index bc2917055fb..328cd4cdb28 100644 --- a/build_files/scons/config/linux2-config.py +++ b/build_files/scons/config/linux2-config.py @@ -93,7 +93,7 @@ BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' #BF_GETTEXT_LIB_STATIC = '${BF_GETTEXT}/lib/libgettextlib.a' WITH_BF_GAMEENGINE = True -WITH_BF_PLAYER = False +WITH_BF_PLAYER = True WITH_BF_BULLET = True BF_BULLET = '#extern/bullet2/src' diff --git a/build_files/scons/config/win32-vc-config.py b/build_files/scons/config/win32-vc-config.py index b5d44db8a92..ab7b5ce7d14 100644 --- a/build_files/scons/config/win32-vc-config.py +++ b/build_files/scons/config/win32-vc-config.py @@ -99,7 +99,7 @@ BF_GETTEXT_LIB = 'gnu_gettext' BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' WITH_BF_GAMEENGINE = True -WITH_BF_PLAYER = False +WITH_BF_PLAYER = True WITH_BF_BULLET = True BF_BULLET = '#extern/bullet2/src' @@ -170,7 +170,7 @@ BGE_CXXFLAGS = ['/O2', '/EHsc', '/GR', '/fp:fast', '/arch:SSE'] BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr'] -CPPFLAGS = ['-DWIN32','-D_CONSOLE', '-D_LIB', '-DFTGL_LIBRARY_STATIC', '-D_CRT_SECURE_NO_DEPRECATE'] +CPPFLAGS = ['-DWIN32','-D_CONSOLE', '-D_LIB', '-D_CRT_SECURE_NO_DEPRECATE'] REL_CFLAGS = ['-O2', '-DNDEBUG'] REL_CCFLAGS = ['-O2', '-DNDEBUG'] REL_CXXFLAGS = ['-O2', '-DNDEBUG'] @@ -181,7 +181,7 @@ CXX_WARN = [] LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid'] -PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE'] +PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:"msvcrt.lib"', '/NODEFAULTLIB:"msvcmrt.lib"', '/NODEFAULTLIB:"msvcurt.lib"', '/NODEFAULTLIB:"msvcrtd.lib"'] # # Todo # BF_PROFILE_CCFLAGS = ['-pg', '-g '] diff --git a/build_files/scons/config/win64-vc-config.py b/build_files/scons/config/win64-vc-config.py index 3332a560ed2..3abc466d33d 100644 --- a/build_files/scons/config/win64-vc-config.py +++ b/build_files/scons/config/win64-vc-config.py @@ -101,7 +101,7 @@ BF_GETTEXT_LIB = 'gettext' BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' WITH_BF_GAMEENGINE = True -WITH_BF_PLAYER = False +WITH_BF_PLAYER = True WITH_BF_BULLET = True BF_BULLET = '#extern/bullet2/src' @@ -172,7 +172,7 @@ BGE_CXXFLAGS = ['/O2', '/EHsc', '/GR', '/fp:fast'] BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr', '/Od'] -CPPFLAGS = ['-DWIN32', '-D_CONSOLE', '-D_LIB', '-DFTGL_LIBRARY_STATIC', '-D_CRT_SECURE_NO_DEPRECATE'] +CPPFLAGS = ['-DWIN32', '-D_CONSOLE', '-D_LIB', '-D_CRT_SECURE_NO_DEPRECATE'] REL_CFLAGS = ['-O2', '-DNDEBUG'] REL_CCFLAGS = ['-O2', '-DNDEBUG'] REL_CXXFLAGS = ['-O2', '-DNDEBUG'] @@ -188,7 +188,7 @@ if BF_DEBUG: else: BF_NUMJOBS=6 -PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO'] +PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO', '/NODEFAULTLIB:"msvcrt.lib"', '/NODEFAULTLIB:"msvcmrt.lib"', '/NODEFAULTLIB:"msvcurt.lib"', '/NODEFAULTLIB:"msvcrtd.lib"'] BF_BUILDDIR = '..\\build\\blender25-win64-vc' BF_INSTALLDIR='..\\install\\blender25-win64-vc' diff --git a/doc/blender_file_format/BlendFileDnaExporter_25.py b/doc/blender_file_format/BlendFileDnaExporter_25.py index afc58ce6730..988c992fd78 100755 --- a/doc/blender_file_format/BlendFileDnaExporter_25.py +++ b/doc/blender_file_format/BlendFileDnaExporter_25.py @@ -13,8 +13,8 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ***** END GPL LICENCE BLOCK ***** diff --git a/doc/blender_file_format/BlendFileReader.py b/doc/blender_file_format/BlendFileReader.py index 7003af10ac7..313c8c7ff5d 100644 --- a/doc/blender_file_format/BlendFileReader.py +++ b/doc/blender_file_format/BlendFileReader.py @@ -13,8 +13,8 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ***** END GPL LICENCE BLOCK ***** diff --git a/doc/doxygen/Doxyfile b/doc/doxygen/Doxyfile index 89dcf834227..79b3f1a4160 100644 --- a/doc/doxygen/Doxyfile +++ b/doc/doxygen/Doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = Blender # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = "V2.57" +PROJECT_NUMBER = "V2.58" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/doc/python_api/blender-org/layout.html b/doc/python_api/blender-org/layout.html index a37ed730c22..88db31e1586 100644 --- a/doc/python_api/blender-org/layout.html +++ b/doc/python_api/blender-org/layout.html @@ -8,7 +8,7 @@ {%- macro relbar() %}