[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47119] branches/soc-2012-swiss_cheese: This is essentually enables Android build using cmake on linux
Alexander Kuznetsov
kuzsasha at gmail.com
Mon May 28 18:09:45 CEST 2012
Revision: 47119
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47119
Author: alexk
Date: 2012-05-28 16:09:44 +0000 (Mon, 28 May 2012)
Log Message:
-----------
This is essentually enables Android build using cmake on linux
Mac might be used too, but you need to modify CmakeList
Full instructions will be posted later
It still kinda complicated because it involves a lot of manual steps
WITH_ANDROID - to enable
Libs comming up
Modified Paths:
--------------
branches/soc-2012-swiss_cheese/CMakeLists.txt
branches/soc-2012-swiss_cheese/extern/CMakeLists.txt
branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_DisplayManagerSDL.h
branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemSDL.h
branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_WindowSDL.h
branches/soc-2012-swiss_cheese/source/blender/blenlib/intern/path_util.c
branches/soc-2012-swiss_cheese/source/blender/editors/include/BIF_gl.h
branches/soc-2012-swiss_cheese/source/blender/editors/space_file/fsmenu.c
branches/soc-2012-swiss_cheese/source/blender/makesdna/intern/CMakeLists.txt
branches/soc-2012-swiss_cheese/source/blender/makesrna/intern/CMakeLists.txt
branches/soc-2012-swiss_cheese/source/blender/makesrna/intern/makesrna.c
branches/soc-2012-swiss_cheese/source/blenderplayer/CMakeLists.txt
branches/soc-2012-swiss_cheese/source/creator/CMakeLists.txt
branches/soc-2012-swiss_cheese/source/creator/creator.c
branches/soc-2012-swiss_cheese/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
Modified: branches/soc-2012-swiss_cheese/CMakeLists.txt
===================================================================
--- branches/soc-2012-swiss_cheese/CMakeLists.txt 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/CMakeLists.txt 2012-05-28 16:09:44 UTC (rev 47119)
@@ -259,6 +259,11 @@
mark_as_advanced(WITH_ASSERT_ABORT)
+
+option(WITH_ANDROID "Compiles Blender for Android" OFF)
+mark_as_advanced(WITH_ANDROID)
+
+
if(APPLE)
if(NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
@@ -454,6 +459,18 @@
#-----------------------------------------------------------------------------
#Platform specifics
+
+
+if(WITH_ANDROID)
+add_definitions(-DWITH_ANDROID)
+add_definitions(-DNDEBUG)
+
+
+set(ANDROID_TARGET "armv7-a_9" CACHE STRING "Processor Target")
+
+endif()
+
+
if(UNIX AND NOT APPLE)
# needed for ubuntu 11.04
@@ -462,7 +479,10 @@
endif()
# set lib directory if it exists
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ if(WITH_ANDROID)
+ set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/android/${ANDROID_TARGET})
+ set(ANDROID_PROJ ${LIBDIR}/aghosty-sdl CACHE STRING "boo")
+ elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/linux64)
else()
@@ -474,12 +494,60 @@
endif()
endif()
- find_package(JPEG REQUIRED)
- find_package(PNG REQUIRED)
- find_package(ZLIB REQUIRED)
- find_package(Freetype REQUIRED)
- if(WITH_PYTHON)
+ if(WITH_ANDROID)
+
+
+
+ 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)
+
+ 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/)
+
+
+ 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()
+
+
+ else()
+ find_package(JPEG REQUIRED)
+ find_package(PNG REQUIRED)
+ find_package(ZLIB REQUIRED)
+ find_package(Freetype REQUIRED)
+ endif()
+
+ if(WITH_PYTHON AND NOT WITH_ANDROID)
# No way to set py32. remove for now.
# find_package(PythonLibs)
@@ -518,7 +586,7 @@
endif()
endif()
- if(WITH_SDL)
+ if(WITH_SDL AND NOT WITH_ANDROID)
find_package(SDL)
mark_as_advanced(
SDLMAIN_LIBRARY
@@ -664,7 +732,10 @@
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(NOT WITH_ANDROID)
+ set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lutil -lpthread")
+ endif()
if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
find_package(X11 REQUIRED)
@@ -699,8 +770,14 @@
endif()
endif()
- set(PLATFORM_LINKFLAGS "-pthread")
+ if(WITH_ANDROID)
+ set(PLATFORM_LINKFLAGS "-lGLESv1_CM")
+ else()
+ set(PLATFORM_LINKFLAGS "-pthread")
+ endif()
+
+
# lfs on glibc, all compilers should use
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
@@ -1508,7 +1585,13 @@
#-----------------------------------------------------------------------------
# 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)
+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
@@ -1539,7 +1622,11 @@
if(WITH_BUILTIN_GLEW)
# set(GLEW_LIBRARY "") # unused
- set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
+ if(WITH_ANDROID)
+ set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-android/include")
+ elseif()
+ set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
+ endif()
else()
find_package(GLEW)
Modified: branches/soc-2012-swiss_cheese/extern/CMakeLists.txt
===================================================================
--- branches/soc-2012-swiss_cheese/extern/CMakeLists.txt 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/extern/CMakeLists.txt 2012-05-28 16:09:44 UTC (rev 47119)
@@ -42,8 +42,10 @@
if(WITH_BUILTIN_GLEW)
if(WITH_ANDROID)
+message(good)
add_subdirectory(glew-android)
elseif()
+message(bad)
add_subdirectory(glew)
endif()
endif()
Modified: branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_DisplayManagerSDL.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_DisplayManagerSDL.h 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_DisplayManagerSDL.h 2012-05-28 16:09:44 UTC (rev 47119)
@@ -34,7 +34,8 @@
#include "SDL.h"
}
-#if !SDL_VERSION_ATLEAST(2, 0, 0)
+
+#if !SDL_VERSION_ATLEAST(2, 0, 0) && !defined(WITH_ANDROID)
# error "SDL 2.0 or newer is needed to build with Ghost"
#endif
Modified: branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemSDL.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemSDL.h 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemSDL.h 2012-05-28 16:09:44 UTC (rev 47119)
@@ -39,7 +39,7 @@
#include "SDL.h"
}
-#if !SDL_VERSION_ATLEAST(2, 0, 0)
+#if !SDL_VERSION_ATLEAST(2, 0, 0) && !defined(WITH_ANDROID)
# error "SDL 2.0 or newer is needed to build with Ghost"
#endif
Modified: branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_WindowSDL.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_WindowSDL.h 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_WindowSDL.h 2012-05-28 16:09:44 UTC (rev 47119)
@@ -36,7 +36,7 @@
#include "SDL.h"
}
-#if !SDL_VERSION_ATLEAST(2, 0, 0)
+#if !SDL_VERSION_ATLEAST(2, 0, 0) && !defined(WITH_ANDROID)
# error "SDL 2.0 or newer is needed to build with Ghost"
#endif
Modified: branches/soc-2012-swiss_cheese/source/blender/blenlib/intern/path_util.c
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/blenlib/intern/path_util.c 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/source/blender/blenlib/intern/path_util.c 2012-05-28 16:09:44 UTC (rev 47119)
@@ -1786,7 +1786,13 @@
const char *separator = ":";
#endif
+#ifdef WITH_ANDROID
+/* probably we should use better method */
+ BLI_strncpy(fullname, "/data/data/org.blender.app/blender", maxlen);
+ return;
+#endif
+
#ifdef WITH_BINRELOC
/* linux uses binreloc since argv[0] is not reliable, call br_init( NULL ) first */
path = br_find_exe(NULL);
Modified: branches/soc-2012-swiss_cheese/source/blender/editors/include/BIF_gl.h
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/editors/include/BIF_gl.h 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/source/blender/editors/include/BIF_gl.h 2012-05-28 16:09:44 UTC (rev 47119)
@@ -34,7 +34,6 @@
#define __BIF_GL_H__
#include "GL/glew.h"
-
/*
* these should be phased out. cpack should be replaced in
* code with calls to glColor3ub. - zr
@@ -47,8 +46,13 @@
* */
#define cpack(x) glColor3ub( ((x) & 0xFF), (((x) >> 8) & 0xFF), (((x) >> 16) & 0xFF) )
+#ifdef WITH_ANDROID
+#define glMultMatrixf(x) fake_glMultMatrixf( (float *)(x))
+#define glLoadMatrixf(x) fake_glLoadMatrixf( (float *)(x))
+#else
#define glMultMatrixf(x) glMultMatrixf( (float *)(x))
#define glLoadMatrixf(x) glLoadMatrixf( (float *)(x))
+#endif
#endif /* #ifdef __BIF_GL_H__ */
Modified: branches/soc-2012-swiss_cheese/source/blender/editors/space_file/fsmenu.c
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/editors/space_file/fsmenu.c 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/source/blender/editors/space_file/fsmenu.c 2012-05-28 16:09:44 UTC (rev 47119)
@@ -486,7 +486,8 @@
{
int found = 0;
-#ifdef __linux__
+/* Doesn't yet work with Android */
+#if defined(__linux__) && !defined(WITH_ANDROID)
/* loop over mount points */
struct mntent *mnt;
int len;
Modified: branches/soc-2012-swiss_cheese/source/blender/makesdna/intern/CMakeLists.txt
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/makesdna/intern/CMakeLists.txt 2012-05-28 16:06:38 UTC (rev 47118)
+++ branches/soc-2012-swiss_cheese/source/blender/makesdna/intern/CMakeLists.txt 2012-05-28 16:09:44 UTC (rev 47119)
@@ -51,16 +51,28 @@
# SRC_DNA_INC is defined in the parent dir
+if(WITH_ANDROID)
+add_library(makesdna SHARED ${SRC} ${SRC_DNA_INC})
+else()
add_executable(makesdna ${SRC} ${SRC_DNA_INC})
+endif()
# Output dna.c
+if(WITH_ANDROID)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dna.c
+ WORKING_DIRECTORY ${ANDROID_PROJ}
+ COMMAND ${ANDROID_PROJ}/makesdna.sh ${CMAKE_BINARY_DIR}/lib/libmakesdna.so ${CMAKE_CURRENT_BINARY_DIR}/dna.c ${CMAKE_SOURCE_DIR}/source/blender/makesdna/
+ DEPENDS makesdna
+)
+else()
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dna.c
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list