From 426c1cfc4c9ef011715b755f5b1eb1c24d574586 Mon Sep 17 00:00:00 2001 From: "Evan D. Schoenberg, M.D" Date: Tue, 7 Jun 2016 21:17:13 -0400 Subject: [PATCH 1/4] Simplify the podspec to use a 'common' subspec to avoid code duplication --- FMDB.podspec | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/FMDB.podspec b/FMDB.podspec index c133887e..125ffa21 100644 --- a/FMDB.podspec +++ b/FMDB.podspec @@ -7,7 +7,12 @@ Pod::Spec.new do |s| s.author = { 'August Mueller' => 'gus@flyingmeat.com' } s.source = { :git => 'https://github.com/ccgus/fmdb.git', :tag => "#{s.version}" } s.requires_arc = true - s.default_subspec = 'standard' + s.default_subspec = 'standard' + + s.subspec 'common' do |ss| + ss.source_files = 'src/fmdb/FM*.{h,m}' + ss.exclude_files = 'src/fmdb.m' + end # use the built-in library version of sqlite3 s.subspec 'standard' do |ss| @@ -26,24 +31,21 @@ Pod::Spec.new do |s| s.subspec 'standalone' do |ss| ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } ss.dependency 'sqlite3' - ss.source_files = 'src/fmdb/FM*.{h,m}' - ss.exclude_files = 'src/fmdb.m' - end - - # build with FTS support and custom FTS tokenizer source files + ss.dependency 'FMDB/common' + end + + # build the latest stable version of sqlite3 + # with FTS support and custom FTS tokenizer source files s.subspec 'standalone-fts' do |ss| - ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } - ss.source_files = 'src/fmdb/FM*.{h,m}', 'src/extra/fts3/*.{h,m}' - ss.exclude_files = 'src/fmdb.m' + ss.dependency 'FMDB/standalone' ss.dependency 'sqlite3/fts' + ss.source_files = 'src/extra/fts3/*.{h,m}' end # use SQLCipher and enable -DSQLITE_HAS_CODEC flag s.subspec 'SQLCipher' do |ss| ss.dependency 'SQLCipher' - ss.source_files = 'src/fmdb/FM*.{h,m}' - ss.exclude_files = 'src/fmdb.m' - ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1' } - end - + ss.dependency 'FMDB/common' + ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1' } + end end From 03bb65d6d846b4df971d64f34330b4ee929d4e8d Mon Sep 17 00:00:00 2001 From: "Evan D. Schoenberg, M.D" Date: Tue, 7 Jun 2016 21:17:48 -0400 Subject: [PATCH 2/4] Add FMDB/SQLCipher/FTS subspec --- FMDB.podspec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/FMDB.podspec b/FMDB.podspec index 125ffa21..31eb0bac 100644 --- a/FMDB.podspec +++ b/FMDB.podspec @@ -47,5 +47,12 @@ Pod::Spec.new do |s| ss.dependency 'SQLCipher' ss.dependency 'FMDB/common' ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1' } + + # FMDB/SQLCipher/FTS subspec, which uses SQLCipher + # and adds FTS support + custom FTS tokenizer source files + ss.subspec 'FTS' do |sss| + sss.dependency 'SQLCipher/fts' + sss.dependency 'FMDB/FTS' + end end end From 300d0fe7a8041a06284e3772c0099468381c39e2 Mon Sep 17 00:00:00 2001 From: "Evan D. Schoenberg, M.D" Date: Wed, 8 Jun 2016 20:00:03 -0400 Subject: [PATCH 3/4] Further refined the Podspec. The spec now provides a total of 6 options: standard, standard/FTS, standalone, standalone/FTS, SQLCipher, and SQLCipher/FTS. Thanks to @stephanheilner for the helpful review. --- FMDB.podspec | 59 +++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/FMDB.podspec b/FMDB.podspec index 31eb0bac..02c4a180 100644 --- a/FMDB.podspec +++ b/FMDB.podspec @@ -9,50 +9,53 @@ Pod::Spec.new do |s| s.requires_arc = true s.default_subspec = 'standard' + # common: for internal use only s.subspec 'common' do |ss| ss.source_files = 'src/fmdb/FM*.{h,m}' ss.exclude_files = 'src/fmdb.m' end - - # use the built-in library version of sqlite3 + + # common_FTS: for internal use only + s.subspec 'common_FTS' do |ss| + ss.source_files = 'src/extra/fts3/*.{h,m}' + ss.pod_target_xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1' } + end + + # standard: use the built-in library version of sqlite3 s.subspec 'standard' do |ss| ss.library = 'sqlite3' - ss.source_files = 'src/fmdb/FM*.{h,m}' - ss.exclude_files = 'src/fmdb.m' - end - - # use the built-in library version of sqlite3 with custom FTS tokenizer source files - s.subspec 'FTS' do |ss| - ss.source_files = 'src/extra/fts3/*.{h,m}' - ss.dependency 'FMDB/standard' + ss.dependency 'FMDB/common' + + # use the built-in library version of sqlite3 with custom FTS tokenizer source files + ss.subspec 'FTS' do |sss| + sss.dependency 'FMDB/common_FTS' + end end - # build the latest stable version of sqlite3 + # standalone: latest stable version of sqlite3 s.subspec 'standalone' do |ss| - ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } ss.dependency 'sqlite3' ss.dependency 'FMDB/common' - end - - # build the latest stable version of sqlite3 - # with FTS support and custom FTS tokenizer source files - s.subspec 'standalone-fts' do |ss| - ss.dependency 'FMDB/standalone' - ss.dependency 'sqlite3/fts' - ss.source_files = 'src/extra/fts3/*.{h,m}' + ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } + + # standalone/FTS: latest stable version of sqlite3 + custom FTS tokenizer source files + ss.subspec 'FTS' do |sss| + sss.dependency 'sqlite3/fts' + sss.dependency 'FMDB/common_FTS' + end end - # use SQLCipher and enable -DSQLITE_HAS_CODEC flag + # SQLCipher: SQLCipher replaces sqlite3, and enable -DSQLITE_HAS_CODEC flag s.subspec 'SQLCipher' do |ss| ss.dependency 'SQLCipher' - ss.dependency 'FMDB/common' - ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1' } - - # FMDB/SQLCipher/FTS subspec, which uses SQLCipher - # and adds FTS support + custom FTS tokenizer source files + ss.dependency 'FMDB/common' + ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1' } + + # SQLCipher/FTS subspec, which uses SQLCipher + # and adds FTS support + custom FTS tokenizer source files ss.subspec 'FTS' do |sss| - sss.dependency 'SQLCipher/fts' - sss.dependency 'FMDB/FTS' + sss.dependency 'SQLCipher/fts' + sss.dependency 'FMDB/common_FTS' end end end From fda8ee51c144fe3a84d749856af2887d5e47afcb Mon Sep 17 00:00:00 2001 From: "Evan D. Schoenberg, M.D" Date: Wed, 8 Jun 2016 20:03:35 -0400 Subject: [PATCH 4/4] Cleaned up comments in the podspec file --- FMDB.podspec | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/FMDB.podspec b/FMDB.podspec index 02c4a180..eb6faea1 100644 --- a/FMDB.podspec +++ b/FMDB.podspec @@ -14,19 +14,19 @@ Pod::Spec.new do |s| ss.source_files = 'src/fmdb/FM*.{h,m}' ss.exclude_files = 'src/fmdb.m' end - + # common_FTS: for internal use only s.subspec 'common_FTS' do |ss| ss.source_files = 'src/extra/fts3/*.{h,m}' ss.pod_target_xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1' } end - # standard: use the built-in library version of sqlite3 + # standard: built-in library version of sqlite3 s.subspec 'standard' do |ss| ss.library = 'sqlite3' ss.dependency 'FMDB/common' - - # use the built-in library version of sqlite3 with custom FTS tokenizer source files + + # standard/FTS: built-in library version of sqlite3 + custom FTS tokenizer source files ss.subspec 'FTS' do |sss| sss.dependency 'FMDB/common_FTS' end @@ -38,21 +38,20 @@ Pod::Spec.new do |s| ss.dependency 'FMDB/common' ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } - # standalone/FTS: latest stable version of sqlite3 + custom FTS tokenizer source files + # standalone/FTS: latest stable version of sqlite3 + FTS3 + custom FTS tokenizer source files ss.subspec 'FTS' do |sss| sss.dependency 'sqlite3/fts' sss.dependency 'FMDB/common_FTS' end end - # SQLCipher: SQLCipher replaces sqlite3, and enable -DSQLITE_HAS_CODEC flag + # SQLCipher: SQLCipher replaces sqlite3 s.subspec 'SQLCipher' do |ss| ss.dependency 'SQLCipher' ss.dependency 'FMDB/common' ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1' } - - # SQLCipher/FTS subspec, which uses SQLCipher - # and adds FTS support + custom FTS tokenizer source files + + # SQLCipher/FTS:, SQLCipher replaces sqlite3 + FTS3 + custom FTS tokenizer source files ss.subspec 'FTS' do |sss| sss.dependency 'SQLCipher/fts' sss.dependency 'FMDB/common_FTS'