@@ -16,15 +16,14 @@ add_library(${PLUGIN_NAME} SHARED
16
16
"amplify_db_common_plugin.cpp"
17
17
)
18
18
19
- ###
19
+ # ##
20
20
# Below here, keep in sync with: https://github.com/simolus3/sqlite3.dart/blob/main/sqlite3_flutter_libs/windows/CMakeLists.txt
21
- ###
21
+ # ##
22
22
23
23
# Essentially, the idea of this build script is to compile a sqlite3.dll
24
24
# and make Fluter bundle that with the final app.
25
25
# It looks like we can't avoid building a sqlite3_flutter_libs.dll too,
26
26
# but that's not on me.
27
-
28
27
apply_standard_settings(${PLUGIN_NAME} )
29
28
set_target_properties (${PLUGIN_NAME} PROPERTIES
30
29
CXX_VISIBILITY_PRESET hidden)
@@ -34,57 +33,70 @@ target_include_directories(${PLUGIN_NAME} INTERFACE
34
33
target_link_libraries (${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)
35
34
36
35
include (FetchContent)
37
- if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0" )
38
- # cmake 3.24.0 added the `DOWNLOAD_EXTRACT_TIMESTAMP` and prints an ugly warning when
39
- # the default is used, so override it to the recommended behavior.
40
- # We can't really ask users to use a cmake that recent, so there's this if here.
41
- FetchContent_Declare(
42
- sqlite3
43
- URL https://sqlite.org/2023/sqlite-autoconf-3430000.tar.gz
44
- DOWNLOAD_EXTRACT_TIMESTAMP NEW
36
+
37
+ # Only add the sqlite3 library if it hasn't been defined already.
38
+ if (NOT TARGET sqlite3)
39
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0" )
40
+ # cmake 3.24.0 added the `DOWNLOAD_EXTRACT_TIMESTAMP` and prints an ugly warning when
41
+ # the default is used, so override it to the recommended behavior.
42
+ # We can't really ask users to use a cmake that recent, so there's this if here.
43
+ FetchContent_Declare(
44
+ sqlite3
45
+ URL https://sqlite.org/2023/sqlite-autoconf-3430000.tar.gz
46
+ DOWNLOAD_EXTRACT_TIMESTAMP NEW
47
+ )
48
+ else ()
49
+ FetchContent_Declare(
50
+ sqlite3
51
+ URL https://sqlite.org/2023/sqlite-autoconf-3430000.tar.gz
52
+ )
53
+ endif ()
54
+
55
+ FetchContent_MakeAvailable(sqlite3)
56
+
57
+ # Define the sqlite3 library only if it wasn't already defined.
58
+ add_library (sqlite3 SHARED "sqlite3_flutter.c" )
59
+
60
+ target_include_directories (sqlite3 PRIVATE "${sqlite3_SOURCE_DIR} " )
61
+ target_compile_options (sqlite3 PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O2>" "/w" )
62
+
63
+ # Note: Keep in sync with https://github.com/simolus3/sqlite-native-libraries/blob/master/sqlite3-native-library/cpp/CMakeLists.txt
64
+ target_compile_definitions (sqlite3 PRIVATE
65
+ SQLITE_ENABLE_FTS5
66
+ SQLITE_ENABLE_RTREE
67
+ SQLITE_DQS=0
68
+ SQLITE_DEFAULT_MEMSTATUS=0
69
+ SQLITE_TEMP_STORE=2
70
+ SQLITE_MAX_EXPR_DEPTH=0
71
+ SQLITE_OMIT_AUTHORIZATION
72
+ SQLITE_OMIT_DECLTYPE
73
+ SQLITE_OMIT_DEPRECATED
74
+ SQLITE_OMIT_GET_TABLE
75
+ SQLITE_OMIT_LOAD_EXTENSION
76
+ SQLITE_OMIT_PROGRESS_CALLBACK
77
+ SQLITE_OMIT_SHARED_CACHE
78
+ SQLITE_OMIT_TCL_VARIABLE
79
+ SQLITE_OMIT_TRACE
80
+ SQLITE_USE_ALLOCA
81
+ SQLITE_UNTESTABLE
82
+ SQLITE_HAVE_ISNAN
83
+ SQLITE_HAVE_LOCALTIME_R
84
+ SQLITE_HAVE_LOCALTIME_S
45
85
)
86
+
87
+ # Create an alias for this version of sqlite3.
88
+ add_library (sqlite3_amplify_db_common ALIAS sqlite3)
46
89
else ()
47
- FetchContent_Declare(
48
- sqlite3
49
- URL https://sqlite.org/2023/sqlite-autoconf-3430000.tar.gz
50
- )
90
+ # If sqlite3 already exists, create an alias for amplify plugin to avoid duplication.
91
+ add_library (sqlite3_amplify_db_common ALIAS sqlite3)
51
92
endif ()
52
- FetchContent_MakeAvailable(sqlite3)
53
-
54
- add_library (sqlite3 SHARED "sqlite3_flutter.c" )
55
93
56
- target_include_directories (sqlite3 PRIVATE "${sqlite3_SOURCE_DIR} " )
57
- target_compile_options (sqlite3 PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O2>" "/w" )
58
-
59
- # Note: Keep in sync with https://github.com/simolus3/sqlite-native-libraries/blob/master/sqlite3-native-library/cpp/CMakeLists.txt
60
- target_compile_definitions (sqlite3 PRIVATE
61
- SQLITE_ENABLE_FTS5
62
- SQLITE_ENABLE_RTREE
63
- SQLITE_DQS=0
64
- SQLITE_DEFAULT_MEMSTATUS=0
65
- SQLITE_TEMP_STORE=2
66
- SQLITE_MAX_EXPR_DEPTH=0
67
- SQLITE_OMIT_AUTHORIZATION
68
- SQLITE_OMIT_DECLTYPE
69
- SQLITE_OMIT_DEPRECATED
70
- SQLITE_OMIT_GET_TABLE
71
- SQLITE_OMIT_LOAD_EXTENSION
72
- SQLITE_OMIT_PROGRESS_CALLBACK
73
- SQLITE_OMIT_SHARED_CACHE
74
- SQLITE_OMIT_TCL_VARIABLE
75
- SQLITE_OMIT_TRACE
76
- SQLITE_USE_ALLOCA
77
- SQLITE_UNTESTABLE
78
- SQLITE_HAVE_ISNAN
79
- SQLITE_HAVE_LOCALTIME_R
80
- SQLITE_HAVE_LOCALTIME_S
81
- )
94
+ target_link_libraries (${PLUGIN_NAME} PRIVATE sqlite3_amplify_db_common)
82
95
83
- # Ensure sqlite3 actually gets build
84
- add_dependencies (${PLUGIN_NAME} sqlite3)
96
+ add_dependencies (${PLUGIN_NAME} sqlite3_amplify_db_common)
85
97
86
- # List of absolute paths to libraries that should be bundled with the plugin
98
+ # List of absolute paths to libraries that should be bundled with the plugin.
87
99
set (amplify_db_common_bundled_libraries
88
- "$<TARGET_FILE:sqlite3 >"
100
+ "$<TARGET_FILE:sqlite3_amplify_db_common >"
89
101
PARENT_SCOPE
90
102
)
0 commit comments