diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 193 |
1 files changed, 172 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 751c2dd548e..8c8f572df6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -231,6 +231,9 @@ option(WITH_LIBMV "Enable libmv structure from motion library" ON) # Misc option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON) +if(WIN32) + option(WITH_INPUT_TOUCH "Enable Touch input (Windows 7 only)" OFF) +endif() 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) @@ -269,6 +272,17 @@ mark_as_advanced(WITH_CXX_GUARDEDALLOC) option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF) mark_as_advanced(WITH_ASSERT_ABORT) +option(WITH_GPU_SAFETY "Perform extensive runtime tests to catch certain graphics API usage errors (degrades performance)" OFF) +mark_as_advanced(WITH_GPU_SAFETY) + +option(WITH_ANDROID "Compiles Blender for Android" OFF) +mark_as_advanced(WITH_ANDROID) + +option(WITH_GLES "Compiles Blender with OpenGL ES 2.0" OFF) +mark_as_advanced(WITH_GLES) + +option(WITH_CODE_COVERAGE "Compile with support for generating code coverage information" OFF) +mark_as_advanced(WITH_CODE_COVERAGE) if(APPLE) if(NOT CMAKE_OSX_ARCHITECTURES) @@ -502,26 +516,109 @@ set(PLATFORM_LINKFLAGS_DEBUG "") #----------------------------------------------------------------------------- #Platform specifics + + +if(WITH_ANDROID) +add_definitions(-DWITH_ANDROID) +add_definitions(-DNDEBUG) +set(WITH_GLES ON ) +set(ANDROID_TARGET "armv7-a_9" CACHE STRING "Processor Target") + +endif() + +if(WITH_GLES) +message(setting) +add_definitions(-DGLES) +add_definitions(-DREAL_GL_MODE=<GL/realgl.h>) +add_definitions(-DFAKE_GL_MODE=<GL/fakegl.h>) + +else() +add_definitions(-DREAL_GL_MODE=\"${CMAKE_SOURCE_DIR}/source/blender/empty.h\") +add_definitions(-DFAKE_GL_MODE=\"${CMAKE_SOURCE_DIR}/source/blender/empty.h\") + +endif() + + + + if(UNIX AND NOT APPLE) - 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}) + if(WITH_ANDROID) + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/android/${ANDROID_TARGET}) + + if(NOT WITH_GHOST_SDL) + set(ANDROID_APP_LIBPATH ${CMAKE_SOURCE_DIR}/source/android/app/libs/armeabi/) + set(ANDROID_APP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/source/android/app/jni/) + set(ANDROID_APP_LIBRARY main) + set(ANDROID_PROJ ${CMAKE_SOURCE_DIR}/source/android/app) + else() + set(ANDROID_PROJ ${LIBDIR}/aghosty-sdl CACHE STRING "Android Project Path") endif() - find_package(${ARGV}) - if(${WITH_STATIC_LIBS}) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) - unset(_cmake_find_library_suffixes_back) + + + set(JPEG "${LIBDIR}/jpeg") + set(JPEG_INCLUDE_DIR "${JPEG}/include") + set(JPEG_LIBPATH ${JPEG}/lib) + set(JPEG_LIBRARIES ${JPEG_LIBPATH}/libjpeg.so) + + + set(PNG "${LIBDIR}/png") + set(PNG_INCLUDE_DIR "${PNG}/include") + set(PNG_LIBPATH ${PNG}/lib) + set(PNG_LIBRARIES ${PNG_LIBPATH}/libpng15.so.15.9.0) + + set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include) + + set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.so.1) + if(WITH_GHOST_SDL) + set(SDL_INCLUDE_DIR ${LIBDIR}/aghosty-sdl/jni/SDL/include/) + + set(SDLMAIN_LIBRARY ${LIBDIR}/aghosty-sdl/jni/SDL/src/main/android/libSDLmain.a) + set(SDL_LIBRARY "${SDLMAIN_LIBRARY};${LIBDIR}/aghosty-sdl/libs/armeabi/libSDL.so") + set(SDL_LIBPATH ${LIBDIR}/aghosty-sdl/libs/armeabi/) + endif() + + set(FREETYPE ${LIBDIR}/freetype) + set(FREETYPE_INCLUDE_DIRS + ${LIBDIR}/freetype/include + ${LIBDIR}/freetype/include/freetype2 + ) + set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/libfreetype.so.6) + + if(WITH_PYTHON) + # normally cached but not since we include them with blender + set(PYTHON_VERSION 3.2) # CACHE STRING) + set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m") # CACHE PATH) + set(PYTHON_LIBRARY "${LIBDIR}/python/lib/libpython3.2m.so.1.0") # CACHE FILEPATH) + + # uncached vars + set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") + set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") endif() - endmacro() - find_package_wrapper(JPEG REQUIRED) - find_package_wrapper(PNG REQUIRED) - find_package_wrapper(ZLIB REQUIRED) - find_package_wrapper(Freetype REQUIRED) + + else() + 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}) - if(WITH_PYTHON) + + 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) + endif() + + if(WITH_PYTHON AND NOT WITH_ANDROID) # No way to set py32. remove for now. # find_package(PythonLibs) @@ -563,7 +660,7 @@ if(UNIX AND NOT APPLE) endif() endif() - if(WITH_SDL) + if(WITH_SDL AND NOT WITH_ANDROID) find_package_wrapper(SDL) mark_as_advanced( SDLMAIN_LIBRARY @@ -789,9 +886,16 @@ if(UNIX AND NOT APPLE) endif() # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed - set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++") + set(PLATFORM_LINKLIBS "-lc -lm -lstdc++") + if(WITH_ANDROID) + set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lGLESv2 -llog") + elseif(WITH_GLES) + set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lGLESv2 -lEGL") + else() + set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lutil -lpthread") + endif() - if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL)) + if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL) AND (NOT WITH_ANDROID)) find_package(X11 REQUIRED) find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH}) mark_as_advanced(X11_XF86keysym_INCLUDE_PATH) @@ -824,7 +928,13 @@ if(UNIX AND NOT APPLE) endif() endif() - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread") + if(WITH_ANDROID) + set(PLATFORM_LINKFLAGS "-lGLESv1_CM") + else() + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread") + endif() + + # lfs on glibc, all compilers should use add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE) @@ -1765,7 +1875,17 @@ endif() #----------------------------------------------------------------------------- # Configure OpenGL. +if(WITH_ANDROID) +set(OPENGL_INCLUDE_DIR ${LIBDIR}/fakeGL/) +set(OPENGL_gl_LIBRARY ${OPENGL_INCLUDE_DIR}/libGLarm.so) +set(OPENGL_glu_LIBRARY ${OPENGL_INCLUDE_DIR}/libGLUarm.so) +elseif(WITH_GLES) +set(OPENGL_INCLUDE_DIR "" CACHE PATH "") +set(OPENGL_gl_LIBRARY "" CACHE FILEPATH "") +set(OPENGL_glu_LIBRARY "" CACHE FILEPATH "") +else() find_package(OpenGL) +endif() blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}") # unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake # unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake @@ -1795,6 +1915,7 @@ endif() # Configure GLEW if(WITH_SYSTEM_GLEW) + find_package(GLEW) if(NOT GLEW_FOUND) @@ -1807,7 +1928,11 @@ if(WITH_SYSTEM_GLEW) ) else() # set(GLEW_LIBRARY "") # unused - set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include") + if(WITH_GLES) + set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-android/include") + else() + set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include") + endif() endif() #----------------------------------------------------------------------------- @@ -1979,15 +2104,36 @@ if(WITH_PYTHON) endif() endif() +#----------------------------------------------------------------------------- +# Code Coverage +if(WITH_CODE_COVERAGE) + set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fprofile-arcs -ftest-coverage") + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -fprofile-arcs -ftest-coverage") + + if(CMAKE_COMPILER_IS_GNUCC) + set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lgcov") + endif() + + if(XCODE_VERSION) + # at this time (Oct 2012) code coverage only works with gcc not clang and Xcode defaults to clang + # this is kind of hackish, since it isn't future proof + # set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") + endif() +endif() + +#----------------------------------------------------------------------------- # Include warnings first, so its possible to disable them with user defined flags # eg: -Wno-uninitialized set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}") set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}") +#----------------------------------------------------------------------------- + #------------------------------------------------------------------------------- # Global Defines -# better not set includes here but this debugging option is off by default. +# better not set includes here but these debugging options are off by default. + if(WITH_CXX_GUARDEDALLOC) include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc) add_definitions(-DWITH_CXX_GUARDEDALLOC) @@ -1997,6 +2143,10 @@ if(WITH_ASSERT_ABORT) add_definitions(-DWITH_ASSERT_ABORT) endif() +if(WITH_GPU_SAFETY) + add_definitions(-DWITH_GPU_SAFETY) +endif() + # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}") # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}") @@ -2060,6 +2210,7 @@ if(FIRST_RUN) info_cfg_option(WITH_FFTW3) info_cfg_option(WITH_INTERNATIONAL) info_cfg_option(WITH_INPUT_NDOF) + info_cfg_option(WITH_INPUT_TOUCH) info_cfg_option(WITH_CYCLES) info_cfg_option(WITH_OPENCOLORIO) |