diff --git a/Makefile b/Makefile index 0537762b3..ca0dabc32 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ else GOOGLE_PERFTOOLS_LDFLAGS= endif -CFLAGS = -c -I. -I./include $(PORT_CFLAGS) $(PLATFORM_CCFLAGS) $(OPT) $(SNAPPY_CFLAGS) +CFLAGS = -c -I. -I./include $(PORT_CFLAGS) $(PLATFORM_CFLAGS) $(OPT) $(SNAPPY_CFLAGS) LDFLAGS=$(PLATFORM_LDFLAGS) $(SNAPPY_LDFLAGS) $(GOOGLE_PERFTOOLS_LDFLAGS) @@ -168,6 +168,7 @@ ifeq ($(PLATFORM), IOS) SIMULATORROOT=/Developer/Platforms/iPhoneSimulator.platform/Developer DEVICEROOT=/Developer/Platforms/iPhoneOS.platform/Developer IOSVERSION=$(shell defaults read /Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString) + .cc.o: mkdir -p ios-x86/$(dir $@) $(SIMULATORROOT)/usr/bin/$(CC) $(CFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 $< -o ios-x86/$@ diff --git a/build_detect_platform b/build_detect_platform index f23068a7b..bb108f741 100644 --- a/build_detect_platform +++ b/build_detect_platform @@ -17,8 +17,8 @@ rm -f build_config.mk case `uname -s` in Darwin) PLATFORM=OS_MACOSX - echo "PLATFORM_CFLAGS=-pthread -DOS_MACOSX" >> build_config.mk - echo "PLATFORM_LDFLAGS=-lpthread" >> build_config.mk + echo "PLATFORM_CFLAGS=-DOS_MACOSX" >> build_config.mk + echo "PLATFORM_LDFLAGS=" >> build_config.mk ;; Linux) PLATFORM=OS_LINUX @@ -49,9 +49,9 @@ g++ $CFLAGS -std=c++0x -x c++ - -o /dev/null 2>/dev/null < -#include -#include -#include "util/logging.h" - -namespace leveldb { -namespace port { - -static void PthreadCall(const char* label, int result) { - if (result != 0) { - fprintf(stderr, "pthread %s: %s\n", label, strerror(result)); - abort(); - } -} - -Mutex::Mutex() { PthreadCall("init mutex", pthread_mutex_init(&mu_, NULL)); } - -Mutex::~Mutex() { PthreadCall("destroy mutex", pthread_mutex_destroy(&mu_)); } - -void Mutex::Lock() { PthreadCall("lock", pthread_mutex_lock(&mu_)); } - -void Mutex::Unlock() { PthreadCall("unlock", pthread_mutex_unlock(&mu_)); } - -CondVar::CondVar(Mutex* mu) - : mu_(mu) { - PthreadCall("init cv", pthread_cond_init(&cv_, NULL)); -} - -CondVar::~CondVar() { PthreadCall("destroy cv", pthread_cond_destroy(&cv_)); } - -void CondVar::Wait() { - PthreadCall("wait", pthread_cond_wait(&cv_, &mu_->mu_)); -} - -void CondVar::Signal() { - PthreadCall("signal", pthread_cond_signal(&cv_)); -} - -void CondVar::SignalAll() { - PthreadCall("broadcast", pthread_cond_broadcast(&cv_)); -} - -} -} diff --git a/port/port_osx.h b/port/port_osx.h deleted file mode 100644 index 5524c6c5b..000000000 --- a/port/port_osx.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2011 The LevelDB Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. See the AUTHORS file for names of contributors. -// -// See port_example.h for documentation for the following types/functions. - -#ifndef STORAGE_LEVELDB_PORT_PORT_OSX_H_ -#define STORAGE_LEVELDB_PORT_PORT_OSX_H_ - -#include -#include -#include -#include - -#include - -namespace leveldb { - -// The following 4 methods implemented here for the benefit of env_posix.cc. -inline size_t fread_unlocked(void *a, size_t b, size_t c, FILE *d) { - return fread(a, b, c, d); -} - -inline size_t fwrite_unlocked(const void *a, size_t b, size_t c, FILE *d) { - return fwrite(a, b, c, d); -} - -inline int fflush_unlocked(FILE *f) { - return fflush(f); -} - -inline int fdatasync(int fd) { - return fsync(fd); -} - -namespace port { - -static const bool kLittleEndian = (__DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN); - -// ------------------ Threading ------------------- - -// A Mutex represents an exclusive lock. -class Mutex { - public: - Mutex(); - ~Mutex(); - - void Lock(); - void Unlock(); - void AssertHeld() { } - - private: - friend class CondVar; - pthread_mutex_t mu_; - - // No copying - Mutex(const Mutex&); - void operator=(const Mutex&); -}; - -class CondVar { - public: - explicit CondVar(Mutex* mu); - ~CondVar(); - - void Wait(); - void Signal(); - void SignalAll(); - - private: - pthread_cond_t cv_; - Mutex* mu_; -}; - -inline void MemoryBarrier() { -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - // See http://gcc.gnu.org/ml/gcc/2003-04/msg01180.html for a discussion on - // this idiom. Also see http://en.wikipedia.org/wiki/Memory_ordering. - __asm__ __volatile__("" : : : "memory"); -#else - OSMemoryBarrier(); -#endif -} - -class AtomicPointer { - private: - void* ptr_; - public: - AtomicPointer() { } - explicit AtomicPointer(void* p) : ptr_(p) {} - inline void* Acquire_Load() const { - void* ptr = ptr_; - MemoryBarrier(); - return ptr; - } - inline void Release_Store(void* v) { - MemoryBarrier(); - ptr_ = v; - } - inline void* NoBarrier_Load() const { - return ptr_; - } - inline void NoBarrier_Store(void* v) { - ptr_ = v; - } -}; - -inline bool Snappy_Compress(const char* input, size_t input_length, - std::string* output) { - return false; -} - -inline bool Snappy_Uncompress(const char* input_data, size_t input_length, - std::string* output) { - return false; -} - -inline bool GetHeapProfile(void (*func)(void*, const char*, int), void* arg) { - return false; -} - -} -} - -#endif // STORAGE_LEVELDB_PORT_PORT_OSX_H_