from Cosme
This commit is contained in:
@@ -157,6 +157,8 @@ endif()
|
||||
if(UNIX AND NOT APPLE)
|
||||
option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
|
||||
option(WITH_BUILTIN_GLEW "Use GLEW OpenGL wrapper library bundled with blender" ON)
|
||||
option(WITH_XDG_USER_DIRS "Build with XDG Base Directory Specification (only config and documents for now)" OFF)
|
||||
mark_as_advanced(WITH_XDG_USER_DIRS)
|
||||
else()
|
||||
# not an option for other OS's
|
||||
set(WITH_BUILTIN_GLEW ON)
|
||||
|
@@ -108,6 +108,10 @@ if(WITH_INPUT_NDOF)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WITH_XDG_USER_DIRS)
|
||||
add_definitions(-DWITH_XDG_USER_DIRS)
|
||||
endif()
|
||||
|
||||
if(WITH_HEADLESS OR WITH_GHOST_SDL)
|
||||
if(WITH_HEADLESS)
|
||||
list(APPEND SRC
|
||||
|
@@ -41,6 +41,11 @@
|
||||
#include <stdio.h> // for fprintf only
|
||||
#include <cstdlib> // for exit
|
||||
|
||||
#ifdef WITH_XDG_USER_DIRS
|
||||
# include <pwd.h> // for get home without use getenv()
|
||||
# include <limits.h> // for PATH_MAX
|
||||
#endif
|
||||
|
||||
#ifdef PREFIX
|
||||
static const char *static_path= PREFIX "/share" ;
|
||||
#else
|
||||
@@ -63,7 +68,27 @@ const GHOST_TUns8* GHOST_SystemPathsX11::getSystemDir() const
|
||||
|
||||
const GHOST_TUns8* GHOST_SystemPathsX11::getUserDir() const
|
||||
{
|
||||
#ifndef WITH_XDG_USER_DIRS
|
||||
return (const GHOST_TUns8 *)getenv("HOME");
|
||||
#else /* WITH_XDG_USER_DIRS */
|
||||
const char *home= getenv("XDG_CONFIG_HOME");
|
||||
|
||||
if (home) {
|
||||
return (const GHOST_TUns8 *)home;
|
||||
}
|
||||
else {
|
||||
static char user_path[PATH_MAX];
|
||||
|
||||
home= getenv("HOME");
|
||||
|
||||
if (home == NULL) {
|
||||
home= getpwuid(getuid())->pw_dir;
|
||||
}
|
||||
|
||||
snprintf(user_path, sizeof(user_path), "%s/.config", home);
|
||||
return (const GHOST_TUns8 *)user_path;
|
||||
}
|
||||
#endif /* WITH_XDG_USER_DIRS */
|
||||
}
|
||||
|
||||
const GHOST_TUns8* GHOST_SystemPathsX11::getBinaryDir() const
|
||||
|
@@ -148,4 +148,8 @@ if(WITH_OPENMP)
|
||||
add_definitions(-DPARALLEL=1)
|
||||
endif()
|
||||
|
||||
if(WITH_XDG_USER_DIRS)
|
||||
add_definitions(-DWITH_XDG_USER_DIRS)
|
||||
endif()
|
||||
|
||||
blender_add_lib(bf_blenlib "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
@@ -62,22 +62,17 @@
|
||||
|
||||
#ifdef WIN32
|
||||
# include <io.h>
|
||||
|
||||
# ifdef _WIN32_IE
|
||||
# undef _WIN32_IE
|
||||
# endif
|
||||
# define _WIN32_IE 0x0501
|
||||
# include <windows.h>
|
||||
# include <shlobj.h>
|
||||
|
||||
# include "BLI_winstuff.h"
|
||||
|
||||
#else /* non windows */
|
||||
|
||||
# ifdef WITH_BINRELOC
|
||||
# include "binreloc.h"
|
||||
# endif
|
||||
|
||||
#endif /* WIN32 */
|
||||
|
||||
/* standard paths */
|
||||
@@ -87,8 +82,12 @@
|
||||
#elif defined(__APPLE__)
|
||||
# define BLENDER_USER_FORMAT "%s/Blender/%s"
|
||||
# define BLENDER_SYSTEM_FORMAT "%s/Blender/%s"
|
||||
#else
|
||||
#else /* UNIX */
|
||||
# ifndef WITH_XDG_USER_DIRS /* oldschool unix ~/.blender/ */
|
||||
# define BLENDER_USER_FORMAT "%s/.blender/%s"
|
||||
# else /* new XDG ~/blender/.config/ */
|
||||
# define BLENDER_USER_FORMAT "%s/blender/%s"
|
||||
# endif // WITH_XDG_USER_DIRS
|
||||
# define BLENDER_SYSTEM_FORMAT "%s/blender/%s"
|
||||
#endif
|
||||
|
||||
@@ -797,7 +796,15 @@ void BLI_getlastdir(const char* dir, char *last, const size_t maxlen)
|
||||
as default location to save documents */
|
||||
const char *BLI_getDefaultDocumentFolder(void)
|
||||
{
|
||||
#if !defined(WIN32)
|
||||
#ifndef WIN32
|
||||
|
||||
#ifdef WITH_XDG_USER_DIRS
|
||||
const char *xdg_documents_dir= getenv("XDG_DOCUMENTS_DIR");
|
||||
if (xdg_documents_dir) {
|
||||
return xdg_documents_dir;
|
||||
}
|
||||
#endif
|
||||
|
||||
return getenv("HOME");
|
||||
|
||||
#else /* Windows */
|
||||
@@ -825,7 +832,7 @@ const char *BLI_getDefaultDocumentFolder(void)
|
||||
}
|
||||
|
||||
return NULL;
|
||||
#endif
|
||||
#endif /* WIN32 */
|
||||
}
|
||||
|
||||
/* NEW stuff, to be cleaned up when fully migrated */
|
||||
|
Reference in New Issue
Block a user