diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..b9a5228796 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,33 @@ +name: ci + +on: + push: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + spm: + runs-on: macOS-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: swift build + + cocoapods: + strategy: + matrix: + platform: [ios, tvos, macos, watchos] + runs-on: macOS-latest + steps: + - uses: actions/checkout@v4 + - name: Build + # Some header files import C++ headers, which causes linting failures + # (https://github.com/CocoaPods/CocoaPods/issues/5152). As a + # workaround, the `--skip-import-validation` is used. + run: | + pod lib lint leveldb-library.podspec \ + --platforms=${{ matrix.platform }} \ + --skip-import-validation diff --git a/.github/workflows/spm.yml b/.github/workflows/spm.yml deleted file mode 100644 index a761f213b0..0000000000 --- a/.github/workflows/spm.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: spm - -on: - push: - pull_request: - -jobs: - swift-build-run: - runs-on: macOS-latest - steps: - - uses: actions/checkout@v2 - - name: Build - run: swift build diff --git a/leveldb-library.podspec b/leveldb-library.podspec new file mode 100644 index 0000000000..c11c5dcf4f --- /dev/null +++ b/leveldb-library.podspec @@ -0,0 +1,61 @@ +Pod::Spec.new do |s| + s.name = 'leveldb-library' + s.version = '1.22.3' + s.license = 'New BSD' + s.summary = 'A fast key-value storage library ' + s.description = 'LevelDB is a fast key-value storage library written at Google that provides ' + + 'an ordered mapping from string keys to string values.' + s.homepage = 'https://github.com/google/leveldb' + s.authors = 'The LevelDB Authors' + + s.ios.deployment_target = '11.0' + s.osx.deployment_target = '10.13' + s.tvos.deployment_target = '11.0' + s.watchos.deployment_target = '6.0' + + s.source = { + :git => 'https://github.com/firebase/leveldb.git', + :tag => 'CocoaPods-' + s.version.to_s + } + + s.requires_arc = false + + s.pod_target_xcconfig = { + 'GCC_PREPROCESSOR_DEFINITIONS' => 'LEVELDB_IS_BIG_ENDIAN=0 ' + + 'LEVELDB_PLATFORM_POSIX ' + + 'HAVE_FULLFSYNC=1', + 'HEADER_SEARCH_PATHS' => '"${PODS_TARGET_SRCROOT}"', + + # Disable warnings introduced by Xcode 8.3 and Xcode 9 + # The deprecated-declarations is for OSMemoryBarrier on tvOS + 'WARNING_CFLAGS' => '-Wno-shorten-64-to-32 -Wno-comma -Wno-unreachable-code ' + + '-Wno-conditional-uninitialized -Wno-deprecated-declarations', + + # Prevent naming conflicts between leveldb headers and system headers + 'USE_HEADERMAP' => 'No', + } + + s.header_dir = "leveldb" + s.source_files = [ + "db/*.{cc,h}", + "port/*.{cc,h}", + "table/*.{cc,h}", + "util/*.{cc,h}", + "include/leveldb/*.h" + ] + + s.public_header_files = [ + "include/leveldb/*.h" + ] + + s.exclude_files = [ + "**/*_test.cc", + "**/*_bench.cc", + "db/leveldbutil.cc", + "util/env_windows.cc", + "util/testutil.cc" + ] + + s.library = 'c++' +end +