diff options
Diffstat (limited to 'source/creator')
-rw-r--r-- | source/creator/CMakeLists.txt | 79 | ||||
-rw-r--r-- | source/creator/SConscript | 5 | ||||
-rw-r--r-- | source/creator/creator.c | 19 |
3 files changed, 85 insertions, 18 deletions
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 1256881182b..bef41983bab 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -24,6 +24,9 @@ # # ***** END GPL LICENSE BLOCK ***** +# So BUILDINFO and BLENDERPATH strings are automatically quoted +CMAKE_POLICY(SET CMP0005 NEW) + SETUP_LIBDIRS() INCLUDE_DIRECTORIES(../../intern/guardedalloc @@ -66,19 +69,37 @@ IF(NOT WITH_SDL) ADD_DEFINITIONS(-DDISABLE_SDL) ENDIF(NOT WITH_SDL) +IF(UNIX AND NOT APPLE) + SET(BLENDERPATH ${CMAKE_INSTALL_PREFIX}/share/blender/${BLENDER_VERSION}) + # blender_path in creator.c + ADD_DEFINITIONS(-DBLENDERPATH="${BLENDERPATH}") +ENDIF(UNIX AND NOT APPLE) + IF(CMAKE_SYSTEM_NAME MATCHES "Linux") ADD_DEFINITIONS(-DWITH_BINRELOC) INCLUDE_DIRECTORIES(${BINRELOC_INC}) ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") -MESSAGE(STATUS "Configuring blender") +# Setup the exe sources and buildinfo +SET(EXESRC creator.c) IF(WIN32) - ADD_EXECUTABLE(blender ${EXETYPE} creator.c ../icons/winblender.rc) -ELSE(WIN32) - ADD_EXECUTABLE(blender ${EXETYPE} creator.c) + SET(EXESRC ${EXESRC} ../icons/winblender.rc) ENDIF(WIN32) +IF(WITH_BUILDINFO) + ADD_DEFINITIONS(-DBUILD_DATE="${BUILD_DATE}") + ADD_DEFINITIONS(-DBUILD_TIME="${BUILD_TIME}") + ADD_DEFINITIONS(-DBUILD_REV="${BUILD_REV}") + ADD_DEFINITIONS(-DBUILD_PLATFORM="${CMAKE_SYSTEM_NAME}") + ADD_DEFINITIONS(-DBUILD_TYPE="${CMAKE_BUILD_TYPE}") + + SET(EXESRC ${EXESRC} buildinfo.c) +ENDIF(WITH_BUILDINFO) + +MESSAGE(STATUS "Configuring blender") + +ADD_EXECUTABLE(blender ${EXETYPE} ${EXESRC}) # Post build steps for bundling/packaging. @@ -96,6 +117,9 @@ IF(WITH_INSTALL) ENDIF(UNIX) IF(UNIX AND NOT APPLE) + + # Local installation, "make install" can be done after this optionally + ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender COMMAND rm -Rf ${TARGETDIR}/.blender @@ -115,8 +139,7 @@ IF(WITH_INSTALL) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender COMMENT "copying blender scripts..." - COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/ui ${TARGETDIR}/.blender/ - COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/io ${TARGETDIR}/.blender/ + COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/scripts ${TARGETDIR}/.blender/ COMMAND find ${TARGETDIR} -name "*.py?" -prune -exec rm -rf {} "\;" ) @@ -152,6 +175,27 @@ IF(WITH_INSTALL) COMMAND find ${TARGETDIR} -name .svn -prune -exec rm -rf {} "\;" ) + + # Above we bundle a portable distrobution in ./bin + # This is an optional "make install" which installs blender on the system. + INSTALL( + PROGRAMS ${TARGETDIR}/blender + DESTINATION ${CMAKE_INSTALL_PREFIX}/bin + ) + + IF(WITH_GAMEENGINE AND WITH_PLAYER) + INSTALL( + PROGRAMS ${TARGETDIR}/blenderplayer + DESTINATION ${CMAKE_INSTALL_PREFIX}/bin + ) + ENDIF(WITH_GAMEENGINE AND WITH_PLAYER) + + INSTALL( + DIRECTORY ${TARGETDIR}/.blender/ + DESTINATION ${BLENDERPATH} + ) + # end "make install" + ENDIF(UNIX AND NOT APPLE) IF(APPLE) @@ -161,9 +205,9 @@ IF(WITH_INSTALL) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp -R ${SOURCEINFO} ${TARGETDIR}/blender.app/Contents/ - COMMAND cp -R ${SOURCEDIR}/Contents/PkgInfo ${TARGETDIR}/blender.app/Contents/ - COMMAND cp -R ${SOURCEDIR}/Contents/Resources ${TARGETDIR}/blender.app/Contents/ + COMMAND cp -Rf ${SOURCEINFO} ${TARGETDIR}/blender.app/Contents/ + COMMAND cp -Rf ${SOURCEDIR}/Contents/PkgInfo ${TARGETDIR}/blender.app/Contents/ + COMMAND cp -Rf ${SOURCEDIR}/Contents/Resources ${TARGETDIR}/blender.app/Contents/ COMMAND cat ${SOURCEINFO} | sed s/VERSION/`cat ${CMAKE_SOURCE_DIR}/release/VERSION`/ | sed s/DATE/`date +'%Y-%b-%d'`/ > ${TARGETINFO} COMMAND rm -Rf ${TARGETDIR}/blender.app/Contents/MacOS/.blender COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ @@ -174,8 +218,8 @@ IF(WITH_INSTALL) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ - COMMAND cp -R ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/Resources/ - COMMAND cp -R ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ + COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/Resources/ + COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/Resources/ ) ENDIF(WITH_INTERNATIONAL) @@ -183,8 +227,7 @@ IF(WITH_INSTALL) IF(WITH_PYTHON) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/ui ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/io ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ + COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/scripts ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/.blender/python/ COMMAND unzip -q ${LIBDIR}/release/python.zip -d ${TARGETDIR}/blender.app/Contents/MacOS/.blender/python/ COMMAND find ${TARGETDIR}/blender.app -name "*.py?" -prune -exec rm -rf {} "\;" @@ -206,18 +249,16 @@ IF(WITH_INSTALL) MAIN_DEPENDENCY blender COMMAND if not exist \"${TARGETDIR}\\.blender\" mkdir \"${TARGETDIR}\\.blender\" COMMAND if not exist \"${TARGETDIR}\\.blender\\locale\" mkdir \"${TARGETDIR}\\.blender\\locale\" - COMMAND if not exist \"${TARGETDIR}\\.blender\\ui\" mkdir \"${TARGETDIR}\\.blender\\ui\" - COMMAND if not exist \"${TARGETDIR}\\.blender\\io\" mkdir \"${TARGETDIR}\\.blender\\io\" + COMMAND if not exist \"${TARGETDIR}\\.blender\\scripts\" mkdir \"${TARGETDIR}\\.blender\\scripts\" COMMAND if not exist \"${TARGETDIR}\\plugins\" mkdir \"${TARGETDIR}\\plugins\" COMMAND copy /Y \"${WIN_SOURCE_DIR}\\bin\\.blender\\.Blanguages\" \"${TARGETDIR}\\.blender\\\" COMMAND copy /Y \"${WIN_SOURCE_DIR}\\bin\\.blender\\.bfont.ttf\" \"${TARGETDIR}\\.blender\\\" COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\bin\\.blender\\locale\\*.*\" \"${TARGETDIR}\\.blender\\locale\" COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\scripts\\*.*\" \"${TARGETDIR}\\.blender\\scripts\" - COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\ui\\*.*\" \"${TARGETDIR}\\.blender\\ui\" - COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\io\\*.*\" \"${TARGETDIR}\\.blender\\io\" COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\plugins\\*.*\" \"${TARGETDIR}\\plugins\" COMMAND copy /Y \"${WIN_SOURCE_DIR}\\release\\text\\*.*\" \"${TARGETDIR}\" - COMMAND copy /Y \"${WIN_SOURCE_DIR}\\release\\windows\\extra\\python26.zip\" \"${TARGETDIR}\\\" + # TODO, copy python bundle + # COMMAND copy /Y \"${WIN_SOURCE_DIR}\\release\\windows\\extra\\python31.zip\" \"${TARGETDIR}\\\" ) FILE(TO_NATIVE_PATH "${LIBDIR}" WIN_LIBDIR) @@ -319,6 +360,7 @@ IF(UNIX) blender_ONL bf_python bf_gen_python + bf_ikplugin bf_blenkernel bf_nodes bf_gpu @@ -363,6 +405,7 @@ IF(UNIX) bf_ngnetwork extern_bullet bf_loopbacknetwork + bf_ITASC bf_common bf_moto bf_python diff --git a/source/creator/SConscript b/source/creator/SConscript index 75e7494ebb5..7b3d1493ed2 100644 --- a/source/creator/SConscript +++ b/source/creator/SConscript @@ -1,5 +1,6 @@ #!/usr/bin/python Import ('env') +import os sources = 'creator.c' @@ -32,4 +33,8 @@ if env['WITH_BF_PYTHON']: else: defs.append('DISABLE_PYTHON') +if env['WITH_BF_FHS']: # /usr -> /usr/share/blender/2.5 + defs.append('BLENDERPATH=\\"' + os.path.join(env['BF_INSTALLDIR'], 'share', 'blender', env['BF_VERSION']) + '\\"') + + env.BlenderLib ( libname = 'bf_creator', sources = Split(sources), includes = Split(incs), defines = defs, libtype='core', priority = 0 ) diff --git a/source/creator/creator.c b/source/creator/creator.c index 41b27b1c915..6f64628b467 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -101,6 +101,7 @@ #ifdef BUILD_DATE extern char * build_date; extern char * build_time; +extern char * build_rev; extern char * build_platform; extern char * build_type; #endif @@ -116,6 +117,14 @@ extern int pluginapi_force_ref(void); /* from blenpluginapi:pluginapi.c */ char bprogname[FILE_MAXDIR+FILE_MAXFILE]; /* from blenpluginapi:pluginapi.c */ char btempdir[FILE_MAXDIR+FILE_MAXFILE]; +/* unix path support. + * defined by the compiler. eg "/usr/share/blender/2.5" "/opt/blender/2.5" */ +#ifndef BLENDERPATH +#define BLENDERPATH "" +#endif + +char blender_path[FILE_MAXDIR+FILE_MAXFILE] = BLENDERPATH; + /* Initialise callbacks for the modules that need them */ static void setCallbacks(void); @@ -221,6 +230,10 @@ static void print_help(void) printf (" \t\t passed unchanged. Access via Python's sys.argv\n"); printf ("\nEnvironment Variables:\n"); printf (" $HOME\t\t\tStore files such as .blender/ .B.blend .Bfs .Blog here.\n"); + printf (" $BLENDERPATH\tSystem directory to use for data files and scripts.\n"); + printf (" \tFor this build of blender the default BLENDERPATH is...\n"); + printf (" \t\"%s\"\n", blender_path); + printf (" \tseting the $BLENDERPATH will override this\n"); #ifdef WIN32 printf (" $TEMP\t\tStore temporary files here.\n"); #else @@ -305,6 +318,12 @@ int main(int argc, char **argv) BLI_where_am_i(bprogname, argv[0]); + { /* override the hard coded blender path */ + char *blender_path_env = getenv("BLENDERPATH"); + if(blender_path_env) + BLI_strncpy(blender_path, blender_path_env, sizeof(blender_path)); + } + RNA_init(); RE_engines_init(); |