Home | History | Annotate | Download | only in sqlite
      1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 {
      6   'variables': {
      7     'use_system_sqlite%': 0,
      8     'required_sqlite_version': '3.6.1',
      9   },
     10   'target_defaults': {
     11     'defines': [
     12       'SQLITE_CORE',
     13       'SQLITE_ENABLE_BROKEN_FTS2',
     14       'SQLITE_ENABLE_FTS2',
     15       'SQLITE_ENABLE_FTS3',
     16       'SQLITE_ENABLE_ICU',
     17       'SQLITE_ENABLE_MEMORY_MANAGEMENT',
     18       'SQLITE_SECURE_DELETE',
     19       'SQLITE_SEPARATE_CACHE_POOLS',
     20       'THREADSAFE',
     21       '_HAS_EXCEPTIONS=0',
     22     ],
     23   },
     24   'targets': [
     25     {
     26       'target_name': 'sqlite',
     27       'conditions': [
     28         [ 'chromeos==1' , {
     29             'defines': [
     30                 # Despite obvious warnings about not using this flag
     31                 # in deployment, we are turning off sync in ChromeOS
     32                 # and relying on the underlying journaling filesystem
     33                 # to do error recovery properly.  It's much faster.
     34                 'SQLITE_NO_SYNC',
     35                 ],
     36           },
     37         ],
     38         ['use_system_sqlite', {
     39           'type': 'none',
     40           'direct_dependent_settings': {
     41             'defines': [
     42               'USE_SYSTEM_SQLITE',
     43             ],
     44           },
     45 
     46           'conditions': [
     47             ['OS == "ios"', {
     48               'dependencies': [
     49                 'sqlite_regexp',
     50               ],
     51               'link_settings': {
     52                 'libraries': [
     53                   '$(SDKROOT)/usr/lib/libsqlite3.dylib',
     54                 ],
     55               },
     56             }],
     57             ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
     58               'direct_dependent_settings': {
     59                 'cflags': [
     60                   # This next command produces no output but it it will fail
     61                   # (and cause GYP to fail) if we don't have a recent enough
     62                   # version of sqlite.
     63                   '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
     64 
     65                   '<!@(pkg-config --cflags sqlite3)',
     66                 ],
     67               },
     68               'link_settings': {
     69                 'ldflags': [
     70                   '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
     71                 ],
     72                 'libraries': [
     73                   '<!@(pkg-config --libs-only-l sqlite3)',
     74                 ],
     75               },
     76             }],
     77           ],
     78         }, { # !use_system_sqlite
     79           'product_name': 'sqlite3',
     80           'type': 'static_library',
     81           'sources': [
     82             'amalgamation/sqlite3.h',
     83             'amalgamation/sqlite3.c',
     84             # fts2.c currently has a lot of conflicts when added to
     85             # the amalgamation.  It is probably not worth fixing that.
     86             'src/ext/fts2/fts2.c',
     87             'src/ext/fts2/fts2.h',
     88             'src/ext/fts2/fts2_hash.c',
     89             'src/ext/fts2/fts2_hash.h',
     90             'src/ext/fts2/fts2_icu.c',
     91             'src/ext/fts2/fts2_porter.c',
     92             'src/ext/fts2/fts2_tokenizer.c',
     93             'src/ext/fts2/fts2_tokenizer.h',
     94             'src/ext/fts2/fts2_tokenizer1.c',
     95           ],
     96 
     97           # TODO(shess): Previously fts1 and rtree files were
     98           # explicitly excluded from the build.  Make sure they are
     99           # logically still excluded.
    100 
    101           # TODO(shess): Should all of the sources be listed and then
    102           # excluded?  For editing purposes?
    103 
    104           'include_dirs': [
    105             'amalgamation',
    106             # Needed for fts2 to build.
    107             'src/src',
    108           ],
    109           'dependencies': [
    110             '../icu/icu.gyp:icui18n',
    111             '../icu/icu.gyp:icuuc',
    112           ],
    113           'direct_dependent_settings': {
    114             'include_dirs': [
    115               '.',
    116               '../..',
    117             ],
    118           },
    119           'msvs_disabled_warnings': [
    120             4018, 4244, 4267,
    121           ],
    122           'conditions': [
    123             ['OS=="linux"', {
    124               'link_settings': {
    125                 'libraries': [
    126                   '-ldl',
    127                 ],
    128               },
    129             }],
    130             ['OS == "mac" or OS == "ios"', {
    131               'link_settings': {
    132                 'libraries': [
    133                   '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
    134                 ],
    135               },
    136             }],
    137             ['OS == "android"', {
    138               'defines': [
    139                 'HAVE_USLEEP=1',
    140                 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
    141                 'SQLITE_DEFAULT_AUTOVACUUM=1',
    142                 'SQLITE_TEMP_STORE=3',
    143                 'SQLITE_ENABLE_FTS3_BACKWARDS',
    144                 'DSQLITE_DEFAULT_FILE_FORMAT=4',
    145               ],
    146               'android_enable_fdo': 1,
    147             }],
    148             ['os_posix == 1 and OS != "mac" and OS != "android"', {
    149               'cflags': [
    150                 # SQLite doesn't believe in compiler warnings,
    151                 # preferring testing.
    152                 #   http://www.sqlite.org/faq.html#q17
    153                 '-Wno-int-to-pointer-cast',
    154                 '-Wno-pointer-to-int-cast',
    155               ],
    156             }],
    157             ['clang==1', {
    158               'xcode_settings': {
    159                 'WARNING_CFLAGS': [
    160                   # sqlite does `if (*a++ && *b++);` in a non-buggy way.
    161                   '-Wno-empty-body',
    162                   # sqlite has some `unsigned < 0` checks.
    163                   '-Wno-tautological-compare',
    164                 ],
    165               },
    166               'cflags': [
    167                 '-Wno-empty-body',
    168                 '-Wno-tautological-compare',
    169               ],
    170             }],
    171           ],
    172         }],
    173       ],
    174     },
    175   ],
    176   'conditions': [
    177     ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
    178       'targets': [
    179         {
    180           'target_name': 'sqlite_shell',
    181           'type': 'executable',
    182           'dependencies': [
    183             '../icu/icu.gyp:icuuc',
    184             'sqlite',
    185           ],
    186           'sources': [
    187             'src/src/shell.c',
    188             'src/src/shell_icu_linux.c',
    189             # Include a dummy c++ file to force linking of libstdc++.
    190             'build_as_cpp.cc',
    191           ],
    192         },
    193       ],
    194     },],
    195     ['OS == "ios"', {
    196       'targets': [
    197         {
    198           'target_name': 'sqlite_regexp',
    199           'type': 'static_library',
    200           'dependencies': [
    201             '../icu/icu.gyp:icui18n',
    202             '../icu/icu.gyp:icuuc',
    203           ],
    204           'sources': [
    205             'src/ext/icu/icu.c',
    206           ],
    207         },
    208       ],
    209     }],
    210   ],
    211 }
    212