diff options
| author | Mnikolenko ProductEngine <mnikolenko@productengine.com> | 2020-09-17 15:10:03 +0300 | 
|---|---|---|
| committer | Mnikolenko ProductEngine <mnikolenko@productengine.com> | 2020-09-17 15:10:03 +0300 | 
| commit | 20b50f99c89271518ae37ade0ef0866167070c80 (patch) | |
| tree | 9fafe6a50e22598c0b228cc361b27e971c77bd23 | |
| parent | 2e6f5164116e084fe35f952180c3f7092ad8350f (diff) | |
mac build fix
| -rw-r--r-- | indra/llcache/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/llcache/lldir_mac.cpp | 2 | ||||
| -rw-r--r-- | indra/llcache/lldir_utils_objc.h | 43 | ||||
| -rw-r--r-- | indra/llcache/lldir_utils_objc.mm | 108 | ||||
| -rw-r--r-- | indra/mac_crash_logger/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | indra/mac_crash_logger/mac_crash_logger.cpp | 1 | 
6 files changed, 157 insertions, 6 deletions
| diff --git a/indra/llcache/CMakeLists.txt b/indra/llcache/CMakeLists.txt index 379e3ebdbf..f1e4e7e0a3 100644 --- a/indra/llcache/CMakeLists.txt +++ b/indra/llcache/CMakeLists.txt @@ -29,6 +29,8 @@ set(llcache_HEADER_FILES      )  if (DARWIN) +  LIST(APPEND llcache_SOURCE_FILES lldir_utils_objc.mm) +  LIST(APPEND llcache_SOURCE_FILES lldir_utils_objc.h)    LIST(APPEND llcache_SOURCE_FILES lldir_mac.cpp)    LIST(APPEND llcache_HEADER_FILES lldir_mac.h)  endif (DARWIN) diff --git a/indra/llcache/lldir_mac.cpp b/indra/llcache/lldir_mac.cpp index 87dc1b9795..3bc4ee844e 100644 --- a/indra/llcache/lldir_mac.cpp +++ b/indra/llcache/lldir_mac.cpp @@ -36,7 +36,7 @@  #include <unistd.h>  #include <glob.h>  #include <boost/filesystem.hpp> -#include "llvfs_objc.h" +#include "lldir_utils_objc.h"  // -------------------------------------------------------------------------------- diff --git a/indra/llcache/lldir_utils_objc.h b/indra/llcache/lldir_utils_objc.h new file mode 100644 index 0000000000..12019c4284 --- /dev/null +++ b/indra/llcache/lldir_utils_objc.h @@ -0,0 +1,43 @@ +/**  + * @file lldir_utils_objc.h + * @brief Definition of directory utilities class for Mac OS X + * + * $LicenseInfo:firstyear=2020&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2020, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  + +#if !LL_DARWIN +#error This header must not be included when compiling for any target other than Mac OS. Consider including lldir.h instead. +#endif // !LL_DARWIN + +#ifndef LL_LLDIR_UTILS_OBJC_H +#define LL_LLDIR_UTILS_OBJC_H + +#include <iostream> + +std::string* getSystemTempFolder(); +std::string* getSystemCacheFolder(); +std::string* getSystemApplicationSupportFolder(); +std::string* getSystemResourceFolder(); +std::string* getSystemExecutableFolder(); + + +#endif // LL_LLDIR_UTILS_OBJC_H diff --git a/indra/llcache/lldir_utils_objc.mm b/indra/llcache/lldir_utils_objc.mm new file mode 100644 index 0000000000..da55a2f897 --- /dev/null +++ b/indra/llcache/lldir_utils_objc.mm @@ -0,0 +1,108 @@ +/**  + * @file lldir_utils_objc.mm + * @brief Cocoa implementation of directory utilities for Mac OS X + * + * $LicenseInfo:firstyear=2020&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2020, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  +#if LL_DARWIN + +//WARNING:  This file CANNOT use standard linden includes due to conflicts between definitions of BOOL + +#include "lldir_utils_objc.h" +#import <Cocoa/Cocoa.h> + +std::string* getSystemTempFolder() +{ +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; +    NSString * tempDir = NSTemporaryDirectory(); +    if (tempDir == nil) +        tempDir = @"/tmp"; +    std::string *result = ( new std::string([tempDir UTF8String]) ); +    [pool release]; +     +    return result; +} + +//findSystemDirectory scoped exclusively to this file.  +std::string* findSystemDirectory(NSSearchPathDirectory searchPathDirectory, +                                   NSSearchPathDomainMask domainMask) +{ +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; +     +    std::string *result = nil; +    NSString *path = nil; +     +    // Search for the path +    NSArray* paths = NSSearchPathForDirectoriesInDomains(searchPathDirectory, +                                                         domainMask, +                                                         YES); +    if ([paths count]) +    { +        path = [paths objectAtIndex:0]; +        //HACK:  Always attempt to create directory, ignore errors. +        NSError *error = nil; + +        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]; + +         +        result = new std::string([path UTF8String]);         +    } +    [pool release]; +    return result; +} + +std::string* getSystemExecutableFolder() +{ +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + +    NSString *bundlePath = [[NSBundle mainBundle] executablePath]; +    std::string *result = (new std::string([bundlePath UTF8String]));   +    [pool release]; + +    return result; +} + +std::string* getSystemResourceFolder() +{ +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + +    NSString *bundlePath = [[NSBundle mainBundle] resourcePath]; +    std::string *result = (new std::string([bundlePath UTF8String])); +    [pool release]; +     +    return result; +} + +std::string* getSystemCacheFolder() +{ +    return findSystemDirectory (NSCachesDirectory, +                                NSUserDomainMask); +} + +std::string* getSystemApplicationSupportFolder() +{ +    return findSystemDirectory (NSApplicationSupportDirectory, +                                NSUserDomainMask); +     +} + +#endif // LL_DARWIN diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt index 95637c9a28..4a10076e6e 100644 --- a/indra/mac_crash_logger/CMakeLists.txt +++ b/indra/mac_crash_logger/CMakeLists.txt @@ -8,7 +8,7 @@ include(LLCoreHttp)  include(LLCrashLogger)  include(LLMath)  include(LLMessage) -include(LLVFS) +include(LLCache)  include(LLXML)  include(Linking)  include(LLSharedLibs) @@ -19,7 +19,7 @@ include_directories(      ${LLCOMMON_INCLUDE_DIRS}      ${LLCRASHLOGGER_INCLUDE_DIRS}      ${LLMATH_INCLUDE_DIRS} -    ${LLVFS_INCLUDE_DIRS} +    ${LLCACHE_INCLUDE_DIRS}      ${LLXML_INCLUDE_DIRS}      )  include_directories(SYSTEM @@ -68,11 +68,10 @@ find_library(COCOA_LIBRARY Cocoa)  target_link_libraries(mac-crash-logger      ${LLCRASHLOGGER_LIBRARIES} -    ${LLVFS_LIBRARIES} +    ${LLCACHE_LIBRARIES}      ${COCOA_LIBRARIES}      ${LLXML_LIBRARIES}      ${LLMESSAGE_LIBRARIES} -    ${LLVFS_LIBRARIES}      ${LLMATH_LIBRARIES}      ${LLCOREHTTP_LIBRARIES}      ${LLCOMMON_LIBRARIES} diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp index 54e41a1954..66d8cfa590 100644 --- a/indra/mac_crash_logger/mac_crash_logger.cpp +++ b/indra/mac_crash_logger/mac_crash_logger.cpp @@ -27,7 +27,6 @@  #include "linden_common.h"  #include "llcrashloggermac.h"  #include "indra_constants.h" -#include "llpidlock.h"  #include <iostream> | 
