Merge master

This commit is contained in:
Anton Ivashkin 2021-05-17 11:47:48 +03:00
commit 39a30b77fe
2950 changed files with 94960 additions and 32009 deletions

View File

@ -7,7 +7,7 @@ assignees: ''
--- ---
(you don't have to strictly follow this form) You have to provide the following information whenever possible.
**Describe the bug** **Describe the bug**
A clear and concise description of what works not as it is supposed to. A clear and concise description of what works not as it is supposed to.

1
.gitignore vendored
View File

@ -27,6 +27,7 @@
/docs/zh/single.md /docs/zh/single.md
/docs/ja/single.md /docs/ja/single.md
/docs/fa/single.md /docs/fa/single.md
/docs/en/development/cmake-in-clickhouse.md
# callgrind files # callgrind files
callgrind.out.* callgrind.out.*

6
.gitmodules vendored
View File

@ -17,6 +17,7 @@
[submodule "contrib/zlib-ng"] [submodule "contrib/zlib-ng"]
path = contrib/zlib-ng path = contrib/zlib-ng
url = https://github.com/ClickHouse-Extras/zlib-ng.git url = https://github.com/ClickHouse-Extras/zlib-ng.git
branch = clickhouse-new
[submodule "contrib/googletest"] [submodule "contrib/googletest"]
path = contrib/googletest path = contrib/googletest
url = https://github.com/google/googletest.git url = https://github.com/google/googletest.git
@ -133,7 +134,7 @@
url = https://github.com/unicode-org/icu.git url = https://github.com/unicode-org/icu.git
[submodule "contrib/flatbuffers"] [submodule "contrib/flatbuffers"]
path = contrib/flatbuffers path = contrib/flatbuffers
url = https://github.com/google/flatbuffers.git url = https://github.com/ClickHouse-Extras/flatbuffers.git
[submodule "contrib/libc-headers"] [submodule "contrib/libc-headers"]
path = contrib/libc-headers path = contrib/libc-headers
url = https://github.com/ClickHouse-Extras/libc-headers.git url = https://github.com/ClickHouse-Extras/libc-headers.git
@ -221,6 +222,9 @@
[submodule "contrib/NuRaft"] [submodule "contrib/NuRaft"]
path = contrib/NuRaft path = contrib/NuRaft
url = https://github.com/ClickHouse-Extras/NuRaft.git url = https://github.com/ClickHouse-Extras/NuRaft.git
[submodule "contrib/nanodbc"]
path = contrib/nanodbc
url = https://github.com/ClickHouse-Extras/nanodbc.git
[submodule "contrib/datasketches-cpp"] [submodule "contrib/datasketches-cpp"]
path = contrib/datasketches-cpp path = contrib/datasketches-cpp
url = https://github.com/ClickHouse-Extras/datasketches-cpp.git url = https://github.com/ClickHouse-Extras/datasketches-cpp.git

View File

@ -1,3 +1,156 @@
## ClickHouse release 21.4
### ClickHouse release 21.4.1 2021-04-12
#### Backward Incompatible Change
* The `toStartOfIntervalFunction` will align hour intervals to the midnight (in previous versions they were aligned to the start of unix epoch). For example, `toStartOfInterval(x, INTERVAL 11 HOUR)` will split every day into three intervals: `00:00:00..10:59:59`, `11:00:00..21:59:59` and `22:00:00..23:59:59`. This behaviour is more suited for practical needs. This closes [#9510](https://github.com/ClickHouse/ClickHouse/issues/9510). [#22060](https://github.com/ClickHouse/ClickHouse/pull/22060) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Age` and `Precision` in graphite rollup configs should increase from retention to retention. Now it's checked and the wrong config raises an exception. [#21496](https://github.com/ClickHouse/ClickHouse/pull/21496) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Fix `cutToFirstSignificantSubdomainCustom()`/`firstSignificantSubdomainCustom()` returning wrong result for 3+ level domains present in custom top-level domain list. For input domains matching these custom top-level domains, the third-level domain was considered to be the first significant one. This is now fixed. This change may introduce incompatibility if the function is used in e.g. the sharding key. [#21946](https://github.com/ClickHouse/ClickHouse/pull/21946) ([Azat Khuzhin](https://github.com/azat)).
* Column `keys` in table `system.dictionaries` was replaced to columns `key.names` and `key.types`. Columns `key.names`, `key.types`, `attribute.names`, `attribute.types` from `system.dictionaries` table does not require dictionary to be loaded. [#21884](https://github.com/ClickHouse/ClickHouse/pull/21884) ([Maksim Kita](https://github.com/kitaisreal)).
* Now replicas that are processing the `ALTER TABLE ATTACH PART[ITION]` command search in their `detached/` folders before fetching the data from other replicas. As an implementation detail, a new command `ATTACH_PART` is introduced in the replicated log. Parts are searched and compared by their checksums. [#18978](https://github.com/ClickHouse/ClickHouse/pull/18978) ([Mike Kot](https://github.com/myrrc)). **Note**:
* `ATTACH PART[ITION]` queries may not work during cluster upgrade.
* It's not possible to rollback to older ClickHouse version after executing `ALTER ... ATTACH` query in new version as the old servers would fail to pass the `ATTACH_PART` entry in the replicated log.
* In this version, empty `<remote_url_allow_hosts></remote_url_allow_hosts>` will block all access to remote hosts while in previous versions it did nothing. If you want to keep old behaviour and you have empty `remote_url_allow_hosts` element in configuration file, remove it. [#20058](https://github.com/ClickHouse/ClickHouse/pull/20058) ([Vladimir Chebotarev](https://github.com/excitoon)).
#### New Feature
* Extended range of `DateTime64` to support dates from year 1925 to 2283. Improved support of `DateTime` around zero date (`1970-01-01`). [#9404](https://github.com/ClickHouse/ClickHouse/pull/9404) ([alexey-milovidov](https://github.com/alexey-milovidov), [Vasily Nemkov](https://github.com/Enmk)). Not every time and date functions are working for extended range of dates.
* Added support of Kerberos authentication for preconfigured users and HTTP requests (GSS-SPNEGO). [#14995](https://github.com/ClickHouse/ClickHouse/pull/14995) ([Denis Glazachev](https://github.com/traceon)).
* Add `prefer_column_name_to_alias` setting to use original column names instead of aliases. it is needed to be more compatible with common databases' aliasing rules. This is for [#9715](https://github.com/ClickHouse/ClickHouse/issues/9715) and [#9887](https://github.com/ClickHouse/ClickHouse/issues/9887). [#22044](https://github.com/ClickHouse/ClickHouse/pull/22044) ([Amos Bird](https://github.com/amosbird)).
* Added functions `dictGetChildren(dictionary, key)`, `dictGetDescendants(dictionary, key, level)`. Function `dictGetChildren` return all children as an array if indexes. It is a inverse transformation for `dictGetHierarchy`. Function `dictGetDescendants` return all descendants as if `dictGetChildren` was applied `level` times recursively. Zero `level` value is equivalent to infinity. Closes [#14656](https://github.com/ClickHouse/ClickHouse/issues/14656). [#22096](https://github.com/ClickHouse/ClickHouse/pull/22096) ([Maksim Kita](https://github.com/kitaisreal)).
* Added `executable_pool` dictionary source. Close [#14528](https://github.com/ClickHouse/ClickHouse/issues/14528). [#21321](https://github.com/ClickHouse/ClickHouse/pull/21321) ([Maksim Kita](https://github.com/kitaisreal)).
* Added table function `dictionary`. It works the same way as `Dictionary` engine. Closes [#21560](https://github.com/ClickHouse/ClickHouse/issues/21560). [#21910](https://github.com/ClickHouse/ClickHouse/pull/21910) ([Maksim Kita](https://github.com/kitaisreal)).
* Support `Nullable` type for `PolygonDictionary` attribute. [#21890](https://github.com/ClickHouse/ClickHouse/pull/21890) ([Maksim Kita](https://github.com/kitaisreal)).
* Functions `dictGet`, `dictHas` use current database name if it is not specified for dictionaries created with DDL. Closes [#21632](https://github.com/ClickHouse/ClickHouse/issues/21632). [#21859](https://github.com/ClickHouse/ClickHouse/pull/21859) ([Maksim Kita](https://github.com/kitaisreal)).
* Added function `dictGetOrNull`. It works like `dictGet`, but return `Null` in case key was not found in dictionary. Closes [#22375](https://github.com/ClickHouse/ClickHouse/issues/22375). [#22413](https://github.com/ClickHouse/ClickHouse/pull/22413) ([Maksim Kita](https://github.com/kitaisreal)).
* Added async update in `ComplexKeyCache`, `SSDCache`, `SSDComplexKeyCache` dictionaries. Added support for `Nullable` type in `Cache`, `ComplexKeyCache`, `SSDCache`, `SSDComplexKeyCache` dictionaries. Added support for multiple attributes fetch with `dictGet`, `dictGetOrDefault` functions. Fixes [#21517](https://github.com/ClickHouse/ClickHouse/issues/21517). [#20595](https://github.com/ClickHouse/ClickHouse/pull/20595) ([Maksim Kita](https://github.com/kitaisreal)).
* Support `dictHas` function for `RangeHashedDictionary`. Fixes [#6680](https://github.com/ClickHouse/ClickHouse/issues/6680). [#19816](https://github.com/ClickHouse/ClickHouse/pull/19816) ([Maksim Kita](https://github.com/kitaisreal)).
* Add function `timezoneOf` that returns the timezone name of `DateTime` or `DateTime64` data types. This does not close [#9959](https://github.com/ClickHouse/ClickHouse/issues/9959). Fix inconsistencies in function names: add aliases `timezone` and `timeZone` as well as `toTimezone` and `toTimeZone` and `timezoneOf` and `timeZoneOf`. [#22001](https://github.com/ClickHouse/ClickHouse/pull/22001) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Add new optional clause `GRANTEES` for `CREATE/ALTER USER` commands. It specifies users or roles which are allowed to receive grants from this user on condition this user has also all required access granted with grant option. By default `GRANTEES ANY` is used which means a user with grant option can grant to anyone. Syntax: `CREATE USER ... GRANTEES {user | role | ANY | NONE} [,...] [EXCEPT {user | role} [,...]]`. [#21641](https://github.com/ClickHouse/ClickHouse/pull/21641) ([Vitaly Baranov](https://github.com/vitlibar)).
* Add new column `slowdowns_count` to `system.clusters`. When using hedged requests, it shows how many times we switched to another replica because this replica was responding slowly. Also show actual value of `errors_count` in `system.clusters`. [#21480](https://github.com/ClickHouse/ClickHouse/pull/21480) ([Kruglov Pavel](https://github.com/Avogar)).
* Add `_partition_id` virtual column for `MergeTree*` engines. Allow to prune partitions by `_partition_id`. Add `partitionID()` function to calculate partition id string. [#21401](https://github.com/ClickHouse/ClickHouse/pull/21401) ([Amos Bird](https://github.com/amosbird)).
* Add function `isIPAddressInRange` to test if an IPv4 or IPv6 address is contained in a given CIDR network prefix. [#21329](https://github.com/ClickHouse/ClickHouse/pull/21329) ([PHO](https://github.com/depressed-pho)).
* Added new SQL command `ALTER TABLE 'table_name' UNFREEZE [PARTITION 'part_expr'] WITH NAME 'backup_name'`. This command is needed to properly remove 'freezed' partitions from all disks. [#21142](https://github.com/ClickHouse/ClickHouse/pull/21142) ([Pavel Kovalenko](https://github.com/Jokser)).
* Supports implicit key type conversion for JOIN. [#19885](https://github.com/ClickHouse/ClickHouse/pull/19885) ([Vladimir](https://github.com/vdimir)).
#### Experimental Feature
* Support `RANGE OFFSET` frame (for window functions) for floating point types. Implement `lagInFrame`/`leadInFrame` window functions, which are analogous to `lag`/`lead`, but respect the window frame. They are identical when the frame is `between unbounded preceding and unbounded following`. This closes [#5485](https://github.com/ClickHouse/ClickHouse/issues/5485). [#21895](https://github.com/ClickHouse/ClickHouse/pull/21895) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* Zero-copy replication for `ReplicatedMergeTree` over S3 storage. [#16240](https://github.com/ClickHouse/ClickHouse/pull/16240) ([ianton-ru](https://github.com/ianton-ru)).
* Added possibility to migrate existing S3 disk to the schema with backup-restore capabilities. [#22070](https://github.com/ClickHouse/ClickHouse/pull/22070) ([Pavel Kovalenko](https://github.com/Jokser)).
#### Performance Improvement
* Supported parallel formatting in `clickhouse-local` and everywhere else. [#21630](https://github.com/ClickHouse/ClickHouse/pull/21630) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Support parallel parsing for `CSVWithNames` and `TSVWithNames` formats. This closes [#21085](https://github.com/ClickHouse/ClickHouse/issues/21085). [#21149](https://github.com/ClickHouse/ClickHouse/pull/21149) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Enable read with mmap IO for file ranges from 64 MiB (the settings `min_bytes_to_use_mmap_io`). It may lead to moderate performance improvement. [#22326](https://github.com/ClickHouse/ClickHouse/pull/22326) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Add cache for files read with `min_bytes_to_use_mmap_io` setting. It makes significant (2x and more) performance improvement when the value of the setting is small by avoiding frequent mmap/munmap calls and the consequent page faults. Note that mmap IO has major drawbacks that makes it less reliable in production (e.g. hung or SIGBUS on faulty disks; less controllable memory usage). Nevertheless it is good in benchmarks. [#22206](https://github.com/ClickHouse/ClickHouse/pull/22206) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Avoid unnecessary data copy when using codec `NONE`. Please note that codec `NONE` is mostly useless - it's recommended to always use compression (`LZ4` is by default). Despite the common belief, disabling compression may not improve performance (the opposite effect is possible). The `NONE` codec is useful in some cases: - when data is uncompressable; - for synthetic benchmarks. [#22145](https://github.com/ClickHouse/ClickHouse/pull/22145) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Faster `GROUP BY` with small `max_rows_to_group_by` and `group_by_overflow_mode='any'`. [#21856](https://github.com/ClickHouse/ClickHouse/pull/21856) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Optimize performance of queries like `SELECT ... FINAL ... WHERE`. Now in queries with `FINAL` it's allowed to move to `PREWHERE` columns, which are in sorting key. [#21830](https://github.com/ClickHouse/ClickHouse/pull/21830) ([foolchi](https://github.com/foolchi)).
* Improved performance by replacing `memcpy` to another implementation. This closes [#18583](https://github.com/ClickHouse/ClickHouse/issues/18583). [#21520](https://github.com/ClickHouse/ClickHouse/pull/21520) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Improve performance of aggregation in order of sorting key (with enabled setting `optimize_aggregation_in_order`). [#19401](https://github.com/ClickHouse/ClickHouse/pull/19401) ([Anton Popov](https://github.com/CurtizJ)).
#### Improvement
* Add connection pool for PostgreSQL table/database engine and dictionary source. Should fix [#21444](https://github.com/ClickHouse/ClickHouse/issues/21444). [#21839](https://github.com/ClickHouse/ClickHouse/pull/21839) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Support non-default table schema for postgres storage/table-function. Closes [#21701](https://github.com/ClickHouse/ClickHouse/issues/21701). [#21711](https://github.com/ClickHouse/ClickHouse/pull/21711) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Support replicas priority for postgres dictionary source. [#21710](https://github.com/ClickHouse/ClickHouse/pull/21710) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Introduce a new merge tree setting `min_bytes_to_rebalance_partition_over_jbod` which allows assigning new parts to different disks of a JBOD volume in a balanced way. [#16481](https://github.com/ClickHouse/ClickHouse/pull/16481) ([Amos Bird](https://github.com/amosbird)).
* Added `Grant`, `Revoke` and `System` values of `query_kind` column for corresponding queries in `system.query_log`. [#21102](https://github.com/ClickHouse/ClickHouse/pull/21102) ([Vasily Nemkov](https://github.com/Enmk)).
* Allow customizing timeouts for HTTP connections used for replication independently from other HTTP timeouts. [#20088](https://github.com/ClickHouse/ClickHouse/pull/20088) ([nvartolomei](https://github.com/nvartolomei)).
* Better exception message in client in case of exception while server is writing blocks. In previous versions client may get misleading message like `Data compressed with different methods`. [#22427](https://github.com/ClickHouse/ClickHouse/pull/22427) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Fix error `Directory tmp_fetch_XXX already exists` which could happen after failed fetch part. Delete temporary fetch directory if it already exists. Fixes [#14197](https://github.com/ClickHouse/ClickHouse/issues/14197). [#22411](https://github.com/ClickHouse/ClickHouse/pull/22411) ([nvartolomei](https://github.com/nvartolomei)).
* Fix MSan report for function `range` with `UInt256` argument (support for large integers is experimental). This closes [#22157](https://github.com/ClickHouse/ClickHouse/issues/22157). [#22387](https://github.com/ClickHouse/ClickHouse/pull/22387) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Add `current_database` column to `system.processes` table. It contains the current database of the query. [#22365](https://github.com/ClickHouse/ClickHouse/pull/22365) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* Add case-insensitive history search/navigation and subword movement features to `clickhouse-client`. [#22105](https://github.com/ClickHouse/ClickHouse/pull/22105) ([Amos Bird](https://github.com/amosbird)).
* If tuple of NULLs, e.g. `(NULL, NULL)` is on the left hand side of `IN` operator with tuples of non-NULLs on the right hand side, e.g. `SELECT (NULL, NULL) IN ((0, 0), (3, 1))` return 0 instead of throwing an exception about incompatible types. The expression may also appear due to optimization of something like `SELECT (NULL, NULL) = (8, 0) OR (NULL, NULL) = (3, 2) OR (NULL, NULL) = (0, 0) OR (NULL, NULL) = (3, 1)`. This closes [#22017](https://github.com/ClickHouse/ClickHouse/issues/22017). [#22063](https://github.com/ClickHouse/ClickHouse/pull/22063) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Update used version of simdjson to 0.9.1. This fixes [#21984](https://github.com/ClickHouse/ClickHouse/issues/21984). [#22057](https://github.com/ClickHouse/ClickHouse/pull/22057) ([Vitaly Baranov](https://github.com/vitlibar)).
* Added case insensitive aliases for `CONNECTION_ID()` and `VERSION()` functions. This fixes [#22028](https://github.com/ClickHouse/ClickHouse/issues/22028). [#22042](https://github.com/ClickHouse/ClickHouse/pull/22042) ([Eugene Klimov](https://github.com/Slach)).
* Add option `strict_increase` to `windowFunnel` function to calculate each event once (resolve [#21835](https://github.com/ClickHouse/ClickHouse/issues/21835)). [#22025](https://github.com/ClickHouse/ClickHouse/pull/22025) ([Vladimir](https://github.com/vdimir)).
* If partition key of a `MergeTree` table does not include `Date` or `DateTime` columns but includes exactly one `DateTime64` column, expose its values in the `min_time` and `max_time` columns in `system.parts` and `system.parts_columns` tables. Add `min_time` and `max_time` columns to `system.parts_columns` table (these was inconsistency to the `system.parts` table). This closes [#18244](https://github.com/ClickHouse/ClickHouse/issues/18244). [#22011](https://github.com/ClickHouse/ClickHouse/pull/22011) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Supported `replication_alter_partitions_sync=1` setting in `clickhouse-copier` for moving partitions from helping table to destination. Decreased default timeouts. Fixes [#21911](https://github.com/ClickHouse/ClickHouse/issues/21911). [#21912](https://github.com/ClickHouse/ClickHouse/pull/21912) ([turbo jason](https://github.com/songenjie)).
* Show path to data directory of `EmbeddedRocksDB` tables in system tables. [#21903](https://github.com/ClickHouse/ClickHouse/pull/21903) ([tavplubix](https://github.com/tavplubix)).
* Add profile event `HedgedRequestsChangeReplica`, change read data timeout from sec to ms. [#21886](https://github.com/ClickHouse/ClickHouse/pull/21886) ([Kruglov Pavel](https://github.com/Avogar)).
* DiskS3 (experimental feature under development). Fixed bug with the impossibility to move directory if the destination is not empty and cache disk is used. [#21837](https://github.com/ClickHouse/ClickHouse/pull/21837) ([Pavel Kovalenko](https://github.com/Jokser)).
* Better formatting for `Array` and `Map` data types in Web UI. [#21798](https://github.com/ClickHouse/ClickHouse/pull/21798) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Update clusters only if their configurations were updated. [#21685](https://github.com/ClickHouse/ClickHouse/pull/21685) ([Kruglov Pavel](https://github.com/Avogar)).
* Propagate query and session settings for distributed DDL queries. Set `distributed_ddl_entry_format_version` to 2 to enable this. Added `distributed_ddl_output_mode` setting. Supported modes: `none`, `throw` (default), `null_status_on_timeout` and `never_throw`. Miscellaneous fixes and improvements for `Replicated` database engine. [#21535](https://github.com/ClickHouse/ClickHouse/pull/21535) ([tavplubix](https://github.com/tavplubix)).
* If `PODArray` was instantiated with element size that is neither a fraction or a multiple of 16, buffer overflow was possible. No bugs in current releases exist. [#21533](https://github.com/ClickHouse/ClickHouse/pull/21533) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Add `last_error_time`/`last_error_message`/`last_error_stacktrace`/`remote` columns for `system.errors`. [#21529](https://github.com/ClickHouse/ClickHouse/pull/21529) ([Azat Khuzhin](https://github.com/azat)).
* Add aliases `simpleJSONExtract/simpleJSONHas` to `visitParam/visitParamExtract{UInt, Int, Bool, Float, Raw, String}`. Fixes #21383. [#21519](https://github.com/ClickHouse/ClickHouse/pull/21519) ([fastio](https://github.com/fastio)).
* Add setting `optimize_skip_unused_shards_limit` to limit the number of sharding key values for `optimize_skip_unused_shards`. [#21512](https://github.com/ClickHouse/ClickHouse/pull/21512) ([Azat Khuzhin](https://github.com/azat)).
* Improve `clickhouse-format` to not throw exception when there are extra spaces or comment after the last query, and throw exception early with readable message when format `ASTInsertQuery` with data . [#21311](https://github.com/ClickHouse/ClickHouse/pull/21311) ([flynn](https://github.com/ucasFL)).
* Improve support of integer keys in data type `Map`. [#21157](https://github.com/ClickHouse/ClickHouse/pull/21157) ([Anton Popov](https://github.com/CurtizJ)).
* MaterializeMySQL: attempt to reconnect to MySQL if the connection is lost. [#20961](https://github.com/ClickHouse/ClickHouse/pull/20961) ([Håvard Kvålen](https://github.com/havardk)).
* Support more cases to rewrite `CROSS JOIN` to `INNER JOIN`. [#20392](https://github.com/ClickHouse/ClickHouse/pull/20392) ([Vladimir](https://github.com/vdimir)).
* Do not create empty parts on INSERT when `optimize_on_insert` setting enabled. Fixes [#20304](https://github.com/ClickHouse/ClickHouse/issues/20304). [#20387](https://github.com/ClickHouse/ClickHouse/pull/20387) ([Kruglov Pavel](https://github.com/Avogar)).
* `MaterializeMySQL`: add minmax skipping index for `_version` column. [#20382](https://github.com/ClickHouse/ClickHouse/pull/20382) ([Stig Bakken](https://github.com/stigsb)).
* Add option `--backslash` for `clickhouse-format`, which can add a backslash at the end of each line of the formatted query. [#21494](https://github.com/ClickHouse/ClickHouse/pull/21494) ([flynn](https://github.com/ucasFL)).
* Now clickhouse will not throw `LOGICAL_ERROR` exception when we try to mutate the already covered part. Fixes [#22013](https://github.com/ClickHouse/ClickHouse/issues/22013). [#22291](https://github.com/ClickHouse/ClickHouse/pull/22291) ([alesapin](https://github.com/alesapin)).
#### Bug Fix
* Remove socket from epoll before cancelling packet receiver in `HedgedConnections` to prevent possible race. Fixes [#22161](https://github.com/ClickHouse/ClickHouse/issues/22161). [#22443](https://github.com/ClickHouse/ClickHouse/pull/22443) ([Kruglov Pavel](https://github.com/Avogar)).
* Add (missing) memory accounting in parallel parsing routines. In previous versions OOM was possible when the resultset contains very large blocks of data. This closes [#22008](https://github.com/ClickHouse/ClickHouse/issues/22008). [#22425](https://github.com/ClickHouse/ClickHouse/pull/22425) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Fix exception which may happen when `SELECT` has constant `WHERE` condition and source table has columns which names are digits. [#22270](https://github.com/ClickHouse/ClickHouse/pull/22270) ([LiuNeng](https://github.com/liuneng1994)).
* Fix query cancellation with `use_hedged_requests=0` and `async_socket_for_remote=1`. [#22183](https://github.com/ClickHouse/ClickHouse/pull/22183) ([Azat Khuzhin](https://github.com/azat)).
* Fix uncaught exception in `InterserverIOHTTPHandler`. [#22146](https://github.com/ClickHouse/ClickHouse/pull/22146) ([Azat Khuzhin](https://github.com/azat)).
* Fix docker entrypoint in case `http_port` is not in the config. [#22132](https://github.com/ClickHouse/ClickHouse/pull/22132) ([Ewout](https://github.com/devwout)).
* Fix error `Invalid number of rows in Chunk` in `JOIN` with `TOTALS` and `arrayJoin`. Closes [#19303](https://github.com/ClickHouse/ClickHouse/issues/19303). [#22129](https://github.com/ClickHouse/ClickHouse/pull/22129) ([Vladimir](https://github.com/vdimir)).
* Fix the background thread pool name which used to poll message from Kafka. The Kafka engine with the broken thread pool will not consume the message from message queue. [#22122](https://github.com/ClickHouse/ClickHouse/pull/22122) ([fastio](https://github.com/fastio)).
* Fix waiting for `OPTIMIZE` and `ALTER` queries for `ReplicatedMergeTree` table engines. Now the query will not hang when the table was detached or restarted. [#22118](https://github.com/ClickHouse/ClickHouse/pull/22118) ([alesapin](https://github.com/alesapin)).
* Disable `async_socket_for_remote`/`use_hedged_requests` for buggy Linux kernels. [#22109](https://github.com/ClickHouse/ClickHouse/pull/22109) ([Azat Khuzhin](https://github.com/azat)).
* Docker entrypoint: avoid chown of `.` in case when `LOG_PATH` is empty. Closes [#22100](https://github.com/ClickHouse/ClickHouse/issues/22100). [#22102](https://github.com/ClickHouse/ClickHouse/pull/22102) ([filimonov](https://github.com/filimonov)).
* The function `decrypt` was lacking a check for the minimal size of data encrypted in `AEAD` mode. This closes [#21897](https://github.com/ClickHouse/ClickHouse/issues/21897). [#22064](https://github.com/ClickHouse/ClickHouse/pull/22064) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* In rare case, merge for `CollapsingMergeTree` may create granule with `index_granularity + 1` rows. Because of this, internal check, added in [#18928](https://github.com/ClickHouse/ClickHouse/issues/18928) (affects 21.2 and 21.3), may fail with error `Incomplete granules are not allowed while blocks are granules size`. This error did not allow parts to merge. [#21976](https://github.com/ClickHouse/ClickHouse/pull/21976) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Reverted [#15454](https://github.com/ClickHouse/ClickHouse/issues/15454) that may cause significant increase in memory usage while loading external dictionaries of hashed type. This closes [#21935](https://github.com/ClickHouse/ClickHouse/issues/21935). [#21948](https://github.com/ClickHouse/ClickHouse/pull/21948) ([Maksim Kita](https://github.com/kitaisreal)).
* Prevent hedged connections overlaps (`Unknown packet 9 from server` error). [#21941](https://github.com/ClickHouse/ClickHouse/pull/21941) ([Azat Khuzhin](https://github.com/azat)).
* Fix reading the HTTP POST request with "multipart/form-data" content type in some cases. [#21936](https://github.com/ClickHouse/ClickHouse/pull/21936) ([Ivan](https://github.com/abyss7)).
* Fix wrong `ORDER BY` results when a query contains window functions, and optimization for reading in primary key order is applied. Fixes [#21828](https://github.com/ClickHouse/ClickHouse/issues/21828). [#21915](https://github.com/ClickHouse/ClickHouse/pull/21915) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* Fix deadlock in first catboost model execution. Closes [#13832](https://github.com/ClickHouse/ClickHouse/issues/13832). [#21844](https://github.com/ClickHouse/ClickHouse/pull/21844) ([Kruglov Pavel](https://github.com/Avogar)).
* Fix incorrect query result (and possible crash) which could happen when `WHERE` or `HAVING` condition is pushed before `GROUP BY`. Fixes [#21773](https://github.com/ClickHouse/ClickHouse/issues/21773). [#21841](https://github.com/ClickHouse/ClickHouse/pull/21841) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Better error handling and logging in `WriteBufferFromS3`. [#21836](https://github.com/ClickHouse/ClickHouse/pull/21836) ([Pavel Kovalenko](https://github.com/Jokser)).
* Fix possible crashes in aggregate functions with combinator `Distinct`, while using two-level aggregation. This is a follow-up fix of [#18365](https://github.com/ClickHouse/ClickHouse/pull/18365) . Can only reproduced in production env. [#21818](https://github.com/ClickHouse/ClickHouse/pull/21818) ([Amos Bird](https://github.com/amosbird)).
* Fix scalar subquery index analysis. This fixes [#21717](https://github.com/ClickHouse/ClickHouse/issues/21717) , which was introduced in [#18896](https://github.com/ClickHouse/ClickHouse/pull/18896). [#21766](https://github.com/ClickHouse/ClickHouse/pull/21766) ([Amos Bird](https://github.com/amosbird)).
* Fix bug for `ReplicatedMerge` table engines when `ALTER MODIFY COLUMN` query doesn't change the type of `Decimal` column if its size (32 bit or 64 bit) doesn't change. [#21728](https://github.com/ClickHouse/ClickHouse/pull/21728) ([alesapin](https://github.com/alesapin)).
* Fix possible infinite waiting when concurrent `OPTIMIZE` and `DROP` are run for `ReplicatedMergeTree`. [#21716](https://github.com/ClickHouse/ClickHouse/pull/21716) ([Azat Khuzhin](https://github.com/azat)).
* Fix function `arrayElement` with type `Map` for constant integer arguments. [#21699](https://github.com/ClickHouse/ClickHouse/pull/21699) ([Anton Popov](https://github.com/CurtizJ)).
* Fix SIGSEGV on not existing attributes from `ip_trie` with `access_to_key_from_attributes`. [#21692](https://github.com/ClickHouse/ClickHouse/pull/21692) ([Azat Khuzhin](https://github.com/azat)).
* Server now start accepting connections only after `DDLWorker` and dictionaries initialization. [#21676](https://github.com/ClickHouse/ClickHouse/pull/21676) ([Azat Khuzhin](https://github.com/azat)).
* Add type conversion for keys of tables of type `Join` (previously led to SIGSEGV). [#21646](https://github.com/ClickHouse/ClickHouse/pull/21646) ([Azat Khuzhin](https://github.com/azat)).
* Fix distributed requests cancellation (for example simple select from multiple shards with limit, i.e. `select * from remote('127.{2,3}', system.numbers) limit 100`) with `async_socket_for_remote=1`. [#21643](https://github.com/ClickHouse/ClickHouse/pull/21643) ([Azat Khuzhin](https://github.com/azat)).
* Fix `fsync_part_directory` for horizontal merge. [#21642](https://github.com/ClickHouse/ClickHouse/pull/21642) ([Azat Khuzhin](https://github.com/azat)).
* Remove unknown columns from joined table in `WHERE` for queries to external database engines (MySQL, PostgreSQL). close [#14614](https://github.com/ClickHouse/ClickHouse/issues/14614), close [#19288](https://github.com/ClickHouse/ClickHouse/issues/19288) (dup), close [#19645](https://github.com/ClickHouse/ClickHouse/issues/19645) (dup). [#21640](https://github.com/ClickHouse/ClickHouse/pull/21640) ([Vladimir](https://github.com/vdimir)).
* `std::terminate` was called if there is an error writing data into s3. [#21624](https://github.com/ClickHouse/ClickHouse/pull/21624) ([Vladimir](https://github.com/vdimir)).
* Fix possible error `Cannot find column` when `optimize_skip_unused_shards` is enabled and zero shards are used. [#21579](https://github.com/ClickHouse/ClickHouse/pull/21579) ([Azat Khuzhin](https://github.com/azat)).
* In case if query has constant `WHERE` condition, and setting `optimize_skip_unused_shards` enabled, all shards may be skipped and query could return incorrect empty result. [#21550](https://github.com/ClickHouse/ClickHouse/pull/21550) ([Amos Bird](https://github.com/amosbird)).
* Fix table function `clusterAllReplicas` returns wrong `_shard_num`. close [#21481](https://github.com/ClickHouse/ClickHouse/issues/21481). [#21498](https://github.com/ClickHouse/ClickHouse/pull/21498) ([flynn](https://github.com/ucasFL)).
* Fix that S3 table holds old credentials after config update. [#21457](https://github.com/ClickHouse/ClickHouse/pull/21457) ([Grigory Pervakov](https://github.com/GrigoryPervakov)).
* Fixed race on SSL object inside `SecureSocket` in Poco. [#21456](https://github.com/ClickHouse/ClickHouse/pull/21456) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Fix `Avro` format parsing for `Kafka`. Fixes [#21437](https://github.com/ClickHouse/ClickHouse/issues/21437). [#21438](https://github.com/ClickHouse/ClickHouse/pull/21438) ([Ilya Golshtein](https://github.com/ilejn)).
* Fix receive and send timeouts and non-blocking read in secure socket. [#21429](https://github.com/ClickHouse/ClickHouse/pull/21429) ([Kruglov Pavel](https://github.com/Avogar)).
* `force_drop_table` flag didn't work for `MATERIALIZED VIEW`, it's fixed. Fixes [#18943](https://github.com/ClickHouse/ClickHouse/issues/18943). [#20626](https://github.com/ClickHouse/ClickHouse/pull/20626) ([tavplubix](https://github.com/tavplubix)).
* Fix name clashes in `PredicateRewriteVisitor`. It caused incorrect `WHERE` filtration after full join. Close [#20497](https://github.com/ClickHouse/ClickHouse/issues/20497). [#20622](https://github.com/ClickHouse/ClickHouse/pull/20622) ([Vladimir](https://github.com/vdimir)).
#### Build/Testing/Packaging Improvement
* Add [Jepsen](https://github.com/jepsen-io/jepsen) tests for ClickHouse Keeper. [#21677](https://github.com/ClickHouse/ClickHouse/pull/21677) ([alesapin](https://github.com/alesapin)).
* Run stateless tests in parallel in CI. Depends on [#22181](https://github.com/ClickHouse/ClickHouse/issues/22181). [#22300](https://github.com/ClickHouse/ClickHouse/pull/22300) ([alesapin](https://github.com/alesapin)).
* Enable status check for [SQLancer](https://github.com/sqlancer/sqlancer) CI run. [#22015](https://github.com/ClickHouse/ClickHouse/pull/22015) ([Ilya Yatsishin](https://github.com/qoega)).
* Multiple preparations for PowerPC builds: Enable the bundled openldap on `ppc64le`. [#22487](https://github.com/ClickHouse/ClickHouse/pull/22487) ([Kfir Itzhak](https://github.com/mastertheknife)). Enable compiling on `ppc64le` with Clang. [#22476](https://github.com/ClickHouse/ClickHouse/pull/22476) ([Kfir Itzhak](https://github.com/mastertheknife)). Fix compiling boost on `ppc64le`. [#22474](https://github.com/ClickHouse/ClickHouse/pull/22474) ([Kfir Itzhak](https://github.com/mastertheknife)). Fix CMake error about internal CMake variable `CMAKE_ASM_COMPILE_OBJECT` not set on `ppc64le`. [#22469](https://github.com/ClickHouse/ClickHouse/pull/22469) ([Kfir Itzhak](https://github.com/mastertheknife)). Fix Fedora/RHEL/CentOS not finding `libclang_rt.builtins` on `ppc64le`. [#22458](https://github.com/ClickHouse/ClickHouse/pull/22458) ([Kfir Itzhak](https://github.com/mastertheknife)). Enable building with `jemalloc` on `ppc64le`. [#22447](https://github.com/ClickHouse/ClickHouse/pull/22447) ([Kfir Itzhak](https://github.com/mastertheknife)). Fix ClickHouse's config embedding and cctz's timezone embedding on `ppc64le`. [#22445](https://github.com/ClickHouse/ClickHouse/pull/22445) ([Kfir Itzhak](https://github.com/mastertheknife)). Fixed compiling on `ppc64le` and use the correct instruction pointer register on `ppc64le`. [#22430](https://github.com/ClickHouse/ClickHouse/pull/22430) ([Kfir Itzhak](https://github.com/mastertheknife)).
* Re-enable the S3 (AWS) library on `aarch64`. [#22484](https://github.com/ClickHouse/ClickHouse/pull/22484) ([Kfir Itzhak](https://github.com/mastertheknife)).
* Add `tzdata` to Docker containers because reading `ORC` formats requires it. This closes [#14156](https://github.com/ClickHouse/ClickHouse/issues/14156). [#22000](https://github.com/ClickHouse/ClickHouse/pull/22000) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Introduce 2 arguments for `clickhouse-server` image Dockerfile: `deb_location` & `single_binary_location`. [#21977](https://github.com/ClickHouse/ClickHouse/pull/21977) ([filimonov](https://github.com/filimonov)).
* Allow to use clang-tidy with release builds by enabling assertions if it is used. [#21914](https://github.com/ClickHouse/ClickHouse/pull/21914) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Add llvm-12 binaries name to search in cmake scripts. Implicit constants conversions to mute clang warnings. Updated submodules to build with CMake 3.19. Mute recursion in macro expansion in `readpassphrase` library. Deprecated `-fuse-ld` changed to `--ld-path` for clang. [#21597](https://github.com/ClickHouse/ClickHouse/pull/21597) ([Ilya Yatsishin](https://github.com/qoega)).
* Updating `docker/test/testflows/runner/dockerd-entrypoint.sh` to use Yandex dockerhub-proxy, because Docker Hub has enabled very restrictive rate limits [#21551](https://github.com/ClickHouse/ClickHouse/pull/21551) ([vzakaznikov](https://github.com/vzakaznikov)).
* Fix macOS shared lib build. [#20184](https://github.com/ClickHouse/ClickHouse/pull/20184) ([nvartolomei](https://github.com/nvartolomei)).
* Add `ctime` option to `zookeeper-dump-tree`. It allows to dump node creation time. [#21842](https://github.com/ClickHouse/ClickHouse/pull/21842) ([Ilya](https://github.com/HumanUser)).
## ClickHouse release 21.3 (LTS) ## ClickHouse release 21.3 (LTS)
### ClickHouse release v21.3, 2021-03-12 ### ClickHouse release v21.3, 2021-03-12

View File

@ -68,17 +68,30 @@ endif ()
include (cmake/find/ccache.cmake) include (cmake/find/ccache.cmake)
option(ENABLE_CHECK_HEAVY_BUILDS "Don't allow C++ translation units to compile too long or to take too much memory while compiling" OFF) # Take care to add prlimit in command line before ccache, or else ccache thinks that
# prlimit is compiler, and clang++ is its input file, and refuses to work with
# multiple inputs, e.g in ccache log:
# [2021-03-31T18:06:32.655327 36900] Command line: /usr/bin/ccache prlimit --as=10000000000 --data=5000000000 --cpu=600 /usr/bin/clang++-11 - ...... std=gnu++2a -MD -MT src/CMakeFiles/dbms.dir/Storages/MergeTree/IMergeTreeDataPart.cpp.o -MF src/CMakeFiles/dbms.dir/Storages/MergeTree/IMergeTreeDataPart.cpp.o.d -o src/CMakeFiles/dbms.dir/Storages/MergeTree/IMergeTreeDataPart.cpp.o -c ../src/Storages/MergeTree/IMergeTreeDataPart.cpp
#
# [2021-03-31T18:06:32.656704 36900] Multiple input files: /usr/bin/clang++-11 and ../src/Storages/MergeTree/IMergeTreeDataPart.cpp
#
# Another way would be to use --ccache-skip option before clang++-11 to make
# ccache ignore it.
option(ENABLE_CHECK_HEAVY_BUILDS "Don't allow C++ translation units to compile too long or to take too much memory while compiling." OFF)
if (ENABLE_CHECK_HEAVY_BUILDS) if (ENABLE_CHECK_HEAVY_BUILDS)
# set DATA (since RSS does not work since 2.6.x+) to 2G # set DATA (since RSS does not work since 2.6.x+) to 2G
set (RLIMIT_DATA 5000000000) set (RLIMIT_DATA 5000000000)
# set VIRT (RLIMIT_AS) to 10G (DATA*10) # set VIRT (RLIMIT_AS) to 10G (DATA*10)
set (RLIMIT_AS 10000000000) set (RLIMIT_AS 10000000000)
# set CPU time limit to 600 seconds
set (RLIMIT_CPU 600)
# gcc10/gcc10/clang -fsanitize=memory is too heavy # gcc10/gcc10/clang -fsanitize=memory is too heavy
if (SANITIZE STREQUAL "memory" OR COMPILER_GCC) if (SANITIZE STREQUAL "memory" OR COMPILER_GCC)
set (RLIMIT_DATA 10000000000) set (RLIMIT_DATA 10000000000)
endif() endif()
set (CMAKE_CXX_COMPILER_LAUNCHER prlimit --as=${RLIMIT_AS} --data=${RLIMIT_DATA} --cpu=600)
set (CMAKE_CXX_COMPILER_LAUNCHER prlimit --as=${RLIMIT_AS} --data=${RLIMIT_DATA} --cpu=${RLIMIT_CPU} ${CMAKE_CXX_COMPILER_LAUNCHER})
endif () endif ()
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "None") if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "None")
@ -154,9 +167,10 @@ endif ()
# If turned `ON`, assumes the user has either the system GTest library or the bundled one. # If turned `ON`, assumes the user has either the system GTest library or the bundled one.
option(ENABLE_TESTS "Provide unit_test_dbms target with Google.Test unit tests" ON) option(ENABLE_TESTS "Provide unit_test_dbms target with Google.Test unit tests" ON)
option(ENABLE_EXAMPLES "Build all example programs in 'examples' subdirectories" OFF)
if (OS_LINUX AND NOT UNBUNDLED AND MAKE_STATIC_LIBRARIES AND NOT SPLIT_SHARED_LIBRARIES AND CMAKE_VERSION VERSION_GREATER "3.9.0") if (OS_LINUX AND (ARCH_AMD64 OR ARCH_AARCH64) AND NOT UNBUNDLED AND MAKE_STATIC_LIBRARIES AND NOT SPLIT_SHARED_LIBRARIES AND CMAKE_VERSION VERSION_GREATER "3.9.0")
# Only for Linux, x86_64. # Only for Linux, x86_64 or aarch64.
option(GLIBC_COMPATIBILITY "Enable compatibility with older glibc libraries." ON) option(GLIBC_COMPATIBILITY "Enable compatibility with older glibc libraries." ON)
elseif(GLIBC_COMPATIBILITY) elseif(GLIBC_COMPATIBILITY)
message (${RECONFIGURE_MESSAGE_LEVEL} "Glibc compatibility cannot be enabled in current configuration") message (${RECONFIGURE_MESSAGE_LEVEL} "Glibc compatibility cannot be enabled in current configuration")
@ -244,12 +258,17 @@ endif()
include(cmake/cpu_features.cmake) include(cmake/cpu_features.cmake)
option(ARCH_NATIVE "Add -march=native compiler flag") option(ARCH_NATIVE "Add -march=native compiler flag. This makes your binaries non-portable but more performant code may be generated.")
if (ARCH_NATIVE) if (ARCH_NATIVE)
set (COMPILER_FLAGS "${COMPILER_FLAGS} -march=native") set (COMPILER_FLAGS "${COMPILER_FLAGS} -march=native")
endif () endif ()
# Asynchronous unwind tables are needed for Query Profiler.
# They are already by default on some platforms but possibly not on all platforms.
# Enable it explicitly.
set (COMPILER_FLAGS "${COMPILER_FLAGS} -fasynchronous-unwind-tables")
if (${CMAKE_VERSION} VERSION_LESS "3.12.4") if (${CMAKE_VERSION} VERSION_LESS "3.12.4")
# CMake < 3.12 doesn't support setting 20 as a C++ standard version. # CMake < 3.12 doesn't support setting 20 as a C++ standard version.
# We will add C++ standard controlling flag in CMAKE_CXX_FLAGS manually for now. # We will add C++ standard controlling flag in CMAKE_CXX_FLAGS manually for now.
@ -277,6 +296,12 @@ if (COMPILER_GCC OR COMPILER_CLANG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsized-deallocation") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsized-deallocation")
endif () endif ()
# falign-functions=32 prevents from random performance regressions with the code change. Thus, providing more stable
# benchmarks.
if (COMPILER_GCC OR COMPILER_CLANG)
set(COMPILER_FLAGS "${COMPILER_FLAGS} -falign-functions=32")
endif ()
# Compiler-specific coverage flags e.g. -fcoverage-mapping for gcc # Compiler-specific coverage flags e.g. -fcoverage-mapping for gcc
option(WITH_COVERAGE "Profile the resulting binary/binaries" OFF) option(WITH_COVERAGE "Profile the resulting binary/binaries" OFF)
@ -475,6 +500,7 @@ include (cmake/find/krb5.cmake)
include (cmake/find/libgsasl.cmake) include (cmake/find/libgsasl.cmake)
include (cmake/find/cyrus-sasl.cmake) include (cmake/find/cyrus-sasl.cmake)
include (cmake/find/rdkafka.cmake) include (cmake/find/rdkafka.cmake)
include (cmake/find/libuv.cmake) # for amqpcpp and cassandra
include (cmake/find/amqpcpp.cmake) include (cmake/find/amqpcpp.cmake)
include (cmake/find/capnp.cmake) include (cmake/find/capnp.cmake)
include (cmake/find/llvm.cmake) include (cmake/find/llvm.cmake)
@ -497,6 +523,7 @@ include (cmake/find/fast_float.cmake)
include (cmake/find/rapidjson.cmake) include (cmake/find/rapidjson.cmake)
include (cmake/find/fastops.cmake) include (cmake/find/fastops.cmake)
include (cmake/find/odbc.cmake) include (cmake/find/odbc.cmake)
include (cmake/find/nanodbc.cmake)
include (cmake/find/rocksdb.cmake) include (cmake/find/rocksdb.cmake)
include (cmake/find/libpqxx.cmake) include (cmake/find/libpqxx.cmake)
include (cmake/find/nuraft.cmake) include (cmake/find/nuraft.cmake)
@ -566,6 +593,9 @@ include_directories(${ConfigIncludePath})
# Add as many warnings as possible for our own code. # Add as many warnings as possible for our own code.
include (cmake/warnings.cmake) include (cmake/warnings.cmake)
# Check if needed compiler flags are supported
include (cmake/check_flags.cmake)
add_subdirectory (base) add_subdirectory (base)
add_subdirectory (src) add_subdirectory (src)
add_subdirectory (programs) add_subdirectory (programs)

View File

@ -159,17 +159,12 @@ void IBridge::initialize(Application & self)
if (port > 0xFFFF) if (port > 0xFFFF)
throw Exception("Out of range 'http-port': " + std::to_string(port), ErrorCodes::ARGUMENT_OUT_OF_BOUND); throw Exception("Out of range 'http-port': " + std::to_string(port), ErrorCodes::ARGUMENT_OUT_OF_BOUND);
http_timeout = config().getUInt("http-timeout", DEFAULT_HTTP_READ_BUFFER_TIMEOUT); http_timeout = config().getUInt64("http-timeout", DEFAULT_HTTP_READ_BUFFER_TIMEOUT);
max_server_connections = config().getUInt("max-server-connections", 1024); max_server_connections = config().getUInt("max-server-connections", 1024);
keep_alive_timeout = config().getUInt("keep-alive-timeout", 10); keep_alive_timeout = config().getUInt64("keep-alive-timeout", 10);
initializeTerminationAndSignalProcessing(); initializeTerminationAndSignalProcessing();
#if USE_ODBC
if (bridgeName() == "ODBCBridge")
Poco::Data::ODBC::Connector::registerConnector();
#endif
ServerApplication::initialize(self); // NOLINT ServerApplication::initialize(self); // NOLINT
} }
@ -200,8 +195,8 @@ int IBridge::main(const std::vector<std::string> & /*args*/)
http_params->setKeepAliveTimeout(keep_alive_timeout); http_params->setKeepAliveTimeout(keep_alive_timeout);
auto shared_context = Context::createShared(); auto shared_context = Context::createShared();
Context context(Context::createGlobal(shared_context.get())); auto context = Context::createGlobal(shared_context.get());
context.makeGlobalContext(); context->makeGlobalContext();
if (config().has("query_masking_rules")) if (config().has("query_masking_rules"))
SensitiveDataMasker::setInstance(std::make_unique<SensitiveDataMasker>(config(), "query_masking_rules")); SensitiveDataMasker::setInstance(std::make_unique<SensitiveDataMasker>(config(), "query_masking_rules"));

View File

@ -2,10 +2,11 @@
#include <Interpreters/Context.h> #include <Interpreters/Context.h>
#include <Server/HTTP/HTTPRequestHandlerFactory.h> #include <Server/HTTP/HTTPRequestHandlerFactory.h>
#include <Poco/Util/ServerApplication.h>
#include <Poco/Logger.h>
#include <daemon/BaseDaemon.h> #include <daemon/BaseDaemon.h>
#include <Poco/Logger.h>
#include <Poco/Util/ServerApplication.h>
namespace DB namespace DB
{ {
@ -29,9 +30,9 @@ protected:
int main(const std::vector<std::string> & args) override; int main(const std::vector<std::string> & args) override;
virtual const std::string bridgeName() const = 0; virtual std::string bridgeName() const = 0;
virtual HandlerFactoryPtr getHandlerFactoryPtr(Context & context) const = 0; virtual HandlerFactoryPtr getHandlerFactoryPtr(ContextPtr context) const = 0;
size_t keep_alive_timeout; size_t keep_alive_timeout;

View File

@ -7,8 +7,7 @@
#include <condition_variable> #include <condition_variable>
#include <common/defines.h> #include <common/defines.h>
#include <common/MoveOrCopyIfThrow.h>
#include <Common/MoveOrCopyIfThrow.h>
/** Pool for limited size objects that cannot be used from different threads simultaneously. /** Pool for limited size objects that cannot be used from different threads simultaneously.
* The main use case is to have fixed size of objects that can be reused in difference threads during their lifetime * The main use case is to have fixed size of objects that can be reused in difference threads during their lifetime

View File

@ -29,7 +29,7 @@ elseif (ENABLE_READLINE)
endif () endif ()
if (USE_DEBUG_HELPERS) if (USE_DEBUG_HELPERS)
set (INCLUDE_DEBUG_HELPERS "-include ${ClickHouse_SOURCE_DIR}/base/common/iostream_debug_helpers.h") set (INCLUDE_DEBUG_HELPERS "-include \"${ClickHouse_SOURCE_DIR}/base/common/iostream_debug_helpers.h\"")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${INCLUDE_DEBUG_HELPERS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${INCLUDE_DEBUG_HELPERS}")
endif () endif ()
@ -45,7 +45,7 @@ if (USE_INTERNAL_CCTZ)
set_source_files_properties(DateLUTImpl.cpp PROPERTIES COMPILE_DEFINITIONS USE_INTERNAL_CCTZ) set_source_files_properties(DateLUTImpl.cpp PROPERTIES COMPILE_DEFINITIONS USE_INTERNAL_CCTZ)
endif() endif()
target_include_directories(common PUBLIC .. ${CMAKE_CURRENT_BINARY_DIR}/..) target_include_directories(common PUBLIC .. "${CMAKE_CURRENT_BINARY_DIR}/..")
if (OS_DARWIN AND NOT MAKE_STATIC_LIBRARIES) if (OS_DARWIN AND NOT MAKE_STATIC_LIBRARIES)
target_link_libraries(common PUBLIC -Wl,-U,_inside_main) target_link_libraries(common PUBLIC -Wl,-U,_inside_main)

View File

@ -25,7 +25,7 @@
#if defined(__PPC__) #if defined(__PPC__)
#if !__clang__ #if !defined(__clang__)
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif #endif
#endif #endif
@ -1266,7 +1266,7 @@ public:
}; };
#if defined(__PPC__) #if defined(__PPC__)
#if !__clang__ #if !defined(__clang__)
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#endif #endif
#endif #endif

View File

@ -0,0 +1,216 @@
#pragma once
#include <cstdint>
#include <cstddef>
#include <cstring>
#include <common/extended_types.h>
/// Allows to check the internals of IEEE-754 floating point number.
template <typename T> struct FloatTraits;
template <>
struct FloatTraits<float>
{
using UInt = uint32_t;
static constexpr size_t bits = 32;
static constexpr size_t exponent_bits = 8;
static constexpr size_t mantissa_bits = bits - exponent_bits - 1;
};
template <>
struct FloatTraits<double>
{
using UInt = uint64_t;
static constexpr size_t bits = 64;
static constexpr size_t exponent_bits = 11;
static constexpr size_t mantissa_bits = bits - exponent_bits - 1;
};
/// x = sign * (2 ^ normalized_exponent) * (1 + mantissa * 2 ^ -mantissa_bits)
/// x = sign * (2 ^ normalized_exponent + mantissa * 2 ^ (normalized_exponent - mantissa_bits))
template <typename T>
struct DecomposedFloat
{
using Traits = FloatTraits<T>;
DecomposedFloat(T x)
{
memcpy(&x_uint, &x, sizeof(x));
}
typename Traits::UInt x_uint;
bool is_negative() const
{
return x_uint >> (Traits::bits - 1);
}
/// Returns 0 for both +0. and -0.
int sign() const
{
return (exponent() == 0 && mantissa() == 0)
? 0
: (is_negative()
? -1
: 1);
}
uint16_t exponent() const
{
return (x_uint >> (Traits::mantissa_bits)) & (((1ull << (Traits::exponent_bits + 1)) - 1) >> 1);
}
int16_t normalized_exponent() const
{
return int16_t(exponent()) - ((1ull << (Traits::exponent_bits - 1)) - 1);
}
uint64_t mantissa() const
{
return x_uint & ((1ull << Traits::mantissa_bits) - 1);
}
int64_t mantissa_with_sign() const
{
return is_negative() ? -mantissa() : mantissa();
}
/// NOTE Probably floating point instructions can be better.
bool is_integer_in_representable_range() const
{
return x_uint == 0
|| (normalized_exponent() >= 0 /// The number is not less than one
/// The number is inside the range where every integer has exact representation in float
&& normalized_exponent() <= static_cast<int16_t>(Traits::mantissa_bits)
/// After multiplying by 2^exp, the fractional part becomes zero, means the number is integer
&& ((mantissa() & ((1ULL << (Traits::mantissa_bits - normalized_exponent())) - 1)) == 0));
}
/// Compare float with integer of arbitrary width (both signed and unsigned are supported). Assuming two's complement arithmetic.
/// Infinities are compared correctly. NaNs are treat similarly to infinities, so they can be less than all numbers.
/// (note that we need total order)
template <typename Int>
int compare(Int rhs)
{
if (rhs == 0)
return sign();
/// Different signs
if (is_negative() && rhs > 0)
return -1;
if (!is_negative() && rhs < 0)
return 1;
/// Fractional number with magnitude less than one
if (normalized_exponent() < 0)
{
if (!is_negative())
return rhs > 0 ? -1 : 1;
else
return rhs >= 0 ? -1 : 1;
}
/// The case of the most negative integer
if constexpr (is_signed_v<Int>)
{
if (rhs == std::numeric_limits<Int>::lowest())
{
assert(is_negative());
if (normalized_exponent() < static_cast<int16_t>(8 * sizeof(Int) - is_signed_v<Int>))
return 1;
if (normalized_exponent() > static_cast<int16_t>(8 * sizeof(Int) - is_signed_v<Int>))
return -1;
if (mantissa() == 0)
return 0;
else
return -1;
}
}
/// Too large number: abs(float) > abs(rhs). Also the case with infinities and NaN.
if (normalized_exponent() >= static_cast<int16_t>(8 * sizeof(Int) - is_signed_v<Int>))
return is_negative() ? -1 : 1;
using UInt = make_unsigned_t<Int>;
UInt uint_rhs = rhs < 0 ? -rhs : rhs;
/// Smaller octave: abs(rhs) < abs(float)
if (uint_rhs < (static_cast<UInt>(1) << normalized_exponent()))
return is_negative() ? -1 : 1;
/// Larger octave: abs(rhs) > abs(float)
if (normalized_exponent() + 1 < static_cast<int16_t>(8 * sizeof(Int) - is_signed_v<Int>)
&& uint_rhs >= (static_cast<UInt>(1) << (normalized_exponent() + 1)))
return is_negative() ? 1 : -1;
/// The same octave
/// uint_rhs == 2 ^ normalized_exponent + mantissa * 2 ^ (normalized_exponent - mantissa_bits)
bool large_and_always_integer = normalized_exponent() >= static_cast<int16_t>(Traits::mantissa_bits);
typename Traits::UInt a = large_and_always_integer
? mantissa() << (normalized_exponent() - Traits::mantissa_bits)
: mantissa() >> (Traits::mantissa_bits - normalized_exponent());
typename Traits::UInt b = uint_rhs - (static_cast<UInt>(1) << normalized_exponent());
if (a < b)
return is_negative() ? 1 : -1;
if (a > b)
return is_negative() ? -1 : 1;
/// Float has no fractional part means that the numbers are equal.
if (large_and_always_integer || (mantissa() & ((1ULL << (Traits::mantissa_bits - normalized_exponent())) - 1)) == 0)
return 0;
else
/// Float has fractional part means its abs value is larger.
return is_negative() ? -1 : 1;
}
template <typename Int>
bool equals(Int rhs)
{
return compare(rhs) == 0;
}
template <typename Int>
bool notEquals(Int rhs)
{
return compare(rhs) != 0;
}
template <typename Int>
bool less(Int rhs)
{
return compare(rhs) < 0;
}
template <typename Int>
bool greater(Int rhs)
{
return compare(rhs) > 0;
}
template <typename Int>
bool lessOrEquals(Int rhs)
{
return compare(rhs) <= 0;
}
template <typename Int>
bool greaterOrEquals(Int rhs)
{
return compare(rhs) >= 0;
}
};
using DecomposedFloat64 = DecomposedFloat<double>;
using DecomposedFloat32 = DecomposedFloat<float>;

View File

@ -91,6 +91,10 @@ ReplxxLineReader::ReplxxLineReader(
/// it also binded to M-p/M-n). /// it also binded to M-p/M-n).
rx.bind_key(Replxx::KEY::meta('N'), [this](char32_t code) { return rx.invoke(Replxx::ACTION::COMPLETE_NEXT, code); }); rx.bind_key(Replxx::KEY::meta('N'), [this](char32_t code) { return rx.invoke(Replxx::ACTION::COMPLETE_NEXT, code); });
rx.bind_key(Replxx::KEY::meta('P'), [this](char32_t code) { return rx.invoke(Replxx::ACTION::COMPLETE_PREVIOUS, code); }); rx.bind_key(Replxx::KEY::meta('P'), [this](char32_t code) { return rx.invoke(Replxx::ACTION::COMPLETE_PREVIOUS, code); });
/// By default M-BACKSPACE is KILL_TO_WHITESPACE_ON_LEFT, while in readline it is backward-kill-word
rx.bind_key(Replxx::KEY::meta(Replxx::KEY::BACKSPACE), [this](char32_t code) { return rx.invoke(Replxx::ACTION::KILL_TO_BEGINING_OF_WORD, code); });
/// By default C-w is KILL_TO_BEGINING_OF_WORD, while in readline it is unix-word-rubout
rx.bind_key(Replxx::KEY::control('W'), [this](char32_t code) { return rx.invoke(Replxx::ACTION::KILL_TO_WHITESPACE_ON_LEFT, code); });
rx.bind_key(Replxx::KEY::meta('E'), [this](char32_t) { openEditor(); return Replxx::ACTION_RESULT::CONTINUE; }); rx.bind_key(Replxx::KEY::meta('E'), [this](char32_t) { openEditor(); return Replxx::ACTION_RESULT::CONTINUE; });
} }

View File

@ -56,27 +56,33 @@ namespace common
} }
template <> template <>
inline bool addOverflow(__int128 x, __int128 y, __int128 & res) inline bool addOverflow(Int128 x, Int128 y, Int128 & res)
{ {
static constexpr __int128 min_int128 = minInt128();
static constexpr __int128 max_int128 = maxInt128();
res = addIgnoreOverflow(x, y); res = addIgnoreOverflow(x, y);
return (y > 0 && x > max_int128 - y) || (y < 0 && x < min_int128 - y); return (y > 0 && x > std::numeric_limits<Int128>::max() - y) ||
(y < 0 && x < std::numeric_limits<Int128>::min() - y);
} }
template <> template <>
inline bool addOverflow(wInt256 x, wInt256 y, wInt256 & res) inline bool addOverflow(UInt128 x, UInt128 y, UInt128 & res)
{ {
res = addIgnoreOverflow(x, y); res = addIgnoreOverflow(x, y);
return (y > 0 && x > std::numeric_limits<wInt256>::max() - y) || return x > std::numeric_limits<UInt128>::max() - y;
(y < 0 && x < std::numeric_limits<wInt256>::min() - y);
} }
template <> template <>
inline bool addOverflow(wUInt256 x, wUInt256 y, wUInt256 & res) inline bool addOverflow(Int256 x, Int256 y, Int256 & res)
{ {
res = addIgnoreOverflow(x, y); res = addIgnoreOverflow(x, y);
return x > std::numeric_limits<wUInt256>::max() - y; return (y > 0 && x > std::numeric_limits<Int256>::max() - y) ||
(y < 0 && x < std::numeric_limits<Int256>::min() - y);
}
template <>
inline bool addOverflow(UInt256 x, UInt256 y, UInt256 & res)
{
res = addIgnoreOverflow(x, y);
return x > std::numeric_limits<UInt256>::max() - y;
} }
template <typename T> template <typename T>
@ -104,24 +110,30 @@ namespace common
} }
template <> template <>
inline bool subOverflow(__int128 x, __int128 y, __int128 & res) inline bool subOverflow(Int128 x, Int128 y, Int128 & res)
{ {
static constexpr __int128 min_int128 = minInt128();
static constexpr __int128 max_int128 = maxInt128();
res = subIgnoreOverflow(x, y); res = subIgnoreOverflow(x, y);
return (y < 0 && x > max_int128 + y) || (y > 0 && x < min_int128 + y); return (y < 0 && x > std::numeric_limits<Int128>::max() + y) ||
(y > 0 && x < std::numeric_limits<Int128>::min() + y);
} }
template <> template <>
inline bool subOverflow(wInt256 x, wInt256 y, wInt256 & res) inline bool subOverflow(UInt128 x, UInt128 y, UInt128 & res)
{ {
res = subIgnoreOverflow(x, y); res = subIgnoreOverflow(x, y);
return (y < 0 && x > std::numeric_limits<wInt256>::max() + y) || return x < y;
(y > 0 && x < std::numeric_limits<wInt256>::min() + y);
} }
template <> template <>
inline bool subOverflow(wUInt256 x, wUInt256 y, wUInt256 & res) inline bool subOverflow(Int256 x, Int256 y, Int256 & res)
{
res = subIgnoreOverflow(x, y);
return (y < 0 && x > std::numeric_limits<Int256>::max() + y) ||
(y > 0 && x < std::numeric_limits<Int256>::min() + y);
}
template <>
inline bool subOverflow(UInt256 x, UInt256 y, UInt256 & res)
{ {
res = subIgnoreOverflow(x, y); res = subIgnoreOverflow(x, y);
return x < y; return x < y;
@ -151,36 +163,33 @@ namespace common
return __builtin_smulll_overflow(x, y, &res); return __builtin_smulll_overflow(x, y, &res);
} }
/// Overflow check is not implemented for big integers.
template <> template <>
inline bool mulOverflow(__int128 x, __int128 y, __int128 & res) inline bool mulOverflow(Int128 x, Int128 y, Int128 & res)
{ {
res = mulIgnoreOverflow(x, y); res = mulIgnoreOverflow(x, y);
if (!x || !y) return false;
return false;
unsigned __int128 a = (x > 0) ? x : -x;
unsigned __int128 b = (y > 0) ? y : -y;
return mulIgnoreOverflow(a, b) / b != a;
} }
template <> template <>
inline bool mulOverflow(wInt256 x, wInt256 y, wInt256 & res) inline bool mulOverflow(Int256 x, Int256 y, Int256 & res)
{ {
res = mulIgnoreOverflow(x, y); res = mulIgnoreOverflow(x, y);
if (!x || !y) return false;
return false;
wInt256 a = (x > 0) ? x : -x;
wInt256 b = (y > 0) ? y : -y;
return mulIgnoreOverflow(a, b) / b != a;
} }
template <> template <>
inline bool mulOverflow(wUInt256 x, wUInt256 y, wUInt256 & res) inline bool mulOverflow(UInt128 x, UInt128 y, UInt128 & res)
{ {
res = mulIgnoreOverflow(x, y); res = mulIgnoreOverflow(x, y);
if (!x || !y) return false;
return false; }
return res / y != x;
template <>
inline bool mulOverflow(UInt256 x, UInt256 y, UInt256 & res)
{
res = mulIgnoreOverflow(x, y);
return false;
} }
} }

View File

@ -5,16 +5,14 @@
#include <common/types.h> #include <common/types.h>
#include <common/wide_integer.h> #include <common/wide_integer.h>
using Int128 = __int128;
using wInt256 = wide::integer<256, signed>; using Int128 = wide::integer<128, signed>;
using wUInt256 = wide::integer<256, unsigned>; using UInt128 = wide::integer<128, unsigned>;
using Int256 = wide::integer<256, signed>;
using UInt256 = wide::integer<256, unsigned>;
static_assert(sizeof(wInt256) == 32); static_assert(sizeof(Int256) == 32);
static_assert(sizeof(wUInt256) == 32); static_assert(sizeof(UInt256) == 32);
static constexpr __int128 minInt128() { return static_cast<unsigned __int128>(1) << 127; }
static constexpr __int128 maxInt128() { return (static_cast<unsigned __int128>(1) << 127) - 1; }
/// The standard library type traits, such as std::is_arithmetic, with one exception /// The standard library type traits, such as std::is_arithmetic, with one exception
/// (std::common_type), are "set in stone". Attempting to specialize them causes undefined behavior. /// (std::common_type), are "set in stone". Attempting to specialize them causes undefined behavior.
@ -26,7 +24,7 @@ struct is_signed
}; };
template <> struct is_signed<Int128> { static constexpr bool value = true; }; template <> struct is_signed<Int128> { static constexpr bool value = true; };
template <> struct is_signed<wInt256> { static constexpr bool value = true; }; template <> struct is_signed<Int256> { static constexpr bool value = true; };
template <typename T> template <typename T>
inline constexpr bool is_signed_v = is_signed<T>::value; inline constexpr bool is_signed_v = is_signed<T>::value;
@ -37,7 +35,8 @@ struct is_unsigned
static constexpr bool value = std::is_unsigned_v<T>; static constexpr bool value = std::is_unsigned_v<T>;
}; };
template <> struct is_unsigned<wUInt256> { static constexpr bool value = true; }; template <> struct is_unsigned<UInt128> { static constexpr bool value = true; };
template <> struct is_unsigned<UInt256> { static constexpr bool value = true; };
template <typename T> template <typename T>
inline constexpr bool is_unsigned_v = is_unsigned<T>::value; inline constexpr bool is_unsigned_v = is_unsigned<T>::value;
@ -51,8 +50,9 @@ struct is_integer
}; };
template <> struct is_integer<Int128> { static constexpr bool value = true; }; template <> struct is_integer<Int128> { static constexpr bool value = true; };
template <> struct is_integer<wInt256> { static constexpr bool value = true; }; template <> struct is_integer<UInt128> { static constexpr bool value = true; };
template <> struct is_integer<wUInt256> { static constexpr bool value = true; }; template <> struct is_integer<Int256> { static constexpr bool value = true; };
template <> struct is_integer<UInt256> { static constexpr bool value = true; };
template <typename T> template <typename T>
inline constexpr bool is_integer_v = is_integer<T>::value; inline constexpr bool is_integer_v = is_integer<T>::value;
@ -64,7 +64,11 @@ struct is_arithmetic
static constexpr bool value = std::is_arithmetic_v<T>; static constexpr bool value = std::is_arithmetic_v<T>;
}; };
template <> struct is_arithmetic<__int128> { static constexpr bool value = true; }; template <> struct is_arithmetic<Int128> { static constexpr bool value = true; };
template <> struct is_arithmetic<UInt128> { static constexpr bool value = true; };
template <> struct is_arithmetic<Int256> { static constexpr bool value = true; };
template <> struct is_arithmetic<UInt256> { static constexpr bool value = true; };
template <typename T> template <typename T>
inline constexpr bool is_arithmetic_v = is_arithmetic<T>::value; inline constexpr bool is_arithmetic_v = is_arithmetic<T>::value;
@ -75,9 +79,10 @@ struct make_unsigned
typedef std::make_unsigned_t<T> type; typedef std::make_unsigned_t<T> type;
}; };
template <> struct make_unsigned<Int128> { using type = unsigned __int128; }; template <> struct make_unsigned<Int128> { using type = UInt128; };
template <> struct make_unsigned<wInt256> { using type = wUInt256; }; template <> struct make_unsigned<UInt128> { using type = UInt128; };
template <> struct make_unsigned<wUInt256> { using type = wUInt256; }; template <> struct make_unsigned<Int256> { using type = UInt256; };
template <> struct make_unsigned<UInt256> { using type = UInt256; };
template <typename T> using make_unsigned_t = typename make_unsigned<T>::type; template <typename T> using make_unsigned_t = typename make_unsigned<T>::type;
@ -87,8 +92,10 @@ struct make_signed
typedef std::make_signed_t<T> type; typedef std::make_signed_t<T> type;
}; };
template <> struct make_signed<wInt256> { using type = wInt256; }; template <> struct make_signed<Int128> { using type = Int128; };
template <> struct make_signed<wUInt256> { using type = wInt256; }; template <> struct make_signed<UInt128> { using type = Int128; };
template <> struct make_signed<Int256> { using type = Int256; };
template <> struct make_signed<UInt256> { using type = Int256; };
template <typename T> using make_signed_t = typename make_signed<T>::type; template <typename T> using make_signed_t = typename make_signed<T>::type;
@ -98,8 +105,10 @@ struct is_big_int
static constexpr bool value = false; static constexpr bool value = false;
}; };
template <> struct is_big_int<wInt256> { static constexpr bool value = true; }; template <> struct is_big_int<Int128> { static constexpr bool value = true; };
template <> struct is_big_int<wUInt256> { static constexpr bool value = true; }; template <> struct is_big_int<UInt128> { static constexpr bool value = true; };
template <> struct is_big_int<Int256> { static constexpr bool value = true; };
template <> struct is_big_int<UInt256> { static constexpr bool value = true; };
template <typename T> template <typename T>
inline constexpr bool is_big_int_v = is_big_int<T>::value; inline constexpr bool is_big_int_v = is_big_int<T>::value;

View File

@ -25,6 +25,10 @@ uint64_t getThreadId()
current_tid = syscall(SYS_gettid); /// This call is always successful. - man gettid current_tid = syscall(SYS_gettid); /// This call is always successful. - man gettid
#elif defined(OS_FREEBSD) #elif defined(OS_FREEBSD)
current_tid = pthread_getthreadid_np(); current_tid = pthread_getthreadid_np();
#elif defined(OS_SUNOS)
// On Solaris-derived systems, this returns the ID of the LWP, analogous
// to a thread.
current_tid = static_cast<uint64_t>(pthread_self());
#else #else
if (0 != pthread_threadid_np(nullptr, &current_tid)) if (0 != pthread_threadid_np(nullptr, &current_tid))
throw std::logic_error("pthread_threadid_np returned error"); throw std::logic_error("pthread_threadid_np returned error");

View File

@ -30,9 +30,8 @@
#include <cstddef> #include <cstddef>
#include <cstring> #include <cstring>
#include <type_traits> #include <type_traits>
#include <common/extended_types.h>
using int128_t = __int128;
using uint128_t = unsigned __int128;
namespace impl namespace impl
{ {
@ -106,7 +105,7 @@ using UnsignedOfSize = typename SelectType
uint16_t, uint16_t,
uint32_t, uint32_t,
uint64_t, uint64_t,
uint128_t __uint128_t
>::Result; >::Result;
/// Holds the result of dividing an unsigned N-byte variable by 10^N resulting in /// Holds the result of dividing an unsigned N-byte variable by 10^N resulting in
@ -313,7 +312,8 @@ namespace convert
} }
} }
static inline int digits10(uint128_t x) template <typename T>
static inline int digits10(T x)
{ {
if (x < 10ULL) if (x < 10ULL)
return 1; return 1;
@ -346,8 +346,11 @@ static inline int digits10(uint128_t x)
return 12 + digits10(x / 1000000000000ULL); return 12 + digits10(x / 1000000000000ULL);
} }
static inline char * writeUIntText(uint128_t x, char * p) template <typename T>
static inline char * writeUIntText(T x, char * p)
{ {
static_assert(is_unsigned_v<T>);
int len = digits10(x); int len = digits10(x);
auto pp = p + len; auto pp = p + len;
while (x >= 100) while (x >= 100)
@ -370,14 +373,28 @@ static inline char * writeLeadingMinus(char * pos)
return pos + 1; return pos + 1;
} }
static inline char * writeSIntText(int128_t x, char * pos) template <typename T>
static inline char * writeSIntText(T x, char * pos)
{ {
static constexpr int128_t min_int128 = uint128_t(1) << 127; static_assert(std::is_same_v<T, Int128> || std::is_same_v<T, Int256>);
if (unlikely(x == min_int128)) using UnsignedT = make_unsigned_t<T>;
static constexpr T min_int = UnsignedT(1) << (sizeof(T) * 8 - 1);
if (unlikely(x == min_int))
{ {
memcpy(pos, "-170141183460469231731687303715884105728", 40); if constexpr (std::is_same_v<T, Int128>)
return pos + 40; {
const char * res = "-170141183460469231731687303715884105728";
memcpy(pos, res, strlen(res));
return pos + strlen(res);
}
else if constexpr (std::is_same_v<T, Int256>)
{
const char * res = "-57896044618658097711785492504343953926634992332820282019728792003956564819968";
memcpy(pos, res, strlen(res));
return pos + strlen(res);
}
} }
if (x < 0) if (x < 0)
@ -385,7 +402,7 @@ static inline char * writeSIntText(int128_t x, char * pos)
x = -x; x = -x;
pos = writeLeadingMinus(pos); pos = writeLeadingMinus(pos);
} }
return writeUIntText(static_cast<uint128_t>(x), pos); return writeUIntText(UnsignedT(x), pos);
} }
} }
@ -403,13 +420,25 @@ inline char * itoa(char8_t i, char * p)
} }
template <> template <>
inline char * itoa<uint128_t>(uint128_t i, char * p) inline char * itoa(UInt128 i, char * p)
{ {
return impl::writeUIntText(i, p); return impl::writeUIntText(i, p);
} }
template <> template <>
inline char * itoa<int128_t>(int128_t i, char * p) inline char * itoa(Int128 i, char * p)
{
return impl::writeSIntText(i, p);
}
template <>
inline char * itoa(UInt256 i, char * p)
{
return impl::writeUIntText(i, p);
}
template <>
inline char * itoa(Int256 i, char * p)
{ {
return impl::writeSIntText(i, p); return impl::writeSIntText(i, p);
} }

View File

@ -4,7 +4,8 @@
#include <type_traits> #include <type_traits>
#include <utility> #include <utility>
template <class T, class Tag>
template <typename T, typename Tag>
struct StrongTypedef struct StrongTypedef
{ {
private: private:
@ -38,14 +39,16 @@ public:
bool operator==(const Self & rhs) const { return t == rhs.t; } bool operator==(const Self & rhs) const { return t == rhs.t; }
bool operator<(const Self & rhs) const { return t < rhs.t; } bool operator<(const Self & rhs) const { return t < rhs.t; }
bool operator>(const Self & rhs) const { return t > rhs.t; }
T & toUnderType() { return t; } T & toUnderType() { return t; }
const T & toUnderType() const { return t; } const T & toUnderType() const { return t; }
}; };
namespace std namespace std
{ {
template <class T, class Tag> template <typename T, typename Tag>
struct hash<StrongTypedef<T, Tag>> struct hash<StrongTypedef<T, Tag>>
{ {
size_t operator()(const StrongTypedef<T, Tag> & x) const size_t operator()(const StrongTypedef<T, Tag> & x) const

View File

@ -1,13 +1,15 @@
#pragma once #pragma once
#include <stdexcept> #include <stdexcept>
/// Throw DB::Exception-like exception before its definition. /// Throw DB::Exception-like exception before its definition.
/// DB::Exception derived from Poco::Exception derived from std::exception. /// DB::Exception derived from Poco::Exception derived from std::exception.
/// DB::Exception generally cought as Poco::Exception. std::exception generally has other catch blocks and could lead to other outcomes. /// DB::Exception generally caught as Poco::Exception. std::exception generally has other catch blocks and could lead to other outcomes.
/// DB::Exception is not defined yet. It'd better to throw Poco::Exception but we do not want to include any big header here, even <string>. /// DB::Exception is not defined yet. It'd better to throw Poco::Exception but we do not want to include any big header here, even <string>.
/// So we throw some std::exception instead in the hope its catch block is the same as DB::Exception one. /// So we throw some std::exception instead in the hope its catch block is the same as DB::Exception one.
template <typename T> template <typename T>
inline void throwError(const T & err) [[noreturn]] inline void throwError(const T & err)
{ {
throw std::runtime_error(err); throw std::runtime_error(err);
} }

View File

@ -2,7 +2,7 @@
#include <time.h> #include <time.h>
#if defined (OS_DARWIN) #if defined (OS_DARWIN) || defined (OS_SUNOS)
# define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC # define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC
#elif defined (OS_FREEBSD) #elif defined (OS_FREEBSD)
# define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST # define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST

View File

@ -13,7 +13,12 @@ using char8_t = unsigned char;
#endif #endif
/// This is needed for more strict aliasing. https://godbolt.org/z/xpJBSb https://stackoverflow.com/a/57453713 /// This is needed for more strict aliasing. https://godbolt.org/z/xpJBSb https://stackoverflow.com/a/57453713
#if !defined(PVS_STUDIO) /// But PVS-Studio does not treat it correctly.
using UInt8 = char8_t; using UInt8 = char8_t;
#else
using UInt8 = uint8_t;
#endif
using UInt16 = uint16_t; using UInt16 = uint16_t;
using UInt32 = uint32_t; using UInt32 = uint32_t;
using UInt64 = uint64_t; using UInt64 = uint64_t;

View File

@ -58,9 +58,11 @@ public:
using signed_base_type = int64_t; using signed_base_type = int64_t;
// ctors // ctors
constexpr integer() noexcept; constexpr integer() noexcept = default;
template <typename T> template <typename T>
constexpr integer(T rhs) noexcept; constexpr integer(T rhs) noexcept;
template <typename T> template <typename T>
constexpr integer(std::initializer_list<T> il) noexcept; constexpr integer(std::initializer_list<T> il) noexcept;
@ -108,9 +110,9 @@ public:
constexpr explicit operator bool() const noexcept; constexpr explicit operator bool() const noexcept;
template <class T> template <class T>
using __integral_not_wide_integer_class = typename std::enable_if<std::is_arithmetic<T>::value, T>::type; using _integral_not_wide_integer_class = typename std::enable_if<std::is_arithmetic<T>::value, T>::type;
template <class T, class = __integral_not_wide_integer_class<T>> template <class T, class = _integral_not_wide_integer_class<T>>
constexpr operator T() const noexcept; constexpr operator T() const noexcept;
constexpr operator long double() const noexcept; constexpr operator long double() const noexcept;
@ -119,25 +121,27 @@ public:
struct _impl; struct _impl;
base_type items[_impl::item_count];
private: private:
template <size_t Bits2, typename Signed2> template <size_t Bits2, typename Signed2>
friend class integer; friend class integer;
friend class std::numeric_limits<integer<Bits, signed>>; friend class std::numeric_limits<integer<Bits, signed>>;
friend class std::numeric_limits<integer<Bits, unsigned>>; friend class std::numeric_limits<integer<Bits, unsigned>>;
base_type items[_impl::item_count];
}; };
template <typename T> template <typename T>
static constexpr bool ArithmeticConcept() noexcept; static constexpr bool ArithmeticConcept() noexcept;
template <class T1, class T2> template <class T1, class T2>
using __only_arithmetic = typename std::enable_if<ArithmeticConcept<T1>() && ArithmeticConcept<T2>()>::type; using _only_arithmetic = typename std::enable_if<ArithmeticConcept<T1>() && ArithmeticConcept<T2>()>::type;
template <typename T> template <typename T>
static constexpr bool IntegralConcept() noexcept; static constexpr bool IntegralConcept() noexcept;
template <class T, class T2> template <class T, class T2>
using __only_integer = typename std::enable_if<IntegralConcept<T>() && IntegralConcept<T2>()>::type; using _only_integer = typename std::enable_if<IntegralConcept<T>() && IntegralConcept<T2>()>::type;
// Unary operators // Unary operators
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
@ -153,54 +157,55 @@ constexpr integer<Bits, Signed> operator+(const integer<Bits, Signed> & lhs) noe
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator*(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator*(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
std::common_type_t<Arithmetic, Arithmetic2> constexpr operator*(const Arithmetic & rhs, const Arithmetic2 & lhs); std::common_type_t<Arithmetic, Arithmetic2> constexpr operator*(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator/(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator/(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
std::common_type_t<Arithmetic, Arithmetic2> constexpr operator/(const Arithmetic & rhs, const Arithmetic2 & lhs); std::common_type_t<Arithmetic, Arithmetic2> constexpr operator/(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator+(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator+(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
std::common_type_t<Arithmetic, Arithmetic2> constexpr operator+(const Arithmetic & rhs, const Arithmetic2 & lhs); std::common_type_t<Arithmetic, Arithmetic2> constexpr operator+(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator-(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator-(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
std::common_type_t<Arithmetic, Arithmetic2> constexpr operator-(const Arithmetic & rhs, const Arithmetic2 & lhs); std::common_type_t<Arithmetic, Arithmetic2> constexpr operator-(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator%(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator%(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Integral, typename Integral2, class = __only_integer<Integral, Integral2>> template <typename Integral, typename Integral2, class = _only_integer<Integral, Integral2>>
std::common_type_t<Integral, Integral2> constexpr operator%(const Integral & rhs, const Integral2 & lhs); std::common_type_t<Integral, Integral2> constexpr operator%(const Integral & rhs, const Integral2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator&(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator&(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Integral, typename Integral2, class = __only_integer<Integral, Integral2>> template <typename Integral, typename Integral2, class = _only_integer<Integral, Integral2>>
std::common_type_t<Integral, Integral2> constexpr operator&(const Integral & rhs, const Integral2 & lhs); std::common_type_t<Integral, Integral2> constexpr operator&(const Integral & rhs, const Integral2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator|(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator|(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Integral, typename Integral2, class = __only_integer<Integral, Integral2>> template <typename Integral, typename Integral2, class = _only_integer<Integral, Integral2>>
std::common_type_t<Integral, Integral2> constexpr operator|(const Integral & rhs, const Integral2 & lhs); std::common_type_t<Integral, Integral2> constexpr operator|(const Integral & rhs, const Integral2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>> constexpr
operator^(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); operator^(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Integral, typename Integral2, class = __only_integer<Integral, Integral2>> template <typename Integral, typename Integral2, class = _only_integer<Integral, Integral2>>
std::common_type_t<Integral, Integral2> constexpr operator^(const Integral & rhs, const Integral2 & lhs); std::common_type_t<Integral, Integral2> constexpr operator^(const Integral & rhs, const Integral2 & lhs);
// TODO: Integral // TODO: Integral
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
constexpr integer<Bits, Signed> operator<<(const integer<Bits, Signed> & lhs, int n) noexcept; constexpr integer<Bits, Signed> operator<<(const integer<Bits, Signed> & lhs, int n) noexcept;
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
constexpr integer<Bits, Signed> operator>>(const integer<Bits, Signed> & lhs, int n) noexcept; constexpr integer<Bits, Signed> operator>>(const integer<Bits, Signed> & lhs, int n) noexcept;
@ -217,32 +222,32 @@ constexpr integer<Bits, Signed> operator>>(const integer<Bits, Signed> & lhs, In
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator<(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); constexpr bool operator<(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
constexpr bool operator<(const Arithmetic & rhs, const Arithmetic2 & lhs); constexpr bool operator<(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator>(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); constexpr bool operator>(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
constexpr bool operator>(const Arithmetic & rhs, const Arithmetic2 & lhs); constexpr bool operator>(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator<=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); constexpr bool operator<=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
constexpr bool operator<=(const Arithmetic & rhs, const Arithmetic2 & lhs); constexpr bool operator<=(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator>=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); constexpr bool operator>=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
constexpr bool operator>=(const Arithmetic & rhs, const Arithmetic2 & lhs); constexpr bool operator>=(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator==(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); constexpr bool operator==(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
constexpr bool operator==(const Arithmetic & rhs, const Arithmetic2 & lhs); constexpr bool operator==(const Arithmetic & rhs, const Arithmetic2 & lhs);
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator!=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs); constexpr bool operator!=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs);
template <typename Arithmetic, typename Arithmetic2, class = __only_arithmetic<Arithmetic, Arithmetic2>> template <typename Arithmetic, typename Arithmetic2, class = _only_arithmetic<Arithmetic, Arithmetic2>>
constexpr bool operator!=(const Arithmetic & rhs, const Arithmetic2 & lhs); constexpr bool operator!=(const Arithmetic & rhs, const Arithmetic2 & lhs);
} }

View File

@ -5,6 +5,7 @@
/// (See at http://www.boost.org/LICENSE_1_0.txt) /// (See at http://www.boost.org/LICENSE_1_0.txt)
#include "throwError.h" #include "throwError.h"
#include <cmath> #include <cmath>
#include <cfloat> #include <cfloat>
#include <cassert> #include <cassert>
@ -81,7 +82,7 @@ public:
res.items[T::_impl::big(0)] = std::numeric_limits<typename wide::integer<Bits, Signed>::signed_base_type>::min(); res.items[T::_impl::big(0)] = std::numeric_limits<typename wide::integer<Bits, Signed>::signed_base_type>::min();
return res; return res;
} }
return 0; return wide::integer<Bits, Signed>(0);
} }
static constexpr wide::integer<Bits, Signed> max() noexcept static constexpr wide::integer<Bits, Signed> max() noexcept
@ -176,7 +177,7 @@ struct integer<Bits, Signed>::_impl
constexpr static bool is_negative(const integer<B, T> & n) noexcept constexpr static bool is_negative(const integer<B, T> & n) noexcept
{ {
if constexpr (std::is_same_v<T, signed>) if constexpr (std::is_same_v<T, signed>)
return static_cast<signed_base_type>(n.items[big(0)]) < 0; return static_cast<signed_base_type>(n.items[integer<B, T>::_impl::big(0)]) < 0;
else else
return false; return false;
} }
@ -193,40 +194,36 @@ struct integer<Bits, Signed>::_impl
template <size_t B, class S> template <size_t B, class S>
constexpr static integer<B, S> make_positive(const integer<B, S> & n) noexcept constexpr static integer<B, S> make_positive(const integer<B, S> & n) noexcept
{ {
return is_negative(n) ? operator_unary_minus(n) : n; return is_negative(n) ? integer<B, S>(operator_unary_minus(n)) : n;
} }
template <typename T> template <typename T>
__attribute__((no_sanitize("undefined"))) constexpr static auto to_Integral(T f) noexcept __attribute__((no_sanitize("undefined"))) constexpr static auto to_Integral(T f) noexcept
{ {
if constexpr (std::is_same_v<T, __int128>) if constexpr (std::is_signed_v<T>)
return f;
else if constexpr (std::is_signed_v<T>)
return static_cast<int64_t>(f); return static_cast<int64_t>(f);
else else
return static_cast<uint64_t>(f); return static_cast<uint64_t>(f);
} }
template <typename Integral> template <typename Integral>
constexpr static void wide_integer_from_bultin(integer<Bits, Signed> & self, Integral rhs) noexcept constexpr static void wide_integer_from_builtin(integer<Bits, Signed> & self, Integral rhs) noexcept
{ {
self.items[0] = _impl::to_Integral(rhs); static_assert(sizeof(Integral) <= sizeof(base_type));
if constexpr (std::is_same_v<Integral, __int128>)
self.items[1] = rhs >> base_bits;
constexpr const unsigned start = (sizeof(Integral) == 16) ? 2 : 1; self.items[0] = _impl::to_Integral(rhs);
if constexpr (std::is_signed_v<Integral>) if constexpr (std::is_signed_v<Integral>)
{ {
if (rhs < 0) if (rhs < 0)
{ {
for (unsigned i = start; i < item_count; ++i) for (size_t i = 1; i < item_count; ++i)
self.items[i] = -1; self.items[i] = -1;
return; return;
} }
} }
for (unsigned i = start; i < item_count; ++i) for (size_t i = 1; i < item_count; ++i)
self.items[i] = 0; self.items[i] = 0;
} }
@ -239,7 +236,8 @@ struct integer<Bits, Signed>::_impl
* a_(n - 1) = a_n * max_int + b2, a_n <= max_int <- base case. * a_(n - 1) = a_n * max_int + b2, a_n <= max_int <- base case.
*/ */
template <class T> template <class T>
constexpr static void set_multiplier(integer<Bits, Signed> & self, T t) noexcept { constexpr static void set_multiplier(integer<Bits, Signed> & self, T t) noexcept
{
constexpr uint64_t max_int = std::numeric_limits<uint64_t>::max(); constexpr uint64_t max_int = std::numeric_limits<uint64_t>::max();
/// Implementation specific behaviour on overflow (if we don't check here, stack overflow will triggered in bigint_cast). /// Implementation specific behaviour on overflow (if we don't check here, stack overflow will triggered in bigint_cast).
@ -260,7 +258,8 @@ struct integer<Bits, Signed>::_impl
self += static_cast<uint64_t>(t - alpha * static_cast<T>(max_int)); // += b_i self += static_cast<uint64_t>(t - alpha * static_cast<T>(max_int)); // += b_i
} }
constexpr static void wide_integer_from_bultin(integer<Bits, Signed>& self, double rhs) noexcept { constexpr static void wide_integer_from_builtin(integer<Bits, Signed>& self, double rhs) noexcept
{
constexpr int64_t max_int = std::numeric_limits<int64_t>::max(); constexpr int64_t max_int = std::numeric_limits<int64_t>::max();
constexpr int64_t min_int = std::numeric_limits<int64_t>::min(); constexpr int64_t min_int = std::numeric_limits<int64_t>::min();
@ -271,9 +270,13 @@ struct integer<Bits, Signed>::_impl
/// As to_Integral does a static_cast to int64_t, it may result in UB. /// As to_Integral does a static_cast to int64_t, it may result in UB.
/// The necessary check here is that long double has enough significant (mantissa) bits to store the /// The necessary check here is that long double has enough significant (mantissa) bits to store the
/// int64_t max value precisely. /// int64_t max value precisely.
//TODO Be compatible with Apple aarch64
#if not (defined(__APPLE__) && defined(__aarch64__))
static_assert(LDBL_MANT_DIG >= 64, static_assert(LDBL_MANT_DIG >= 64,
"On your system long double has less than 64 precision bits," "On your system long double has less than 64 precision bits,"
"which may result in UB when initializing double from int64_t"); "which may result in UB when initializing double from int64_t");
#endif
if ((rhs > 0 && rhs < static_cast<long double>(max_int)) || (rhs < 0 && rhs > static_cast<long double>(min_int))) if ((rhs > 0 && rhs < static_cast<long double>(max_int)) || (rhs < 0 && rhs > static_cast<long double>(min_int)))
{ {
@ -379,13 +382,13 @@ struct integer<Bits, Signed>::_impl
if (bit_shift) if (bit_shift)
lhs.items[big(items_shift)] |= std::numeric_limits<base_type>::max() << (base_bits - bit_shift); lhs.items[big(items_shift)] |= std::numeric_limits<base_type>::max() << (base_bits - bit_shift);
for (unsigned i = item_count - items_shift; i < items_shift; ++i) for (unsigned i = 0; i < items_shift; ++i)
lhs.items[little(i)] = std::numeric_limits<base_type>::max(); lhs.items[big(i)] = std::numeric_limits<base_type>::max();
} }
else else
{ {
for (unsigned i = item_count - items_shift; i < items_shift; ++i) for (unsigned i = 0; i < items_shift; ++i)
lhs.items[little(i)] = 0; lhs.items[big(i)] = 0;
} }
return lhs; return lhs;
@ -393,23 +396,23 @@ struct integer<Bits, Signed>::_impl
private: private:
template <typename T> template <typename T>
constexpr static base_type get_item(const T & x, unsigned number) constexpr static base_type get_item(const T & x, unsigned idx)
{ {
if constexpr (IsWideInteger<T>::value) if constexpr (IsWideInteger<T>::value)
{ {
if (number < T::_impl::item_count) if (idx < T::_impl::item_count)
return x.items[number]; return x.items[idx];
return 0; return 0;
} }
else else
{ {
if constexpr (sizeof(T) <= sizeof(base_type)) if constexpr (sizeof(T) <= sizeof(base_type))
{ {
if (!number) if (0 == idx)
return x; return x;
} }
else if (number * sizeof(base_type) < sizeof(T)) else if (idx * sizeof(base_type) < sizeof(T))
return x >> (number * base_bits); // & std::numeric_limits<base_type>::max() return x >> (idx * base_bits); // & std::numeric_limits<base_type>::max()
return 0; return 0;
} }
} }
@ -435,7 +438,7 @@ private:
for (unsigned i = 1; i < item_count; ++i) for (unsigned i = 1; i < item_count; ++i)
{ {
if (underflows[i-1]) if (underflows[i - 1])
{ {
base_type & res_item = res.items[little(i)]; base_type & res_item = res.items[little(i)];
if (res_item == 0) if (res_item == 0)
@ -468,7 +471,7 @@ private:
for (unsigned i = 1; i < item_count; ++i) for (unsigned i = 1; i < item_count; ++i)
{ {
if (overflows[i-1]) if (overflows[i - 1])
{ {
base_type & res_item = res.items[little(i)]; base_type & res_item = res.items[little(i)];
++res_item; ++res_item;
@ -528,6 +531,17 @@ private:
res.items[little(2)] = r12 >> 64; res.items[little(2)] = r12 >> 64;
return res; return res;
} }
else if constexpr (Bits == 128 && sizeof(base_type) == 8)
{
using CompilerUInt128 = unsigned __int128;
CompilerUInt128 a = (CompilerUInt128(lhs.items[1]) << 64) + lhs.items[0];
CompilerUInt128 b = (CompilerUInt128(rhs.items[1]) << 64) + rhs.items[0];
CompilerUInt128 c = a * b;
integer<Bits, Signed> res;
res.items[0] = c;
res.items[1] = c >> 64;
return res;
}
else else
{ {
integer<Bits, Signed> res{}; integer<Bits, Signed> res{};
@ -653,7 +667,7 @@ public:
} }
template <typename T> template <typename T>
constexpr static bool operator_more(const integer<Bits, Signed> & lhs, const T & rhs) noexcept constexpr static bool operator_greater(const integer<Bits, Signed> & lhs, const T & rhs) noexcept
{ {
if constexpr (should_keep_size<T>()) if constexpr (should_keep_size<T>())
{ {
@ -673,7 +687,7 @@ public:
else else
{ {
static_assert(IsWideInteger<T>::value); static_assert(IsWideInteger<T>::value);
return std::common_type_t<integer<Bits, Signed>, T>::_impl::operator_more(T(lhs), rhs); return std::common_type_t<integer<Bits, Signed>, T>::_impl::operator_greater(T(lhs), rhs);
} }
} }
@ -760,7 +774,6 @@ public:
} }
} }
private:
template <typename T> template <typename T>
constexpr static bool is_zero(const T & x) constexpr static bool is_zero(const T & x)
{ {
@ -777,46 +790,65 @@ private:
} }
/// returns quotient as result and remainder in numerator. /// returns quotient as result and remainder in numerator.
template <typename T> template <size_t Bits2>
constexpr static T divide(T & numerator, T && denominator) constexpr static integer<Bits2, unsigned> divide(integer<Bits2, unsigned> & numerator, integer<Bits2, unsigned> denominator)
{ {
if (is_zero(denominator)) static_assert(std::is_unsigned_v<Signed>);
throwError("divide by zero");
T & n = numerator; if constexpr (Bits == 128 && sizeof(base_type) == 8)
T & d = denominator;
T x = 1;
T quotient = 0;
while (!operator_more(d, n) && operator_eq(operator_amp(shift_right(d, base_bits * item_count - 1), 1), 0))
{ {
x = shift_left(x, 1); using CompilerUInt128 = unsigned __int128;
d = shift_left(d, 1);
CompilerUInt128 a = (CompilerUInt128(numerator.items[1]) << 64) + numerator.items[0];
CompilerUInt128 b = (CompilerUInt128(denominator.items[1]) << 64) + denominator.items[0];
CompilerUInt128 c = a / b;
integer<Bits, Signed> res;
res.items[0] = c;
res.items[1] = c >> 64;
CompilerUInt128 remainder = a - b * c;
numerator.items[0] = remainder;
numerator.items[1] = remainder >> 64;
return res;
} }
while (!operator_eq(x, 0)) if (is_zero(denominator))
throwError("Division by zero");
integer<Bits2, unsigned> x = 1;
integer<Bits2, unsigned> quotient = 0;
while (!operator_greater(denominator, numerator) && is_zero(operator_amp(shift_right(denominator, Bits2 - 1), 1)))
{ {
if (!operator_more(d, n)) x = shift_left(x, 1);
denominator = shift_left(denominator, 1);
}
while (!is_zero(x))
{
if (!operator_greater(denominator, numerator))
{ {
n = operator_minus(n, d); numerator = operator_minus(numerator, denominator);
quotient = operator_pipe(quotient, x); quotient = operator_pipe(quotient, x);
} }
x = shift_right(x, 1); x = shift_right(x, 1);
d = shift_right(d, 1); denominator = shift_right(denominator, 1);
} }
return quotient; return quotient;
} }
public:
template <typename T> template <typename T>
constexpr static auto operator_slash(const integer<Bits, Signed> & lhs, const T & rhs) constexpr static auto operator_slash(const integer<Bits, Signed> & lhs, const T & rhs)
{ {
if constexpr (should_keep_size<T>()) if constexpr (should_keep_size<T>())
{ {
integer<Bits, Signed> numerator = make_positive(lhs); integer<Bits, unsigned> numerator = make_positive(lhs);
integer<Bits, Signed> quotient = divide(numerator, make_positive(integer<Bits, Signed>(rhs))); integer<Bits, unsigned> denominator = make_positive(integer<Bits, Signed>(rhs));
integer<Bits, unsigned> quotient = integer<Bits, unsigned>::_impl::divide(numerator, std::move(denominator));
if (std::is_same_v<Signed, signed> && is_negative(rhs) != is_negative(lhs)) if (std::is_same_v<Signed, signed> && is_negative(rhs) != is_negative(lhs))
quotient = operator_unary_minus(quotient); quotient = operator_unary_minus(quotient);
@ -834,8 +866,9 @@ public:
{ {
if constexpr (should_keep_size<T>()) if constexpr (should_keep_size<T>())
{ {
integer<Bits, Signed> remainder = make_positive(lhs); integer<Bits, unsigned> remainder = make_positive(lhs);
divide(remainder, make_positive(integer<Bits, Signed>(rhs))); integer<Bits, unsigned> denominator = make_positive(integer<Bits, Signed>(rhs));
integer<Bits, unsigned>::_impl::divide(remainder, std::move(denominator));
if (std::is_same_v<Signed, signed> && is_negative(lhs)) if (std::is_same_v<Signed, signed> && is_negative(lhs))
remainder = operator_unary_minus(remainder); remainder = operator_unary_minus(remainder);
@ -901,7 +934,7 @@ public:
++c; ++c;
} }
else else
throwError("invalid char from"); throwError("Invalid char from");
} }
} }
else else
@ -909,7 +942,7 @@ public:
while (*c) while (*c)
{ {
if (*c < '0' || *c > '9') if (*c < '0' || *c > '9')
throwError("invalid char from"); throwError("Invalid char from");
res = multiply(res, 10U); res = multiply(res, 10U);
res = plus(res, *c - '0'); res = plus(res, *c - '0');
@ -926,11 +959,6 @@ public:
// Members // Members
template <size_t Bits, typename Signed>
constexpr integer<Bits, Signed>::integer() noexcept
: items{}
{}
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
template <typename T> template <typename T>
constexpr integer<Bits, Signed>::integer(T rhs) noexcept constexpr integer<Bits, Signed>::integer(T rhs) noexcept
@ -939,7 +967,7 @@ constexpr integer<Bits, Signed>::integer(T rhs) noexcept
if constexpr (IsWideInteger<T>::value) if constexpr (IsWideInteger<T>::value)
_impl::wide_integer_from_wide_integer(*this, rhs); _impl::wide_integer_from_wide_integer(*this, rhs);
else else
_impl::wide_integer_from_bultin(*this, rhs); _impl::wide_integer_from_builtin(*this, rhs);
} }
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
@ -952,10 +980,19 @@ constexpr integer<Bits, Signed>::integer(std::initializer_list<T> il) noexcept
if constexpr (IsWideInteger<T>::value) if constexpr (IsWideInteger<T>::value)
_impl::wide_integer_from_wide_integer(*this, *il.begin()); _impl::wide_integer_from_wide_integer(*this, *il.begin());
else else
_impl::wide_integer_from_bultin(*this, *il.begin()); _impl::wide_integer_from_builtin(*this, *il.begin());
}
else if (il.size() == 0)
{
_impl::wide_integer_from_builtin(*this, 0);
} }
else else
_impl::wide_integer_from_bultin(*this, 0); {
auto it = il.begin();
for (size_t i = 0; i < _impl::item_count; ++i)
if (it < il.end())
items[i] = *it;
}
} }
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
@ -970,7 +1007,7 @@ template <size_t Bits, typename Signed>
template <typename T> template <typename T>
constexpr integer<Bits, Signed> & integer<Bits, Signed>::operator=(T rhs) noexcept constexpr integer<Bits, Signed> & integer<Bits, Signed>::operator=(T rhs) noexcept
{ {
_impl::wide_integer_from_bultin(*this, rhs); _impl::wide_integer_from_builtin(*this, rhs);
return *this; return *this;
} }
@ -1053,7 +1090,7 @@ constexpr integer<Bits, Signed> & integer<Bits, Signed>::operator>>=(int n) noex
{ {
if (static_cast<size_t>(n) >= Bits) if (static_cast<size_t>(n) >= Bits)
{ {
if (is_negative(*this)) if (_impl::is_negative(*this))
*this = -1; *this = -1;
else else
*this = 0; *this = 0;
@ -1103,16 +1140,17 @@ template <size_t Bits, typename Signed>
template <class T, class> template <class T, class>
constexpr integer<Bits, Signed>::operator T() const noexcept constexpr integer<Bits, Signed>::operator T() const noexcept
{ {
if constexpr (std::is_same_v<T, __int128>) static_assert(std::numeric_limits<T>::is_integer);
{
static_assert(Bits >= 128); /// NOTE: memcpy will suffice, but unfortunately, this function is constexpr.
return (__int128(items[1]) << 64) | items[0];
} using UnsignedT = std::make_unsigned_t<T>;
else
{ UnsignedT res{};
static_assert(std::numeric_limits<T>::is_integer); for (unsigned i = 0; i < _impl::item_count && i < (sizeof(T) + sizeof(base_type) - 1) / sizeof(base_type); ++i)
return items[0]; res += UnsignedT(items[i]) << (sizeof(base_type) * 8 * i);
}
return res;
} }
template <size_t Bits, typename Signed> template <size_t Bits, typename Signed>
@ -1276,7 +1314,7 @@ template <size_t Bits, typename Signed>
constexpr integer<Bits, Signed> operator<<(const integer<Bits, Signed> & lhs, int n) noexcept constexpr integer<Bits, Signed> operator<<(const integer<Bits, Signed> & lhs, int n) noexcept
{ {
if (static_cast<size_t>(n) >= Bits) if (static_cast<size_t>(n) >= Bits)
return 0; return integer<Bits, Signed>(0);
if (n <= 0) if (n <= 0)
return lhs; return lhs;
return integer<Bits, Signed>::_impl::shift_left(lhs, n); return integer<Bits, Signed>::_impl::shift_left(lhs, n);
@ -1285,7 +1323,7 @@ template <size_t Bits, typename Signed>
constexpr integer<Bits, Signed> operator>>(const integer<Bits, Signed> & lhs, int n) noexcept constexpr integer<Bits, Signed> operator>>(const integer<Bits, Signed> & lhs, int n) noexcept
{ {
if (static_cast<size_t>(n) >= Bits) if (static_cast<size_t>(n) >= Bits)
return 0; return integer<Bits, Signed>(0);
if (n <= 0) if (n <= 0)
return lhs; return lhs;
return integer<Bits, Signed>::_impl::shift_right(lhs, n); return integer<Bits, Signed>::_impl::shift_right(lhs, n);
@ -1305,7 +1343,7 @@ constexpr bool operator<(const Arithmetic & lhs, const Arithmetic2 & rhs)
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator>(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs) constexpr bool operator>(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs)
{ {
return std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>>::_impl::operator_more(lhs, rhs); return std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>>::_impl::operator_greater(lhs, rhs);
} }
template <typename Arithmetic, typename Arithmetic2, class> template <typename Arithmetic, typename Arithmetic2, class>
constexpr bool operator>(const Arithmetic & lhs, const Arithmetic2 & rhs) constexpr bool operator>(const Arithmetic & lhs, const Arithmetic2 & rhs)
@ -1328,7 +1366,7 @@ constexpr bool operator<=(const Arithmetic & lhs, const Arithmetic2 & rhs)
template <size_t Bits, typename Signed, size_t Bits2, typename Signed2> template <size_t Bits, typename Signed, size_t Bits2, typename Signed2>
constexpr bool operator>=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs) constexpr bool operator>=(const integer<Bits, Signed> & lhs, const integer<Bits2, Signed2> & rhs)
{ {
return std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>>::_impl::operator_more(lhs, rhs) return std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>>::_impl::operator_greater(lhs, rhs)
|| std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>>::_impl::operator_eq(lhs, rhs); || std::common_type_t<integer<Bits, Signed>, integer<Bits2, Signed2>>::_impl::operator_eq(lhs, rhs);
} }
template <typename Arithmetic, typename Arithmetic2, class> template <typename Arithmetic, typename Arithmetic2, class>

View File

@ -1,9 +1,12 @@
#pragma once #pragma once
#include <string> #include <string>
#include <ostream>
#include <fmt/format.h>
#include "wide_integer.h" #include "wide_integer.h"
namespace wide namespace wide
{ {
@ -33,3 +36,34 @@ inline std::string to_string(const integer<Bits, Signed> & n)
} }
} }
template <size_t Bits, typename Signed>
std::ostream & operator<<(std::ostream & out, const wide::integer<Bits, Signed> & value)
{
return out << to_string(value);
}
/// See https://fmt.dev/latest/api.html#formatting-user-defined-types
template <size_t Bits, typename Signed>
struct fmt::formatter<wide::integer<Bits, Signed>>
{
constexpr auto parse(format_parse_context & ctx)
{
auto it = ctx.begin();
auto end = ctx.end();
/// Only support {}.
if (it != end && *it != '}')
throw format_error("invalid format");
return it;
}
template <typename FormatContext>
auto format(const wide::integer<Bits, Signed> & value, FormatContext & ctx)
{
return format_to(ctx.out(), "{}", to_string(value));
}
};

View File

@ -35,7 +35,7 @@ PEERDIR(
CFLAGS(-g0) CFLAGS(-g0)
SRCS( SRCS(
<? find . -name '*.cpp' | grep -v -F tests/ | grep -v -F Replxx | grep -v -F Readline | sed 's/^\.\// /' | sort ?> <? find . -name '*.cpp' | grep -v -F tests/ | grep -v -F examples | grep -v -F Replxx | grep -v -F Readline | sed 's/^\.\// /' | sort ?>
) )
END() END()

View File

@ -9,6 +9,7 @@
#include <common/getMemoryAmount.h> #include <common/getMemoryAmount.h>
#include <common/logger_useful.h> #include <common/logger_useful.h>
#include <Common/formatReadable.h>
#include <Common/SymbolIndex.h> #include <Common/SymbolIndex.h>
#include <Common/StackTrace.h> #include <Common/StackTrace.h>
#include <Common/getNumberOfPhysicalCPUCores.h> #include <Common/getNumberOfPhysicalCPUCores.h>
@ -101,7 +102,7 @@ void SentryWriter::initialize(Poco::Util::LayeredConfiguration & config)
auto * logger = &Poco::Logger::get("SentryWriter"); auto * logger = &Poco::Logger::get("SentryWriter");
if (config.getBool("send_crash_reports.enabled", false)) if (config.getBool("send_crash_reports.enabled", false))
{ {
if (debug || (strlen(VERSION_OFFICIAL) > 0)) if (debug || (strlen(VERSION_OFFICIAL) > 0)) //-V560
{ {
enabled = true; enabled = true;
} }

View File

@ -0,0 +1,68 @@
#pragma once
#include <ext/scope_guard.h>
#include <common/logger_useful.h>
#include <Common/MemoryTracker.h>
/// Same as SCOPE_EXIT() but block the MEMORY_LIMIT_EXCEEDED errors.
///
/// Typical example of SCOPE_EXIT_MEMORY() usage is when code under it may do
/// some tiny allocations, that may fail under high memory pressure or/and low
/// max_memory_usage (and related limits).
///
/// NOTE: it should be used with caution.
#define SCOPE_EXIT_MEMORY(...) SCOPE_EXIT( \
MemoryTracker::LockExceptionInThread \
lock_memory_tracker(VariableContext::Global); \
__VA_ARGS__; \
)
/// Same as SCOPE_EXIT() but try/catch/tryLogCurrentException any exceptions.
///
/// SCOPE_EXIT_SAFE() should be used in case the exception during the code
/// under SCOPE_EXIT() is not "that fatal" and error message in log is enough.
///
/// Good example is calling CurrentThread::detachQueryIfNotDetached().
///
/// Anti-pattern is calling WriteBuffer::finalize() under SCOPE_EXIT_SAFE()
/// (since finalize() can do final write and it is better to fail abnormally
/// instead of ignoring write error).
///
/// NOTE: it should be used with double caution.
#define SCOPE_EXIT_SAFE(...) SCOPE_EXIT( \
try \
{ \
__VA_ARGS__; \
} \
catch (...) \
{ \
tryLogCurrentException(__PRETTY_FUNCTION__); \
} \
)
/// Same as SCOPE_EXIT() but:
/// - block the MEMORY_LIMIT_EXCEEDED errors,
/// - try/catch/tryLogCurrentException any exceptions.
///
/// SCOPE_EXIT_MEMORY_SAFE() can be used when the error can be ignored, and in
/// addition to SCOPE_EXIT_SAFE() it will also lock MEMORY_LIMIT_EXCEEDED to
/// avoid such exceptions.
///
/// It does exists as a separate helper, since you do not need to lock
/// MEMORY_LIMIT_EXCEEDED always (there are cases when code under SCOPE_EXIT does
/// not do any allocations, while LockExceptionInThread increment atomic
/// variable).
///
/// NOTE: it should be used with triple caution.
#define SCOPE_EXIT_MEMORY_SAFE(...) SCOPE_EXIT( \
try \
{ \
MemoryTracker::LockExceptionInThread \
lock_memory_tracker(VariableContext::Global); \
__VA_ARGS__; \
} \
catch (...) \
{ \
tryLogCurrentException(__PRETTY_FUNCTION__); \
} \
)

View File

@ -15,7 +15,7 @@ if (GLIBC_COMPATIBILITY)
add_headers_and_sources(glibc_compatibility .) add_headers_and_sources(glibc_compatibility .)
add_headers_and_sources(glibc_compatibility musl) add_headers_and_sources(glibc_compatibility musl)
if (ARCH_ARM) if (ARCH_AARCH64)
list (APPEND glibc_compatibility_sources musl/aarch64/syscall.s musl/aarch64/longjmp.s) list (APPEND glibc_compatibility_sources musl/aarch64/syscall.s musl/aarch64/longjmp.s)
set (musl_arch_include_dir musl/aarch64) set (musl_arch_include_dir musl/aarch64)
elseif (ARCH_AMD64) elseif (ARCH_AMD64)

View File

@ -78,6 +78,9 @@
* *
*/ */
// Disable warnings by PVS-Studio
//-V::GA
static const double static const double
pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */
a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */

View File

@ -85,6 +85,9 @@
* *
*/ */
// Disable warnings by PVS-Studio
//-V::GA
#include <stdint.h> #include <stdint.h>
#include <math.h> #include <math.h>
#include "libm.h" #include "libm.h"

View File

@ -155,7 +155,7 @@ static inline long double fp_barrierl(long double x)
static inline void fp_force_evalf(float x) static inline void fp_force_evalf(float x)
{ {
volatile float y; volatile float y;
y = x; y = x; //-V1001
} }
#endif #endif
@ -164,7 +164,7 @@ static inline void fp_force_evalf(float x)
static inline void fp_force_eval(double x) static inline void fp_force_eval(double x)
{ {
volatile double y; volatile double y;
y = x; y = x; //-V1001
} }
#endif #endif
@ -173,7 +173,7 @@ static inline void fp_force_eval(double x)
static inline void fp_force_evall(long double x) static inline void fp_force_evall(long double x)
{ {
volatile long double y; volatile long double y;
y = x; y = x; //-V1001
} }
#endif #endif

View File

@ -3,6 +3,9 @@
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
*/ */
// Disable warnings by PVS-Studio
//-V::GA
#include <math.h> #include <math.h>
#include <stdint.h> #include <stdint.h>
#include "libm.h" #include "libm.h"

View File

@ -1,4 +1,4 @@
include(${ClickHouse_SOURCE_DIR}/cmake/dbms_glob_sources.cmake) include("${ClickHouse_SOURCE_DIR}/cmake/dbms_glob_sources.cmake")
add_headers_and_sources(loggers .) add_headers_and_sources(loggers .)
add_library(loggers ${loggers_sources} ${loggers_headers}) add_library(loggers ${loggers_sources} ${loggers_headers})
target_link_libraries(loggers PRIVATE dbms clickhouse_common_io) target_link_libraries(loggers PRIVATE dbms clickhouse_common_io)

View File

@ -40,7 +40,7 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
split->addTextLog(log, text_log_max_priority); split->addTextLog(log, text_log_max_priority);
auto current_logger = config.getString("logger", ""); auto current_logger = config.getString("logger", "");
if (config_logger == current_logger) if (config_logger == current_logger) //-V1051
return; return;
config_logger = current_logger; config_logger = current_logger;
@ -51,12 +51,22 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
/// Use extended interface of Channel for more comprehensive logging. /// Use extended interface of Channel for more comprehensive logging.
split = new DB::OwnSplitChannel(); split = new DB::OwnSplitChannel();
auto log_level = config.getString("logger.level", "trace"); auto log_level_string = config.getString("logger.level", "trace");
/// different channels (log, console, syslog) may have different loglevels configured
/// The maximum (the most verbose) of those will be used as default for Poco loggers
int max_log_level = 0;
const auto log_path = config.getString("logger.log", ""); const auto log_path = config.getString("logger.log", "");
if (!log_path.empty()) if (!log_path.empty())
{ {
createDirectory(log_path); createDirectory(log_path);
std::cerr << "Logging " << log_level << " to " << log_path << std::endl; std::cerr << "Logging " << log_level_string << " to " << log_path << std::endl;
auto log_level = Poco::Logger::parseLevel(log_level_string);
if (log_level > max_log_level)
{
max_log_level = log_level;
}
// Set up two channel chains. // Set up two channel chains.
log_file = new Poco::FileChannel; log_file = new Poco::FileChannel;
@ -69,9 +79,10 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
log_file->setProperty(Poco::FileChannel::PROP_ROTATEONOPEN, config.getRawString("logger.rotateOnOpen", "false")); log_file->setProperty(Poco::FileChannel::PROP_ROTATEONOPEN, config.getRawString("logger.rotateOnOpen", "false"));
log_file->open(); log_file->open();
Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter(this); Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter;
Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, log_file); Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, log_file);
log->setLevel(log_level);
split->addChannel(log); split->addChannel(log);
} }
@ -79,6 +90,15 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
if (!errorlog_path.empty()) if (!errorlog_path.empty())
{ {
createDirectory(errorlog_path); createDirectory(errorlog_path);
// NOTE: we don't use notice & critical in the code, so in practice error log collects fatal & error & warning.
// (!) Warnings are important, they require attention and should never be silenced / ignored.
auto errorlog_level = Poco::Logger::parseLevel(config.getString("logger.errorlog_level", "notice"));
if (errorlog_level > max_log_level)
{
max_log_level = errorlog_level;
}
std::cerr << "Logging errors to " << errorlog_path << std::endl; std::cerr << "Logging errors to " << errorlog_path << std::endl;
error_log_file = new Poco::FileChannel; error_log_file = new Poco::FileChannel;
@ -90,20 +110,22 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
error_log_file->setProperty(Poco::FileChannel::PROP_FLUSH, config.getRawString("logger.flush", "true")); error_log_file->setProperty(Poco::FileChannel::PROP_FLUSH, config.getRawString("logger.flush", "true"));
error_log_file->setProperty(Poco::FileChannel::PROP_ROTATEONOPEN, config.getRawString("logger.rotateOnOpen", "false")); error_log_file->setProperty(Poco::FileChannel::PROP_ROTATEONOPEN, config.getRawString("logger.rotateOnOpen", "false"));
Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter(this); Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter;
Poco::AutoPtr<DB::OwnFormattingChannel> errorlog = new DB::OwnFormattingChannel(pf, error_log_file); Poco::AutoPtr<DB::OwnFormattingChannel> errorlog = new DB::OwnFormattingChannel(pf, error_log_file);
errorlog->setLevel(Poco::Message::PRIO_NOTICE); errorlog->setLevel(errorlog_level);
errorlog->open(); errorlog->open();
split->addChannel(errorlog); split->addChannel(errorlog);
} }
/// "dynamic_layer_selection" is needed only for Yandex.Metrika, that share part of ClickHouse code. if (config.getBool("logger.use_syslog", false))
/// We don't need this configuration parameter.
if (config.getBool("logger.use_syslog", false) || config.getBool("dynamic_layer_selection", false))
{ {
//const std::string & cmd_name = commandName(); //const std::string & cmd_name = commandName();
auto syslog_level = Poco::Logger::parseLevel(config.getString("logger.syslog_level", log_level_string));
if (syslog_level > max_log_level)
{
max_log_level = syslog_level;
}
if (config.has("logger.syslog.address")) if (config.has("logger.syslog.address"))
{ {
@ -127,9 +149,11 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
} }
syslog_channel->open(); syslog_channel->open();
Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter(this, OwnPatternFormatter::ADD_LAYER_TAG); Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter;
Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, syslog_channel); Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, syslog_channel);
log->setLevel(syslog_level);
split->addChannel(log); split->addChannel(log);
} }
@ -141,9 +165,17 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
{ {
bool color_enabled = config.getBool("logger.color_terminal", color_logs_by_default); bool color_enabled = config.getBool("logger.color_terminal", color_logs_by_default);
Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter(this, OwnPatternFormatter::ADD_NOTHING, color_enabled); auto console_log_level_string = config.getString("logger.console_log_level", log_level_string);
auto console_log_level = Poco::Logger::parseLevel(console_log_level_string);
if (console_log_level > max_log_level)
{
max_log_level = console_log_level;
}
Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter(color_enabled);
Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, new Poco::ConsoleChannel); Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, new Poco::ConsoleChannel);
logger.warning("Logging " + log_level + " to console"); logger.warning("Logging " + console_log_level_string + " to console");
log->setLevel(console_log_level);
split->addChannel(log); split->addChannel(log);
} }
@ -152,17 +184,17 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
logger.setChannel(split); logger.setChannel(split);
// Global logging level (it can be overridden for specific loggers). // Global logging level (it can be overridden for specific loggers).
logger.setLevel(log_level); logger.setLevel(max_log_level);
// Set level to all already created loggers // Set level to all already created loggers
std::vector<std::string> names; std::vector<std::string> names;
//logger_root = Logger::root(); //logger_root = Logger::root();
logger.root().names(names); logger.root().names(names);
for (const auto & name : names) for (const auto & name : names)
logger.root().get(name).setLevel(log_level); logger.root().get(name).setLevel(max_log_level);
// Attach to the root logger. // Attach to the root logger.
logger.root().setLevel(log_level); logger.root().setLevel(max_log_level);
logger.root().setChannel(logger.getChannel()); logger.root().setChannel(logger.getChannel());
// Explicitly specified log levels for specific loggers. // Explicitly specified log levels for specific loggers.

View File

@ -8,6 +8,7 @@
#include <Interpreters/TextLog.h> #include <Interpreters/TextLog.h>
#include "OwnSplitChannel.h" #include "OwnSplitChannel.h"
namespace Poco::Util namespace Poco::Util
{ {
class AbstractConfiguration; class AbstractConfiguration;
@ -21,16 +22,8 @@ public:
/// Close log files. On next log write files will be reopened. /// Close log files. On next log write files will be reopened.
void closeLogs(Poco::Logger & logger); void closeLogs(Poco::Logger & logger);
std::optional<size_t> getLayer() const
{
return layer; /// layer set in inheritor class BaseDaemonApplication.
}
void setTextLog(std::shared_ptr<DB::TextLog> log, int max_priority); void setTextLog(std::shared_ptr<DB::TextLog> log, int max_priority);
protected:
std::optional<size_t> layer;
private: private:
Poco::AutoPtr<Poco::FileChannel> log_file; Poco::AutoPtr<Poco::FileChannel> log_file;
Poco::AutoPtr<Poco::FileChannel> error_log_file; Poco::AutoPtr<Poco::FileChannel> error_log_file;

View File

@ -22,6 +22,9 @@ public:
void setLevel(Poco::Message::Priority priority_) { priority = priority_; } void setLevel(Poco::Message::Priority priority_) { priority = priority_; }
// Poco::Logger::parseLevel returns ints
void setLevel(int level) { priority = static_cast<Poco::Message::Priority>(level); }
void open() override void open() override
{ {
if (pChannel) if (pChannel)

View File

@ -13,31 +13,18 @@
#include "Loggers.h" #include "Loggers.h"
OwnPatternFormatter::OwnPatternFormatter(const Loggers * loggers_, OwnPatternFormatter::Options options_, bool color_) OwnPatternFormatter::OwnPatternFormatter(bool color_)
: Poco::PatternFormatter(""), loggers(loggers_), options(options_), color(color_) : Poco::PatternFormatter(""), color(color_)
{ {
} }
void OwnPatternFormatter::formatExtended(const DB::ExtendedLogMessage & msg_ext, std::string & text) void OwnPatternFormatter::formatExtended(const DB::ExtendedLogMessage & msg_ext, std::string & text) const
{ {
DB::WriteBufferFromString wb(text); DB::WriteBufferFromString wb(text);
const Poco::Message & msg = msg_ext.base; const Poco::Message & msg = msg_ext.base;
/// For syslog: tag must be before message and first whitespace.
/// This code is only used in Yandex.Metrika and unneeded in ClickHouse.
if ((options & ADD_LAYER_TAG) && loggers)
{
auto layer = loggers->getLayer();
if (layer)
{
writeCString("layer[", wb);
DB::writeIntText(*layer, wb);
writeCString("]: ", wb);
}
}
/// Change delimiters in date for compatibility with old logs. /// Change delimiters in date for compatibility with old logs.
DB::writeDateTimeText<'.', ':'>(msg_ext.time_seconds, wb); DB::writeDateTimeText<'.', ':'>(msg_ext.time_seconds, wb);

View File

@ -24,20 +24,11 @@ class Loggers;
class OwnPatternFormatter : public Poco::PatternFormatter class OwnPatternFormatter : public Poco::PatternFormatter
{ {
public: public:
/// ADD_LAYER_TAG is needed only for Yandex.Metrika, that share part of ClickHouse code. OwnPatternFormatter(bool color_ = false);
enum Options
{
ADD_NOTHING = 0,
ADD_LAYER_TAG = 1 << 0
};
OwnPatternFormatter(const Loggers * loggers_, Options options_ = ADD_NOTHING, bool color_ = false);
void format(const Poco::Message & msg, std::string & text) override; void format(const Poco::Message & msg, std::string & text) override;
void formatExtended(const DB::ExtendedLogMessage & msg_ext, std::string & text); void formatExtended(const DB::ExtendedLogMessage & msg_ext, std::string & text) const;
private: private:
const Loggers * loggers;
Options options;
bool color; bool color;
}; };

View File

@ -14,8 +14,8 @@ add_library (mysqlxx
target_include_directories (mysqlxx PUBLIC ..) target_include_directories (mysqlxx PUBLIC ..)
if (USE_INTERNAL_MYSQL_LIBRARY) if (USE_INTERNAL_MYSQL_LIBRARY)
target_include_directories (mysqlxx PUBLIC ${ClickHouse_SOURCE_DIR}/contrib/mariadb-connector-c/include) target_include_directories (mysqlxx PUBLIC "${ClickHouse_SOURCE_DIR}/contrib/mariadb-connector-c/include")
target_include_directories (mysqlxx PUBLIC ${ClickHouse_BINARY_DIR}/contrib/mariadb-connector-c/include) target_include_directories (mysqlxx PUBLIC "${ClickHouse_BINARY_DIR}/contrib/mariadb-connector-c/include")
else () else ()
set(PLATFORM_LIBRARIES ${CMAKE_DL_LIBS}) set(PLATFORM_LIBRARIES ${CMAKE_DL_LIBS})

View File

@ -159,9 +159,9 @@ public:
*/ */
Pool(const std::string & db_, Pool(const std::string & db_,
const std::string & server_, const std::string & server_,
const std::string & user_ = "", const std::string & user_,
const std::string & password_ = "", const std::string & password_,
unsigned port_ = 0, unsigned port_,
const std::string & socket_ = "", const std::string & socket_ = "",
unsigned connect_timeout_ = MYSQLXX_DEFAULT_TIMEOUT, unsigned connect_timeout_ = MYSQLXX_DEFAULT_TIMEOUT,
unsigned rw_timeout_ = MYSQLXX_DEFAULT_RW_TIMEOUT, unsigned rw_timeout_ = MYSQLXX_DEFAULT_RW_TIMEOUT,

View File

@ -447,69 +447,6 @@ inline SrcIter uneven_copy(SrcIter src_first,
std::integral_constant<bool, DEST_IS_SMALLER>{}); std::integral_constant<bool, DEST_IS_SMALLER>{});
} }
/* generate_to, fill in a fixed-size array of integral type using a SeedSeq
* (actually works for any random-access iterator)
*/
template <size_t size, typename SeedSeq, typename DestIter>
inline void generate_to_impl(SeedSeq&& generator, DestIter dest,
std::true_type)
{
generator.generate(dest, dest+size);
}
template <size_t size, typename SeedSeq, typename DestIter>
void generate_to_impl(SeedSeq&& generator, DestIter dest,
std::false_type)
{
typedef typename std::iterator_traits<DestIter>::value_type dest_t;
constexpr auto DEST_SIZE = sizeof(dest_t);
constexpr auto GEN_SIZE = sizeof(uint32_t);
constexpr bool GEN_IS_SMALLER = GEN_SIZE < DEST_SIZE;
constexpr size_t FROM_ELEMS =
GEN_IS_SMALLER
? size * ((DEST_SIZE+GEN_SIZE-1) / GEN_SIZE)
: (size + (GEN_SIZE / DEST_SIZE) - 1)
/ ((GEN_SIZE / DEST_SIZE) + GEN_IS_SMALLER);
// this odd code ^^^^^^^^^^^^^^^^^ is work-around for
// a bug: http://llvm.org/bugs/show_bug.cgi?id=21287
if (FROM_ELEMS <= 1024) {
uint32_t buffer[FROM_ELEMS];
generator.generate(buffer, buffer+FROM_ELEMS);
uneven_copy(buffer, dest, dest+size);
} else {
uint32_t* buffer = static_cast<uint32_t*>(malloc(GEN_SIZE * FROM_ELEMS));
generator.generate(buffer, buffer+FROM_ELEMS);
uneven_copy(buffer, dest, dest+size);
free(static_cast<void*>(buffer));
}
}
template <size_t size, typename SeedSeq, typename DestIter>
inline void generate_to(SeedSeq&& generator, DestIter dest)
{
typedef typename std::iterator_traits<DestIter>::value_type dest_t;
constexpr bool IS_32BIT = sizeof(dest_t) == sizeof(uint32_t);
generate_to_impl<size>(std::forward<SeedSeq>(generator), dest,
std::integral_constant<bool, IS_32BIT>{});
}
/* generate_one, produce a value of integral type using a SeedSeq
* (optionally, we can have it produce more than one and pick which one
* we want)
*/
template <typename UInt, size_t i = 0UL, size_t N = i+1UL, typename SeedSeq>
inline UInt generate_one(SeedSeq&& generator)
{
UInt result[N];
generate_to<N>(std::forward<SeedSeq>(generator), result);
return result[i];
}
template <typename RngType> template <typename RngType>
auto bounded_rand(RngType& rng, typename RngType::result_type upper_bound) auto bounded_rand(RngType& rng, typename RngType::result_type upper_bound)
-> typename RngType::result_type -> typename RngType::result_type
@ -517,7 +454,7 @@ auto bounded_rand(RngType& rng, typename RngType::result_type upper_bound)
typedef typename RngType::result_type rtype; typedef typename RngType::result_type rtype;
rtype threshold = (RngType::max() - RngType::min() + rtype(1) - upper_bound) rtype threshold = (RngType::max() - RngType::min() + rtype(1) - upper_bound)
% upper_bound; % upper_bound;
for (;;) { for (;;) { //-V1044
rtype r = rng() - RngType::min(); rtype r = rng() - RngType::min();
if (r >= threshold) if (r >= threshold)
return r % upper_bound; return r % upper_bound;

View File

@ -928,7 +928,7 @@ struct rxs_m_xs_mixin {
constexpr bitcount_t shift = bits - xtypebits; constexpr bitcount_t shift = bits - xtypebits;
constexpr bitcount_t mask = (1 << opbits) - 1; constexpr bitcount_t mask = (1 << opbits) - 1;
bitcount_t rshift = bitcount_t rshift =
opbits ? bitcount_t(internal >> (bits - opbits)) & mask : 0; opbits ? bitcount_t(internal >> (bits - opbits)) & mask : 0; //-V547
internal ^= internal >> (opbits + rshift); internal ^= internal >> (opbits + rshift);
internal *= mcg_multiplier<itype>::multiplier(); internal *= mcg_multiplier<itype>::multiplier();
xtype result = internal >> shift; xtype result = internal >> shift;
@ -950,7 +950,7 @@ struct rxs_m_xs_mixin {
internal *= mcg_unmultiplier<itype>::unmultiplier(); internal *= mcg_unmultiplier<itype>::unmultiplier();
bitcount_t rshift = opbits ? (internal >> (bits - opbits)) & mask : 0; bitcount_t rshift = opbits ? (internal >> (bits - opbits)) & mask : 0; //-V547
internal = unxorshift(internal, bits, opbits + rshift); internal = unxorshift(internal, bits, opbits + rshift);
return internal; return internal;
@ -975,7 +975,7 @@ struct rxs_m_mixin {
: 2; : 2;
constexpr bitcount_t shift = bits - xtypebits; constexpr bitcount_t shift = bits - xtypebits;
constexpr bitcount_t mask = (1 << opbits) - 1; constexpr bitcount_t mask = (1 << opbits) - 1;
bitcount_t rshift = opbits ? (internal >> (bits - opbits)) & mask : 0; bitcount_t rshift = opbits ? (internal >> (bits - opbits)) & mask : 0; //-V547
internal ^= internal >> (opbits + rshift); internal ^= internal >> (opbits + rshift);
internal *= mcg_multiplier<itype>::multiplier(); internal *= mcg_multiplier<itype>::multiplier();
xtype result = internal >> shift; xtype result = internal >> shift;
@ -1366,7 +1366,7 @@ void extended<table_pow2,advance_pow2,baseclass,extvalclass,kdd>::selfinit()
// - any strange correlations would only be apparent if we // - any strange correlations would only be apparent if we
// were to backstep the generator so that the base generator // were to backstep the generator so that the base generator
// was generating the same values again // was generating the same values again
result_type xdiff = baseclass::operator()() - baseclass::operator()(); result_type xdiff = baseclass::operator()() - baseclass::operator()(); //-V501
for (size_t i = 0; i < table_size; ++i) { for (size_t i = 0; i < table_size; ++i) {
data_[i] = baseclass::operator()() ^ xdiff; data_[i] = baseclass::operator()() ^ xdiff;
} }
@ -1643,22 +1643,22 @@ typedef setseq_base<pcg128_t, pcg128_t, xsl_rr_rr_mixin>
template <bitcount_t table_pow2, bitcount_t advance_pow2, template <bitcount_t table_pow2, bitcount_t advance_pow2,
typename BaseRNG, bool kdd = true> typename BaseRNG, bool kdd = true>
using ext_std8 = extended<table_pow2, advance_pow2, BaseRNG, using ext_std8 = pcg_detail::extended<table_pow2, advance_pow2, BaseRNG,
oneseq_rxs_m_xs_8_8, kdd>; oneseq_rxs_m_xs_8_8, kdd>;
template <bitcount_t table_pow2, bitcount_t advance_pow2, template <bitcount_t table_pow2, bitcount_t advance_pow2,
typename BaseRNG, bool kdd = true> typename BaseRNG, bool kdd = true>
using ext_std16 = extended<table_pow2, advance_pow2, BaseRNG, using ext_std16 = pcg_detail::extended<table_pow2, advance_pow2, BaseRNG,
oneseq_rxs_m_xs_16_16, kdd>; oneseq_rxs_m_xs_16_16, kdd>;
template <bitcount_t table_pow2, bitcount_t advance_pow2, template <bitcount_t table_pow2, bitcount_t advance_pow2,
typename BaseRNG, bool kdd = true> typename BaseRNG, bool kdd = true>
using ext_std32 = extended<table_pow2, advance_pow2, BaseRNG, using ext_std32 = pcg_detail::extended<table_pow2, advance_pow2, BaseRNG,
oneseq_rxs_m_xs_32_32, kdd>; oneseq_rxs_m_xs_32_32, kdd>;
template <bitcount_t table_pow2, bitcount_t advance_pow2, template <bitcount_t table_pow2, bitcount_t advance_pow2,
typename BaseRNG, bool kdd = true> typename BaseRNG, bool kdd = true>
using ext_std64 = extended<table_pow2, advance_pow2, BaseRNG, using ext_std64 = pcg_detail::extended<table_pow2, advance_pow2, BaseRNG,
oneseq_rxs_m_xs_64_64, kdd>; oneseq_rxs_m_xs_64_64, kdd>;

View File

@ -1,7 +1,7 @@
if (CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64") if (CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64")
set (ARCH_AMD64 1) set (ARCH_AMD64 1)
endif () endif ()
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)")
set (ARCH_AARCH64 1) set (ARCH_AARCH64 1)
endif () endif ()
if (ARCH_AARCH64 OR CMAKE_SYSTEM_PROCESSOR MATCHES "arm") if (ARCH_AARCH64 OR CMAKE_SYSTEM_PROCESSOR MATCHES "arm")

View File

@ -1,9 +1,9 @@
# This strings autochanged from release_lib.sh: # This strings autochanged from release_lib.sh:
SET(VERSION_REVISION 54450) SET(VERSION_REVISION 54451)
SET(VERSION_MAJOR 21) SET(VERSION_MAJOR 21)
SET(VERSION_MINOR 5) SET(VERSION_MINOR 6)
SET(VERSION_PATCH 1) SET(VERSION_PATCH 1)
SET(VERSION_GITHASH 3827789b3d8fd2021952e57e5110343d26daa1a1) SET(VERSION_GITHASH 96fced4c3cf432fb0b401d2ab01f0c56e5f74a96)
SET(VERSION_DESCRIBE v21.5.1.1-prestable) SET(VERSION_DESCRIBE v21.6.1.1-prestable)
SET(VERSION_STRING 21.5.1.1) SET(VERSION_STRING 21.6.1.1)
# end of autochange # end of autochange

6
cmake/check_flags.cmake Normal file
View File

@ -0,0 +1,6 @@
include (CheckCXXCompilerFlag)
include (CheckCCompilerFlag)
check_cxx_compiler_flag("-Wsuggest-destructor-override" HAS_SUGGEST_DESTRUCTOR_OVERRIDE)
check_cxx_compiler_flag("-Wshadow" HAS_SHADOW)
check_cxx_compiler_flag("-Wsuggest-override" HAS_SUGGEST_OVERRIDE)

View File

@ -1,11 +1,14 @@
set (DEFAULT_LIBS "-nodefaultlibs") set (DEFAULT_LIBS "-nodefaultlibs")
if (NOT COMPILER_CLANG)
message (FATAL_ERROR "Darwin build is supported only for Clang")
endif ()
set (DEFAULT_LIBS "${DEFAULT_LIBS} ${COVERAGE_OPTION} -lc -lm -lpthread -ldl") set (DEFAULT_LIBS "${DEFAULT_LIBS} ${COVERAGE_OPTION} -lc -lm -lpthread -ldl")
if (COMPILER_GCC)
set (DEFAULT_LIBS "${DEFAULT_LIBS} -lgcc_eh")
if (ARCH_AARCH64)
set (DEFAULT_LIBS "${DEFAULT_LIBS} -lgcc")
endif ()
endif ()
message(STATUS "Default libraries: ${DEFAULT_LIBS}") message(STATUS "Default libraries: ${DEFAULT_LIBS}")
set(CMAKE_CXX_STANDARD_LIBRARIES ${DEFAULT_LIBS}) set(CMAKE_CXX_STANDARD_LIBRARIES ${DEFAULT_LIBS})

View File

@ -0,0 +1,14 @@
set (CMAKE_SYSTEM_NAME "Darwin")
set (CMAKE_SYSTEM_PROCESSOR "aarch64")
set (CMAKE_C_COMPILER_TARGET "aarch64-apple-darwin")
set (CMAKE_CXX_COMPILER_TARGET "aarch64-apple-darwin")
set (CMAKE_ASM_COMPILER_TARGET "aarch64-apple-darwin")
set (CMAKE_OSX_SYSROOT "${CMAKE_CURRENT_LIST_DIR}/../toolchain/darwin-aarch64")
set (CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # disable linkage check - it doesn't work in CMake
set (HAS_PRE_1970_EXITCODE "0" CACHE STRING "Result from TRY_RUN" FORCE)
set (HAS_PRE_1970_EXITCODE__TRYRUN_OUTPUT "" CACHE STRING "Output from TRY_RUN" FORCE)
set (HAS_POST_2038_EXITCODE "0" CACHE STRING "Result from TRY_RUN" FORCE)
set (HAS_POST_2038_EXITCODE__TRYRUN_OUTPUT "" CACHE STRING "Output from TRY_RUN" FORCE)

View File

@ -1,3 +1,8 @@
if (MISSING_INTERNAL_LIBUV_LIBRARY)
message (WARNING "Can't find internal libuv needed for AMQP-CPP library")
set (ENABLE_AMQPCPP OFF CACHE INTERNAL "")
endif()
option(ENABLE_AMQPCPP "Enalbe AMQP-CPP" ${ENABLE_LIBRARIES}) option(ENABLE_AMQPCPP "Enalbe AMQP-CPP" ${ENABLE_LIBRARIES})
if (NOT ENABLE_AMQPCPP) if (NOT ENABLE_AMQPCPP)
@ -12,11 +17,13 @@ if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/CMakeLists.txt")
endif () endif ()
set (USE_AMQPCPP 1) set (USE_AMQPCPP 1)
set (AMQPCPP_LIBRARY AMQP-CPP) set (AMQPCPP_LIBRARY amqp-cpp)
set (AMQPCPP_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/include") set (AMQPCPP_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/include")
list (APPEND AMQPCPP_INCLUDE_DIR list (APPEND AMQPCPP_INCLUDE_DIR
"${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/include" "${LIBUV_INCLUDE_DIR}"
"${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP") "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP")
list (APPEND AMQPCPP_LIBRARY "${LIBUV_LIBRARY}")
message (STATUS "Using AMQP-CPP=${USE_AMQPCPP}: ${AMQPCPP_INCLUDE_DIR} : ${AMQPCPP_LIBRARY}") message (STATUS "Using AMQP-CPP=${USE_AMQPCPP}: ${AMQPCPP_INCLUDE_DIR} : ${AMQPCPP_LIBRARY}")

View File

@ -1,3 +1,8 @@
if (MISSING_INTERNAL_LIBUV_LIBRARY)
message (WARNING "Disabling cassandra due to missing libuv")
set (ENABLE_CASSANDRA OFF CACHE INTERNAL "")
endif()
option(ENABLE_CASSANDRA "Enable Cassandra" ${ENABLE_LIBRARIES}) option(ENABLE_CASSANDRA "Enable Cassandra" ${ENABLE_LIBRARIES})
if (NOT ENABLE_CASSANDRA) if (NOT ENABLE_CASSANDRA)
@ -8,27 +13,22 @@ if (APPLE)
set(CMAKE_MACOSX_RPATH ON) set(CMAKE_MACOSX_RPATH ON)
endif() endif()
if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libuv") if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/cassandra")
message (ERROR "submodule contrib/libuv is missing. to fix try run: \n git submodule update --init --recursive")
message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find internal libuv needed for Cassandra")
elseif (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/cassandra")
message (ERROR "submodule contrib/cassandra is missing. to fix try run: \n git submodule update --init --recursive") message (ERROR "submodule contrib/cassandra is missing. to fix try run: \n git submodule update --init --recursive")
message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find internal Cassandra") message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find internal Cassandra")
else() set (USE_CASSANDRA 0)
set (LIBUV_ROOT_DIR "${ClickHouse_SOURCE_DIR}/contrib/libuv") return()
set (CASSANDRA_INCLUDE_DIR
"${ClickHouse_SOURCE_DIR}/contrib/cassandra/include/")
if (MAKE_STATIC_LIBRARIES)
set (LIBUV_LIBRARY uv_a)
set (CASSANDRA_LIBRARY cassandra_static)
else()
set (LIBUV_LIBRARY uv)
set (CASSANDRA_LIBRARY cassandra)
endif()
set (USE_CASSANDRA 1)
set (CASS_ROOT_DIR "${ClickHouse_SOURCE_DIR}/contrib/cassandra")
endif() endif()
set (USE_CASSANDRA 1)
set (CASSANDRA_INCLUDE_DIR
"${ClickHouse_SOURCE_DIR}/contrib/cassandra/include/")
if (MAKE_STATIC_LIBRARIES)
set (CASSANDRA_LIBRARY cassandra_static)
else()
set (CASSANDRA_LIBRARY cassandra)
endif()
set (CASS_ROOT_DIR "${ClickHouse_SOURCE_DIR}/contrib/cassandra")
message (STATUS "Using cassandra=${USE_CASSANDRA}: ${CASSANDRA_INCLUDE_DIR} : ${CASSANDRA_LIBRARY}") message (STATUS "Using cassandra=${USE_CASSANDRA}: ${CASSANDRA_INCLUDE_DIR} : ${CASSANDRA_LIBRARY}")
message (STATUS "Using libuv: ${LIBUV_ROOT_DIR} : ${LIBUV_LIBRARY}")

View File

@ -32,7 +32,9 @@ if (CCACHE_FOUND AND NOT COMPILER_MATCHES_CCACHE)
if (CCACHE_VERSION VERSION_GREATER "3.2.0" OR NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang") if (CCACHE_VERSION VERSION_GREATER "3.2.0" OR NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
message(STATUS "Using ${CCACHE_FOUND} ${CCACHE_VERSION}") message(STATUS "Using ${CCACHE_FOUND} ${CCACHE_VERSION}")
set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_FOUND}) set (CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_FOUND} ${CMAKE_CXX_COMPILER_LAUNCHER})
set (CMAKE_C_COMPILER_LAUNCHER ${CCACHE_FOUND} ${CMAKE_C_COMPILER_LAUNCHER})
set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE_FOUND}) set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE_FOUND})
# debian (debhelpers) set SOURCE_DATE_EPOCH environment variable, that is # debian (debhelpers) set SOURCE_DATE_EPOCH environment variable, that is

View File

@ -64,7 +64,8 @@ if (NOT OPENLDAP_FOUND AND NOT MISSING_INTERNAL_LDAP_LIBRARY)
( "${_system_name}" STREQUAL "linux" AND "${_system_processor}" STREQUAL "aarch64" ) OR ( "${_system_name}" STREQUAL "linux" AND "${_system_processor}" STREQUAL "aarch64" ) OR
( "${_system_name}" STREQUAL "linux" AND "${_system_processor}" STREQUAL "ppc64le" ) OR ( "${_system_name}" STREQUAL "linux" AND "${_system_processor}" STREQUAL "ppc64le" ) OR
( "${_system_name}" STREQUAL "freebsd" AND "${_system_processor}" STREQUAL "x86_64" ) OR ( "${_system_name}" STREQUAL "freebsd" AND "${_system_processor}" STREQUAL "x86_64" ) OR
( "${_system_name}" STREQUAL "darwin" AND "${_system_processor}" STREQUAL "x86_64" ) ( "${_system_name}" STREQUAL "darwin" AND "${_system_processor}" STREQUAL "x86_64" ) OR
( "${_system_name}" STREQUAL "darwin" AND "${_system_processor}" STREQUAL "aarch64" )
) )
set (_ldap_supported_platform TRUE) set (_ldap_supported_platform TRUE)
endif () endif ()

22
cmake/find/libuv.cmake Normal file
View File

@ -0,0 +1,22 @@
if (OS_DARWIN AND COMPILER_GCC)
message (WARNING "libuv cannot be built with GCC in macOS due to a bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93082")
SET(MISSING_INTERNAL_LIBUV_LIBRARY 1)
return()
endif()
if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libuv")
message (WARNING "submodule contrib/libuv is missing. to fix try run: \n git submodule update --init --recursive")
SET(MISSING_INTERNAL_LIBUV_LIBRARY 1)
return()
endif()
if (MAKE_STATIC_LIBRARIES)
set (LIBUV_LIBRARY uv_a)
else()
set (LIBUV_LIBRARY uv)
endif()
set (LIBUV_ROOT_DIR "${ClickHouse_SOURCE_DIR}/contrib/libuv")
set (LIBUV_INCLUDE_DIR "${LIBUV_ROOT_DIR}/include")
message (STATUS "Using libuv: ${LIBUV_ROOT_DIR} : ${LIBUV_LIBRARY}")

View File

@ -2,7 +2,7 @@ if (APPLE OR SPLIT_SHARED_LIBRARIES OR NOT ARCH_AMD64)
set (ENABLE_EMBEDDED_COMPILER OFF CACHE INTERNAL "") set (ENABLE_EMBEDDED_COMPILER OFF CACHE INTERNAL "")
endif() endif()
option (ENABLE_EMBEDDED_COMPILER "Set to TRUE to enable support for 'compile_expressions' option for query execution" ${ENABLE_LIBRARIES}) option (ENABLE_EMBEDDED_COMPILER "Enable support for 'compile_expressions' option for query execution" ON)
# Broken in macos. TODO: update clang, re-test, enable on Apple # Broken in macos. TODO: update clang, re-test, enable on Apple
if (ENABLE_EMBEDDED_COMPILER AND NOT SPLIT_SHARED_LIBRARIES AND ARCH_AMD64 AND NOT (SANITIZE STREQUAL "undefined")) if (ENABLE_EMBEDDED_COMPILER AND NOT SPLIT_SHARED_LIBRARIES AND ARCH_AMD64 AND NOT (SANITIZE STREQUAL "undefined"))
option (USE_INTERNAL_LLVM_LIBRARY "Use bundled or system LLVM library." ${NOT_UNBUNDLED}) option (USE_INTERNAL_LLVM_LIBRARY "Use bundled or system LLVM library." ${NOT_UNBUNDLED})
@ -24,9 +24,9 @@ if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/llvm/llvm/CMakeLists.txt")
endif () endif ()
if (NOT USE_INTERNAL_LLVM_LIBRARY) if (NOT USE_INTERNAL_LLVM_LIBRARY)
set (LLVM_PATHS "/usr/local/lib/llvm") set (LLVM_PATHS "/usr/local/lib/llvm" "/usr/lib/llvm")
foreach(llvm_v 10 9 8) foreach(llvm_v 11.1 11)
if (NOT LLVM_FOUND) if (NOT LLVM_FOUND)
find_package (LLVM ${llvm_v} CONFIG PATHS ${LLVM_PATHS}) find_package (LLVM ${llvm_v} CONFIG PATHS ${LLVM_PATHS})
endif () endif ()
@ -102,7 +102,6 @@ LLVMRuntimeDyld
LLVMX86CodeGen LLVMX86CodeGen
LLVMX86Desc LLVMX86Desc
LLVMX86Info LLVMX86Info
LLVMX86Utils
LLVMAsmPrinter LLVMAsmPrinter
LLVMDebugInfoDWARF LLVMDebugInfoDWARF
LLVMGlobalISel LLVMGlobalISel

16
cmake/find/nanodbc.cmake Normal file
View File

@ -0,0 +1,16 @@
if (NOT ENABLE_ODBC)
return ()
endif ()
if (NOT USE_INTERNAL_NANODBC_LIBRARY)
message (FATAL_ERROR "Only the bundled nanodbc library can be used")
endif ()
if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/nanodbc/CMakeLists.txt")
message (FATAL_ERROR "submodule contrib/nanodbc is missing. to fix try run: \n git submodule update --init --recursive")
endif()
set (NANODBC_LIBRARY nanodbc)
set (NANODBC_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/nanodbc/nanodbc")
message (STATUS "Using nanodbc: ${NANODBC_INCLUDE_DIR} : ${NANODBC_LIBRARY}")

View File

@ -11,7 +11,7 @@ if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/NuRaft/CMakeLists.txt")
return() return()
endif () endif ()
if (NOT OS_FREEBSD AND NOT OS_DARWIN) if (NOT OS_FREEBSD)
set (USE_NURAFT 1) set (USE_NURAFT 1)
set (NURAFT_LIBRARY nuraft) set (NURAFT_LIBRARY nuraft)

View File

@ -50,4 +50,6 @@ if (NOT EXTERNAL_ODBC_LIBRARY_FOUND)
set (USE_INTERNAL_ODBC_LIBRARY 1) set (USE_INTERNAL_ODBC_LIBRARY 1)
endif () endif ()
set (USE_INTERNAL_NANODBC_LIBRARY 1)
message (STATUS "Using unixodbc") message (STATUS "Using unixodbc")

View File

@ -1,3 +1,7 @@
if (OS_DARWIN AND ARCH_AARCH64)
set (ENABLE_ROCKSDB OFF CACHE INTERNAL "")
endif()
option(ENABLE_ROCKSDB "Enable ROCKSDB" ${ENABLE_LIBRARIES}) option(ENABLE_ROCKSDB "Enable ROCKSDB" ${ENABLE_LIBRARIES})
if (NOT ENABLE_ROCKSDB) if (NOT ENABLE_ROCKSDB)

View File

@ -40,7 +40,7 @@ if (SANITIZE)
# RelWithDebInfo, and downgrade optimizations to -O1 but not to -Og, to # RelWithDebInfo, and downgrade optimizations to -O1 but not to -Og, to
# keep the binary size down. # keep the binary size down.
# TODO: try compiling with -Og and with ld.gold. # TODO: try compiling with -Og and with ld.gold.
set (MSAN_FLAGS "-fsanitize=memory -fsanitize-memory-track-origins -fno-optimize-sibling-calls -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/tests/msan_suppressions.txt") set (MSAN_FLAGS "-fsanitize=memory -fsanitize-memory-use-after-dtor -fsanitize-memory-track-origins -fno-optimize-sibling-calls -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/tests/msan_suppressions.txt")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SAN_FLAGS} ${MSAN_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SAN_FLAGS} ${MSAN_FLAGS}")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SAN_FLAGS} ${MSAN_FLAGS}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SAN_FLAGS} ${MSAN_FLAGS}")

View File

@ -12,6 +12,9 @@ elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin") elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
set (OS_DARWIN 1) set (OS_DARWIN 1)
add_definitions(-D OS_DARWIN) add_definitions(-D OS_DARWIN)
elseif (CMAKE_SYSTEM_NAME MATCHES "SunOS")
set (OS_SUNOS 1)
add_definitions(-D OS_SUNOS)
endif () endif ()
if (CMAKE_CROSSCOMPILING) if (CMAKE_CROSSCOMPILING)

View File

@ -8,10 +8,13 @@ endif ()
if (COMPILER_GCC) if (COMPILER_GCC)
# Require minimum version of gcc # Require minimum version of gcc
set (GCC_MINIMUM_VERSION 9) set (GCC_MINIMUM_VERSION 10)
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${GCC_MINIMUM_VERSION} AND NOT CMAKE_VERSION VERSION_LESS 2.8.9) if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${GCC_MINIMUM_VERSION} AND NOT CMAKE_VERSION VERSION_LESS 2.8.9)
message (FATAL_ERROR "GCC version must be at least ${GCC_MINIMUM_VERSION}. For example, if GCC ${GCC_MINIMUM_VERSION} is available under gcc-${GCC_MINIMUM_VERSION}, g++-${GCC_MINIMUM_VERSION} names, do the following: export CC=gcc-${GCC_MINIMUM_VERSION} CXX=g++-${GCC_MINIMUM_VERSION}; rm -rf CMakeCache.txt CMakeFiles; and re run cmake or ./release.") message (FATAL_ERROR "GCC version must be at least ${GCC_MINIMUM_VERSION}. For example, if GCC ${GCC_MINIMUM_VERSION} is available under gcc-${GCC_MINIMUM_VERSION}, g++-${GCC_MINIMUM_VERSION} names, do the following: export CC=gcc-${GCC_MINIMUM_VERSION} CXX=g++-${GCC_MINIMUM_VERSION}; rm -rf CMakeCache.txt CMakeFiles; and re run cmake or ./release.")
endif () endif ()
message (WARNING "GCC compiler is not officially supported for ClickHouse. You should migrate to clang.")
elseif (COMPILER_CLANG) elseif (COMPILER_CLANG)
# Require minimum version of clang/apple-clang # Require minimum version of clang/apple-clang
if (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") if (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")

View File

@ -171,6 +171,7 @@ elseif (COMPILER_GCC)
add_cxx_compile_options(-Wtrampolines) add_cxx_compile_options(-Wtrampolines)
# Obvious # Obvious
add_cxx_compile_options(-Wunused) add_cxx_compile_options(-Wunused)
add_cxx_compile_options(-Wundef)
# Warn if vector operation is not implemented via SIMD capabilities of the architecture # Warn if vector operation is not implemented via SIMD capabilities of the architecture
add_cxx_compile_options(-Wvector-operation-performance) add_cxx_compile_options(-Wvector-operation-performance)
# XXX: libstdc++ has some of these for 3way compare # XXX: libstdc++ has some of these for 3way compare

View File

@ -1,4 +1,3 @@
# Third-party libraries may have substandard code.
# Put all targets defined here and in added subfolders under "contrib/" folder in GUI-based IDEs by default. # Put all targets defined here and in added subfolders under "contrib/" folder in GUI-based IDEs by default.
# Some of third-party projects may override CMAKE_FOLDER or FOLDER property of their targets, so they will # Some of third-party projects may override CMAKE_FOLDER or FOLDER property of their targets, so they will
@ -11,8 +10,10 @@ else ()
endif () endif ()
unset (_current_dir_name) unset (_current_dir_name)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") # Third-party libraries may have substandard code.
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") # Also remove a possible source of nondeterminism.
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w -D__DATE__= -D__TIME__= -D__TIMESTAMP__=")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w -D__DATE__= -D__TIME__= -D__TIMESTAMP__=")
if (WITH_COVERAGE) if (WITH_COVERAGE)
set (WITHOUT_COVERAGE_LIST ${WITHOUT_COVERAGE}) set (WITHOUT_COVERAGE_LIST ${WITHOUT_COVERAGE})
@ -47,7 +48,11 @@ add_subdirectory (lz4-cmake)
add_subdirectory (murmurhash) add_subdirectory (murmurhash)
add_subdirectory (replxx-cmake) add_subdirectory (replxx-cmake)
add_subdirectory (unixodbc-cmake) add_subdirectory (unixodbc-cmake)
add_subdirectory (xz) add_subdirectory (nanodbc-cmake)
if (USE_INTERNAL_XZ_LIBRARY)
add_subdirectory (xz)
endif()
add_subdirectory (poco-cmake) add_subdirectory (poco-cmake)
add_subdirectory (croaring-cmake) add_subdirectory (croaring-cmake)
@ -93,14 +98,8 @@ if (USE_INTERNAL_ZLIB_LIBRARY)
add_subdirectory (${INTERNAL_ZLIB_NAME}) add_subdirectory (${INTERNAL_ZLIB_NAME})
# We should use same defines when including zlib.h as used when zlib compiled # We should use same defines when including zlib.h as used when zlib compiled
target_compile_definitions (zlib PUBLIC ZLIB_COMPAT WITH_GZFILEOP) target_compile_definitions (zlib PUBLIC ZLIB_COMPAT WITH_GZFILEOP)
if (TARGET zlibstatic)
target_compile_definitions (zlibstatic PUBLIC ZLIB_COMPAT WITH_GZFILEOP)
endif ()
if (ARCH_AMD64 OR ARCH_AARCH64) if (ARCH_AMD64 OR ARCH_AARCH64)
target_compile_definitions (zlib PUBLIC X86_64 UNALIGNED_OK) target_compile_definitions (zlib PUBLIC X86_64 UNALIGNED_OK)
if (TARGET zlibstatic)
target_compile_definitions (zlibstatic PUBLIC X86_64 UNALIGNED_OK)
endif ()
endif () endif ()
endif () endif ()

2
contrib/NuRaft vendored

@ -1 +1 @@
Subproject commit 241fd3754a1eb4d82ab68a9a875dc99391ec9f02 Subproject commit 95d6bbba579b3a4e4c2dede954f541ff6f3dba51

View File

@ -1,25 +1,25 @@
set (LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP) set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP")
set (SRCS set (SRCS
${LIBRARY_DIR}/src/array.cpp "${LIBRARY_DIR}/src/array.cpp"
${LIBRARY_DIR}/src/channel.cpp "${LIBRARY_DIR}/src/channel.cpp"
${LIBRARY_DIR}/src/channelimpl.cpp "${LIBRARY_DIR}/src/channelimpl.cpp"
${LIBRARY_DIR}/src/connectionimpl.cpp "${LIBRARY_DIR}/src/connectionimpl.cpp"
${LIBRARY_DIR}/src/deferredcancel.cpp "${LIBRARY_DIR}/src/deferredcancel.cpp"
${LIBRARY_DIR}/src/deferredconfirm.cpp "${LIBRARY_DIR}/src/deferredconfirm.cpp"
${LIBRARY_DIR}/src/deferredconsumer.cpp "${LIBRARY_DIR}/src/deferredconsumer.cpp"
${LIBRARY_DIR}/src/deferredextreceiver.cpp "${LIBRARY_DIR}/src/deferredextreceiver.cpp"
${LIBRARY_DIR}/src/deferredget.cpp "${LIBRARY_DIR}/src/deferredget.cpp"
${LIBRARY_DIR}/src/deferredpublisher.cpp "${LIBRARY_DIR}/src/deferredpublisher.cpp"
${LIBRARY_DIR}/src/deferredreceiver.cpp "${LIBRARY_DIR}/src/deferredreceiver.cpp"
${LIBRARY_DIR}/src/field.cpp "${LIBRARY_DIR}/src/field.cpp"
${LIBRARY_DIR}/src/flags.cpp "${LIBRARY_DIR}/src/flags.cpp"
${LIBRARY_DIR}/src/linux_tcp/openssl.cpp "${LIBRARY_DIR}/src/linux_tcp/openssl.cpp"
${LIBRARY_DIR}/src/linux_tcp/tcpconnection.cpp "${LIBRARY_DIR}/src/linux_tcp/tcpconnection.cpp"
${LIBRARY_DIR}/src/inbuffer.cpp "${LIBRARY_DIR}/src/inbuffer.cpp"
${LIBRARY_DIR}/src/receivedframe.cpp "${LIBRARY_DIR}/src/receivedframe.cpp"
${LIBRARY_DIR}/src/table.cpp "${LIBRARY_DIR}/src/table.cpp"
${LIBRARY_DIR}/src/watchable.cpp "${LIBRARY_DIR}/src/watchable.cpp"
) )
add_library(amqp-cpp ${SRCS}) add_library(amqp-cpp ${SRCS})
@ -39,7 +39,7 @@ target_compile_options (amqp-cpp
-w -w
) )
target_include_directories (amqp-cpp SYSTEM PUBLIC ${LIBRARY_DIR}/include) target_include_directories (amqp-cpp SYSTEM PUBLIC "${LIBRARY_DIR}/include")
target_link_libraries (amqp-cpp PUBLIC ssl) target_link_libraries (amqp-cpp PUBLIC ssl)

@ -1 +1 @@
Subproject commit a2fa7b76e2ee16d2ad955e9214a90bbf79da66fc Subproject commit 672643e9a427ef803abf13bc8cb4989606553d64

View File

@ -1,154 +1,154 @@
set (LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/antlr4-runtime) set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/antlr4-runtime")
set (SRCS set (SRCS
${LIBRARY_DIR}/ANTLRErrorListener.cpp "${LIBRARY_DIR}/ANTLRErrorListener.cpp"
${LIBRARY_DIR}/ANTLRErrorStrategy.cpp "${LIBRARY_DIR}/ANTLRErrorStrategy.cpp"
${LIBRARY_DIR}/ANTLRFileStream.cpp "${LIBRARY_DIR}/ANTLRFileStream.cpp"
${LIBRARY_DIR}/ANTLRInputStream.cpp "${LIBRARY_DIR}/ANTLRInputStream.cpp"
${LIBRARY_DIR}/atn/AbstractPredicateTransition.cpp "${LIBRARY_DIR}/atn/AbstractPredicateTransition.cpp"
${LIBRARY_DIR}/atn/ActionTransition.cpp "${LIBRARY_DIR}/atn/ActionTransition.cpp"
${LIBRARY_DIR}/atn/AmbiguityInfo.cpp "${LIBRARY_DIR}/atn/AmbiguityInfo.cpp"
${LIBRARY_DIR}/atn/ArrayPredictionContext.cpp "${LIBRARY_DIR}/atn/ArrayPredictionContext.cpp"
${LIBRARY_DIR}/atn/ATN.cpp "${LIBRARY_DIR}/atn/ATN.cpp"
${LIBRARY_DIR}/atn/ATNConfig.cpp "${LIBRARY_DIR}/atn/ATNConfig.cpp"
${LIBRARY_DIR}/atn/ATNConfigSet.cpp "${LIBRARY_DIR}/atn/ATNConfigSet.cpp"
${LIBRARY_DIR}/atn/ATNDeserializationOptions.cpp "${LIBRARY_DIR}/atn/ATNDeserializationOptions.cpp"
${LIBRARY_DIR}/atn/ATNDeserializer.cpp "${LIBRARY_DIR}/atn/ATNDeserializer.cpp"
${LIBRARY_DIR}/atn/ATNSerializer.cpp "${LIBRARY_DIR}/atn/ATNSerializer.cpp"
${LIBRARY_DIR}/atn/ATNSimulator.cpp "${LIBRARY_DIR}/atn/ATNSimulator.cpp"
${LIBRARY_DIR}/atn/ATNState.cpp "${LIBRARY_DIR}/atn/ATNState.cpp"
${LIBRARY_DIR}/atn/AtomTransition.cpp "${LIBRARY_DIR}/atn/AtomTransition.cpp"
${LIBRARY_DIR}/atn/BasicBlockStartState.cpp "${LIBRARY_DIR}/atn/BasicBlockStartState.cpp"
${LIBRARY_DIR}/atn/BasicState.cpp "${LIBRARY_DIR}/atn/BasicState.cpp"
${LIBRARY_DIR}/atn/BlockEndState.cpp "${LIBRARY_DIR}/atn/BlockEndState.cpp"
${LIBRARY_DIR}/atn/BlockStartState.cpp "${LIBRARY_DIR}/atn/BlockStartState.cpp"
${LIBRARY_DIR}/atn/ContextSensitivityInfo.cpp "${LIBRARY_DIR}/atn/ContextSensitivityInfo.cpp"
${LIBRARY_DIR}/atn/DecisionEventInfo.cpp "${LIBRARY_DIR}/atn/DecisionEventInfo.cpp"
${LIBRARY_DIR}/atn/DecisionInfo.cpp "${LIBRARY_DIR}/atn/DecisionInfo.cpp"
${LIBRARY_DIR}/atn/DecisionState.cpp "${LIBRARY_DIR}/atn/DecisionState.cpp"
${LIBRARY_DIR}/atn/EmptyPredictionContext.cpp "${LIBRARY_DIR}/atn/EmptyPredictionContext.cpp"
${LIBRARY_DIR}/atn/EpsilonTransition.cpp "${LIBRARY_DIR}/atn/EpsilonTransition.cpp"
${LIBRARY_DIR}/atn/ErrorInfo.cpp "${LIBRARY_DIR}/atn/ErrorInfo.cpp"
${LIBRARY_DIR}/atn/LexerAction.cpp "${LIBRARY_DIR}/atn/LexerAction.cpp"
${LIBRARY_DIR}/atn/LexerActionExecutor.cpp "${LIBRARY_DIR}/atn/LexerActionExecutor.cpp"
${LIBRARY_DIR}/atn/LexerATNConfig.cpp "${LIBRARY_DIR}/atn/LexerATNConfig.cpp"
${LIBRARY_DIR}/atn/LexerATNSimulator.cpp "${LIBRARY_DIR}/atn/LexerATNSimulator.cpp"
${LIBRARY_DIR}/atn/LexerChannelAction.cpp "${LIBRARY_DIR}/atn/LexerChannelAction.cpp"
${LIBRARY_DIR}/atn/LexerCustomAction.cpp "${LIBRARY_DIR}/atn/LexerCustomAction.cpp"
${LIBRARY_DIR}/atn/LexerIndexedCustomAction.cpp "${LIBRARY_DIR}/atn/LexerIndexedCustomAction.cpp"
${LIBRARY_DIR}/atn/LexerModeAction.cpp "${LIBRARY_DIR}/atn/LexerModeAction.cpp"
${LIBRARY_DIR}/atn/LexerMoreAction.cpp "${LIBRARY_DIR}/atn/LexerMoreAction.cpp"
${LIBRARY_DIR}/atn/LexerPopModeAction.cpp "${LIBRARY_DIR}/atn/LexerPopModeAction.cpp"
${LIBRARY_DIR}/atn/LexerPushModeAction.cpp "${LIBRARY_DIR}/atn/LexerPushModeAction.cpp"
${LIBRARY_DIR}/atn/LexerSkipAction.cpp "${LIBRARY_DIR}/atn/LexerSkipAction.cpp"
${LIBRARY_DIR}/atn/LexerTypeAction.cpp "${LIBRARY_DIR}/atn/LexerTypeAction.cpp"
${LIBRARY_DIR}/atn/LL1Analyzer.cpp "${LIBRARY_DIR}/atn/LL1Analyzer.cpp"
${LIBRARY_DIR}/atn/LookaheadEventInfo.cpp "${LIBRARY_DIR}/atn/LookaheadEventInfo.cpp"
${LIBRARY_DIR}/atn/LoopEndState.cpp "${LIBRARY_DIR}/atn/LoopEndState.cpp"
${LIBRARY_DIR}/atn/NotSetTransition.cpp "${LIBRARY_DIR}/atn/NotSetTransition.cpp"
${LIBRARY_DIR}/atn/OrderedATNConfigSet.cpp "${LIBRARY_DIR}/atn/OrderedATNConfigSet.cpp"
${LIBRARY_DIR}/atn/ParseInfo.cpp "${LIBRARY_DIR}/atn/ParseInfo.cpp"
${LIBRARY_DIR}/atn/ParserATNSimulator.cpp "${LIBRARY_DIR}/atn/ParserATNSimulator.cpp"
${LIBRARY_DIR}/atn/PlusBlockStartState.cpp "${LIBRARY_DIR}/atn/PlusBlockStartState.cpp"
${LIBRARY_DIR}/atn/PlusLoopbackState.cpp "${LIBRARY_DIR}/atn/PlusLoopbackState.cpp"
${LIBRARY_DIR}/atn/PrecedencePredicateTransition.cpp "${LIBRARY_DIR}/atn/PrecedencePredicateTransition.cpp"
${LIBRARY_DIR}/atn/PredicateEvalInfo.cpp "${LIBRARY_DIR}/atn/PredicateEvalInfo.cpp"
${LIBRARY_DIR}/atn/PredicateTransition.cpp "${LIBRARY_DIR}/atn/PredicateTransition.cpp"
${LIBRARY_DIR}/atn/PredictionContext.cpp "${LIBRARY_DIR}/atn/PredictionContext.cpp"
${LIBRARY_DIR}/atn/PredictionMode.cpp "${LIBRARY_DIR}/atn/PredictionMode.cpp"
${LIBRARY_DIR}/atn/ProfilingATNSimulator.cpp "${LIBRARY_DIR}/atn/ProfilingATNSimulator.cpp"
${LIBRARY_DIR}/atn/RangeTransition.cpp "${LIBRARY_DIR}/atn/RangeTransition.cpp"
${LIBRARY_DIR}/atn/RuleStartState.cpp "${LIBRARY_DIR}/atn/RuleStartState.cpp"
${LIBRARY_DIR}/atn/RuleStopState.cpp "${LIBRARY_DIR}/atn/RuleStopState.cpp"
${LIBRARY_DIR}/atn/RuleTransition.cpp "${LIBRARY_DIR}/atn/RuleTransition.cpp"
${LIBRARY_DIR}/atn/SemanticContext.cpp "${LIBRARY_DIR}/atn/SemanticContext.cpp"
${LIBRARY_DIR}/atn/SetTransition.cpp "${LIBRARY_DIR}/atn/SetTransition.cpp"
${LIBRARY_DIR}/atn/SingletonPredictionContext.cpp "${LIBRARY_DIR}/atn/SingletonPredictionContext.cpp"
${LIBRARY_DIR}/atn/StarBlockStartState.cpp "${LIBRARY_DIR}/atn/StarBlockStartState.cpp"
${LIBRARY_DIR}/atn/StarLoopbackState.cpp "${LIBRARY_DIR}/atn/StarLoopbackState.cpp"
${LIBRARY_DIR}/atn/StarLoopEntryState.cpp "${LIBRARY_DIR}/atn/StarLoopEntryState.cpp"
${LIBRARY_DIR}/atn/TokensStartState.cpp "${LIBRARY_DIR}/atn/TokensStartState.cpp"
${LIBRARY_DIR}/atn/Transition.cpp "${LIBRARY_DIR}/atn/Transition.cpp"
${LIBRARY_DIR}/atn/WildcardTransition.cpp "${LIBRARY_DIR}/atn/WildcardTransition.cpp"
${LIBRARY_DIR}/BailErrorStrategy.cpp "${LIBRARY_DIR}/BailErrorStrategy.cpp"
${LIBRARY_DIR}/BaseErrorListener.cpp "${LIBRARY_DIR}/BaseErrorListener.cpp"
${LIBRARY_DIR}/BufferedTokenStream.cpp "${LIBRARY_DIR}/BufferedTokenStream.cpp"
${LIBRARY_DIR}/CharStream.cpp "${LIBRARY_DIR}/CharStream.cpp"
${LIBRARY_DIR}/CommonToken.cpp "${LIBRARY_DIR}/CommonToken.cpp"
${LIBRARY_DIR}/CommonTokenFactory.cpp "${LIBRARY_DIR}/CommonTokenFactory.cpp"
${LIBRARY_DIR}/CommonTokenStream.cpp "${LIBRARY_DIR}/CommonTokenStream.cpp"
${LIBRARY_DIR}/ConsoleErrorListener.cpp "${LIBRARY_DIR}/ConsoleErrorListener.cpp"
${LIBRARY_DIR}/DefaultErrorStrategy.cpp "${LIBRARY_DIR}/DefaultErrorStrategy.cpp"
${LIBRARY_DIR}/dfa/DFA.cpp "${LIBRARY_DIR}/dfa/DFA.cpp"
${LIBRARY_DIR}/dfa/DFASerializer.cpp "${LIBRARY_DIR}/dfa/DFASerializer.cpp"
${LIBRARY_DIR}/dfa/DFAState.cpp "${LIBRARY_DIR}/dfa/DFAState.cpp"
${LIBRARY_DIR}/dfa/LexerDFASerializer.cpp "${LIBRARY_DIR}/dfa/LexerDFASerializer.cpp"
${LIBRARY_DIR}/DiagnosticErrorListener.cpp "${LIBRARY_DIR}/DiagnosticErrorListener.cpp"
${LIBRARY_DIR}/Exceptions.cpp "${LIBRARY_DIR}/Exceptions.cpp"
${LIBRARY_DIR}/FailedPredicateException.cpp "${LIBRARY_DIR}/FailedPredicateException.cpp"
${LIBRARY_DIR}/InputMismatchException.cpp "${LIBRARY_DIR}/InputMismatchException.cpp"
${LIBRARY_DIR}/InterpreterRuleContext.cpp "${LIBRARY_DIR}/InterpreterRuleContext.cpp"
${LIBRARY_DIR}/IntStream.cpp "${LIBRARY_DIR}/IntStream.cpp"
${LIBRARY_DIR}/Lexer.cpp "${LIBRARY_DIR}/Lexer.cpp"
${LIBRARY_DIR}/LexerInterpreter.cpp "${LIBRARY_DIR}/LexerInterpreter.cpp"
${LIBRARY_DIR}/LexerNoViableAltException.cpp "${LIBRARY_DIR}/LexerNoViableAltException.cpp"
${LIBRARY_DIR}/ListTokenSource.cpp "${LIBRARY_DIR}/ListTokenSource.cpp"
${LIBRARY_DIR}/misc/InterpreterDataReader.cpp "${LIBRARY_DIR}/misc/InterpreterDataReader.cpp"
${LIBRARY_DIR}/misc/Interval.cpp "${LIBRARY_DIR}/misc/Interval.cpp"
${LIBRARY_DIR}/misc/IntervalSet.cpp "${LIBRARY_DIR}/misc/IntervalSet.cpp"
${LIBRARY_DIR}/misc/MurmurHash.cpp "${LIBRARY_DIR}/misc/MurmurHash.cpp"
${LIBRARY_DIR}/misc/Predicate.cpp "${LIBRARY_DIR}/misc/Predicate.cpp"
${LIBRARY_DIR}/NoViableAltException.cpp "${LIBRARY_DIR}/NoViableAltException.cpp"
${LIBRARY_DIR}/Parser.cpp "${LIBRARY_DIR}/Parser.cpp"
${LIBRARY_DIR}/ParserInterpreter.cpp "${LIBRARY_DIR}/ParserInterpreter.cpp"
${LIBRARY_DIR}/ParserRuleContext.cpp "${LIBRARY_DIR}/ParserRuleContext.cpp"
${LIBRARY_DIR}/ProxyErrorListener.cpp "${LIBRARY_DIR}/ProxyErrorListener.cpp"
${LIBRARY_DIR}/RecognitionException.cpp "${LIBRARY_DIR}/RecognitionException.cpp"
${LIBRARY_DIR}/Recognizer.cpp "${LIBRARY_DIR}/Recognizer.cpp"
${LIBRARY_DIR}/RuleContext.cpp "${LIBRARY_DIR}/RuleContext.cpp"
${LIBRARY_DIR}/RuleContextWithAltNum.cpp "${LIBRARY_DIR}/RuleContextWithAltNum.cpp"
${LIBRARY_DIR}/RuntimeMetaData.cpp "${LIBRARY_DIR}/RuntimeMetaData.cpp"
${LIBRARY_DIR}/support/Any.cpp "${LIBRARY_DIR}/support/Any.cpp"
${LIBRARY_DIR}/support/Arrays.cpp "${LIBRARY_DIR}/support/Arrays.cpp"
${LIBRARY_DIR}/support/CPPUtils.cpp "${LIBRARY_DIR}/support/CPPUtils.cpp"
${LIBRARY_DIR}/support/guid.cpp "${LIBRARY_DIR}/support/guid.cpp"
${LIBRARY_DIR}/support/StringUtils.cpp "${LIBRARY_DIR}/support/StringUtils.cpp"
${LIBRARY_DIR}/Token.cpp "${LIBRARY_DIR}/Token.cpp"
${LIBRARY_DIR}/TokenSource.cpp "${LIBRARY_DIR}/TokenSource.cpp"
${LIBRARY_DIR}/TokenStream.cpp "${LIBRARY_DIR}/TokenStream.cpp"
${LIBRARY_DIR}/TokenStreamRewriter.cpp "${LIBRARY_DIR}/TokenStreamRewriter.cpp"
${LIBRARY_DIR}/tree/ErrorNode.cpp "${LIBRARY_DIR}/tree/ErrorNode.cpp"
${LIBRARY_DIR}/tree/ErrorNodeImpl.cpp "${LIBRARY_DIR}/tree/ErrorNodeImpl.cpp"
${LIBRARY_DIR}/tree/IterativeParseTreeWalker.cpp "${LIBRARY_DIR}/tree/IterativeParseTreeWalker.cpp"
${LIBRARY_DIR}/tree/ParseTree.cpp "${LIBRARY_DIR}/tree/ParseTree.cpp"
${LIBRARY_DIR}/tree/ParseTreeListener.cpp "${LIBRARY_DIR}/tree/ParseTreeListener.cpp"
${LIBRARY_DIR}/tree/ParseTreeVisitor.cpp "${LIBRARY_DIR}/tree/ParseTreeVisitor.cpp"
${LIBRARY_DIR}/tree/ParseTreeWalker.cpp "${LIBRARY_DIR}/tree/ParseTreeWalker.cpp"
${LIBRARY_DIR}/tree/pattern/Chunk.cpp "${LIBRARY_DIR}/tree/pattern/Chunk.cpp"
${LIBRARY_DIR}/tree/pattern/ParseTreeMatch.cpp "${LIBRARY_DIR}/tree/pattern/ParseTreeMatch.cpp"
${LIBRARY_DIR}/tree/pattern/ParseTreePattern.cpp "${LIBRARY_DIR}/tree/pattern/ParseTreePattern.cpp"
${LIBRARY_DIR}/tree/pattern/ParseTreePatternMatcher.cpp "${LIBRARY_DIR}/tree/pattern/ParseTreePatternMatcher.cpp"
${LIBRARY_DIR}/tree/pattern/RuleTagToken.cpp "${LIBRARY_DIR}/tree/pattern/RuleTagToken.cpp"
${LIBRARY_DIR}/tree/pattern/TagChunk.cpp "${LIBRARY_DIR}/tree/pattern/TagChunk.cpp"
${LIBRARY_DIR}/tree/pattern/TextChunk.cpp "${LIBRARY_DIR}/tree/pattern/TextChunk.cpp"
${LIBRARY_DIR}/tree/pattern/TokenTagToken.cpp "${LIBRARY_DIR}/tree/pattern/TokenTagToken.cpp"
${LIBRARY_DIR}/tree/TerminalNode.cpp "${LIBRARY_DIR}/tree/TerminalNode.cpp"
${LIBRARY_DIR}/tree/TerminalNodeImpl.cpp "${LIBRARY_DIR}/tree/TerminalNodeImpl.cpp"
${LIBRARY_DIR}/tree/Trees.cpp "${LIBRARY_DIR}/tree/Trees.cpp"
${LIBRARY_DIR}/tree/xpath/XPath.cpp "${LIBRARY_DIR}/tree/xpath/XPath.cpp"
${LIBRARY_DIR}/tree/xpath/XPathElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathElement.cpp"
${LIBRARY_DIR}/tree/xpath/XPathLexer.cpp "${LIBRARY_DIR}/tree/xpath/XPathLexer.cpp"
${LIBRARY_DIR}/tree/xpath/XPathLexerErrorListener.cpp "${LIBRARY_DIR}/tree/xpath/XPathLexerErrorListener.cpp"
${LIBRARY_DIR}/tree/xpath/XPathRuleAnywhereElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathRuleAnywhereElement.cpp"
${LIBRARY_DIR}/tree/xpath/XPathRuleElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathRuleElement.cpp"
${LIBRARY_DIR}/tree/xpath/XPathTokenAnywhereElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathTokenAnywhereElement.cpp"
${LIBRARY_DIR}/tree/xpath/XPathTokenElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathTokenElement.cpp"
${LIBRARY_DIR}/tree/xpath/XPathWildcardAnywhereElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathWildcardAnywhereElement.cpp"
${LIBRARY_DIR}/tree/xpath/XPathWildcardElement.cpp "${LIBRARY_DIR}/tree/xpath/XPathWildcardElement.cpp"
${LIBRARY_DIR}/UnbufferedCharStream.cpp "${LIBRARY_DIR}/UnbufferedCharStream.cpp"
${LIBRARY_DIR}/UnbufferedTokenStream.cpp "${LIBRARY_DIR}/UnbufferedTokenStream.cpp"
${LIBRARY_DIR}/Vocabulary.cpp "${LIBRARY_DIR}/Vocabulary.cpp"
${LIBRARY_DIR}/WritableToken.cpp "${LIBRARY_DIR}/WritableToken.cpp"
) )
add_library (antlr4-runtime ${SRCS}) add_library (antlr4-runtime ${SRCS})

View File

@ -2,69 +2,69 @@ set (CMAKE_CXX_STANDARD 17)
# === thrift # === thrift
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/thrift/lib/cpp) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/thrift/lib/cpp")
# contrib/thrift/lib/cpp/CMakeLists.txt # contrib/thrift/lib/cpp/CMakeLists.txt
set(thriftcpp_SOURCES set(thriftcpp_SOURCES
${LIBRARY_DIR}/src/thrift/TApplicationException.cpp "${LIBRARY_DIR}/src/thrift/TApplicationException.cpp"
${LIBRARY_DIR}/src/thrift/TOutput.cpp "${LIBRARY_DIR}/src/thrift/TOutput.cpp"
${LIBRARY_DIR}/src/thrift/async/TAsyncChannel.cpp "${LIBRARY_DIR}/src/thrift/async/TAsyncChannel.cpp"
${LIBRARY_DIR}/src/thrift/async/TAsyncProtocolProcessor.cpp "${LIBRARY_DIR}/src/thrift/async/TAsyncProtocolProcessor.cpp"
${LIBRARY_DIR}/src/thrift/async/TConcurrentClientSyncInfo.h "${LIBRARY_DIR}/src/thrift/async/TConcurrentClientSyncInfo.h"
${LIBRARY_DIR}/src/thrift/async/TConcurrentClientSyncInfo.cpp "${LIBRARY_DIR}/src/thrift/async/TConcurrentClientSyncInfo.cpp"
${LIBRARY_DIR}/src/thrift/concurrency/ThreadManager.cpp "${LIBRARY_DIR}/src/thrift/concurrency/ThreadManager.cpp"
${LIBRARY_DIR}/src/thrift/concurrency/TimerManager.cpp "${LIBRARY_DIR}/src/thrift/concurrency/TimerManager.cpp"
${LIBRARY_DIR}/src/thrift/concurrency/Util.cpp "${LIBRARY_DIR}/src/thrift/concurrency/Util.cpp"
${LIBRARY_DIR}/src/thrift/processor/PeekProcessor.cpp "${LIBRARY_DIR}/src/thrift/processor/PeekProcessor.cpp"
${LIBRARY_DIR}/src/thrift/protocol/TBase64Utils.cpp "${LIBRARY_DIR}/src/thrift/protocol/TBase64Utils.cpp"
${LIBRARY_DIR}/src/thrift/protocol/TDebugProtocol.cpp "${LIBRARY_DIR}/src/thrift/protocol/TDebugProtocol.cpp"
${LIBRARY_DIR}/src/thrift/protocol/TJSONProtocol.cpp "${LIBRARY_DIR}/src/thrift/protocol/TJSONProtocol.cpp"
${LIBRARY_DIR}/src/thrift/protocol/TMultiplexedProtocol.cpp "${LIBRARY_DIR}/src/thrift/protocol/TMultiplexedProtocol.cpp"
${LIBRARY_DIR}/src/thrift/protocol/TProtocol.cpp "${LIBRARY_DIR}/src/thrift/protocol/TProtocol.cpp"
${LIBRARY_DIR}/src/thrift/transport/TTransportException.cpp "${LIBRARY_DIR}/src/thrift/transport/TTransportException.cpp"
${LIBRARY_DIR}/src/thrift/transport/TFDTransport.cpp "${LIBRARY_DIR}/src/thrift/transport/TFDTransport.cpp"
${LIBRARY_DIR}/src/thrift/transport/TSimpleFileTransport.cpp "${LIBRARY_DIR}/src/thrift/transport/TSimpleFileTransport.cpp"
${LIBRARY_DIR}/src/thrift/transport/THttpTransport.cpp "${LIBRARY_DIR}/src/thrift/transport/THttpTransport.cpp"
${LIBRARY_DIR}/src/thrift/transport/THttpClient.cpp "${LIBRARY_DIR}/src/thrift/transport/THttpClient.cpp"
${LIBRARY_DIR}/src/thrift/transport/THttpServer.cpp "${LIBRARY_DIR}/src/thrift/transport/THttpServer.cpp"
${LIBRARY_DIR}/src/thrift/transport/TSocket.cpp "${LIBRARY_DIR}/src/thrift/transport/TSocket.cpp"
${LIBRARY_DIR}/src/thrift/transport/TSocketPool.cpp "${LIBRARY_DIR}/src/thrift/transport/TSocketPool.cpp"
${LIBRARY_DIR}/src/thrift/transport/TServerSocket.cpp "${LIBRARY_DIR}/src/thrift/transport/TServerSocket.cpp"
${LIBRARY_DIR}/src/thrift/transport/TTransportUtils.cpp "${LIBRARY_DIR}/src/thrift/transport/TTransportUtils.cpp"
${LIBRARY_DIR}/src/thrift/transport/TBufferTransports.cpp "${LIBRARY_DIR}/src/thrift/transport/TBufferTransports.cpp"
${LIBRARY_DIR}/src/thrift/server/TConnectedClient.cpp "${LIBRARY_DIR}/src/thrift/server/TConnectedClient.cpp"
${LIBRARY_DIR}/src/thrift/server/TServerFramework.cpp "${LIBRARY_DIR}/src/thrift/server/TServerFramework.cpp"
${LIBRARY_DIR}/src/thrift/server/TSimpleServer.cpp "${LIBRARY_DIR}/src/thrift/server/TSimpleServer.cpp"
${LIBRARY_DIR}/src/thrift/server/TThreadPoolServer.cpp "${LIBRARY_DIR}/src/thrift/server/TThreadPoolServer.cpp"
${LIBRARY_DIR}/src/thrift/server/TThreadedServer.cpp "${LIBRARY_DIR}/src/thrift/server/TThreadedServer.cpp"
) )
set(thriftcpp_threads_SOURCES set(thriftcpp_threads_SOURCES
${LIBRARY_DIR}/src/thrift/concurrency/ThreadFactory.cpp "${LIBRARY_DIR}/src/thrift/concurrency/ThreadFactory.cpp"
${LIBRARY_DIR}/src/thrift/concurrency/Thread.cpp "${LIBRARY_DIR}/src/thrift/concurrency/Thread.cpp"
${LIBRARY_DIR}/src/thrift/concurrency/Monitor.cpp "${LIBRARY_DIR}/src/thrift/concurrency/Monitor.cpp"
${LIBRARY_DIR}/src/thrift/concurrency/Mutex.cpp "${LIBRARY_DIR}/src/thrift/concurrency/Mutex.cpp"
) )
add_library(${THRIFT_LIBRARY} ${thriftcpp_SOURCES} ${thriftcpp_threads_SOURCES}) add_library(${THRIFT_LIBRARY} ${thriftcpp_SOURCES} ${thriftcpp_threads_SOURCES})
set_target_properties(${THRIFT_LIBRARY} PROPERTIES CXX_STANDARD 14) # REMOVE after https://github.com/apache/thrift/pull/1641 set_target_properties(${THRIFT_LIBRARY} PROPERTIES CXX_STANDARD 14) # REMOVE after https://github.com/apache/thrift/pull/1641
target_include_directories(${THRIFT_LIBRARY} SYSTEM PUBLIC ${ClickHouse_SOURCE_DIR}/contrib/thrift/lib/cpp/src) target_include_directories(${THRIFT_LIBRARY} SYSTEM PUBLIC "${ClickHouse_SOURCE_DIR}/contrib/thrift/lib/cpp/src")
target_link_libraries (${THRIFT_LIBRARY} PRIVATE boost::headers_only) target_link_libraries (${THRIFT_LIBRARY} PRIVATE boost::headers_only)
# === orc # === orc
set(ORC_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/orc/c++) set(ORC_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/orc/c++")
set(ORC_INCLUDE_DIR ${ORC_SOURCE_DIR}/include) set(ORC_INCLUDE_DIR "${ORC_SOURCE_DIR}/include")
set(ORC_SOURCE_SRC_DIR ${ORC_SOURCE_DIR}/src) set(ORC_SOURCE_SRC_DIR "${ORC_SOURCE_DIR}/src")
set(ORC_SOURCE_WRAP_DIR ${ORC_SOURCE_DIR}/wrap) set(ORC_SOURCE_WRAP_DIR "${ORC_SOURCE_DIR}/wrap")
set(ORC_BUILD_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/../orc/c++/src) set(ORC_BUILD_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/../orc/c++/src")
set(ORC_BUILD_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/../orc/c++/include) set(ORC_BUILD_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/../orc/c++/include")
set(GOOGLE_PROTOBUF_DIR ${Protobuf_INCLUDE_DIR}/) set(GOOGLE_PROTOBUF_DIR "${Protobuf_INCLUDE_DIR}/")
set(ORC_ADDITION_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}) set(ORC_ADDITION_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(ARROW_SRC_DIR ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src) set(ARROW_SRC_DIR "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src")
set(PROTOBUF_EXECUTABLE ${Protobuf_PROTOC_EXECUTABLE}) set(PROTOBUF_EXECUTABLE ${Protobuf_PROTOC_EXECUTABLE})
set(PROTO_DIR ${ORC_SOURCE_DIR}/../proto) set(PROTO_DIR "${ORC_SOURCE_DIR}/../proto")
add_custom_command(OUTPUT orc_proto.pb.h orc_proto.pb.cc add_custom_command(OUTPUT orc_proto.pb.h orc_proto.pb.cc
@ -75,9 +75,9 @@ add_custom_command(OUTPUT orc_proto.pb.h orc_proto.pb.cc
# === flatbuffers # === flatbuffers
set(FLATBUFFERS_SRC_DIR ${ClickHouse_SOURCE_DIR}/contrib/flatbuffers) set(FLATBUFFERS_SRC_DIR "${ClickHouse_SOURCE_DIR}/contrib/flatbuffers")
set(FLATBUFFERS_BINARY_DIR ${ClickHouse_BINARY_DIR}/contrib/flatbuffers) set(FLATBUFFERS_BINARY_DIR "${ClickHouse_BINARY_DIR}/contrib/flatbuffers")
set(FLATBUFFERS_INCLUDE_DIR ${FLATBUFFERS_SRC_DIR}/include) set(FLATBUFFERS_INCLUDE_DIR "${FLATBUFFERS_SRC_DIR}/include")
# set flatbuffers CMake options # set flatbuffers CMake options
if (MAKE_STATIC_LIBRARIES) if (MAKE_STATIC_LIBRARIES)
@ -101,187 +101,187 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(CXX11_FLAGS "-std=c++0x") set(CXX11_FLAGS "-std=c++0x")
endif () endif ()
include(${ClickHouse_SOURCE_DIR}/contrib/orc/cmake_modules/CheckSourceCompiles.cmake) include("${ClickHouse_SOURCE_DIR}/contrib/orc/cmake_modules/CheckSourceCompiles.cmake")
include(orc_check.cmake) include(orc_check.cmake)
configure_file("${ORC_INCLUDE_DIR}/orc/orc-config.hh.in" "${ORC_BUILD_INCLUDE_DIR}/orc/orc-config.hh") configure_file("${ORC_INCLUDE_DIR}/orc/orc-config.hh.in" "${ORC_BUILD_INCLUDE_DIR}/orc/orc-config.hh")
configure_file("${ORC_SOURCE_SRC_DIR}/Adaptor.hh.in" "${ORC_BUILD_INCLUDE_DIR}/Adaptor.hh") configure_file("${ORC_SOURCE_SRC_DIR}/Adaptor.hh.in" "${ORC_BUILD_INCLUDE_DIR}/Adaptor.hh")
set(ORC_SRCS set(ORC_SRCS
${ARROW_SRC_DIR}/arrow/adapters/orc/adapter.cc "${ARROW_SRC_DIR}/arrow/adapters/orc/adapter.cc"
${ARROW_SRC_DIR}/arrow/adapters/orc/adapter_util.cc "${ARROW_SRC_DIR}/arrow/adapters/orc/adapter_util.cc"
${ORC_SOURCE_SRC_DIR}/Exceptions.cc "${ORC_SOURCE_SRC_DIR}/Exceptions.cc"
${ORC_SOURCE_SRC_DIR}/OrcFile.cc "${ORC_SOURCE_SRC_DIR}/OrcFile.cc"
${ORC_SOURCE_SRC_DIR}/Reader.cc "${ORC_SOURCE_SRC_DIR}/Reader.cc"
${ORC_SOURCE_SRC_DIR}/ByteRLE.cc "${ORC_SOURCE_SRC_DIR}/ByteRLE.cc"
${ORC_SOURCE_SRC_DIR}/ColumnPrinter.cc "${ORC_SOURCE_SRC_DIR}/ColumnPrinter.cc"
${ORC_SOURCE_SRC_DIR}/ColumnReader.cc "${ORC_SOURCE_SRC_DIR}/ColumnReader.cc"
${ORC_SOURCE_SRC_DIR}/ColumnWriter.cc "${ORC_SOURCE_SRC_DIR}/ColumnWriter.cc"
${ORC_SOURCE_SRC_DIR}/Common.cc "${ORC_SOURCE_SRC_DIR}/Common.cc"
${ORC_SOURCE_SRC_DIR}/Compression.cc "${ORC_SOURCE_SRC_DIR}/Compression.cc"
${ORC_SOURCE_SRC_DIR}/Exceptions.cc "${ORC_SOURCE_SRC_DIR}/Exceptions.cc"
${ORC_SOURCE_SRC_DIR}/Int128.cc "${ORC_SOURCE_SRC_DIR}/Int128.cc"
${ORC_SOURCE_SRC_DIR}/LzoDecompressor.cc "${ORC_SOURCE_SRC_DIR}/LzoDecompressor.cc"
${ORC_SOURCE_SRC_DIR}/MemoryPool.cc "${ORC_SOURCE_SRC_DIR}/MemoryPool.cc"
${ORC_SOURCE_SRC_DIR}/OrcFile.cc "${ORC_SOURCE_SRC_DIR}/OrcFile.cc"
${ORC_SOURCE_SRC_DIR}/Reader.cc "${ORC_SOURCE_SRC_DIR}/Reader.cc"
${ORC_SOURCE_SRC_DIR}/RLE.cc "${ORC_SOURCE_SRC_DIR}/RLE.cc"
${ORC_SOURCE_SRC_DIR}/RLEv1.cc "${ORC_SOURCE_SRC_DIR}/RLEv1.cc"
${ORC_SOURCE_SRC_DIR}/RLEv2.cc "${ORC_SOURCE_SRC_DIR}/RLEv2.cc"
${ORC_SOURCE_SRC_DIR}/Statistics.cc "${ORC_SOURCE_SRC_DIR}/Statistics.cc"
${ORC_SOURCE_SRC_DIR}/StripeStream.cc "${ORC_SOURCE_SRC_DIR}/StripeStream.cc"
${ORC_SOURCE_SRC_DIR}/Timezone.cc "${ORC_SOURCE_SRC_DIR}/Timezone.cc"
${ORC_SOURCE_SRC_DIR}/TypeImpl.cc "${ORC_SOURCE_SRC_DIR}/TypeImpl.cc"
${ORC_SOURCE_SRC_DIR}/Vector.cc "${ORC_SOURCE_SRC_DIR}/Vector.cc"
${ORC_SOURCE_SRC_DIR}/Writer.cc "${ORC_SOURCE_SRC_DIR}/Writer.cc"
${ORC_SOURCE_SRC_DIR}/io/InputStream.cc "${ORC_SOURCE_SRC_DIR}/io/InputStream.cc"
${ORC_SOURCE_SRC_DIR}/io/OutputStream.cc "${ORC_SOURCE_SRC_DIR}/io/OutputStream.cc"
${ORC_ADDITION_SOURCE_DIR}/orc_proto.pb.cc "${ORC_ADDITION_SOURCE_DIR}/orc_proto.pb.cc"
) )
# === arrow # === arrow
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src/arrow) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src/arrow")
configure_file("${LIBRARY_DIR}/util/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cpp/src/arrow/util/config.h") configure_file("${LIBRARY_DIR}/util/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cpp/src/arrow/util/config.h")
# arrow/cpp/src/arrow/CMakeLists.txt # arrow/cpp/src/arrow/CMakeLists.txt
set(ARROW_SRCS set(ARROW_SRCS
${LIBRARY_DIR}/buffer.cc "${LIBRARY_DIR}/buffer.cc"
${LIBRARY_DIR}/builder.cc "${LIBRARY_DIR}/builder.cc"
${LIBRARY_DIR}/chunked_array.cc "${LIBRARY_DIR}/chunked_array.cc"
${LIBRARY_DIR}/compare.cc "${LIBRARY_DIR}/compare.cc"
${LIBRARY_DIR}/datum.cc "${LIBRARY_DIR}/datum.cc"
${LIBRARY_DIR}/device.cc "${LIBRARY_DIR}/device.cc"
${LIBRARY_DIR}/extension_type.cc "${LIBRARY_DIR}/extension_type.cc"
${LIBRARY_DIR}/memory_pool.cc "${LIBRARY_DIR}/memory_pool.cc"
${LIBRARY_DIR}/pretty_print.cc "${LIBRARY_DIR}/pretty_print.cc"
${LIBRARY_DIR}/record_batch.cc "${LIBRARY_DIR}/record_batch.cc"
${LIBRARY_DIR}/result.cc "${LIBRARY_DIR}/result.cc"
${LIBRARY_DIR}/scalar.cc "${LIBRARY_DIR}/scalar.cc"
${LIBRARY_DIR}/sparse_tensor.cc "${LIBRARY_DIR}/sparse_tensor.cc"
${LIBRARY_DIR}/status.cc "${LIBRARY_DIR}/status.cc"
${LIBRARY_DIR}/table_builder.cc "${LIBRARY_DIR}/table_builder.cc"
${LIBRARY_DIR}/table.cc "${LIBRARY_DIR}/table.cc"
${LIBRARY_DIR}/tensor.cc "${LIBRARY_DIR}/tensor.cc"
${LIBRARY_DIR}/type.cc "${LIBRARY_DIR}/type.cc"
${LIBRARY_DIR}/visitor.cc "${LIBRARY_DIR}/visitor.cc"
${LIBRARY_DIR}/array/array_base.cc "${LIBRARY_DIR}/array/array_base.cc"
${LIBRARY_DIR}/array/array_binary.cc "${LIBRARY_DIR}/array/array_binary.cc"
${LIBRARY_DIR}/array/array_decimal.cc "${LIBRARY_DIR}/array/array_decimal.cc"
${LIBRARY_DIR}/array/array_dict.cc "${LIBRARY_DIR}/array/array_dict.cc"
${LIBRARY_DIR}/array/array_nested.cc "${LIBRARY_DIR}/array/array_nested.cc"
${LIBRARY_DIR}/array/array_primitive.cc "${LIBRARY_DIR}/array/array_primitive.cc"
${LIBRARY_DIR}/array/builder_adaptive.cc "${LIBRARY_DIR}/array/builder_adaptive.cc"
${LIBRARY_DIR}/array/builder_base.cc "${LIBRARY_DIR}/array/builder_base.cc"
${LIBRARY_DIR}/array/builder_binary.cc "${LIBRARY_DIR}/array/builder_binary.cc"
${LIBRARY_DIR}/array/builder_decimal.cc "${LIBRARY_DIR}/array/builder_decimal.cc"
${LIBRARY_DIR}/array/builder_dict.cc "${LIBRARY_DIR}/array/builder_dict.cc"
${LIBRARY_DIR}/array/builder_nested.cc "${LIBRARY_DIR}/array/builder_nested.cc"
${LIBRARY_DIR}/array/builder_primitive.cc "${LIBRARY_DIR}/array/builder_primitive.cc"
${LIBRARY_DIR}/array/builder_union.cc "${LIBRARY_DIR}/array/builder_union.cc"
${LIBRARY_DIR}/array/concatenate.cc "${LIBRARY_DIR}/array/concatenate.cc"
${LIBRARY_DIR}/array/data.cc "${LIBRARY_DIR}/array/data.cc"
${LIBRARY_DIR}/array/diff.cc "${LIBRARY_DIR}/array/diff.cc"
${LIBRARY_DIR}/array/util.cc "${LIBRARY_DIR}/array/util.cc"
${LIBRARY_DIR}/array/validate.cc "${LIBRARY_DIR}/array/validate.cc"
${LIBRARY_DIR}/compute/api_scalar.cc "${LIBRARY_DIR}/compute/api_scalar.cc"
${LIBRARY_DIR}/compute/api_vector.cc "${LIBRARY_DIR}/compute/api_vector.cc"
${LIBRARY_DIR}/compute/cast.cc "${LIBRARY_DIR}/compute/cast.cc"
${LIBRARY_DIR}/compute/exec.cc "${LIBRARY_DIR}/compute/exec.cc"
${LIBRARY_DIR}/compute/function.cc "${LIBRARY_DIR}/compute/function.cc"
${LIBRARY_DIR}/compute/kernel.cc "${LIBRARY_DIR}/compute/kernel.cc"
${LIBRARY_DIR}/compute/registry.cc "${LIBRARY_DIR}/compute/registry.cc"
${LIBRARY_DIR}/compute/kernels/aggregate_basic.cc "${LIBRARY_DIR}/compute/kernels/aggregate_basic.cc"
${LIBRARY_DIR}/compute/kernels/aggregate_mode.cc "${LIBRARY_DIR}/compute/kernels/aggregate_mode.cc"
${LIBRARY_DIR}/compute/kernels/aggregate_var_std.cc "${LIBRARY_DIR}/compute/kernels/aggregate_var_std.cc"
${LIBRARY_DIR}/compute/kernels/codegen_internal.cc "${LIBRARY_DIR}/compute/kernels/codegen_internal.cc"
${LIBRARY_DIR}/compute/kernels/scalar_arithmetic.cc "${LIBRARY_DIR}/compute/kernels/scalar_arithmetic.cc"
${LIBRARY_DIR}/compute/kernels/scalar_boolean.cc "${LIBRARY_DIR}/compute/kernels/scalar_boolean.cc"
${LIBRARY_DIR}/compute/kernels/scalar_cast_boolean.cc "${LIBRARY_DIR}/compute/kernels/scalar_cast_boolean.cc"
${LIBRARY_DIR}/compute/kernels/scalar_cast_internal.cc "${LIBRARY_DIR}/compute/kernels/scalar_cast_internal.cc"
${LIBRARY_DIR}/compute/kernels/scalar_cast_nested.cc "${LIBRARY_DIR}/compute/kernels/scalar_cast_nested.cc"
${LIBRARY_DIR}/compute/kernels/scalar_cast_numeric.cc "${LIBRARY_DIR}/compute/kernels/scalar_cast_numeric.cc"
${LIBRARY_DIR}/compute/kernels/scalar_cast_string.cc "${LIBRARY_DIR}/compute/kernels/scalar_cast_string.cc"
${LIBRARY_DIR}/compute/kernels/scalar_cast_temporal.cc "${LIBRARY_DIR}/compute/kernels/scalar_cast_temporal.cc"
${LIBRARY_DIR}/compute/kernels/scalar_compare.cc "${LIBRARY_DIR}/compute/kernels/scalar_compare.cc"
${LIBRARY_DIR}/compute/kernels/scalar_fill_null.cc "${LIBRARY_DIR}/compute/kernels/scalar_fill_null.cc"
${LIBRARY_DIR}/compute/kernels/scalar_nested.cc "${LIBRARY_DIR}/compute/kernels/scalar_nested.cc"
${LIBRARY_DIR}/compute/kernels/scalar_set_lookup.cc "${LIBRARY_DIR}/compute/kernels/scalar_set_lookup.cc"
${LIBRARY_DIR}/compute/kernels/scalar_string.cc "${LIBRARY_DIR}/compute/kernels/scalar_string.cc"
${LIBRARY_DIR}/compute/kernels/scalar_validity.cc "${LIBRARY_DIR}/compute/kernels/scalar_validity.cc"
${LIBRARY_DIR}/compute/kernels/vector_hash.cc "${LIBRARY_DIR}/compute/kernels/vector_hash.cc"
${LIBRARY_DIR}/compute/kernels/vector_nested.cc "${LIBRARY_DIR}/compute/kernels/vector_nested.cc"
${LIBRARY_DIR}/compute/kernels/vector_selection.cc "${LIBRARY_DIR}/compute/kernels/vector_selection.cc"
${LIBRARY_DIR}/compute/kernels/vector_sort.cc "${LIBRARY_DIR}/compute/kernels/vector_sort.cc"
${LIBRARY_DIR}/compute/kernels/util_internal.cc "${LIBRARY_DIR}/compute/kernels/util_internal.cc"
${LIBRARY_DIR}/csv/chunker.cc "${LIBRARY_DIR}/csv/chunker.cc"
${LIBRARY_DIR}/csv/column_builder.cc "${LIBRARY_DIR}/csv/column_builder.cc"
${LIBRARY_DIR}/csv/column_decoder.cc "${LIBRARY_DIR}/csv/column_decoder.cc"
${LIBRARY_DIR}/csv/converter.cc "${LIBRARY_DIR}/csv/converter.cc"
${LIBRARY_DIR}/csv/options.cc "${LIBRARY_DIR}/csv/options.cc"
${LIBRARY_DIR}/csv/parser.cc "${LIBRARY_DIR}/csv/parser.cc"
${LIBRARY_DIR}/csv/reader.cc "${LIBRARY_DIR}/csv/reader.cc"
${LIBRARY_DIR}/ipc/dictionary.cc "${LIBRARY_DIR}/ipc/dictionary.cc"
${LIBRARY_DIR}/ipc/feather.cc "${LIBRARY_DIR}/ipc/feather.cc"
${LIBRARY_DIR}/ipc/message.cc "${LIBRARY_DIR}/ipc/message.cc"
${LIBRARY_DIR}/ipc/metadata_internal.cc "${LIBRARY_DIR}/ipc/metadata_internal.cc"
${LIBRARY_DIR}/ipc/options.cc "${LIBRARY_DIR}/ipc/options.cc"
${LIBRARY_DIR}/ipc/reader.cc "${LIBRARY_DIR}/ipc/reader.cc"
${LIBRARY_DIR}/ipc/writer.cc "${LIBRARY_DIR}/ipc/writer.cc"
${LIBRARY_DIR}/io/buffered.cc "${LIBRARY_DIR}/io/buffered.cc"
${LIBRARY_DIR}/io/caching.cc "${LIBRARY_DIR}/io/caching.cc"
${LIBRARY_DIR}/io/compressed.cc "${LIBRARY_DIR}/io/compressed.cc"
${LIBRARY_DIR}/io/file.cc "${LIBRARY_DIR}/io/file.cc"
${LIBRARY_DIR}/io/interfaces.cc "${LIBRARY_DIR}/io/interfaces.cc"
${LIBRARY_DIR}/io/memory.cc "${LIBRARY_DIR}/io/memory.cc"
${LIBRARY_DIR}/io/slow.cc "${LIBRARY_DIR}/io/slow.cc"
${LIBRARY_DIR}/tensor/coo_converter.cc "${LIBRARY_DIR}/tensor/coo_converter.cc"
${LIBRARY_DIR}/tensor/csf_converter.cc "${LIBRARY_DIR}/tensor/csf_converter.cc"
${LIBRARY_DIR}/tensor/csx_converter.cc "${LIBRARY_DIR}/tensor/csx_converter.cc"
${LIBRARY_DIR}/util/basic_decimal.cc "${LIBRARY_DIR}/util/basic_decimal.cc"
${LIBRARY_DIR}/util/bit_block_counter.cc "${LIBRARY_DIR}/util/bit_block_counter.cc"
${LIBRARY_DIR}/util/bit_run_reader.cc "${LIBRARY_DIR}/util/bit_run_reader.cc"
${LIBRARY_DIR}/util/bit_util.cc "${LIBRARY_DIR}/util/bit_util.cc"
${LIBRARY_DIR}/util/bitmap.cc "${LIBRARY_DIR}/util/bitmap.cc"
${LIBRARY_DIR}/util/bitmap_builders.cc "${LIBRARY_DIR}/util/bitmap_builders.cc"
${LIBRARY_DIR}/util/bitmap_ops.cc "${LIBRARY_DIR}/util/bitmap_ops.cc"
${LIBRARY_DIR}/util/bpacking.cc "${LIBRARY_DIR}/util/bpacking.cc"
${LIBRARY_DIR}/util/compression.cc "${LIBRARY_DIR}/util/compression.cc"
${LIBRARY_DIR}/util/compression_lz4.cc "${LIBRARY_DIR}/util/compression_lz4.cc"
${LIBRARY_DIR}/util/compression_snappy.cc "${LIBRARY_DIR}/util/compression_snappy.cc"
${LIBRARY_DIR}/util/compression_zlib.cc "${LIBRARY_DIR}/util/compression_zlib.cc"
${LIBRARY_DIR}/util/compression_zstd.cc "${LIBRARY_DIR}/util/compression_zstd.cc"
${LIBRARY_DIR}/util/cpu_info.cc "${LIBRARY_DIR}/util/cpu_info.cc"
${LIBRARY_DIR}/util/decimal.cc "${LIBRARY_DIR}/util/decimal.cc"
${LIBRARY_DIR}/util/delimiting.cc "${LIBRARY_DIR}/util/delimiting.cc"
${LIBRARY_DIR}/util/formatting.cc "${LIBRARY_DIR}/util/formatting.cc"
${LIBRARY_DIR}/util/future.cc "${LIBRARY_DIR}/util/future.cc"
${LIBRARY_DIR}/util/int_util.cc "${LIBRARY_DIR}/util/int_util.cc"
${LIBRARY_DIR}/util/io_util.cc "${LIBRARY_DIR}/util/io_util.cc"
${LIBRARY_DIR}/util/iterator.cc "${LIBRARY_DIR}/util/iterator.cc"
${LIBRARY_DIR}/util/key_value_metadata.cc "${LIBRARY_DIR}/util/key_value_metadata.cc"
${LIBRARY_DIR}/util/logging.cc "${LIBRARY_DIR}/util/logging.cc"
${LIBRARY_DIR}/util/memory.cc "${LIBRARY_DIR}/util/memory.cc"
${LIBRARY_DIR}/util/string_builder.cc "${LIBRARY_DIR}/util/string_builder.cc"
${LIBRARY_DIR}/util/string.cc "${LIBRARY_DIR}/util/string.cc"
${LIBRARY_DIR}/util/task_group.cc "${LIBRARY_DIR}/util/task_group.cc"
${LIBRARY_DIR}/util/thread_pool.cc "${LIBRARY_DIR}/util/thread_pool.cc"
${LIBRARY_DIR}/util/time.cc "${LIBRARY_DIR}/util/time.cc"
${LIBRARY_DIR}/util/trie.cc "${LIBRARY_DIR}/util/trie.cc"
${LIBRARY_DIR}/util/utf8.cc "${LIBRARY_DIR}/util/utf8.cc"
${LIBRARY_DIR}/util/value_parsing.cc "${LIBRARY_DIR}/util/value_parsing.cc"
${LIBRARY_DIR}/vendored/base64.cpp "${LIBRARY_DIR}/vendored/base64.cpp"
${ORC_SRCS} ${ORC_SRCS}
) )
@ -298,21 +298,21 @@ if (ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY)
endif () endif ()
add_definitions(-DARROW_WITH_LZ4) add_definitions(-DARROW_WITH_LZ4)
SET(ARROW_SRCS ${LIBRARY_DIR}/util/compression_lz4.cc ${ARROW_SRCS}) SET(ARROW_SRCS "${LIBRARY_DIR}/util/compression_lz4.cc" ${ARROW_SRCS})
if (ARROW_WITH_SNAPPY) if (ARROW_WITH_SNAPPY)
add_definitions(-DARROW_WITH_SNAPPY) add_definitions(-DARROW_WITH_SNAPPY)
SET(ARROW_SRCS ${LIBRARY_DIR}/util/compression_snappy.cc ${ARROW_SRCS}) SET(ARROW_SRCS "${LIBRARY_DIR}/util/compression_snappy.cc" ${ARROW_SRCS})
endif () endif ()
if (ARROW_WITH_ZLIB) if (ARROW_WITH_ZLIB)
add_definitions(-DARROW_WITH_ZLIB) add_definitions(-DARROW_WITH_ZLIB)
SET(ARROW_SRCS ${LIBRARY_DIR}/util/compression_zlib.cc ${ARROW_SRCS}) SET(ARROW_SRCS "${LIBRARY_DIR}/util/compression_zlib.cc" ${ARROW_SRCS})
endif () endif ()
if (ARROW_WITH_ZSTD) if (ARROW_WITH_ZSTD)
add_definitions(-DARROW_WITH_ZSTD) add_definitions(-DARROW_WITH_ZSTD)
SET(ARROW_SRCS ${LIBRARY_DIR}/util/compression_zstd.cc ${ARROW_SRCS}) SET(ARROW_SRCS "${LIBRARY_DIR}/util/compression_zstd.cc" ${ARROW_SRCS})
endif () endif ()
@ -327,8 +327,8 @@ if (USE_INTERNAL_PROTOBUF_LIBRARY)
add_dependencies(${ARROW_LIBRARY} protoc) add_dependencies(${ARROW_LIBRARY} protoc)
endif () endif ()
target_include_directories(${ARROW_LIBRARY} SYSTEM PUBLIC ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src) target_include_directories(${ARROW_LIBRARY} SYSTEM PUBLIC "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src")
target_include_directories(${ARROW_LIBRARY} SYSTEM PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/cpp/src) target_include_directories(${ARROW_LIBRARY} SYSTEM PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/cpp/src")
target_link_libraries(${ARROW_LIBRARY} PRIVATE ${DOUBLE_CONVERSION_LIBRARIES} ${Protobuf_LIBRARY}) target_link_libraries(${ARROW_LIBRARY} PRIVATE ${DOUBLE_CONVERSION_LIBRARIES} ${Protobuf_LIBRARY})
target_link_libraries(${ARROW_LIBRARY} PRIVATE lz4) target_link_libraries(${ARROW_LIBRARY} PRIVATE lz4)
if (ARROW_WITH_SNAPPY) if (ARROW_WITH_SNAPPY)
@ -354,46 +354,46 @@ target_include_directories(${ARROW_LIBRARY} PRIVATE SYSTEM ${FLATBUFFERS_INCLUDE
# === parquet # === parquet
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src/parquet) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src/parquet")
set(GEN_LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src/generated) set(GEN_LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src/generated")
# arrow/cpp/src/parquet/CMakeLists.txt # arrow/cpp/src/parquet/CMakeLists.txt
set(PARQUET_SRCS set(PARQUET_SRCS
${LIBRARY_DIR}/arrow/path_internal.cc "${LIBRARY_DIR}/arrow/path_internal.cc"
${LIBRARY_DIR}/arrow/reader.cc "${LIBRARY_DIR}/arrow/reader.cc"
${LIBRARY_DIR}/arrow/reader_internal.cc "${LIBRARY_DIR}/arrow/reader_internal.cc"
${LIBRARY_DIR}/arrow/schema.cc "${LIBRARY_DIR}/arrow/schema.cc"
${LIBRARY_DIR}/arrow/schema_internal.cc "${LIBRARY_DIR}/arrow/schema_internal.cc"
${LIBRARY_DIR}/arrow/writer.cc "${LIBRARY_DIR}/arrow/writer.cc"
${LIBRARY_DIR}/bloom_filter.cc "${LIBRARY_DIR}/bloom_filter.cc"
${LIBRARY_DIR}/column_reader.cc "${LIBRARY_DIR}/column_reader.cc"
${LIBRARY_DIR}/column_scanner.cc "${LIBRARY_DIR}/column_scanner.cc"
${LIBRARY_DIR}/column_writer.cc "${LIBRARY_DIR}/column_writer.cc"
${LIBRARY_DIR}/deprecated_io.cc "${LIBRARY_DIR}/deprecated_io.cc"
${LIBRARY_DIR}/encoding.cc "${LIBRARY_DIR}/encoding.cc"
${LIBRARY_DIR}/encryption.cc "${LIBRARY_DIR}/encryption.cc"
${LIBRARY_DIR}/encryption_internal.cc "${LIBRARY_DIR}/encryption_internal.cc"
${LIBRARY_DIR}/file_reader.cc "${LIBRARY_DIR}/file_reader.cc"
${LIBRARY_DIR}/file_writer.cc "${LIBRARY_DIR}/file_writer.cc"
${LIBRARY_DIR}/internal_file_decryptor.cc "${LIBRARY_DIR}/internal_file_decryptor.cc"
${LIBRARY_DIR}/internal_file_encryptor.cc "${LIBRARY_DIR}/internal_file_encryptor.cc"
${LIBRARY_DIR}/level_conversion.cc "${LIBRARY_DIR}/level_conversion.cc"
${LIBRARY_DIR}/level_comparison.cc "${LIBRARY_DIR}/level_comparison.cc"
${LIBRARY_DIR}/metadata.cc "${LIBRARY_DIR}/metadata.cc"
${LIBRARY_DIR}/murmur3.cc "${LIBRARY_DIR}/murmur3.cc"
${LIBRARY_DIR}/platform.cc "${LIBRARY_DIR}/platform.cc"
${LIBRARY_DIR}/printer.cc "${LIBRARY_DIR}/printer.cc"
${LIBRARY_DIR}/properties.cc "${LIBRARY_DIR}/properties.cc"
${LIBRARY_DIR}/schema.cc "${LIBRARY_DIR}/schema.cc"
${LIBRARY_DIR}/statistics.cc "${LIBRARY_DIR}/statistics.cc"
${LIBRARY_DIR}/types.cc "${LIBRARY_DIR}/types.cc"
${GEN_LIBRARY_DIR}/parquet_constants.cpp "${GEN_LIBRARY_DIR}/parquet_constants.cpp"
${GEN_LIBRARY_DIR}/parquet_types.cpp "${GEN_LIBRARY_DIR}/parquet_types.cpp"
) )
#list(TRANSFORM PARQUET_SRCS PREPEND ${LIBRARY_DIR}/) # cmake 3.12 #list(TRANSFORM PARQUET_SRCS PREPEND "${LIBRARY_DIR}/") # cmake 3.12
add_library(${PARQUET_LIBRARY} ${PARQUET_SRCS}) add_library(${PARQUET_LIBRARY} ${PARQUET_SRCS})
target_include_directories(${PARQUET_LIBRARY} SYSTEM PUBLIC ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src PRIVATE ${OPENSSL_INCLUDE_DIR}) target_include_directories(${PARQUET_LIBRARY} SYSTEM PUBLIC "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/src" "${CMAKE_CURRENT_SOURCE_DIR}/cpp/src" PRIVATE ${OPENSSL_INCLUDE_DIR})
include(${ClickHouse_SOURCE_DIR}/contrib/thrift/build/cmake/ConfigureChecks.cmake) # makes config.h include("${ClickHouse_SOURCE_DIR}/contrib/thrift/build/cmake/ConfigureChecks.cmake") # makes config.h
target_link_libraries(${PARQUET_LIBRARY} PUBLIC ${ARROW_LIBRARY} PRIVATE ${THRIFT_LIBRARY} boost::headers_only boost::regex ${OPENSSL_LIBRARIES}) target_link_libraries(${PARQUET_LIBRARY} PUBLIC ${ARROW_LIBRARY} PRIVATE ${THRIFT_LIBRARY} boost::headers_only boost::regex ${OPENSSL_LIBRARIES})
if (SANITIZE STREQUAL "undefined") if (SANITIZE STREQUAL "undefined")
@ -403,9 +403,9 @@ endif ()
# === tools # === tools
set(TOOLS_DIR ${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/tools/parquet) set(TOOLS_DIR "${ClickHouse_SOURCE_DIR}/contrib/arrow/cpp/tools/parquet")
set(PARQUET_TOOLS parquet_dump_schema parquet_reader parquet_scan) set(PARQUET_TOOLS parquet_dump_schema parquet_reader parquet_scan)
foreach (TOOL ${PARQUET_TOOLS}) foreach (TOOL ${PARQUET_TOOLS})
add_executable(${TOOL} ${TOOLS_DIR}/${TOOL}.cc) add_executable(${TOOL} "${TOOLS_DIR}/${TOOL}.cc")
target_link_libraries(${TOOL} PRIVATE ${PARQUET_LIBRARY}) target_link_libraries(${TOOL} PRIVATE ${PARQUET_LIBRARY})
endforeach () endforeach ()

View File

@ -1,10 +1,10 @@
set(AVROCPP_ROOT_DIR ${CMAKE_SOURCE_DIR}/contrib/avro/lang/c++) set(AVROCPP_ROOT_DIR "${CMAKE_SOURCE_DIR}/contrib/avro/lang/c++")
set(AVROCPP_INCLUDE_DIR ${AVROCPP_ROOT_DIR}/api) set(AVROCPP_INCLUDE_DIR "${AVROCPP_ROOT_DIR}/api")
set(AVROCPP_SOURCE_DIR ${AVROCPP_ROOT_DIR}/impl) set(AVROCPP_SOURCE_DIR "${AVROCPP_ROOT_DIR}/impl")
set (CMAKE_CXX_STANDARD 17) set (CMAKE_CXX_STANDARD 17)
if (EXISTS ${AVROCPP_ROOT_DIR}/../../share/VERSION.txt) if (EXISTS "${AVROCPP_ROOT_DIR}/../../share/VERSION.txt")
file(READ "${AVROCPP_ROOT_DIR}/../../share/VERSION.txt" file(READ "${AVROCPP_ROOT_DIR}/../../share/VERSION.txt"
AVRO_VERSION) AVRO_VERSION)
endif() endif()
@ -14,30 +14,30 @@ set (AVRO_VERSION_MAJOR ${AVRO_VERSION})
set (AVRO_VERSION_MINOR "0") set (AVRO_VERSION_MINOR "0")
set (AVROCPP_SOURCE_FILES set (AVROCPP_SOURCE_FILES
${AVROCPP_SOURCE_DIR}/Compiler.cc "${AVROCPP_SOURCE_DIR}/Compiler.cc"
${AVROCPP_SOURCE_DIR}/Node.cc "${AVROCPP_SOURCE_DIR}/Node.cc"
${AVROCPP_SOURCE_DIR}/LogicalType.cc "${AVROCPP_SOURCE_DIR}/LogicalType.cc"
${AVROCPP_SOURCE_DIR}/NodeImpl.cc "${AVROCPP_SOURCE_DIR}/NodeImpl.cc"
${AVROCPP_SOURCE_DIR}/ResolverSchema.cc "${AVROCPP_SOURCE_DIR}/ResolverSchema.cc"
${AVROCPP_SOURCE_DIR}/Schema.cc "${AVROCPP_SOURCE_DIR}/Schema.cc"
${AVROCPP_SOURCE_DIR}/Types.cc "${AVROCPP_SOURCE_DIR}/Types.cc"
${AVROCPP_SOURCE_DIR}/ValidSchema.cc "${AVROCPP_SOURCE_DIR}/ValidSchema.cc"
${AVROCPP_SOURCE_DIR}/Zigzag.cc "${AVROCPP_SOURCE_DIR}/Zigzag.cc"
${AVROCPP_SOURCE_DIR}/BinaryEncoder.cc "${AVROCPP_SOURCE_DIR}/BinaryEncoder.cc"
${AVROCPP_SOURCE_DIR}/BinaryDecoder.cc "${AVROCPP_SOURCE_DIR}/BinaryDecoder.cc"
${AVROCPP_SOURCE_DIR}/Stream.cc "${AVROCPP_SOURCE_DIR}/Stream.cc"
${AVROCPP_SOURCE_DIR}/FileStream.cc "${AVROCPP_SOURCE_DIR}/FileStream.cc"
${AVROCPP_SOURCE_DIR}/Generic.cc "${AVROCPP_SOURCE_DIR}/Generic.cc"
${AVROCPP_SOURCE_DIR}/GenericDatum.cc "${AVROCPP_SOURCE_DIR}/GenericDatum.cc"
${AVROCPP_SOURCE_DIR}/DataFile.cc "${AVROCPP_SOURCE_DIR}/DataFile.cc"
${AVROCPP_SOURCE_DIR}/parsing/Symbol.cc "${AVROCPP_SOURCE_DIR}/parsing/Symbol.cc"
${AVROCPP_SOURCE_DIR}/parsing/ValidatingCodec.cc "${AVROCPP_SOURCE_DIR}/parsing/ValidatingCodec.cc"
${AVROCPP_SOURCE_DIR}/parsing/JsonCodec.cc "${AVROCPP_SOURCE_DIR}/parsing/JsonCodec.cc"
${AVROCPP_SOURCE_DIR}/parsing/ResolvingDecoder.cc "${AVROCPP_SOURCE_DIR}/parsing/ResolvingDecoder.cc"
${AVROCPP_SOURCE_DIR}/json/JsonIO.cc "${AVROCPP_SOURCE_DIR}/json/JsonIO.cc"
${AVROCPP_SOURCE_DIR}/json/JsonDom.cc "${AVROCPP_SOURCE_DIR}/json/JsonDom.cc"
${AVROCPP_SOURCE_DIR}/Resolver.cc "${AVROCPP_SOURCE_DIR}/Resolver.cc"
${AVROCPP_SOURCE_DIR}/Validator.cc "${AVROCPP_SOURCE_DIR}/Validator.cc"
) )
add_library (avrocpp ${AVROCPP_SOURCE_FILES}) add_library (avrocpp ${AVROCPP_SOURCE_FILES})
@ -63,7 +63,7 @@ target_compile_options(avrocpp PRIVATE ${SUPPRESS_WARNINGS})
# create a symlink to include headers with <avro/...> # create a symlink to include headers with <avro/...>
ADD_CUSTOM_TARGET(avro_symlink_headers ALL ADD_CUSTOM_TARGET(avro_symlink_headers ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${AVROCPP_ROOT_DIR}/include COMMAND ${CMAKE_COMMAND} -E make_directory "${AVROCPP_ROOT_DIR}/include"
COMMAND ${CMAKE_COMMAND} -E create_symlink ${AVROCPP_ROOT_DIR}/api ${AVROCPP_ROOT_DIR}/include/avro COMMAND ${CMAKE_COMMAND} -E create_symlink "${AVROCPP_ROOT_DIR}/api" "${AVROCPP_ROOT_DIR}/include/avro"
) )
add_dependencies(avrocpp avro_symlink_headers) add_dependencies(avrocpp avro_symlink_headers)

View File

@ -1,8 +1,8 @@
SET(AWS_S3_LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/aws/aws-cpp-sdk-s3) SET(AWS_S3_LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/aws/aws-cpp-sdk-s3")
SET(AWS_CORE_LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/aws/aws-cpp-sdk-core) SET(AWS_CORE_LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/aws/aws-cpp-sdk-core")
SET(AWS_CHECKSUMS_LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/aws-checksums) SET(AWS_CHECKSUMS_LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/aws-checksums")
SET(AWS_COMMON_LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/aws-c-common) SET(AWS_COMMON_LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/aws-c-common")
SET(AWS_EVENT_STREAM_LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/aws-c-event-stream) SET(AWS_EVENT_STREAM_LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/aws-c-event-stream")
OPTION(USE_AWS_MEMORY_MANAGEMENT "Aws memory management" OFF) OPTION(USE_AWS_MEMORY_MANAGEMENT "Aws memory management" OFF)
configure_file("${AWS_CORE_LIBRARY_DIR}/include/aws/core/SDKConfig.h.in" configure_file("${AWS_CORE_LIBRARY_DIR}/include/aws/core/SDKConfig.h.in"

View File

@ -1,11 +1,11 @@
SET(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/base64) SET(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/base64")
add_library(base64_scalar OBJECT ${LIBRARY_DIR}/turbob64c.c ${LIBRARY_DIR}/turbob64d.c) add_library(base64_scalar OBJECT "${LIBRARY_DIR}/turbob64c.c" "${LIBRARY_DIR}/turbob64d.c")
add_library(base64_ssse3 OBJECT ${LIBRARY_DIR}/turbob64sse.c) # This file also contains code for ARM NEON add_library(base64_ssse3 OBJECT "${LIBRARY_DIR}/turbob64sse.c") # This file also contains code for ARM NEON
if (ARCH_AMD64) if (ARCH_AMD64)
add_library(base64_avx OBJECT ${LIBRARY_DIR}/turbob64sse.c) # This is not a mistake. One file is compiled twice. add_library(base64_avx OBJECT "${LIBRARY_DIR}/turbob64sse.c") # This is not a mistake. One file is compiled twice.
add_library(base64_avx2 OBJECT ${LIBRARY_DIR}/turbob64avx2.c) add_library(base64_avx2 OBJECT "${LIBRARY_DIR}/turbob64avx2.c")
endif () endif ()
target_compile_options(base64_scalar PRIVATE -falign-loops) target_compile_options(base64_scalar PRIVATE -falign-loops)

2
contrib/boost vendored

@ -1 +1 @@
Subproject commit ee24fa55bc46e4d2ce7d0d052cc5a0d9b1be8c36 Subproject commit 1ccbb5a522a571ce83b606dbc2e1011c42ecccfb

View File

@ -56,19 +56,19 @@ endif()
if (NOT EXTERNAL_BOOST_FOUND) if (NOT EXTERNAL_BOOST_FOUND)
set (USE_INTERNAL_BOOST_LIBRARY 1) set (USE_INTERNAL_BOOST_LIBRARY 1)
set (LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/boost) set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/boost")
# filesystem # filesystem
set (SRCS_FILESYSTEM set (SRCS_FILESYSTEM
${LIBRARY_DIR}/libs/filesystem/src/codecvt_error_category.cpp "${LIBRARY_DIR}/libs/filesystem/src/codecvt_error_category.cpp"
${LIBRARY_DIR}/libs/filesystem/src/operations.cpp "${LIBRARY_DIR}/libs/filesystem/src/operations.cpp"
${LIBRARY_DIR}/libs/filesystem/src/path_traits.cpp "${LIBRARY_DIR}/libs/filesystem/src/path_traits.cpp"
${LIBRARY_DIR}/libs/filesystem/src/path.cpp "${LIBRARY_DIR}/libs/filesystem/src/path.cpp"
${LIBRARY_DIR}/libs/filesystem/src/portability.cpp "${LIBRARY_DIR}/libs/filesystem/src/portability.cpp"
${LIBRARY_DIR}/libs/filesystem/src/unique_path.cpp "${LIBRARY_DIR}/libs/filesystem/src/unique_path.cpp"
${LIBRARY_DIR}/libs/filesystem/src/utf8_codecvt_facet.cpp "${LIBRARY_DIR}/libs/filesystem/src/utf8_codecvt_facet.cpp"
${LIBRARY_DIR}/libs/filesystem/src/windows_file_codecvt.cpp "${LIBRARY_DIR}/libs/filesystem/src/windows_file_codecvt.cpp"
) )
add_library (_boost_filesystem ${SRCS_FILESYSTEM}) add_library (_boost_filesystem ${SRCS_FILESYSTEM})
@ -88,10 +88,10 @@ if (NOT EXTERNAL_BOOST_FOUND)
# iostreams # iostreams
set (SRCS_IOSTREAMS set (SRCS_IOSTREAMS
${LIBRARY_DIR}/libs/iostreams/src/file_descriptor.cpp "${LIBRARY_DIR}/libs/iostreams/src/file_descriptor.cpp"
${LIBRARY_DIR}/libs/iostreams/src/gzip.cpp "${LIBRARY_DIR}/libs/iostreams/src/gzip.cpp"
${LIBRARY_DIR}/libs/iostreams/src/mapped_file.cpp "${LIBRARY_DIR}/libs/iostreams/src/mapped_file.cpp"
${LIBRARY_DIR}/libs/iostreams/src/zlib.cpp "${LIBRARY_DIR}/libs/iostreams/src/zlib.cpp"
) )
add_library (_boost_iostreams ${SRCS_IOSTREAMS}) add_library (_boost_iostreams ${SRCS_IOSTREAMS})
@ -102,17 +102,17 @@ if (NOT EXTERNAL_BOOST_FOUND)
# program_options # program_options
set (SRCS_PROGRAM_OPTIONS set (SRCS_PROGRAM_OPTIONS
${LIBRARY_DIR}/libs/program_options/src/cmdline.cpp "${LIBRARY_DIR}/libs/program_options/src/cmdline.cpp"
${LIBRARY_DIR}/libs/program_options/src/config_file.cpp "${LIBRARY_DIR}/libs/program_options/src/config_file.cpp"
${LIBRARY_DIR}/libs/program_options/src/convert.cpp "${LIBRARY_DIR}/libs/program_options/src/convert.cpp"
${LIBRARY_DIR}/libs/program_options/src/options_description.cpp "${LIBRARY_DIR}/libs/program_options/src/options_description.cpp"
${LIBRARY_DIR}/libs/program_options/src/parsers.cpp "${LIBRARY_DIR}/libs/program_options/src/parsers.cpp"
${LIBRARY_DIR}/libs/program_options/src/positional_options.cpp "${LIBRARY_DIR}/libs/program_options/src/positional_options.cpp"
${LIBRARY_DIR}/libs/program_options/src/split.cpp "${LIBRARY_DIR}/libs/program_options/src/split.cpp"
${LIBRARY_DIR}/libs/program_options/src/utf8_codecvt_facet.cpp "${LIBRARY_DIR}/libs/program_options/src/utf8_codecvt_facet.cpp"
${LIBRARY_DIR}/libs/program_options/src/value_semantic.cpp "${LIBRARY_DIR}/libs/program_options/src/value_semantic.cpp"
${LIBRARY_DIR}/libs/program_options/src/variables_map.cpp "${LIBRARY_DIR}/libs/program_options/src/variables_map.cpp"
${LIBRARY_DIR}/libs/program_options/src/winmain.cpp "${LIBRARY_DIR}/libs/program_options/src/winmain.cpp"
) )
add_library (_boost_program_options ${SRCS_PROGRAM_OPTIONS}) add_library (_boost_program_options ${SRCS_PROGRAM_OPTIONS})
@ -122,24 +122,24 @@ if (NOT EXTERNAL_BOOST_FOUND)
# regex # regex
set (SRCS_REGEX set (SRCS_REGEX
${LIBRARY_DIR}/libs/regex/src/c_regex_traits.cpp "${LIBRARY_DIR}/libs/regex/src/c_regex_traits.cpp"
${LIBRARY_DIR}/libs/regex/src/cpp_regex_traits.cpp "${LIBRARY_DIR}/libs/regex/src/cpp_regex_traits.cpp"
${LIBRARY_DIR}/libs/regex/src/cregex.cpp "${LIBRARY_DIR}/libs/regex/src/cregex.cpp"
${LIBRARY_DIR}/libs/regex/src/fileiter.cpp "${LIBRARY_DIR}/libs/regex/src/fileiter.cpp"
${LIBRARY_DIR}/libs/regex/src/icu.cpp "${LIBRARY_DIR}/libs/regex/src/icu.cpp"
${LIBRARY_DIR}/libs/regex/src/instances.cpp "${LIBRARY_DIR}/libs/regex/src/instances.cpp"
${LIBRARY_DIR}/libs/regex/src/internals.hpp "${LIBRARY_DIR}/libs/regex/src/internals.hpp"
${LIBRARY_DIR}/libs/regex/src/posix_api.cpp "${LIBRARY_DIR}/libs/regex/src/posix_api.cpp"
${LIBRARY_DIR}/libs/regex/src/regex_debug.cpp "${LIBRARY_DIR}/libs/regex/src/regex_debug.cpp"
${LIBRARY_DIR}/libs/regex/src/regex_raw_buffer.cpp "${LIBRARY_DIR}/libs/regex/src/regex_raw_buffer.cpp"
${LIBRARY_DIR}/libs/regex/src/regex_traits_defaults.cpp "${LIBRARY_DIR}/libs/regex/src/regex_traits_defaults.cpp"
${LIBRARY_DIR}/libs/regex/src/regex.cpp "${LIBRARY_DIR}/libs/regex/src/regex.cpp"
${LIBRARY_DIR}/libs/regex/src/static_mutex.cpp "${LIBRARY_DIR}/libs/regex/src/static_mutex.cpp"
${LIBRARY_DIR}/libs/regex/src/usinstances.cpp "${LIBRARY_DIR}/libs/regex/src/usinstances.cpp"
${LIBRARY_DIR}/libs/regex/src/w32_regex_traits.cpp "${LIBRARY_DIR}/libs/regex/src/w32_regex_traits.cpp"
${LIBRARY_DIR}/libs/regex/src/wc_regex_traits.cpp "${LIBRARY_DIR}/libs/regex/src/wc_regex_traits.cpp"
${LIBRARY_DIR}/libs/regex/src/wide_posix_api.cpp "${LIBRARY_DIR}/libs/regex/src/wide_posix_api.cpp"
${LIBRARY_DIR}/libs/regex/src/winstances.cpp "${LIBRARY_DIR}/libs/regex/src/winstances.cpp"
) )
add_library (_boost_regex ${SRCS_REGEX}) add_library (_boost_regex ${SRCS_REGEX})
@ -149,7 +149,7 @@ if (NOT EXTERNAL_BOOST_FOUND)
# system # system
set (SRCS_SYSTEM set (SRCS_SYSTEM
${LIBRARY_DIR}/libs/system/src/error_code.cpp "${LIBRARY_DIR}/libs/system/src/error_code.cpp"
) )
add_library (_boost_system ${SRCS_SYSTEM}) add_library (_boost_system ${SRCS_SYSTEM})
@ -161,9 +161,9 @@ if (NOT EXTERNAL_BOOST_FOUND)
SET(ASM_OPTIONS "-x assembler-with-cpp") SET(ASM_OPTIONS "-x assembler-with-cpp")
set (SRCS_CONTEXT set (SRCS_CONTEXT
${LIBRARY_DIR}/libs/context/src/dummy.cpp "${LIBRARY_DIR}/libs/context/src/dummy.cpp"
${LIBRARY_DIR}/libs/context/src/execution_context.cpp "${LIBRARY_DIR}/libs/context/src/execution_context.cpp"
${LIBRARY_DIR}/libs/context/src/posix/stack_traits.cpp "${LIBRARY_DIR}/libs/context/src/posix/stack_traits.cpp"
) )
if (SANITIZE AND (SANITIZE STREQUAL "address" OR SANITIZE STREQUAL "thread")) if (SANITIZE AND (SANITIZE STREQUAL "address" OR SANITIZE STREQUAL "thread"))
@ -176,33 +176,33 @@ if (NOT EXTERNAL_BOOST_FOUND)
endif() endif()
set (SRCS_CONTEXT ${SRCS_CONTEXT} set (SRCS_CONTEXT ${SRCS_CONTEXT}
${LIBRARY_DIR}/libs/context/src/fiber.cpp "${LIBRARY_DIR}/libs/context/src/fiber.cpp"
${LIBRARY_DIR}/libs/context/src/continuation.cpp "${LIBRARY_DIR}/libs/context/src/continuation.cpp"
) )
endif() endif()
if (ARCH_ARM) if (ARCH_ARM)
set (SRCS_CONTEXT ${SRCS_CONTEXT} set (SRCS_CONTEXT ${SRCS_CONTEXT}
${LIBRARY_DIR}/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/make_arm64_aapcs_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/make_arm64_aapcs_elf_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S"
) )
elseif (ARCH_PPC64LE) elseif (ARCH_PPC64LE)
set (SRCS_CONTEXT ${SRCS_CONTEXT} set (SRCS_CONTEXT ${SRCS_CONTEXT}
${LIBRARY_DIR}/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/make_ppc64_sysv_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/make_ppc64_sysv_elf_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S"
) )
elseif(OS_DARWIN) elseif(OS_DARWIN)
set (SRCS_CONTEXT ${SRCS_CONTEXT} set (SRCS_CONTEXT ${SRCS_CONTEXT}
${LIBRARY_DIR}/libs/context/src/asm/jump_x86_64_sysv_macho_gas.S "${LIBRARY_DIR}/libs/context/src/asm/jump_x86_64_sysv_macho_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/make_x86_64_sysv_macho_gas.S "${LIBRARY_DIR}/libs/context/src/asm/make_x86_64_sysv_macho_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S "${LIBRARY_DIR}/libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S"
) )
else() else()
set (SRCS_CONTEXT ${SRCS_CONTEXT} set (SRCS_CONTEXT ${SRCS_CONTEXT}
${LIBRARY_DIR}/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/make_x86_64_sysv_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/make_x86_64_sysv_elf_gas.S"
${LIBRARY_DIR}/libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S "${LIBRARY_DIR}/libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S"
) )
endif() endif()
@ -213,9 +213,9 @@ if (NOT EXTERNAL_BOOST_FOUND)
# coroutine # coroutine
set (SRCS_COROUTINE set (SRCS_COROUTINE
${LIBRARY_DIR}/libs/coroutine/detail/coroutine_context.cpp "${LIBRARY_DIR}/libs/coroutine/detail/coroutine_context.cpp"
${LIBRARY_DIR}/libs/coroutine/exceptions.cpp "${LIBRARY_DIR}/libs/coroutine/exceptions.cpp"
${LIBRARY_DIR}/libs/coroutine/posix/stack_traits.cpp "${LIBRARY_DIR}/libs/coroutine/posix/stack_traits.cpp"
) )
add_library (_boost_coroutine ${SRCS_COROUTINE}) add_library (_boost_coroutine ${SRCS_COROUTINE})
add_library (boost::coroutine ALIAS _boost_coroutine) add_library (boost::coroutine ALIAS _boost_coroutine)

2
contrib/boringssl vendored

@ -1 +1 @@
Subproject commit fd9ce1a0406f571507068b9555d0b545b8a18332 Subproject commit a6a2e2ab3e44d97ce98e51c558e989f211de7eb3

View File

@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.0)
project(BoringSSL LANGUAGES C CXX) project(BoringSSL LANGUAGES C CXX)
set(BORINGSSL_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/boringssl) set(BORINGSSL_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/boringssl")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CLANG 1) set(CLANG 1)
@ -16,7 +16,7 @@ endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CLANG) if(CMAKE_COMPILER_IS_GNUCXX OR CLANG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fvisibility=hidden -fno-common -fno-exceptions -fno-rtti") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fvisibility=hidden -fno-common -fno-exceptions -fno-rtti")
if(APPLE) if(APPLE AND CLANG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif() endif()
@ -130,7 +130,7 @@ if(BUILD_SHARED_LIBS)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif() endif()
include_directories(${BORINGSSL_SOURCE_DIR}/include) include_directories("${BORINGSSL_SOURCE_DIR}/include")
set( set(
CRYPTO_ios_aarch64_SOURCES CRYPTO_ios_aarch64_SOURCES
@ -192,8 +192,8 @@ set(
linux-arm/crypto/fipsmodule/sha512-armv4.S linux-arm/crypto/fipsmodule/sha512-armv4.S
linux-arm/crypto/fipsmodule/vpaes-armv7.S linux-arm/crypto/fipsmodule/vpaes-armv7.S
linux-arm/crypto/test/trampoline-armv4.S linux-arm/crypto/test/trampoline-armv4.S
${BORINGSSL_SOURCE_DIR}/crypto/curve25519/asm/x25519-asm-arm.S "${BORINGSSL_SOURCE_DIR}/crypto/curve25519/asm/x25519-asm-arm.S"
${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305_arm_asm.S "${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305_arm_asm.S"
) )
set( set(
@ -244,7 +244,7 @@ set(
linux-x86_64/crypto/fipsmodule/x86_64-mont.S linux-x86_64/crypto/fipsmodule/x86_64-mont.S
linux-x86_64/crypto/fipsmodule/x86_64-mont5.S linux-x86_64/crypto/fipsmodule/x86_64-mont5.S
linux-x86_64/crypto/test/trampoline-x86_64.S linux-x86_64/crypto/test/trampoline-x86_64.S
${BORINGSSL_SOURCE_DIR}/crypto/hrss/asm/poly_rq_mul.S "${BORINGSSL_SOURCE_DIR}/crypto/hrss/asm/poly_rq_mul.S"
) )
set( set(
@ -348,300 +348,300 @@ add_library(
${CRYPTO_ARCH_SOURCES} ${CRYPTO_ARCH_SOURCES}
err_data.c err_data.c
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_bitstr.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_bitstr.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_bool.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_bool.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_d2i_fp.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_d2i_fp.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_dup.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_dup.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_enum.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_enum.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_gentm.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_gentm.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_i2d_fp.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_i2d_fp.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_int.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_int.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_mbstr.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_mbstr.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_object.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_object.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_octet.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_octet.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_print.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_print.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_strnid.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_strnid.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_time.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_time.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_type.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_type.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_utctm.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_utctm.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_utf8.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/a_utf8.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/asn1_lib.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/asn1_lib.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/asn1_par.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/asn1_par.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/asn_pack.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/asn_pack.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/f_enum.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/f_enum.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/f_int.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/f_int.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/f_string.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/f_string.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_dec.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_dec.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_enc.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_enc.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_fre.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_fre.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_new.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_new.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_typ.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_typ.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_utl.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/tasn_utl.c"
${BORINGSSL_SOURCE_DIR}/crypto/asn1/time_support.c "${BORINGSSL_SOURCE_DIR}/crypto/asn1/time_support.c"
${BORINGSSL_SOURCE_DIR}/crypto/base64/base64.c "${BORINGSSL_SOURCE_DIR}/crypto/base64/base64.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/bio.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/bio.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/bio_mem.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/bio_mem.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/connect.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/connect.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/fd.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/fd.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/file.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/file.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/hexdump.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/hexdump.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/pair.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/pair.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/printf.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/printf.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/socket.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/socket.c"
${BORINGSSL_SOURCE_DIR}/crypto/bio/socket_helper.c "${BORINGSSL_SOURCE_DIR}/crypto/bio/socket_helper.c"
${BORINGSSL_SOURCE_DIR}/crypto/bn_extra/bn_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/bn_extra/bn_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/bn_extra/convert.c "${BORINGSSL_SOURCE_DIR}/crypto/bn_extra/convert.c"
${BORINGSSL_SOURCE_DIR}/crypto/buf/buf.c "${BORINGSSL_SOURCE_DIR}/crypto/buf/buf.c"
${BORINGSSL_SOURCE_DIR}/crypto/bytestring/asn1_compat.c "${BORINGSSL_SOURCE_DIR}/crypto/bytestring/asn1_compat.c"
${BORINGSSL_SOURCE_DIR}/crypto/bytestring/ber.c "${BORINGSSL_SOURCE_DIR}/crypto/bytestring/ber.c"
${BORINGSSL_SOURCE_DIR}/crypto/bytestring/cbb.c "${BORINGSSL_SOURCE_DIR}/crypto/bytestring/cbb.c"
${BORINGSSL_SOURCE_DIR}/crypto/bytestring/cbs.c "${BORINGSSL_SOURCE_DIR}/crypto/bytestring/cbs.c"
${BORINGSSL_SOURCE_DIR}/crypto/bytestring/unicode.c "${BORINGSSL_SOURCE_DIR}/crypto/bytestring/unicode.c"
${BORINGSSL_SOURCE_DIR}/crypto/chacha/chacha.c "${BORINGSSL_SOURCE_DIR}/crypto/chacha/chacha.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/cipher_extra.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/cipher_extra.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/derive_key.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/derive_key.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_aesccm.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_aesccm.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_aesctrhmac.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_aesctrhmac.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_aesgcmsiv.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_aesgcmsiv.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_chacha20poly1305.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_chacha20poly1305.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_null.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_null.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_rc2.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_rc2.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_rc4.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_rc4.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_tls.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/e_tls.c"
${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/tls_cbc.c "${BORINGSSL_SOURCE_DIR}/crypto/cipher_extra/tls_cbc.c"
${BORINGSSL_SOURCE_DIR}/crypto/cmac/cmac.c "${BORINGSSL_SOURCE_DIR}/crypto/cmac/cmac.c"
${BORINGSSL_SOURCE_DIR}/crypto/conf/conf.c "${BORINGSSL_SOURCE_DIR}/crypto/conf/conf.c"
${BORINGSSL_SOURCE_DIR}/crypto/cpu-aarch64-fuchsia.c "${BORINGSSL_SOURCE_DIR}/crypto/cpu-aarch64-fuchsia.c"
${BORINGSSL_SOURCE_DIR}/crypto/cpu-aarch64-linux.c "${BORINGSSL_SOURCE_DIR}/crypto/cpu-aarch64-linux.c"
${BORINGSSL_SOURCE_DIR}/crypto/cpu-arm-linux.c "${BORINGSSL_SOURCE_DIR}/crypto/cpu-arm-linux.c"
${BORINGSSL_SOURCE_DIR}/crypto/cpu-arm.c "${BORINGSSL_SOURCE_DIR}/crypto/cpu-arm.c"
${BORINGSSL_SOURCE_DIR}/crypto/cpu-intel.c "${BORINGSSL_SOURCE_DIR}/crypto/cpu-intel.c"
${BORINGSSL_SOURCE_DIR}/crypto/cpu-ppc64le.c "${BORINGSSL_SOURCE_DIR}/crypto/cpu-ppc64le.c"
${BORINGSSL_SOURCE_DIR}/crypto/crypto.c "${BORINGSSL_SOURCE_DIR}/crypto/crypto.c"
${BORINGSSL_SOURCE_DIR}/crypto/curve25519/curve25519.c "${BORINGSSL_SOURCE_DIR}/crypto/curve25519/curve25519.c"
${BORINGSSL_SOURCE_DIR}/crypto/curve25519/spake25519.c "${BORINGSSL_SOURCE_DIR}/crypto/curve25519/spake25519.c"
${BORINGSSL_SOURCE_DIR}/crypto/dh_extra/dh_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/dh_extra/dh_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/dh_extra/params.c "${BORINGSSL_SOURCE_DIR}/crypto/dh_extra/params.c"
${BORINGSSL_SOURCE_DIR}/crypto/digest_extra/digest_extra.c "${BORINGSSL_SOURCE_DIR}/crypto/digest_extra/digest_extra.c"
${BORINGSSL_SOURCE_DIR}/crypto/dsa/dsa.c "${BORINGSSL_SOURCE_DIR}/crypto/dsa/dsa.c"
${BORINGSSL_SOURCE_DIR}/crypto/dsa/dsa_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/dsa/dsa_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/ec_extra/ec_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/ec_extra/ec_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/ec_extra/ec_derive.c "${BORINGSSL_SOURCE_DIR}/crypto/ec_extra/ec_derive.c"
${BORINGSSL_SOURCE_DIR}/crypto/ec_extra/hash_to_curve.c "${BORINGSSL_SOURCE_DIR}/crypto/ec_extra/hash_to_curve.c"
${BORINGSSL_SOURCE_DIR}/crypto/ecdh_extra/ecdh_extra.c "${BORINGSSL_SOURCE_DIR}/crypto/ecdh_extra/ecdh_extra.c"
${BORINGSSL_SOURCE_DIR}/crypto/ecdsa_extra/ecdsa_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/ecdsa_extra/ecdsa_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/engine/engine.c "${BORINGSSL_SOURCE_DIR}/crypto/engine/engine.c"
${BORINGSSL_SOURCE_DIR}/crypto/err/err.c "${BORINGSSL_SOURCE_DIR}/crypto/err/err.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/digestsign.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/digestsign.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/evp.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/evp.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/evp_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/evp_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/evp_ctx.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/evp_ctx.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_dsa_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_dsa_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ec.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ec.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ec_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ec_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ed25519.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ed25519.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ed25519_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_ed25519_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_rsa.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_rsa.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_rsa_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_rsa_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_x25519.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_x25519.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/p_x25519_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/p_x25519_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/pbkdf.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/pbkdf.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/print.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/print.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/scrypt.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/scrypt.c"
${BORINGSSL_SOURCE_DIR}/crypto/evp/sign.c "${BORINGSSL_SOURCE_DIR}/crypto/evp/sign.c"
${BORINGSSL_SOURCE_DIR}/crypto/ex_data.c "${BORINGSSL_SOURCE_DIR}/crypto/ex_data.c"
${BORINGSSL_SOURCE_DIR}/crypto/fipsmodule/bcm.c "${BORINGSSL_SOURCE_DIR}/crypto/fipsmodule/bcm.c"
${BORINGSSL_SOURCE_DIR}/crypto/fipsmodule/fips_shared_support.c "${BORINGSSL_SOURCE_DIR}/crypto/fipsmodule/fips_shared_support.c"
${BORINGSSL_SOURCE_DIR}/crypto/fipsmodule/is_fips.c "${BORINGSSL_SOURCE_DIR}/crypto/fipsmodule/is_fips.c"
${BORINGSSL_SOURCE_DIR}/crypto/hkdf/hkdf.c "${BORINGSSL_SOURCE_DIR}/crypto/hkdf/hkdf.c"
${BORINGSSL_SOURCE_DIR}/crypto/hpke/hpke.c "${BORINGSSL_SOURCE_DIR}/crypto/hpke/hpke.c"
${BORINGSSL_SOURCE_DIR}/crypto/hrss/hrss.c "${BORINGSSL_SOURCE_DIR}/crypto/hrss/hrss.c"
${BORINGSSL_SOURCE_DIR}/crypto/lhash/lhash.c "${BORINGSSL_SOURCE_DIR}/crypto/lhash/lhash.c"
${BORINGSSL_SOURCE_DIR}/crypto/mem.c "${BORINGSSL_SOURCE_DIR}/crypto/mem.c"
${BORINGSSL_SOURCE_DIR}/crypto/obj/obj.c "${BORINGSSL_SOURCE_DIR}/crypto/obj/obj.c"
${BORINGSSL_SOURCE_DIR}/crypto/obj/obj_xref.c "${BORINGSSL_SOURCE_DIR}/crypto/obj/obj_xref.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_all.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_all.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_info.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_info.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_lib.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_lib.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_oth.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_oth.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_pk8.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_pk8.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_pkey.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_pkey.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_x509.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_x509.c"
${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_xaux.c "${BORINGSSL_SOURCE_DIR}/crypto/pem/pem_xaux.c"
${BORINGSSL_SOURCE_DIR}/crypto/pkcs7/pkcs7.c "${BORINGSSL_SOURCE_DIR}/crypto/pkcs7/pkcs7.c"
${BORINGSSL_SOURCE_DIR}/crypto/pkcs7/pkcs7_x509.c "${BORINGSSL_SOURCE_DIR}/crypto/pkcs7/pkcs7_x509.c"
${BORINGSSL_SOURCE_DIR}/crypto/pkcs8/p5_pbev2.c "${BORINGSSL_SOURCE_DIR}/crypto/pkcs8/p5_pbev2.c"
${BORINGSSL_SOURCE_DIR}/crypto/pkcs8/pkcs8.c "${BORINGSSL_SOURCE_DIR}/crypto/pkcs8/pkcs8.c"
${BORINGSSL_SOURCE_DIR}/crypto/pkcs8/pkcs8_x509.c "${BORINGSSL_SOURCE_DIR}/crypto/pkcs8/pkcs8_x509.c"
${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305.c "${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305.c"
${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305_arm.c "${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305_arm.c"
${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305_vec.c "${BORINGSSL_SOURCE_DIR}/crypto/poly1305/poly1305_vec.c"
${BORINGSSL_SOURCE_DIR}/crypto/pool/pool.c "${BORINGSSL_SOURCE_DIR}/crypto/pool/pool.c"
${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/deterministic.c "${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/deterministic.c"
${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/forkunsafe.c "${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/forkunsafe.c"
${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/fuchsia.c "${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/fuchsia.c"
${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/passive.c "${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/passive.c"
${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/rand_extra.c "${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/rand_extra.c"
${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/windows.c "${BORINGSSL_SOURCE_DIR}/crypto/rand_extra/windows.c"
${BORINGSSL_SOURCE_DIR}/crypto/rc4/rc4.c "${BORINGSSL_SOURCE_DIR}/crypto/rc4/rc4.c"
${BORINGSSL_SOURCE_DIR}/crypto/refcount_c11.c "${BORINGSSL_SOURCE_DIR}/crypto/refcount_c11.c"
${BORINGSSL_SOURCE_DIR}/crypto/refcount_lock.c "${BORINGSSL_SOURCE_DIR}/crypto/refcount_lock.c"
${BORINGSSL_SOURCE_DIR}/crypto/rsa_extra/rsa_asn1.c "${BORINGSSL_SOURCE_DIR}/crypto/rsa_extra/rsa_asn1.c"
${BORINGSSL_SOURCE_DIR}/crypto/rsa_extra/rsa_print.c "${BORINGSSL_SOURCE_DIR}/crypto/rsa_extra/rsa_print.c"
${BORINGSSL_SOURCE_DIR}/crypto/siphash/siphash.c "${BORINGSSL_SOURCE_DIR}/crypto/siphash/siphash.c"
${BORINGSSL_SOURCE_DIR}/crypto/stack/stack.c "${BORINGSSL_SOURCE_DIR}/crypto/stack/stack.c"
${BORINGSSL_SOURCE_DIR}/crypto/thread.c "${BORINGSSL_SOURCE_DIR}/crypto/thread.c"
${BORINGSSL_SOURCE_DIR}/crypto/thread_none.c "${BORINGSSL_SOURCE_DIR}/crypto/thread_none.c"
${BORINGSSL_SOURCE_DIR}/crypto/thread_pthread.c "${BORINGSSL_SOURCE_DIR}/crypto/thread_pthread.c"
${BORINGSSL_SOURCE_DIR}/crypto/thread_win.c "${BORINGSSL_SOURCE_DIR}/crypto/thread_win.c"
${BORINGSSL_SOURCE_DIR}/crypto/trust_token/pmbtoken.c "${BORINGSSL_SOURCE_DIR}/crypto/trust_token/pmbtoken.c"
${BORINGSSL_SOURCE_DIR}/crypto/trust_token/trust_token.c "${BORINGSSL_SOURCE_DIR}/crypto/trust_token/trust_token.c"
${BORINGSSL_SOURCE_DIR}/crypto/trust_token/voprf.c "${BORINGSSL_SOURCE_DIR}/crypto/trust_token/voprf.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/a_digest.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/a_digest.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/a_sign.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/a_sign.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/a_strex.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/a_strex.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/a_verify.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/a_verify.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/algorithm.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/algorithm.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/asn1_gen.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/asn1_gen.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/by_dir.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/by_dir.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/by_file.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/by_file.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/i2d_pr.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/i2d_pr.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/rsa_pss.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/rsa_pss.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/t_crl.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/t_crl.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/t_req.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/t_req.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/t_x509.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/t_x509.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/t_x509a.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/t_x509a.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_att.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_att.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_cmp.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_cmp.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_d2.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_d2.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_def.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_def.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_ext.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_ext.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_lu.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_lu.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_obj.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_obj.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_r2x.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_r2x.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_req.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_req.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_set.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_set.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_trs.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_trs.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_txt.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_txt.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_v3.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_v3.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_vfy.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_vfy.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_vpm.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509_vpm.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509cset.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509cset.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509name.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509name.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509rset.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509rset.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x509spki.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x509spki.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_algor.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_algor.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_all.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_all.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_attrib.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_attrib.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_crl.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_crl.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_exten.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_exten.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_info.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_info.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_name.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_name.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_pkey.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_pkey.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_pubkey.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_pubkey.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_req.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_req.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_sig.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_sig.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_spki.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_spki.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_val.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_val.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_x509.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_x509.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509/x_x509a.c "${BORINGSSL_SOURCE_DIR}/crypto/x509/x_x509a.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_cache.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_cache.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_data.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_data.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_lib.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_lib.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_map.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_map.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_node.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_node.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_tree.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/pcy_tree.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_akey.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_akey.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_akeya.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_akeya.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_alt.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_alt.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_bcons.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_bcons.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_bitst.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_bitst.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_conf.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_conf.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_cpols.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_cpols.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_crld.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_crld.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_enum.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_enum.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_extku.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_extku.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_genn.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_genn.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_ia5.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_ia5.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_info.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_info.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_int.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_int.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_lib.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_lib.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_ncons.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_ncons.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_ocsp.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_ocsp.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pci.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pci.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pcia.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pcia.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pcons.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pcons.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pmaps.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_pmaps.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_prn.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_prn.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_purp.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_purp.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_skey.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_skey.c"
${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_utl.c "${BORINGSSL_SOURCE_DIR}/crypto/x509v3/v3_utl.c"
) )
add_library( add_library(
ssl ssl
${BORINGSSL_SOURCE_DIR}/ssl/bio_ssl.cc "${BORINGSSL_SOURCE_DIR}/ssl/bio_ssl.cc"
${BORINGSSL_SOURCE_DIR}/ssl/d1_both.cc "${BORINGSSL_SOURCE_DIR}/ssl/d1_both.cc"
${BORINGSSL_SOURCE_DIR}/ssl/d1_lib.cc "${BORINGSSL_SOURCE_DIR}/ssl/d1_lib.cc"
${BORINGSSL_SOURCE_DIR}/ssl/d1_pkt.cc "${BORINGSSL_SOURCE_DIR}/ssl/d1_pkt.cc"
${BORINGSSL_SOURCE_DIR}/ssl/d1_srtp.cc "${BORINGSSL_SOURCE_DIR}/ssl/d1_srtp.cc"
${BORINGSSL_SOURCE_DIR}/ssl/dtls_method.cc "${BORINGSSL_SOURCE_DIR}/ssl/dtls_method.cc"
${BORINGSSL_SOURCE_DIR}/ssl/dtls_record.cc "${BORINGSSL_SOURCE_DIR}/ssl/dtls_record.cc"
${BORINGSSL_SOURCE_DIR}/ssl/handoff.cc "${BORINGSSL_SOURCE_DIR}/ssl/handoff.cc"
${BORINGSSL_SOURCE_DIR}/ssl/handshake.cc "${BORINGSSL_SOURCE_DIR}/ssl/handshake.cc"
${BORINGSSL_SOURCE_DIR}/ssl/handshake_client.cc "${BORINGSSL_SOURCE_DIR}/ssl/handshake_client.cc"
${BORINGSSL_SOURCE_DIR}/ssl/handshake_server.cc "${BORINGSSL_SOURCE_DIR}/ssl/handshake_server.cc"
${BORINGSSL_SOURCE_DIR}/ssl/s3_both.cc "${BORINGSSL_SOURCE_DIR}/ssl/s3_both.cc"
${BORINGSSL_SOURCE_DIR}/ssl/s3_lib.cc "${BORINGSSL_SOURCE_DIR}/ssl/s3_lib.cc"
${BORINGSSL_SOURCE_DIR}/ssl/s3_pkt.cc "${BORINGSSL_SOURCE_DIR}/ssl/s3_pkt.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_aead_ctx.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_aead_ctx.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_asn1.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_asn1.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_buffer.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_buffer.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_cert.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_cert.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_cipher.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_cipher.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_file.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_file.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_key_share.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_key_share.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_lib.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_lib.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_privkey.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_privkey.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_session.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_session.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_stat.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_stat.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_transcript.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_transcript.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_versions.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_versions.cc"
${BORINGSSL_SOURCE_DIR}/ssl/ssl_x509.cc "${BORINGSSL_SOURCE_DIR}/ssl/ssl_x509.cc"
${BORINGSSL_SOURCE_DIR}/ssl/t1_enc.cc "${BORINGSSL_SOURCE_DIR}/ssl/t1_enc.cc"
${BORINGSSL_SOURCE_DIR}/ssl/t1_lib.cc "${BORINGSSL_SOURCE_DIR}/ssl/t1_lib.cc"
${BORINGSSL_SOURCE_DIR}/ssl/tls13_both.cc "${BORINGSSL_SOURCE_DIR}/ssl/tls13_both.cc"
${BORINGSSL_SOURCE_DIR}/ssl/tls13_client.cc "${BORINGSSL_SOURCE_DIR}/ssl/tls13_client.cc"
${BORINGSSL_SOURCE_DIR}/ssl/tls13_enc.cc "${BORINGSSL_SOURCE_DIR}/ssl/tls13_enc.cc"
${BORINGSSL_SOURCE_DIR}/ssl/tls13_server.cc "${BORINGSSL_SOURCE_DIR}/ssl/tls13_server.cc"
${BORINGSSL_SOURCE_DIR}/ssl/tls_method.cc "${BORINGSSL_SOURCE_DIR}/ssl/tls_method.cc"
${BORINGSSL_SOURCE_DIR}/ssl/tls_record.cc "${BORINGSSL_SOURCE_DIR}/ssl/tls_record.cc"
${BORINGSSL_SOURCE_DIR}/decrepit/ssl/ssl_decrepit.c "${BORINGSSL_SOURCE_DIR}/decrepit/ssl/ssl_decrepit.c"
${BORINGSSL_SOURCE_DIR}/decrepit/cfb/cfb.c "${BORINGSSL_SOURCE_DIR}/decrepit/cfb/cfb.c"
) )
add_executable( add_executable(
bssl bssl
${BORINGSSL_SOURCE_DIR}/tool/args.cc "${BORINGSSL_SOURCE_DIR}/tool/args.cc"
${BORINGSSL_SOURCE_DIR}/tool/ciphers.cc "${BORINGSSL_SOURCE_DIR}/tool/ciphers.cc"
${BORINGSSL_SOURCE_DIR}/tool/client.cc "${BORINGSSL_SOURCE_DIR}/tool/client.cc"
${BORINGSSL_SOURCE_DIR}/tool/const.cc "${BORINGSSL_SOURCE_DIR}/tool/const.cc"
${BORINGSSL_SOURCE_DIR}/tool/digest.cc "${BORINGSSL_SOURCE_DIR}/tool/digest.cc"
${BORINGSSL_SOURCE_DIR}/tool/fd.cc "${BORINGSSL_SOURCE_DIR}/tool/fd.cc"
${BORINGSSL_SOURCE_DIR}/tool/file.cc "${BORINGSSL_SOURCE_DIR}/tool/file.cc"
${BORINGSSL_SOURCE_DIR}/tool/generate_ed25519.cc "${BORINGSSL_SOURCE_DIR}/tool/generate_ed25519.cc"
${BORINGSSL_SOURCE_DIR}/tool/genrsa.cc "${BORINGSSL_SOURCE_DIR}/tool/genrsa.cc"
${BORINGSSL_SOURCE_DIR}/tool/pkcs12.cc "${BORINGSSL_SOURCE_DIR}/tool/pkcs12.cc"
${BORINGSSL_SOURCE_DIR}/tool/rand.cc "${BORINGSSL_SOURCE_DIR}/tool/rand.cc"
${BORINGSSL_SOURCE_DIR}/tool/server.cc "${BORINGSSL_SOURCE_DIR}/tool/server.cc"
${BORINGSSL_SOURCE_DIR}/tool/sign.cc "${BORINGSSL_SOURCE_DIR}/tool/sign.cc"
${BORINGSSL_SOURCE_DIR}/tool/speed.cc "${BORINGSSL_SOURCE_DIR}/tool/speed.cc"
${BORINGSSL_SOURCE_DIR}/tool/tool.cc "${BORINGSSL_SOURCE_DIR}/tool/tool.cc"
${BORINGSSL_SOURCE_DIR}/tool/transport_common.cc "${BORINGSSL_SOURCE_DIR}/tool/transport_common.cc"
) )
target_link_libraries(ssl crypto) target_link_libraries(ssl crypto)
@ -655,7 +655,7 @@ if(WIN32)
target_link_libraries(bssl ws2_32) target_link_libraries(bssl ws2_32)
endif() endif()
target_include_directories(crypto SYSTEM PUBLIC ${BORINGSSL_SOURCE_DIR}/include) target_include_directories(crypto SYSTEM PUBLIC "${BORINGSSL_SOURCE_DIR}/include")
target_include_directories(ssl SYSTEM PUBLIC ${BORINGSSL_SOURCE_DIR}/include) target_include_directories(ssl SYSTEM PUBLIC "${BORINGSSL_SOURCE_DIR}/include")
target_compile_options(crypto PRIVATE -Wno-gnu-anonymous-struct) target_compile_options(crypto PRIVATE -Wno-gnu-anonymous-struct)

View File

@ -1,41 +1,41 @@
set(BROTLI_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/brotli/c) set(BROTLI_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/brotli/c")
set(BROTLI_BINARY_DIR ${ClickHouse_BINARY_DIR}/contrib/brotli/c) set(BROTLI_BINARY_DIR "${ClickHouse_BINARY_DIR}/contrib/brotli/c")
set(SRCS set(SRCS
${BROTLI_SOURCE_DIR}/enc/command.c "${BROTLI_SOURCE_DIR}/enc/command.c"
${BROTLI_SOURCE_DIR}/enc/fast_log.c "${BROTLI_SOURCE_DIR}/enc/fast_log.c"
${BROTLI_SOURCE_DIR}/dec/bit_reader.c "${BROTLI_SOURCE_DIR}/dec/bit_reader.c"
${BROTLI_SOURCE_DIR}/dec/state.c "${BROTLI_SOURCE_DIR}/dec/state.c"
${BROTLI_SOURCE_DIR}/dec/huffman.c "${BROTLI_SOURCE_DIR}/dec/huffman.c"
${BROTLI_SOURCE_DIR}/dec/decode.c "${BROTLI_SOURCE_DIR}/dec/decode.c"
${BROTLI_SOURCE_DIR}/enc/encode.c "${BROTLI_SOURCE_DIR}/enc/encode.c"
${BROTLI_SOURCE_DIR}/enc/dictionary_hash.c "${BROTLI_SOURCE_DIR}/enc/dictionary_hash.c"
${BROTLI_SOURCE_DIR}/enc/cluster.c "${BROTLI_SOURCE_DIR}/enc/cluster.c"
${BROTLI_SOURCE_DIR}/enc/entropy_encode.c "${BROTLI_SOURCE_DIR}/enc/entropy_encode.c"
${BROTLI_SOURCE_DIR}/enc/literal_cost.c "${BROTLI_SOURCE_DIR}/enc/literal_cost.c"
${BROTLI_SOURCE_DIR}/enc/compress_fragment_two_pass.c "${BROTLI_SOURCE_DIR}/enc/compress_fragment_two_pass.c"
${BROTLI_SOURCE_DIR}/enc/static_dict.c "${BROTLI_SOURCE_DIR}/enc/static_dict.c"
${BROTLI_SOURCE_DIR}/enc/compress_fragment.c "${BROTLI_SOURCE_DIR}/enc/compress_fragment.c"
${BROTLI_SOURCE_DIR}/enc/block_splitter.c "${BROTLI_SOURCE_DIR}/enc/block_splitter.c"
${BROTLI_SOURCE_DIR}/enc/backward_references_hq.c "${BROTLI_SOURCE_DIR}/enc/backward_references_hq.c"
${BROTLI_SOURCE_DIR}/enc/histogram.c "${BROTLI_SOURCE_DIR}/enc/histogram.c"
${BROTLI_SOURCE_DIR}/enc/brotli_bit_stream.c "${BROTLI_SOURCE_DIR}/enc/brotli_bit_stream.c"
${BROTLI_SOURCE_DIR}/enc/utf8_util.c "${BROTLI_SOURCE_DIR}/enc/utf8_util.c"
${BROTLI_SOURCE_DIR}/enc/encoder_dict.c "${BROTLI_SOURCE_DIR}/enc/encoder_dict.c"
${BROTLI_SOURCE_DIR}/enc/backward_references.c "${BROTLI_SOURCE_DIR}/enc/backward_references.c"
${BROTLI_SOURCE_DIR}/enc/bit_cost.c "${BROTLI_SOURCE_DIR}/enc/bit_cost.c"
${BROTLI_SOURCE_DIR}/enc/metablock.c "${BROTLI_SOURCE_DIR}/enc/metablock.c"
${BROTLI_SOURCE_DIR}/enc/memory.c "${BROTLI_SOURCE_DIR}/enc/memory.c"
${BROTLI_SOURCE_DIR}/common/dictionary.c "${BROTLI_SOURCE_DIR}/common/dictionary.c"
${BROTLI_SOURCE_DIR}/common/transform.c "${BROTLI_SOURCE_DIR}/common/transform.c"
${BROTLI_SOURCE_DIR}/common/platform.c "${BROTLI_SOURCE_DIR}/common/platform.c"
${BROTLI_SOURCE_DIR}/common/context.c "${BROTLI_SOURCE_DIR}/common/context.c"
${BROTLI_SOURCE_DIR}/common/constants.c "${BROTLI_SOURCE_DIR}/common/constants.c"
) )
add_library(brotli ${SRCS}) add_library(brotli ${SRCS})
target_include_directories(brotli PUBLIC ${BROTLI_SOURCE_DIR}/include) target_include_directories(brotli PUBLIC "${BROTLI_SOURCE_DIR}/include")
if(M_LIBRARY) if(M_LIBRARY)
target_link_libraries(brotli PRIVATE ${M_LIBRARY}) target_link_libraries(brotli PRIVATE ${M_LIBRARY})

View File

@ -1,53 +1,53 @@
set (CAPNPROTO_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/capnproto/c++/src) set (CAPNPROTO_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/capnproto/c++/src")
set (CMAKE_CXX_STANDARD 17) set (CMAKE_CXX_STANDARD 17)
set (KJ_SRCS set (KJ_SRCS
${CAPNPROTO_SOURCE_DIR}/kj/array.c++ "${CAPNPROTO_SOURCE_DIR}/kj/array.c++"
${CAPNPROTO_SOURCE_DIR}/kj/common.c++ "${CAPNPROTO_SOURCE_DIR}/kj/common.c++"
${CAPNPROTO_SOURCE_DIR}/kj/debug.c++ "${CAPNPROTO_SOURCE_DIR}/kj/debug.c++"
${CAPNPROTO_SOURCE_DIR}/kj/exception.c++ "${CAPNPROTO_SOURCE_DIR}/kj/exception.c++"
${CAPNPROTO_SOURCE_DIR}/kj/io.c++ "${CAPNPROTO_SOURCE_DIR}/kj/io.c++"
${CAPNPROTO_SOURCE_DIR}/kj/memory.c++ "${CAPNPROTO_SOURCE_DIR}/kj/memory.c++"
${CAPNPROTO_SOURCE_DIR}/kj/mutex.c++ "${CAPNPROTO_SOURCE_DIR}/kj/mutex.c++"
${CAPNPROTO_SOURCE_DIR}/kj/string.c++ "${CAPNPROTO_SOURCE_DIR}/kj/string.c++"
${CAPNPROTO_SOURCE_DIR}/kj/hash.c++ "${CAPNPROTO_SOURCE_DIR}/kj/hash.c++"
${CAPNPROTO_SOURCE_DIR}/kj/table.c++ "${CAPNPROTO_SOURCE_DIR}/kj/table.c++"
${CAPNPROTO_SOURCE_DIR}/kj/thread.c++ "${CAPNPROTO_SOURCE_DIR}/kj/thread.c++"
${CAPNPROTO_SOURCE_DIR}/kj/main.c++ "${CAPNPROTO_SOURCE_DIR}/kj/main.c++"
${CAPNPROTO_SOURCE_DIR}/kj/arena.c++ "${CAPNPROTO_SOURCE_DIR}/kj/arena.c++"
${CAPNPROTO_SOURCE_DIR}/kj/test-helpers.c++ "${CAPNPROTO_SOURCE_DIR}/kj/test-helpers.c++"
${CAPNPROTO_SOURCE_DIR}/kj/units.c++ "${CAPNPROTO_SOURCE_DIR}/kj/units.c++"
${CAPNPROTO_SOURCE_DIR}/kj/encoding.c++ "${CAPNPROTO_SOURCE_DIR}/kj/encoding.c++"
${CAPNPROTO_SOURCE_DIR}/kj/refcount.c++ "${CAPNPROTO_SOURCE_DIR}/kj/refcount.c++"
${CAPNPROTO_SOURCE_DIR}/kj/string-tree.c++ "${CAPNPROTO_SOURCE_DIR}/kj/string-tree.c++"
${CAPNPROTO_SOURCE_DIR}/kj/time.c++ "${CAPNPROTO_SOURCE_DIR}/kj/time.c++"
${CAPNPROTO_SOURCE_DIR}/kj/filesystem.c++ "${CAPNPROTO_SOURCE_DIR}/kj/filesystem.c++"
${CAPNPROTO_SOURCE_DIR}/kj/filesystem-disk-unix.c++ "${CAPNPROTO_SOURCE_DIR}/kj/filesystem-disk-unix.c++"
${CAPNPROTO_SOURCE_DIR}/kj/filesystem-disk-win32.c++ "${CAPNPROTO_SOURCE_DIR}/kj/filesystem-disk-win32.c++"
${CAPNPROTO_SOURCE_DIR}/kj/parse/char.c++ "${CAPNPROTO_SOURCE_DIR}/kj/parse/char.c++"
) )
add_library(kj ${KJ_SRCS}) add_library(kj ${KJ_SRCS})
target_include_directories(kj SYSTEM PUBLIC ${CAPNPROTO_SOURCE_DIR}) target_include_directories(kj SYSTEM PUBLIC ${CAPNPROTO_SOURCE_DIR})
set (CAPNP_SRCS set (CAPNP_SRCS
${CAPNPROTO_SOURCE_DIR}/capnp/c++.capnp.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/c++.capnp.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/blob.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/blob.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/arena.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/arena.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/layout.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/layout.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/list.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/list.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/any.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/any.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/message.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/message.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/schema.capnp.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/schema.capnp.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/serialize.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/serialize.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/serialize-packed.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/serialize-packed.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/schema.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/schema.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/schema-loader.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/schema-loader.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/dynamic.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/dynamic.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/stringify.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/stringify.c++"
) )
add_library(capnp ${CAPNP_SRCS}) add_library(capnp ${CAPNP_SRCS})
@ -57,16 +57,16 @@ set_target_properties(capnp
target_link_libraries(capnp PUBLIC kj) target_link_libraries(capnp PUBLIC kj)
set (CAPNPC_SRCS set (CAPNPC_SRCS
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/type-id.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/type-id.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/error-reporter.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/error-reporter.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/lexer.capnp.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/lexer.capnp.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/lexer.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/lexer.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/grammar.capnp.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/grammar.capnp.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/parser.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/parser.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/node-translator.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/node-translator.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/compiler/compiler.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/compiler/compiler.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/schema-parser.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/schema-parser.c++"
${CAPNPROTO_SOURCE_DIR}/capnp/serialize-text.c++ "${CAPNPROTO_SOURCE_DIR}/capnp/serialize-text.c++"
) )
add_library(capnpc ${CAPNPC_SRCS}) add_library(capnpc ${CAPNPC_SRCS})

View File

@ -40,23 +40,23 @@ endif()
if (NOT EXTERNAL_CCTZ_LIBRARY_FOUND OR NOT EXTERNAL_CCTZ_LIBRARY_WORKS) if (NOT EXTERNAL_CCTZ_LIBRARY_FOUND OR NOT EXTERNAL_CCTZ_LIBRARY_WORKS)
set(USE_INTERNAL_CCTZ_LIBRARY 1) set(USE_INTERNAL_CCTZ_LIBRARY 1)
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/cctz) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/cctz")
set (SRCS set (SRCS
${LIBRARY_DIR}/src/civil_time_detail.cc "${LIBRARY_DIR}/src/civil_time_detail.cc"
${LIBRARY_DIR}/src/time_zone_fixed.cc "${LIBRARY_DIR}/src/time_zone_fixed.cc"
${LIBRARY_DIR}/src/time_zone_format.cc "${LIBRARY_DIR}/src/time_zone_format.cc"
${LIBRARY_DIR}/src/time_zone_if.cc "${LIBRARY_DIR}/src/time_zone_if.cc"
${LIBRARY_DIR}/src/time_zone_impl.cc "${LIBRARY_DIR}/src/time_zone_impl.cc"
${LIBRARY_DIR}/src/time_zone_info.cc "${LIBRARY_DIR}/src/time_zone_info.cc"
${LIBRARY_DIR}/src/time_zone_libc.cc "${LIBRARY_DIR}/src/time_zone_libc.cc"
${LIBRARY_DIR}/src/time_zone_lookup.cc "${LIBRARY_DIR}/src/time_zone_lookup.cc"
${LIBRARY_DIR}/src/time_zone_posix.cc "${LIBRARY_DIR}/src/time_zone_posix.cc"
${LIBRARY_DIR}/src/zone_info_source.cc "${LIBRARY_DIR}/src/zone_info_source.cc"
) )
add_library (cctz ${SRCS}) add_library (cctz ${SRCS})
target_include_directories (cctz PUBLIC ${LIBRARY_DIR}/include) target_include_directories (cctz PUBLIC "${LIBRARY_DIR}/include")
if (OS_FREEBSD) if (OS_FREEBSD)
# yes, need linux, because bsd check inside linux in time_zone_libc.cc:24 # yes, need linux, because bsd check inside linux in time_zone_libc.cc:24
@ -73,8 +73,8 @@ if (NOT EXTERNAL_CCTZ_LIBRARY_FOUND OR NOT EXTERNAL_CCTZ_LIBRARY_WORKS)
# Build a libray with embedded tzdata # Build a libray with embedded tzdata
if (OS_LINUX) if (OS_LINUX)
# get the list of timezones from tzdata shipped with cctz # get the list of timezones from tzdata shipped with cctz
set(TZDIR ${LIBRARY_DIR}/testdata/zoneinfo) set(TZDIR "${LIBRARY_DIR}/testdata/zoneinfo")
file(STRINGS ${LIBRARY_DIR}/testdata/version TZDATA_VERSION) file(STRINGS "${LIBRARY_DIR}/testdata/version" TZDATA_VERSION)
set_property(GLOBAL PROPERTY TZDATA_VERSION_PROP "${TZDATA_VERSION}") set_property(GLOBAL PROPERTY TZDATA_VERSION_PROP "${TZDATA_VERSION}")
message(STATUS "Packaging with tzdata version: ${TZDATA_VERSION}") message(STATUS "Packaging with tzdata version: ${TZDATA_VERSION}")
@ -100,15 +100,15 @@ if (NOT EXTERNAL_CCTZ_LIBRARY_FOUND OR NOT EXTERNAL_CCTZ_LIBRARY_WORKS)
# PPC64LE fails to do this with objcopy, use ld or lld instead # PPC64LE fails to do this with objcopy, use ld or lld instead
if (ARCH_PPC64LE) if (ARCH_PPC64LE)
add_custom_command(OUTPUT ${TZ_OBJ} add_custom_command(OUTPUT ${TZ_OBJ}
COMMAND cp ${TZDIR}/${TIMEZONE} ${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID} COMMAND cp "${TZDIR}/${TIMEZONE}" "${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID}"
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR} && ${CMAKE_LINKER} -m elf64lppc -r -b binary -o ${TZ_OBJ} ${TIMEZONE_ID} COMMAND cd ${CMAKE_CURRENT_BINARY_DIR} && ${CMAKE_LINKER} -m elf64lppc -r -b binary -o ${TZ_OBJ} ${TIMEZONE_ID}
COMMAND rm ${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID}) COMMAND rm "${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID}")
else() else()
add_custom_command(OUTPUT ${TZ_OBJ} add_custom_command(OUTPUT ${TZ_OBJ}
COMMAND cp ${TZDIR}/${TIMEZONE} ${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID} COMMAND cp "${TZDIR}/${TIMEZONE}" "${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID}"
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR} && ${OBJCOPY_PATH} -I binary ${OBJCOPY_ARCH_OPTIONS} COMMAND cd ${CMAKE_CURRENT_BINARY_DIR} && ${OBJCOPY_PATH} -I binary ${OBJCOPY_ARCH_OPTIONS}
--rename-section .data=.rodata,alloc,load,readonly,data,contents ${TIMEZONE_ID} ${TZ_OBJ} --rename-section .data=.rodata,alloc,load,readonly,data,contents ${TIMEZONE_ID} ${TZ_OBJ}
COMMAND rm ${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID}) COMMAND rm "${CMAKE_CURRENT_BINARY_DIR}/${TIMEZONE_ID}")
endif() endif()
set_source_files_properties(${TZ_OBJ} PROPERTIES EXTERNAL_OBJECT true GENERATED true) set_source_files_properties(${TZ_OBJ} PROPERTIES EXTERNAL_OBJECT true GENERATED true)
endforeach(TIMEZONE) endforeach(TIMEZONE)

2
contrib/cppkafka vendored

@ -1 +1 @@
Subproject commit b06e64ef5bffd636d918a742c689f69130c1dbab Subproject commit 57a599d99c540e647bcd0eb9ea77c523cca011b3

View File

@ -1,25 +1,25 @@
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/cppkafka) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/cppkafka")
set(SRCS set(SRCS
${LIBRARY_DIR}/src/buffer.cpp "${LIBRARY_DIR}/src/buffer.cpp"
${LIBRARY_DIR}/src/configuration_option.cpp "${LIBRARY_DIR}/src/configuration_option.cpp"
${LIBRARY_DIR}/src/configuration.cpp "${LIBRARY_DIR}/src/configuration.cpp"
${LIBRARY_DIR}/src/consumer.cpp "${LIBRARY_DIR}/src/consumer.cpp"
${LIBRARY_DIR}/src/error.cpp "${LIBRARY_DIR}/src/error.cpp"
${LIBRARY_DIR}/src/event.cpp "${LIBRARY_DIR}/src/event.cpp"
${LIBRARY_DIR}/src/exceptions.cpp "${LIBRARY_DIR}/src/exceptions.cpp"
${LIBRARY_DIR}/src/group_information.cpp "${LIBRARY_DIR}/src/group_information.cpp"
${LIBRARY_DIR}/src/kafka_handle_base.cpp "${LIBRARY_DIR}/src/kafka_handle_base.cpp"
${LIBRARY_DIR}/src/message_internal.cpp "${LIBRARY_DIR}/src/message_internal.cpp"
${LIBRARY_DIR}/src/message_timestamp.cpp "${LIBRARY_DIR}/src/message_timestamp.cpp"
${LIBRARY_DIR}/src/message.cpp "${LIBRARY_DIR}/src/message.cpp"
${LIBRARY_DIR}/src/metadata.cpp "${LIBRARY_DIR}/src/metadata.cpp"
${LIBRARY_DIR}/src/producer.cpp "${LIBRARY_DIR}/src/producer.cpp"
${LIBRARY_DIR}/src/queue.cpp "${LIBRARY_DIR}/src/queue.cpp"
${LIBRARY_DIR}/src/topic_configuration.cpp "${LIBRARY_DIR}/src/topic_configuration.cpp"
${LIBRARY_DIR}/src/topic_partition_list.cpp "${LIBRARY_DIR}/src/topic_partition_list.cpp"
${LIBRARY_DIR}/src/topic_partition.cpp "${LIBRARY_DIR}/src/topic_partition.cpp"
${LIBRARY_DIR}/src/topic.cpp "${LIBRARY_DIR}/src/topic.cpp"
) )
add_library(cppkafka ${SRCS}) add_library(cppkafka ${SRCS})
@ -29,5 +29,5 @@ target_link_libraries(cppkafka
${RDKAFKA_LIBRARY} ${RDKAFKA_LIBRARY}
boost::headers_only boost::headers_only
) )
target_include_directories(cppkafka PRIVATE ${LIBRARY_DIR}/include/cppkafka) target_include_directories(cppkafka PRIVATE "${LIBRARY_DIR}/include/cppkafka")
target_include_directories(cppkafka SYSTEM BEFORE PUBLIC ${LIBRARY_DIR}/include) target_include_directories(cppkafka SYSTEM BEFORE PUBLIC "${LIBRARY_DIR}/include")

View File

@ -1,26 +1,26 @@
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/croaring) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/croaring")
set(SRCS set(SRCS
${LIBRARY_DIR}/src/array_util.c "${LIBRARY_DIR}/src/array_util.c"
${LIBRARY_DIR}/src/bitset_util.c "${LIBRARY_DIR}/src/bitset_util.c"
${LIBRARY_DIR}/src/containers/array.c "${LIBRARY_DIR}/src/containers/array.c"
${LIBRARY_DIR}/src/containers/bitset.c "${LIBRARY_DIR}/src/containers/bitset.c"
${LIBRARY_DIR}/src/containers/containers.c "${LIBRARY_DIR}/src/containers/containers.c"
${LIBRARY_DIR}/src/containers/convert.c "${LIBRARY_DIR}/src/containers/convert.c"
${LIBRARY_DIR}/src/containers/mixed_intersection.c "${LIBRARY_DIR}/src/containers/mixed_intersection.c"
${LIBRARY_DIR}/src/containers/mixed_union.c "${LIBRARY_DIR}/src/containers/mixed_union.c"
${LIBRARY_DIR}/src/containers/mixed_equal.c "${LIBRARY_DIR}/src/containers/mixed_equal.c"
${LIBRARY_DIR}/src/containers/mixed_subset.c "${LIBRARY_DIR}/src/containers/mixed_subset.c"
${LIBRARY_DIR}/src/containers/mixed_negation.c "${LIBRARY_DIR}/src/containers/mixed_negation.c"
${LIBRARY_DIR}/src/containers/mixed_xor.c "${LIBRARY_DIR}/src/containers/mixed_xor.c"
${LIBRARY_DIR}/src/containers/mixed_andnot.c "${LIBRARY_DIR}/src/containers/mixed_andnot.c"
${LIBRARY_DIR}/src/containers/run.c "${LIBRARY_DIR}/src/containers/run.c"
${LIBRARY_DIR}/src/roaring.c "${LIBRARY_DIR}/src/roaring.c"
${LIBRARY_DIR}/src/roaring_priority_queue.c "${LIBRARY_DIR}/src/roaring_priority_queue.c"
${LIBRARY_DIR}/src/roaring_array.c) "${LIBRARY_DIR}/src/roaring_array.c")
add_library(roaring ${SRCS}) add_library(roaring ${SRCS})
target_include_directories(roaring PRIVATE ${LIBRARY_DIR}/include/roaring) target_include_directories(roaring PRIVATE "${LIBRARY_DIR}/include/roaring")
target_include_directories(roaring SYSTEM BEFORE PUBLIC ${LIBRARY_DIR}/include) target_include_directories(roaring SYSTEM BEFORE PUBLIC "${LIBRARY_DIR}/include")
target_include_directories(roaring SYSTEM BEFORE PUBLIC ${LIBRARY_DIR}/cpp) target_include_directories(roaring SYSTEM BEFORE PUBLIC "${LIBRARY_DIR}/cpp")

View File

@ -5,143 +5,143 @@ endif()
set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/curl") set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/curl")
set (SRCS set (SRCS
${LIBRARY_DIR}/lib/file.c "${LIBRARY_DIR}/lib/file.c"
${LIBRARY_DIR}/lib/timeval.c "${LIBRARY_DIR}/lib/timeval.c"
${LIBRARY_DIR}/lib/base64.c "${LIBRARY_DIR}/lib/base64.c"
${LIBRARY_DIR}/lib/hostip.c "${LIBRARY_DIR}/lib/hostip.c"
${LIBRARY_DIR}/lib/progress.c "${LIBRARY_DIR}/lib/progress.c"
${LIBRARY_DIR}/lib/formdata.c "${LIBRARY_DIR}/lib/formdata.c"
${LIBRARY_DIR}/lib/cookie.c "${LIBRARY_DIR}/lib/cookie.c"
${LIBRARY_DIR}/lib/http.c "${LIBRARY_DIR}/lib/http.c"
${LIBRARY_DIR}/lib/sendf.c "${LIBRARY_DIR}/lib/sendf.c"
${LIBRARY_DIR}/lib/url.c "${LIBRARY_DIR}/lib/url.c"
${LIBRARY_DIR}/lib/dict.c "${LIBRARY_DIR}/lib/dict.c"
${LIBRARY_DIR}/lib/if2ip.c "${LIBRARY_DIR}/lib/if2ip.c"
${LIBRARY_DIR}/lib/speedcheck.c "${LIBRARY_DIR}/lib/speedcheck.c"
${LIBRARY_DIR}/lib/ldap.c "${LIBRARY_DIR}/lib/ldap.c"
${LIBRARY_DIR}/lib/version.c "${LIBRARY_DIR}/lib/version.c"
${LIBRARY_DIR}/lib/getenv.c "${LIBRARY_DIR}/lib/getenv.c"
${LIBRARY_DIR}/lib/escape.c "${LIBRARY_DIR}/lib/escape.c"
${LIBRARY_DIR}/lib/mprintf.c "${LIBRARY_DIR}/lib/mprintf.c"
${LIBRARY_DIR}/lib/telnet.c "${LIBRARY_DIR}/lib/telnet.c"
${LIBRARY_DIR}/lib/netrc.c "${LIBRARY_DIR}/lib/netrc.c"
${LIBRARY_DIR}/lib/getinfo.c "${LIBRARY_DIR}/lib/getinfo.c"
${LIBRARY_DIR}/lib/transfer.c "${LIBRARY_DIR}/lib/transfer.c"
${LIBRARY_DIR}/lib/strcase.c "${LIBRARY_DIR}/lib/strcase.c"
${LIBRARY_DIR}/lib/easy.c "${LIBRARY_DIR}/lib/easy.c"
${LIBRARY_DIR}/lib/security.c "${LIBRARY_DIR}/lib/security.c"
${LIBRARY_DIR}/lib/curl_fnmatch.c "${LIBRARY_DIR}/lib/curl_fnmatch.c"
${LIBRARY_DIR}/lib/fileinfo.c "${LIBRARY_DIR}/lib/fileinfo.c"
${LIBRARY_DIR}/lib/wildcard.c "${LIBRARY_DIR}/lib/wildcard.c"
${LIBRARY_DIR}/lib/krb5.c "${LIBRARY_DIR}/lib/krb5.c"
${LIBRARY_DIR}/lib/memdebug.c "${LIBRARY_DIR}/lib/memdebug.c"
${LIBRARY_DIR}/lib/http_chunks.c "${LIBRARY_DIR}/lib/http_chunks.c"
${LIBRARY_DIR}/lib/strtok.c "${LIBRARY_DIR}/lib/strtok.c"
${LIBRARY_DIR}/lib/connect.c "${LIBRARY_DIR}/lib/connect.c"
${LIBRARY_DIR}/lib/llist.c "${LIBRARY_DIR}/lib/llist.c"
${LIBRARY_DIR}/lib/hash.c "${LIBRARY_DIR}/lib/hash.c"
${LIBRARY_DIR}/lib/multi.c "${LIBRARY_DIR}/lib/multi.c"
${LIBRARY_DIR}/lib/content_encoding.c "${LIBRARY_DIR}/lib/content_encoding.c"
${LIBRARY_DIR}/lib/share.c "${LIBRARY_DIR}/lib/share.c"
${LIBRARY_DIR}/lib/http_digest.c "${LIBRARY_DIR}/lib/http_digest.c"
${LIBRARY_DIR}/lib/md4.c "${LIBRARY_DIR}/lib/md4.c"
${LIBRARY_DIR}/lib/md5.c "${LIBRARY_DIR}/lib/md5.c"
${LIBRARY_DIR}/lib/http_negotiate.c "${LIBRARY_DIR}/lib/http_negotiate.c"
${LIBRARY_DIR}/lib/inet_pton.c "${LIBRARY_DIR}/lib/inet_pton.c"
${LIBRARY_DIR}/lib/strtoofft.c "${LIBRARY_DIR}/lib/strtoofft.c"
${LIBRARY_DIR}/lib/strerror.c "${LIBRARY_DIR}/lib/strerror.c"
${LIBRARY_DIR}/lib/amigaos.c "${LIBRARY_DIR}/lib/amigaos.c"
${LIBRARY_DIR}/lib/hostasyn.c "${LIBRARY_DIR}/lib/hostasyn.c"
${LIBRARY_DIR}/lib/hostip4.c "${LIBRARY_DIR}/lib/hostip4.c"
${LIBRARY_DIR}/lib/hostip6.c "${LIBRARY_DIR}/lib/hostip6.c"
${LIBRARY_DIR}/lib/hostsyn.c "${LIBRARY_DIR}/lib/hostsyn.c"
${LIBRARY_DIR}/lib/inet_ntop.c "${LIBRARY_DIR}/lib/inet_ntop.c"
${LIBRARY_DIR}/lib/parsedate.c "${LIBRARY_DIR}/lib/parsedate.c"
${LIBRARY_DIR}/lib/select.c "${LIBRARY_DIR}/lib/select.c"
${LIBRARY_DIR}/lib/splay.c "${LIBRARY_DIR}/lib/splay.c"
${LIBRARY_DIR}/lib/strdup.c "${LIBRARY_DIR}/lib/strdup.c"
${LIBRARY_DIR}/lib/socks.c "${LIBRARY_DIR}/lib/socks.c"
${LIBRARY_DIR}/lib/curl_addrinfo.c "${LIBRARY_DIR}/lib/curl_addrinfo.c"
${LIBRARY_DIR}/lib/socks_gssapi.c "${LIBRARY_DIR}/lib/socks_gssapi.c"
${LIBRARY_DIR}/lib/socks_sspi.c "${LIBRARY_DIR}/lib/socks_sspi.c"
${LIBRARY_DIR}/lib/curl_sspi.c "${LIBRARY_DIR}/lib/curl_sspi.c"
${LIBRARY_DIR}/lib/slist.c "${LIBRARY_DIR}/lib/slist.c"
${LIBRARY_DIR}/lib/nonblock.c "${LIBRARY_DIR}/lib/nonblock.c"
${LIBRARY_DIR}/lib/curl_memrchr.c "${LIBRARY_DIR}/lib/curl_memrchr.c"
${LIBRARY_DIR}/lib/imap.c "${LIBRARY_DIR}/lib/imap.c"
${LIBRARY_DIR}/lib/pop3.c "${LIBRARY_DIR}/lib/pop3.c"
${LIBRARY_DIR}/lib/smtp.c "${LIBRARY_DIR}/lib/smtp.c"
${LIBRARY_DIR}/lib/pingpong.c "${LIBRARY_DIR}/lib/pingpong.c"
${LIBRARY_DIR}/lib/rtsp.c "${LIBRARY_DIR}/lib/rtsp.c"
${LIBRARY_DIR}/lib/curl_threads.c "${LIBRARY_DIR}/lib/curl_threads.c"
${LIBRARY_DIR}/lib/warnless.c "${LIBRARY_DIR}/lib/warnless.c"
${LIBRARY_DIR}/lib/hmac.c "${LIBRARY_DIR}/lib/hmac.c"
${LIBRARY_DIR}/lib/curl_rtmp.c "${LIBRARY_DIR}/lib/curl_rtmp.c"
${LIBRARY_DIR}/lib/openldap.c "${LIBRARY_DIR}/lib/openldap.c"
${LIBRARY_DIR}/lib/curl_gethostname.c "${LIBRARY_DIR}/lib/curl_gethostname.c"
${LIBRARY_DIR}/lib/gopher.c "${LIBRARY_DIR}/lib/gopher.c"
${LIBRARY_DIR}/lib/idn_win32.c "${LIBRARY_DIR}/lib/idn_win32.c"
${LIBRARY_DIR}/lib/http_proxy.c "${LIBRARY_DIR}/lib/http_proxy.c"
${LIBRARY_DIR}/lib/non-ascii.c "${LIBRARY_DIR}/lib/non-ascii.c"
${LIBRARY_DIR}/lib/asyn-thread.c "${LIBRARY_DIR}/lib/asyn-thread.c"
${LIBRARY_DIR}/lib/curl_gssapi.c "${LIBRARY_DIR}/lib/curl_gssapi.c"
${LIBRARY_DIR}/lib/http_ntlm.c "${LIBRARY_DIR}/lib/http_ntlm.c"
${LIBRARY_DIR}/lib/curl_ntlm_wb.c "${LIBRARY_DIR}/lib/curl_ntlm_wb.c"
${LIBRARY_DIR}/lib/curl_ntlm_core.c "${LIBRARY_DIR}/lib/curl_ntlm_core.c"
${LIBRARY_DIR}/lib/curl_sasl.c "${LIBRARY_DIR}/lib/curl_sasl.c"
${LIBRARY_DIR}/lib/rand.c "${LIBRARY_DIR}/lib/rand.c"
${LIBRARY_DIR}/lib/curl_multibyte.c "${LIBRARY_DIR}/lib/curl_multibyte.c"
${LIBRARY_DIR}/lib/hostcheck.c "${LIBRARY_DIR}/lib/hostcheck.c"
${LIBRARY_DIR}/lib/conncache.c "${LIBRARY_DIR}/lib/conncache.c"
${LIBRARY_DIR}/lib/dotdot.c "${LIBRARY_DIR}/lib/dotdot.c"
${LIBRARY_DIR}/lib/x509asn1.c "${LIBRARY_DIR}/lib/x509asn1.c"
${LIBRARY_DIR}/lib/http2.c "${LIBRARY_DIR}/lib/http2.c"
${LIBRARY_DIR}/lib/smb.c "${LIBRARY_DIR}/lib/smb.c"
${LIBRARY_DIR}/lib/curl_endian.c "${LIBRARY_DIR}/lib/curl_endian.c"
${LIBRARY_DIR}/lib/curl_des.c "${LIBRARY_DIR}/lib/curl_des.c"
${LIBRARY_DIR}/lib/system_win32.c "${LIBRARY_DIR}/lib/system_win32.c"
${LIBRARY_DIR}/lib/mime.c "${LIBRARY_DIR}/lib/mime.c"
${LIBRARY_DIR}/lib/sha256.c "${LIBRARY_DIR}/lib/sha256.c"
${LIBRARY_DIR}/lib/setopt.c "${LIBRARY_DIR}/lib/setopt.c"
${LIBRARY_DIR}/lib/curl_path.c "${LIBRARY_DIR}/lib/curl_path.c"
${LIBRARY_DIR}/lib/curl_ctype.c "${LIBRARY_DIR}/lib/curl_ctype.c"
${LIBRARY_DIR}/lib/curl_range.c "${LIBRARY_DIR}/lib/curl_range.c"
${LIBRARY_DIR}/lib/psl.c "${LIBRARY_DIR}/lib/psl.c"
${LIBRARY_DIR}/lib/doh.c "${LIBRARY_DIR}/lib/doh.c"
${LIBRARY_DIR}/lib/urlapi.c "${LIBRARY_DIR}/lib/urlapi.c"
${LIBRARY_DIR}/lib/curl_get_line.c "${LIBRARY_DIR}/lib/curl_get_line.c"
${LIBRARY_DIR}/lib/altsvc.c "${LIBRARY_DIR}/lib/altsvc.c"
${LIBRARY_DIR}/lib/socketpair.c "${LIBRARY_DIR}/lib/socketpair.c"
${LIBRARY_DIR}/lib/vauth/vauth.c "${LIBRARY_DIR}/lib/vauth/vauth.c"
${LIBRARY_DIR}/lib/vauth/cleartext.c "${LIBRARY_DIR}/lib/vauth/cleartext.c"
${LIBRARY_DIR}/lib/vauth/cram.c "${LIBRARY_DIR}/lib/vauth/cram.c"
${LIBRARY_DIR}/lib/vauth/digest.c "${LIBRARY_DIR}/lib/vauth/digest.c"
${LIBRARY_DIR}/lib/vauth/digest_sspi.c "${LIBRARY_DIR}/lib/vauth/digest_sspi.c"
${LIBRARY_DIR}/lib/vauth/krb5_gssapi.c "${LIBRARY_DIR}/lib/vauth/krb5_gssapi.c"
${LIBRARY_DIR}/lib/vauth/krb5_sspi.c "${LIBRARY_DIR}/lib/vauth/krb5_sspi.c"
${LIBRARY_DIR}/lib/vauth/ntlm.c "${LIBRARY_DIR}/lib/vauth/ntlm.c"
${LIBRARY_DIR}/lib/vauth/ntlm_sspi.c "${LIBRARY_DIR}/lib/vauth/ntlm_sspi.c"
${LIBRARY_DIR}/lib/vauth/oauth2.c "${LIBRARY_DIR}/lib/vauth/oauth2.c"
${LIBRARY_DIR}/lib/vauth/spnego_gssapi.c "${LIBRARY_DIR}/lib/vauth/spnego_gssapi.c"
${LIBRARY_DIR}/lib/vauth/spnego_sspi.c "${LIBRARY_DIR}/lib/vauth/spnego_sspi.c"
${LIBRARY_DIR}/lib/vtls/openssl.c "${LIBRARY_DIR}/lib/vtls/openssl.c"
${LIBRARY_DIR}/lib/vtls/gtls.c "${LIBRARY_DIR}/lib/vtls/gtls.c"
${LIBRARY_DIR}/lib/vtls/vtls.c "${LIBRARY_DIR}/lib/vtls/vtls.c"
${LIBRARY_DIR}/lib/vtls/nss.c "${LIBRARY_DIR}/lib/vtls/nss.c"
${LIBRARY_DIR}/lib/vtls/polarssl.c "${LIBRARY_DIR}/lib/vtls/polarssl.c"
${LIBRARY_DIR}/lib/vtls/polarssl_threadlock.c "${LIBRARY_DIR}/lib/vtls/polarssl_threadlock.c"
${LIBRARY_DIR}/lib/vtls/wolfssl.c "${LIBRARY_DIR}/lib/vtls/wolfssl.c"
${LIBRARY_DIR}/lib/vtls/schannel.c "${LIBRARY_DIR}/lib/vtls/schannel.c"
${LIBRARY_DIR}/lib/vtls/schannel_verify.c "${LIBRARY_DIR}/lib/vtls/schannel_verify.c"
${LIBRARY_DIR}/lib/vtls/sectransp.c "${LIBRARY_DIR}/lib/vtls/sectransp.c"
${LIBRARY_DIR}/lib/vtls/gskit.c "${LIBRARY_DIR}/lib/vtls/gskit.c"
${LIBRARY_DIR}/lib/vtls/mbedtls.c "${LIBRARY_DIR}/lib/vtls/mbedtls.c"
${LIBRARY_DIR}/lib/vtls/mesalink.c "${LIBRARY_DIR}/lib/vtls/mesalink.c"
${LIBRARY_DIR}/lib/vtls/bearssl.c "${LIBRARY_DIR}/lib/vtls/bearssl.c"
${LIBRARY_DIR}/lib/vquic/ngtcp2.c "${LIBRARY_DIR}/lib/vquic/ngtcp2.c"
${LIBRARY_DIR}/lib/vquic/quiche.c "${LIBRARY_DIR}/lib/vquic/quiche.c"
${LIBRARY_DIR}/lib/vssh/libssh2.c "${LIBRARY_DIR}/lib/vssh/libssh2.c"
${LIBRARY_DIR}/lib/vssh/libssh.c "${LIBRARY_DIR}/lib/vssh/libssh.c"
) )
add_library (curl ${SRCS}) add_library (curl ${SRCS})
@ -154,8 +154,8 @@ target_compile_definitions (curl PRIVATE
OS="${CMAKE_SYSTEM_NAME}" OS="${CMAKE_SYSTEM_NAME}"
) )
target_include_directories (curl PUBLIC target_include_directories (curl PUBLIC
${LIBRARY_DIR}/include "${LIBRARY_DIR}/include"
${LIBRARY_DIR}/lib "${LIBRARY_DIR}/lib"
. # curl_config.h . # curl_config.h
) )
@ -171,8 +171,8 @@ target_compile_options (curl PRIVATE -g0)
# - sentry-native # - sentry-native
set (CURL_FOUND ON CACHE BOOL "") set (CURL_FOUND ON CACHE BOOL "")
set (CURL_ROOT_DIR ${LIBRARY_DIR} CACHE PATH "") set (CURL_ROOT_DIR ${LIBRARY_DIR} CACHE PATH "")
set (CURL_INCLUDE_DIR ${LIBRARY_DIR}/include CACHE PATH "") set (CURL_INCLUDE_DIR "${LIBRARY_DIR}/include" CACHE PATH "")
set (CURL_INCLUDE_DIRS ${LIBRARY_DIR}/include CACHE PATH "") set (CURL_INCLUDE_DIRS "${LIBRARY_DIR}/include" CACHE PATH "")
set (CURL_LIBRARY curl CACHE STRING "") set (CURL_LIBRARY curl CACHE STRING "")
set (CURL_LIBRARIES ${CURL_LIBRARY} CACHE STRING "") set (CURL_LIBRARIES ${CURL_LIBRARY} CACHE STRING "")
set (CURL_VERSION_STRING 7.67.0 CACHE STRING "") set (CURL_VERSION_STRING 7.67.0 CACHE STRING "")

2
contrib/cyrus-sasl vendored

@ -1 +1 @@
Subproject commit 9995bf9d8e14f58934d9313ac64f13780d6dd3c9 Subproject commit e6466edfd638cc5073debe941c53345b18a09512

View File

@ -1,23 +1,23 @@
set(CYRUS_SASL_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/cyrus-sasl) set(CYRUS_SASL_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/cyrus-sasl")
add_library(${CYRUS_SASL_LIBRARY}) add_library(${CYRUS_SASL_LIBRARY})
target_sources(${CYRUS_SASL_LIBRARY} PRIVATE target_sources(${CYRUS_SASL_LIBRARY} PRIVATE
${CYRUS_SASL_SOURCE_DIR}/plugins/gssapi.c "${CYRUS_SASL_SOURCE_DIR}/plugins/gssapi.c"
# ${CYRUS_SASL_SOURCE_DIR}/plugins/gssapiv2_init.c # "${CYRUS_SASL_SOURCE_DIR}/plugins/gssapiv2_init.c"
${CYRUS_SASL_SOURCE_DIR}/common/plugin_common.c "${CYRUS_SASL_SOURCE_DIR}/common/plugin_common.c"
${CYRUS_SASL_SOURCE_DIR}/lib/common.c "${CYRUS_SASL_SOURCE_DIR}/lib/common.c"
${CYRUS_SASL_SOURCE_DIR}/lib/canonusr.c "${CYRUS_SASL_SOURCE_DIR}/lib/canonusr.c"
${CYRUS_SASL_SOURCE_DIR}/lib/server.c "${CYRUS_SASL_SOURCE_DIR}/lib/server.c"
${CYRUS_SASL_SOURCE_DIR}/lib/config.c "${CYRUS_SASL_SOURCE_DIR}/lib/config.c"
${CYRUS_SASL_SOURCE_DIR}/lib/auxprop.c "${CYRUS_SASL_SOURCE_DIR}/lib/auxprop.c"
${CYRUS_SASL_SOURCE_DIR}/lib/saslutil.c "${CYRUS_SASL_SOURCE_DIR}/lib/saslutil.c"
${CYRUS_SASL_SOURCE_DIR}/lib/external.c "${CYRUS_SASL_SOURCE_DIR}/lib/external.c"
${CYRUS_SASL_SOURCE_DIR}/lib/seterror.c "${CYRUS_SASL_SOURCE_DIR}/lib/seterror.c"
${CYRUS_SASL_SOURCE_DIR}/lib/md5.c "${CYRUS_SASL_SOURCE_DIR}/lib/md5.c"
${CYRUS_SASL_SOURCE_DIR}/lib/dlopen.c "${CYRUS_SASL_SOURCE_DIR}/lib/dlopen.c"
${CYRUS_SASL_SOURCE_DIR}/lib/client.c "${CYRUS_SASL_SOURCE_DIR}/lib/client.c"
${CYRUS_SASL_SOURCE_DIR}/lib/checkpw.c "${CYRUS_SASL_SOURCE_DIR}/lib/checkpw.c"
) )
target_include_directories(${CYRUS_SASL_LIBRARY} PUBLIC target_include_directories(${CYRUS_SASL_LIBRARY} PUBLIC
@ -26,16 +26,16 @@ target_include_directories(${CYRUS_SASL_LIBRARY} PUBLIC
target_include_directories(${CYRUS_SASL_LIBRARY} PRIVATE target_include_directories(${CYRUS_SASL_LIBRARY} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR} # for config.h ${CMAKE_CURRENT_SOURCE_DIR} # for config.h
${CYRUS_SASL_SOURCE_DIR}/plugins "${CYRUS_SASL_SOURCE_DIR}/plugins"
${CYRUS_SASL_SOURCE_DIR} ${CYRUS_SASL_SOURCE_DIR}
${CYRUS_SASL_SOURCE_DIR}/include "${CYRUS_SASL_SOURCE_DIR}/include"
${CYRUS_SASL_SOURCE_DIR}/lib "${CYRUS_SASL_SOURCE_DIR}/lib"
${CYRUS_SASL_SOURCE_DIR}/sasldb "${CYRUS_SASL_SOURCE_DIR}/sasldb"
${CYRUS_SASL_SOURCE_DIR}/common "${CYRUS_SASL_SOURCE_DIR}/common"
${CYRUS_SASL_SOURCE_DIR}/saslauthd "${CYRUS_SASL_SOURCE_DIR}/saslauthd"
${CYRUS_SASL_SOURCE_DIR}/sample "${CYRUS_SASL_SOURCE_DIR}/sample"
${CYRUS_SASL_SOURCE_DIR}/utils "${CYRUS_SASL_SOURCE_DIR}/utils"
${CYRUS_SASL_SOURCE_DIR}/tests "${CYRUS_SASL_SOURCE_DIR}/tests"
) )
target_compile_definitions(${CYRUS_SASL_LIBRARY} PUBLIC target_compile_definitions(${CYRUS_SASL_LIBRARY} PUBLIC
@ -52,15 +52,15 @@ target_compile_definitions(${CYRUS_SASL_LIBRARY} PUBLIC
LIBSASL_EXPORTS=1 LIBSASL_EXPORTS=1
) )
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/sasl) file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/sasl")
file(COPY file(COPY
${CYRUS_SASL_SOURCE_DIR}/include/sasl.h "${CYRUS_SASL_SOURCE_DIR}/include/sasl.h"
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/sasl DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/sasl"
) )
file(COPY file(COPY
${CYRUS_SASL_SOURCE_DIR}/include/prop.h "${CYRUS_SASL_SOURCE_DIR}/include/prop.h"
DESTINATION ${CMAKE_CURRENT_BINARY_DIR} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
) )

@ -1 +1 @@
Subproject commit f915d35b2de676683493c86c585141a1e1c83334 Subproject commit 7d73d7610db31d4e1ecde0fb3a7ee90ef371207f

View File

@ -1,13 +1,13 @@
SET(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/double-conversion) SET(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/double-conversion")
add_library(double-conversion add_library(double-conversion
${LIBRARY_DIR}/double-conversion/bignum.cc "${LIBRARY_DIR}/double-conversion/bignum.cc"
${LIBRARY_DIR}/double-conversion/bignum-dtoa.cc "${LIBRARY_DIR}/double-conversion/bignum-dtoa.cc"
${LIBRARY_DIR}/double-conversion/cached-powers.cc "${LIBRARY_DIR}/double-conversion/cached-powers.cc"
${LIBRARY_DIR}/double-conversion/diy-fp.cc "${LIBRARY_DIR}/double-conversion/diy-fp.cc"
${LIBRARY_DIR}/double-conversion/double-conversion.cc "${LIBRARY_DIR}/double-conversion/double-conversion.cc"
${LIBRARY_DIR}/double-conversion/fast-dtoa.cc "${LIBRARY_DIR}/double-conversion/fast-dtoa.cc"
${LIBRARY_DIR}/double-conversion/fixed-dtoa.cc "${LIBRARY_DIR}/double-conversion/fixed-dtoa.cc"
${LIBRARY_DIR}/double-conversion/strtod.cc) "${LIBRARY_DIR}/double-conversion/strtod.cc")
target_include_directories(double-conversion SYSTEM BEFORE PUBLIC "${LIBRARY_DIR}") target_include_directories(double-conversion SYSTEM BEFORE PUBLIC "${LIBRARY_DIR}")

View File

@ -1,18 +1,18 @@
set(LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/fastops) set(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/fastops")
set(SRCS "") set(SRCS "")
if(HAVE_AVX) if(HAVE_AVX)
set (SRCS ${SRCS} ${LIBRARY_DIR}/fastops/avx/ops_avx.cpp) set (SRCS ${SRCS} "${LIBRARY_DIR}/fastops/avx/ops_avx.cpp")
set_source_files_properties(${LIBRARY_DIR}/fastops/avx/ops_avx.cpp PROPERTIES COMPILE_FLAGS "-mavx -DNO_AVX2") set_source_files_properties("${LIBRARY_DIR}/fastops/avx/ops_avx.cpp" PROPERTIES COMPILE_FLAGS "-mavx -DNO_AVX2")
endif() endif()
if(HAVE_AVX2) if(HAVE_AVX2)
set (SRCS ${SRCS} ${LIBRARY_DIR}/fastops/avx2/ops_avx2.cpp) set (SRCS ${SRCS} "${LIBRARY_DIR}/fastops/avx2/ops_avx2.cpp")
set_source_files_properties(${LIBRARY_DIR}/fastops/avx2/ops_avx2.cpp PROPERTIES COMPILE_FLAGS "-mavx2 -mfma") set_source_files_properties("${LIBRARY_DIR}/fastops/avx2/ops_avx2.cpp" PROPERTIES COMPILE_FLAGS "-mavx2 -mfma")
endif() endif()
set (SRCS ${SRCS} ${LIBRARY_DIR}/fastops/plain/ops_plain.cpp ${LIBRARY_DIR}/fastops/core/avx_id.cpp ${LIBRARY_DIR}/fastops/fastops.cpp) set (SRCS ${SRCS} "${LIBRARY_DIR}/fastops/plain/ops_plain.cpp" "${LIBRARY_DIR}/fastops/core/avx_id.cpp" "${LIBRARY_DIR}/fastops/fastops.cpp")
add_library(fastops ${SRCS}) add_library(fastops ${SRCS})

2
contrib/flatbuffers vendored

@ -1 +1 @@
Subproject commit 6df40a2471737b27271bdd9b900ab5f3aec746c7 Subproject commit 22e3ffc66d2d7d72d1414390aa0f04ffd114a5a1

2
contrib/grpc vendored

@ -1 +1 @@
Subproject commit 8d558f03fe370240081424fafa76cdc9301ea14b Subproject commit 5b79aae85c515e0df4abfb7b1e07975fdc7cecc1

View File

@ -1,30 +1,30 @@
set(H3_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/h3/src/h3lib) set(H3_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/h3/src/h3lib")
set(H3_BINARY_DIR ${ClickHouse_BINARY_DIR}/contrib/h3/src/h3lib) set(H3_BINARY_DIR "${ClickHouse_BINARY_DIR}/contrib/h3/src/h3lib")
set(SRCS set(SRCS
${H3_SOURCE_DIR}/lib/algos.c "${H3_SOURCE_DIR}/lib/algos.c"
${H3_SOURCE_DIR}/lib/baseCells.c "${H3_SOURCE_DIR}/lib/baseCells.c"
${H3_SOURCE_DIR}/lib/bbox.c "${H3_SOURCE_DIR}/lib/bbox.c"
${H3_SOURCE_DIR}/lib/coordijk.c "${H3_SOURCE_DIR}/lib/coordijk.c"
${H3_SOURCE_DIR}/lib/faceijk.c "${H3_SOURCE_DIR}/lib/faceijk.c"
${H3_SOURCE_DIR}/lib/geoCoord.c "${H3_SOURCE_DIR}/lib/geoCoord.c"
${H3_SOURCE_DIR}/lib/h3Index.c "${H3_SOURCE_DIR}/lib/h3Index.c"
${H3_SOURCE_DIR}/lib/h3UniEdge.c "${H3_SOURCE_DIR}/lib/h3UniEdge.c"
${H3_SOURCE_DIR}/lib/linkedGeo.c "${H3_SOURCE_DIR}/lib/linkedGeo.c"
${H3_SOURCE_DIR}/lib/localij.c "${H3_SOURCE_DIR}/lib/localij.c"
${H3_SOURCE_DIR}/lib/mathExtensions.c "${H3_SOURCE_DIR}/lib/mathExtensions.c"
${H3_SOURCE_DIR}/lib/polygon.c "${H3_SOURCE_DIR}/lib/polygon.c"
${H3_SOURCE_DIR}/lib/vec2d.c "${H3_SOURCE_DIR}/lib/vec2d.c"
${H3_SOURCE_DIR}/lib/vec3d.c "${H3_SOURCE_DIR}/lib/vec3d.c"
${H3_SOURCE_DIR}/lib/vertex.c "${H3_SOURCE_DIR}/lib/vertex.c"
${H3_SOURCE_DIR}/lib/vertexGraph.c "${H3_SOURCE_DIR}/lib/vertexGraph.c"
) )
configure_file(${H3_SOURCE_DIR}/include/h3api.h.in ${H3_BINARY_DIR}/include/h3api.h) configure_file("${H3_SOURCE_DIR}/include/h3api.h.in" "${H3_BINARY_DIR}/include/h3api.h")
add_library(h3 ${SRCS}) add_library(h3 ${SRCS})
target_include_directories(h3 SYSTEM PUBLIC ${H3_SOURCE_DIR}/include) target_include_directories(h3 SYSTEM PUBLIC "${H3_SOURCE_DIR}/include")
target_include_directories(h3 SYSTEM PUBLIC ${H3_BINARY_DIR}/include) target_include_directories(h3 SYSTEM PUBLIC "${H3_BINARY_DIR}/include")
target_compile_definitions(h3 PRIVATE H3_HAVE_VLA) target_compile_definitions(h3 PRIVATE H3_HAVE_VLA)
if(M_LIBRARY) if(M_LIBRARY)
target_link_libraries(h3 PRIVATE ${M_LIBRARY}) target_link_libraries(h3 PRIVATE ${M_LIBRARY})

View File

@ -40,211 +40,211 @@ endif ()
if (NOT EXTERNAL_HYPERSCAN_LIBRARY_FOUND) if (NOT EXTERNAL_HYPERSCAN_LIBRARY_FOUND)
set (USE_INTERNAL_HYPERSCAN_LIBRARY 1) set (USE_INTERNAL_HYPERSCAN_LIBRARY 1)
set (LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/hyperscan) set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/hyperscan")
set (SRCS set (SRCS
${LIBRARY_DIR}/src/alloc.c "${LIBRARY_DIR}/src/alloc.c"
${LIBRARY_DIR}/src/compiler/asserts.cpp "${LIBRARY_DIR}/src/compiler/asserts.cpp"
${LIBRARY_DIR}/src/compiler/compiler.cpp "${LIBRARY_DIR}/src/compiler/compiler.cpp"
${LIBRARY_DIR}/src/compiler/error.cpp "${LIBRARY_DIR}/src/compiler/error.cpp"
${LIBRARY_DIR}/src/crc32.c "${LIBRARY_DIR}/src/crc32.c"
${LIBRARY_DIR}/src/database.c "${LIBRARY_DIR}/src/database.c"
${LIBRARY_DIR}/src/fdr/engine_description.cpp "${LIBRARY_DIR}/src/fdr/engine_description.cpp"
${LIBRARY_DIR}/src/fdr/fdr_compile_util.cpp "${LIBRARY_DIR}/src/fdr/fdr_compile_util.cpp"
${LIBRARY_DIR}/src/fdr/fdr_compile.cpp "${LIBRARY_DIR}/src/fdr/fdr_compile.cpp"
${LIBRARY_DIR}/src/fdr/fdr_confirm_compile.cpp "${LIBRARY_DIR}/src/fdr/fdr_confirm_compile.cpp"
${LIBRARY_DIR}/src/fdr/fdr_engine_description.cpp "${LIBRARY_DIR}/src/fdr/fdr_engine_description.cpp"
${LIBRARY_DIR}/src/fdr/fdr.c "${LIBRARY_DIR}/src/fdr/fdr.c"
${LIBRARY_DIR}/src/fdr/flood_compile.cpp "${LIBRARY_DIR}/src/fdr/flood_compile.cpp"
${LIBRARY_DIR}/src/fdr/teddy_compile.cpp "${LIBRARY_DIR}/src/fdr/teddy_compile.cpp"
${LIBRARY_DIR}/src/fdr/teddy_engine_description.cpp "${LIBRARY_DIR}/src/fdr/teddy_engine_description.cpp"
${LIBRARY_DIR}/src/fdr/teddy.c "${LIBRARY_DIR}/src/fdr/teddy.c"
${LIBRARY_DIR}/src/grey.cpp "${LIBRARY_DIR}/src/grey.cpp"
${LIBRARY_DIR}/src/hs_valid_platform.c "${LIBRARY_DIR}/src/hs_valid_platform.c"
${LIBRARY_DIR}/src/hs_version.c "${LIBRARY_DIR}/src/hs_version.c"
${LIBRARY_DIR}/src/hs.cpp "${LIBRARY_DIR}/src/hs.cpp"
${LIBRARY_DIR}/src/hwlm/hwlm_build.cpp "${LIBRARY_DIR}/src/hwlm/hwlm_build.cpp"
${LIBRARY_DIR}/src/hwlm/hwlm_literal.cpp "${LIBRARY_DIR}/src/hwlm/hwlm_literal.cpp"
${LIBRARY_DIR}/src/hwlm/hwlm.c "${LIBRARY_DIR}/src/hwlm/hwlm.c"
${LIBRARY_DIR}/src/hwlm/noodle_build.cpp "${LIBRARY_DIR}/src/hwlm/noodle_build.cpp"
${LIBRARY_DIR}/src/hwlm/noodle_engine.c "${LIBRARY_DIR}/src/hwlm/noodle_engine.c"
${LIBRARY_DIR}/src/nfa/accel_dfa_build_strat.cpp "${LIBRARY_DIR}/src/nfa/accel_dfa_build_strat.cpp"
${LIBRARY_DIR}/src/nfa/accel.c "${LIBRARY_DIR}/src/nfa/accel.c"
${LIBRARY_DIR}/src/nfa/accelcompile.cpp "${LIBRARY_DIR}/src/nfa/accelcompile.cpp"
${LIBRARY_DIR}/src/nfa/castle.c "${LIBRARY_DIR}/src/nfa/castle.c"
${LIBRARY_DIR}/src/nfa/castlecompile.cpp "${LIBRARY_DIR}/src/nfa/castlecompile.cpp"
${LIBRARY_DIR}/src/nfa/dfa_build_strat.cpp "${LIBRARY_DIR}/src/nfa/dfa_build_strat.cpp"
${LIBRARY_DIR}/src/nfa/dfa_min.cpp "${LIBRARY_DIR}/src/nfa/dfa_min.cpp"
${LIBRARY_DIR}/src/nfa/gough.c "${LIBRARY_DIR}/src/nfa/gough.c"
${LIBRARY_DIR}/src/nfa/goughcompile_accel.cpp "${LIBRARY_DIR}/src/nfa/goughcompile_accel.cpp"
${LIBRARY_DIR}/src/nfa/goughcompile_reg.cpp "${LIBRARY_DIR}/src/nfa/goughcompile_reg.cpp"
${LIBRARY_DIR}/src/nfa/goughcompile.cpp "${LIBRARY_DIR}/src/nfa/goughcompile.cpp"
${LIBRARY_DIR}/src/nfa/lbr.c "${LIBRARY_DIR}/src/nfa/lbr.c"
${LIBRARY_DIR}/src/nfa/limex_64.c "${LIBRARY_DIR}/src/nfa/limex_64.c"
${LIBRARY_DIR}/src/nfa/limex_accel.c "${LIBRARY_DIR}/src/nfa/limex_accel.c"
${LIBRARY_DIR}/src/nfa/limex_compile.cpp "${LIBRARY_DIR}/src/nfa/limex_compile.cpp"
${LIBRARY_DIR}/src/nfa/limex_native.c "${LIBRARY_DIR}/src/nfa/limex_native.c"
${LIBRARY_DIR}/src/nfa/limex_simd128.c "${LIBRARY_DIR}/src/nfa/limex_simd128.c"
${LIBRARY_DIR}/src/nfa/limex_simd256.c "${LIBRARY_DIR}/src/nfa/limex_simd256.c"
${LIBRARY_DIR}/src/nfa/limex_simd384.c "${LIBRARY_DIR}/src/nfa/limex_simd384.c"
${LIBRARY_DIR}/src/nfa/limex_simd512.c "${LIBRARY_DIR}/src/nfa/limex_simd512.c"
${LIBRARY_DIR}/src/nfa/mcclellan.c "${LIBRARY_DIR}/src/nfa/mcclellan.c"
${LIBRARY_DIR}/src/nfa/mcclellancompile_util.cpp "${LIBRARY_DIR}/src/nfa/mcclellancompile_util.cpp"
${LIBRARY_DIR}/src/nfa/mcclellancompile.cpp "${LIBRARY_DIR}/src/nfa/mcclellancompile.cpp"
${LIBRARY_DIR}/src/nfa/mcsheng_compile.cpp "${LIBRARY_DIR}/src/nfa/mcsheng_compile.cpp"
${LIBRARY_DIR}/src/nfa/mcsheng_data.c "${LIBRARY_DIR}/src/nfa/mcsheng_data.c"
${LIBRARY_DIR}/src/nfa/mcsheng.c "${LIBRARY_DIR}/src/nfa/mcsheng.c"
${LIBRARY_DIR}/src/nfa/mpv.c "${LIBRARY_DIR}/src/nfa/mpv.c"
${LIBRARY_DIR}/src/nfa/mpvcompile.cpp "${LIBRARY_DIR}/src/nfa/mpvcompile.cpp"
${LIBRARY_DIR}/src/nfa/nfa_api_dispatch.c "${LIBRARY_DIR}/src/nfa/nfa_api_dispatch.c"
${LIBRARY_DIR}/src/nfa/nfa_build_util.cpp "${LIBRARY_DIR}/src/nfa/nfa_build_util.cpp"
${LIBRARY_DIR}/src/nfa/rdfa_graph.cpp "${LIBRARY_DIR}/src/nfa/rdfa_graph.cpp"
${LIBRARY_DIR}/src/nfa/rdfa_merge.cpp "${LIBRARY_DIR}/src/nfa/rdfa_merge.cpp"
${LIBRARY_DIR}/src/nfa/rdfa.cpp "${LIBRARY_DIR}/src/nfa/rdfa.cpp"
${LIBRARY_DIR}/src/nfa/repeat.c "${LIBRARY_DIR}/src/nfa/repeat.c"
${LIBRARY_DIR}/src/nfa/repeatcompile.cpp "${LIBRARY_DIR}/src/nfa/repeatcompile.cpp"
${LIBRARY_DIR}/src/nfa/sheng.c "${LIBRARY_DIR}/src/nfa/sheng.c"
${LIBRARY_DIR}/src/nfa/shengcompile.cpp "${LIBRARY_DIR}/src/nfa/shengcompile.cpp"
${LIBRARY_DIR}/src/nfa/shufti.c "${LIBRARY_DIR}/src/nfa/shufti.c"
${LIBRARY_DIR}/src/nfa/shufticompile.cpp "${LIBRARY_DIR}/src/nfa/shufticompile.cpp"
${LIBRARY_DIR}/src/nfa/tamarama.c "${LIBRARY_DIR}/src/nfa/tamarama.c"
${LIBRARY_DIR}/src/nfa/tamaramacompile.cpp "${LIBRARY_DIR}/src/nfa/tamaramacompile.cpp"
${LIBRARY_DIR}/src/nfa/truffle.c "${LIBRARY_DIR}/src/nfa/truffle.c"
${LIBRARY_DIR}/src/nfa/trufflecompile.cpp "${LIBRARY_DIR}/src/nfa/trufflecompile.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_anchored_acyclic.cpp "${LIBRARY_DIR}/src/nfagraph/ng_anchored_acyclic.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_anchored_dots.cpp "${LIBRARY_DIR}/src/nfagraph/ng_anchored_dots.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_asserts.cpp "${LIBRARY_DIR}/src/nfagraph/ng_asserts.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_builder.cpp "${LIBRARY_DIR}/src/nfagraph/ng_builder.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_calc_components.cpp "${LIBRARY_DIR}/src/nfagraph/ng_calc_components.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_cyclic_redundancy.cpp "${LIBRARY_DIR}/src/nfagraph/ng_cyclic_redundancy.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_depth.cpp "${LIBRARY_DIR}/src/nfagraph/ng_depth.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_dominators.cpp "${LIBRARY_DIR}/src/nfagraph/ng_dominators.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_edge_redundancy.cpp "${LIBRARY_DIR}/src/nfagraph/ng_edge_redundancy.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_equivalence.cpp "${LIBRARY_DIR}/src/nfagraph/ng_equivalence.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_execute.cpp "${LIBRARY_DIR}/src/nfagraph/ng_execute.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_expr_info.cpp "${LIBRARY_DIR}/src/nfagraph/ng_expr_info.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_extparam.cpp "${LIBRARY_DIR}/src/nfagraph/ng_extparam.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_fixed_width.cpp "${LIBRARY_DIR}/src/nfagraph/ng_fixed_width.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_fuzzy.cpp "${LIBRARY_DIR}/src/nfagraph/ng_fuzzy.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_haig.cpp "${LIBRARY_DIR}/src/nfagraph/ng_haig.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_holder.cpp "${LIBRARY_DIR}/src/nfagraph/ng_holder.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_is_equal.cpp "${LIBRARY_DIR}/src/nfagraph/ng_is_equal.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_lbr.cpp "${LIBRARY_DIR}/src/nfagraph/ng_lbr.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_limex_accel.cpp "${LIBRARY_DIR}/src/nfagraph/ng_limex_accel.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_limex.cpp "${LIBRARY_DIR}/src/nfagraph/ng_limex.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_literal_analysis.cpp "${LIBRARY_DIR}/src/nfagraph/ng_literal_analysis.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_literal_component.cpp "${LIBRARY_DIR}/src/nfagraph/ng_literal_component.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_literal_decorated.cpp "${LIBRARY_DIR}/src/nfagraph/ng_literal_decorated.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_mcclellan.cpp "${LIBRARY_DIR}/src/nfagraph/ng_mcclellan.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_misc_opt.cpp "${LIBRARY_DIR}/src/nfagraph/ng_misc_opt.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_netflow.cpp "${LIBRARY_DIR}/src/nfagraph/ng_netflow.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_prefilter.cpp "${LIBRARY_DIR}/src/nfagraph/ng_prefilter.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_prune.cpp "${LIBRARY_DIR}/src/nfagraph/ng_prune.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_puff.cpp "${LIBRARY_DIR}/src/nfagraph/ng_puff.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_redundancy.cpp "${LIBRARY_DIR}/src/nfagraph/ng_redundancy.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_region_redundancy.cpp "${LIBRARY_DIR}/src/nfagraph/ng_region_redundancy.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_region.cpp "${LIBRARY_DIR}/src/nfagraph/ng_region.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_repeat.cpp "${LIBRARY_DIR}/src/nfagraph/ng_repeat.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_reports.cpp "${LIBRARY_DIR}/src/nfagraph/ng_reports.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_restructuring.cpp "${LIBRARY_DIR}/src/nfagraph/ng_restructuring.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_revacc.cpp "${LIBRARY_DIR}/src/nfagraph/ng_revacc.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_sep.cpp "${LIBRARY_DIR}/src/nfagraph/ng_sep.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_small_literal_set.cpp "${LIBRARY_DIR}/src/nfagraph/ng_small_literal_set.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_som_add_redundancy.cpp "${LIBRARY_DIR}/src/nfagraph/ng_som_add_redundancy.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_som_util.cpp "${LIBRARY_DIR}/src/nfagraph/ng_som_util.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_som.cpp "${LIBRARY_DIR}/src/nfagraph/ng_som.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_split.cpp "${LIBRARY_DIR}/src/nfagraph/ng_split.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_squash.cpp "${LIBRARY_DIR}/src/nfagraph/ng_squash.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_stop.cpp "${LIBRARY_DIR}/src/nfagraph/ng_stop.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_uncalc_components.cpp "${LIBRARY_DIR}/src/nfagraph/ng_uncalc_components.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_utf8.cpp "${LIBRARY_DIR}/src/nfagraph/ng_utf8.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_util.cpp "${LIBRARY_DIR}/src/nfagraph/ng_util.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_vacuous.cpp "${LIBRARY_DIR}/src/nfagraph/ng_vacuous.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_violet.cpp "${LIBRARY_DIR}/src/nfagraph/ng_violet.cpp"
${LIBRARY_DIR}/src/nfagraph/ng_width.cpp "${LIBRARY_DIR}/src/nfagraph/ng_width.cpp"
${LIBRARY_DIR}/src/nfagraph/ng.cpp "${LIBRARY_DIR}/src/nfagraph/ng.cpp"
${LIBRARY_DIR}/src/parser/AsciiComponentClass.cpp "${LIBRARY_DIR}/src/parser/AsciiComponentClass.cpp"
${LIBRARY_DIR}/src/parser/buildstate.cpp "${LIBRARY_DIR}/src/parser/buildstate.cpp"
${LIBRARY_DIR}/src/parser/check_refs.cpp "${LIBRARY_DIR}/src/parser/check_refs.cpp"
${LIBRARY_DIR}/src/parser/Component.cpp "${LIBRARY_DIR}/src/parser/Component.cpp"
${LIBRARY_DIR}/src/parser/ComponentAlternation.cpp "${LIBRARY_DIR}/src/parser/ComponentAlternation.cpp"
${LIBRARY_DIR}/src/parser/ComponentAssertion.cpp "${LIBRARY_DIR}/src/parser/ComponentAssertion.cpp"
${LIBRARY_DIR}/src/parser/ComponentAtomicGroup.cpp "${LIBRARY_DIR}/src/parser/ComponentAtomicGroup.cpp"
${LIBRARY_DIR}/src/parser/ComponentBackReference.cpp "${LIBRARY_DIR}/src/parser/ComponentBackReference.cpp"
${LIBRARY_DIR}/src/parser/ComponentBoundary.cpp "${LIBRARY_DIR}/src/parser/ComponentBoundary.cpp"
${LIBRARY_DIR}/src/parser/ComponentByte.cpp "${LIBRARY_DIR}/src/parser/ComponentByte.cpp"
${LIBRARY_DIR}/src/parser/ComponentClass.cpp "${LIBRARY_DIR}/src/parser/ComponentClass.cpp"
${LIBRARY_DIR}/src/parser/ComponentCondReference.cpp "${LIBRARY_DIR}/src/parser/ComponentCondReference.cpp"
${LIBRARY_DIR}/src/parser/ComponentEmpty.cpp "${LIBRARY_DIR}/src/parser/ComponentEmpty.cpp"
${LIBRARY_DIR}/src/parser/ComponentEUS.cpp "${LIBRARY_DIR}/src/parser/ComponentEUS.cpp"
${LIBRARY_DIR}/src/parser/ComponentRepeat.cpp "${LIBRARY_DIR}/src/parser/ComponentRepeat.cpp"
${LIBRARY_DIR}/src/parser/ComponentSequence.cpp "${LIBRARY_DIR}/src/parser/ComponentSequence.cpp"
${LIBRARY_DIR}/src/parser/ComponentVisitor.cpp "${LIBRARY_DIR}/src/parser/ComponentVisitor.cpp"
${LIBRARY_DIR}/src/parser/ComponentWordBoundary.cpp "${LIBRARY_DIR}/src/parser/ComponentWordBoundary.cpp"
${LIBRARY_DIR}/src/parser/ConstComponentVisitor.cpp "${LIBRARY_DIR}/src/parser/ConstComponentVisitor.cpp"
${LIBRARY_DIR}/src/parser/control_verbs.cpp "${LIBRARY_DIR}/src/parser/control_verbs.cpp"
${LIBRARY_DIR}/src/parser/logical_combination.cpp "${LIBRARY_DIR}/src/parser/logical_combination.cpp"
${LIBRARY_DIR}/src/parser/parse_error.cpp "${LIBRARY_DIR}/src/parser/parse_error.cpp"
${LIBRARY_DIR}/src/parser/parser_util.cpp "${LIBRARY_DIR}/src/parser/parser_util.cpp"
${LIBRARY_DIR}/src/parser/Parser.cpp "${LIBRARY_DIR}/src/parser/Parser.cpp"
${LIBRARY_DIR}/src/parser/prefilter.cpp "${LIBRARY_DIR}/src/parser/prefilter.cpp"
${LIBRARY_DIR}/src/parser/shortcut_literal.cpp "${LIBRARY_DIR}/src/parser/shortcut_literal.cpp"
${LIBRARY_DIR}/src/parser/ucp_table.cpp "${LIBRARY_DIR}/src/parser/ucp_table.cpp"
${LIBRARY_DIR}/src/parser/unsupported.cpp "${LIBRARY_DIR}/src/parser/unsupported.cpp"
${LIBRARY_DIR}/src/parser/utf8_validate.cpp "${LIBRARY_DIR}/src/parser/utf8_validate.cpp"
${LIBRARY_DIR}/src/parser/Utf8ComponentClass.cpp "${LIBRARY_DIR}/src/parser/Utf8ComponentClass.cpp"
${LIBRARY_DIR}/src/rose/block.c "${LIBRARY_DIR}/src/rose/block.c"
${LIBRARY_DIR}/src/rose/catchup.c "${LIBRARY_DIR}/src/rose/catchup.c"
${LIBRARY_DIR}/src/rose/init.c "${LIBRARY_DIR}/src/rose/init.c"
${LIBRARY_DIR}/src/rose/match.c "${LIBRARY_DIR}/src/rose/match.c"
${LIBRARY_DIR}/src/rose/program_runtime.c "${LIBRARY_DIR}/src/rose/program_runtime.c"
${LIBRARY_DIR}/src/rose/rose_build_add_mask.cpp "${LIBRARY_DIR}/src/rose/rose_build_add_mask.cpp"
${LIBRARY_DIR}/src/rose/rose_build_add.cpp "${LIBRARY_DIR}/src/rose/rose_build_add.cpp"
${LIBRARY_DIR}/src/rose/rose_build_anchored.cpp "${LIBRARY_DIR}/src/rose/rose_build_anchored.cpp"
${LIBRARY_DIR}/src/rose/rose_build_bytecode.cpp "${LIBRARY_DIR}/src/rose/rose_build_bytecode.cpp"
${LIBRARY_DIR}/src/rose/rose_build_castle.cpp "${LIBRARY_DIR}/src/rose/rose_build_castle.cpp"
${LIBRARY_DIR}/src/rose/rose_build_compile.cpp "${LIBRARY_DIR}/src/rose/rose_build_compile.cpp"
${LIBRARY_DIR}/src/rose/rose_build_convert.cpp "${LIBRARY_DIR}/src/rose/rose_build_convert.cpp"
${LIBRARY_DIR}/src/rose/rose_build_dedupe.cpp "${LIBRARY_DIR}/src/rose/rose_build_dedupe.cpp"
${LIBRARY_DIR}/src/rose/rose_build_engine_blob.cpp "${LIBRARY_DIR}/src/rose/rose_build_engine_blob.cpp"
${LIBRARY_DIR}/src/rose/rose_build_exclusive.cpp "${LIBRARY_DIR}/src/rose/rose_build_exclusive.cpp"
${LIBRARY_DIR}/src/rose/rose_build_groups.cpp "${LIBRARY_DIR}/src/rose/rose_build_groups.cpp"
${LIBRARY_DIR}/src/rose/rose_build_infix.cpp "${LIBRARY_DIR}/src/rose/rose_build_infix.cpp"
${LIBRARY_DIR}/src/rose/rose_build_instructions.cpp "${LIBRARY_DIR}/src/rose/rose_build_instructions.cpp"
${LIBRARY_DIR}/src/rose/rose_build_lit_accel.cpp "${LIBRARY_DIR}/src/rose/rose_build_lit_accel.cpp"
${LIBRARY_DIR}/src/rose/rose_build_long_lit.cpp "${LIBRARY_DIR}/src/rose/rose_build_long_lit.cpp"
${LIBRARY_DIR}/src/rose/rose_build_lookaround.cpp "${LIBRARY_DIR}/src/rose/rose_build_lookaround.cpp"
${LIBRARY_DIR}/src/rose/rose_build_matchers.cpp "${LIBRARY_DIR}/src/rose/rose_build_matchers.cpp"
${LIBRARY_DIR}/src/rose/rose_build_merge.cpp "${LIBRARY_DIR}/src/rose/rose_build_merge.cpp"
${LIBRARY_DIR}/src/rose/rose_build_misc.cpp "${LIBRARY_DIR}/src/rose/rose_build_misc.cpp"
${LIBRARY_DIR}/src/rose/rose_build_program.cpp "${LIBRARY_DIR}/src/rose/rose_build_program.cpp"
${LIBRARY_DIR}/src/rose/rose_build_role_aliasing.cpp "${LIBRARY_DIR}/src/rose/rose_build_role_aliasing.cpp"
${LIBRARY_DIR}/src/rose/rose_build_scatter.cpp "${LIBRARY_DIR}/src/rose/rose_build_scatter.cpp"
${LIBRARY_DIR}/src/rose/rose_build_width.cpp "${LIBRARY_DIR}/src/rose/rose_build_width.cpp"
${LIBRARY_DIR}/src/rose/rose_in_util.cpp "${LIBRARY_DIR}/src/rose/rose_in_util.cpp"
${LIBRARY_DIR}/src/rose/stream.c "${LIBRARY_DIR}/src/rose/stream.c"
${LIBRARY_DIR}/src/runtime.c "${LIBRARY_DIR}/src/runtime.c"
${LIBRARY_DIR}/src/scratch.c "${LIBRARY_DIR}/src/scratch.c"
${LIBRARY_DIR}/src/smallwrite/smallwrite_build.cpp "${LIBRARY_DIR}/src/smallwrite/smallwrite_build.cpp"
${LIBRARY_DIR}/src/som/slot_manager.cpp "${LIBRARY_DIR}/src/som/slot_manager.cpp"
${LIBRARY_DIR}/src/som/som_runtime.c "${LIBRARY_DIR}/src/som/som_runtime.c"
${LIBRARY_DIR}/src/som/som_stream.c "${LIBRARY_DIR}/src/som/som_stream.c"
${LIBRARY_DIR}/src/stream_compress.c "${LIBRARY_DIR}/src/stream_compress.c"
${LIBRARY_DIR}/src/util/alloc.cpp "${LIBRARY_DIR}/src/util/alloc.cpp"
${LIBRARY_DIR}/src/util/charreach.cpp "${LIBRARY_DIR}/src/util/charreach.cpp"
${LIBRARY_DIR}/src/util/clique.cpp "${LIBRARY_DIR}/src/util/clique.cpp"
${LIBRARY_DIR}/src/util/compile_context.cpp "${LIBRARY_DIR}/src/util/compile_context.cpp"
${LIBRARY_DIR}/src/util/compile_error.cpp "${LIBRARY_DIR}/src/util/compile_error.cpp"
${LIBRARY_DIR}/src/util/cpuid_flags.c "${LIBRARY_DIR}/src/util/cpuid_flags.c"
${LIBRARY_DIR}/src/util/depth.cpp "${LIBRARY_DIR}/src/util/depth.cpp"
${LIBRARY_DIR}/src/util/fatbit_build.cpp "${LIBRARY_DIR}/src/util/fatbit_build.cpp"
${LIBRARY_DIR}/src/util/multibit_build.cpp "${LIBRARY_DIR}/src/util/multibit_build.cpp"
${LIBRARY_DIR}/src/util/multibit.c "${LIBRARY_DIR}/src/util/multibit.c"
${LIBRARY_DIR}/src/util/report_manager.cpp "${LIBRARY_DIR}/src/util/report_manager.cpp"
${LIBRARY_DIR}/src/util/simd_utils.c "${LIBRARY_DIR}/src/util/simd_utils.c"
${LIBRARY_DIR}/src/util/state_compress.c "${LIBRARY_DIR}/src/util/state_compress.c"
${LIBRARY_DIR}/src/util/target_info.cpp "${LIBRARY_DIR}/src/util/target_info.cpp"
${LIBRARY_DIR}/src/util/ue2string.cpp "${LIBRARY_DIR}/src/util/ue2string.cpp"
) )
add_library (hyperscan ${SRCS}) add_library (hyperscan ${SRCS})
@ -259,9 +259,9 @@ if (NOT EXTERNAL_HYPERSCAN_LIBRARY_FOUND)
target_include_directories (hyperscan target_include_directories (hyperscan
PRIVATE PRIVATE
common common
${LIBRARY_DIR}/include "${LIBRARY_DIR}/include"
) )
target_include_directories (hyperscan SYSTEM PUBLIC ${LIBRARY_DIR}/src) target_include_directories (hyperscan SYSTEM PUBLIC "${LIBRARY_DIR}/src")
if (ARCH_AMD64) if (ARCH_AMD64)
target_include_directories (hyperscan PRIVATE x86_64) target_include_directories (hyperscan PRIVATE x86_64)
endif () endif ()

View File

@ -1,447 +1,447 @@
set(ICU_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/icu/icu4c/source) set(ICU_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/icu/icu4c/source")
set(ICUDATA_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/icudata/) set(ICUDATA_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/icudata/")
set (CMAKE_CXX_STANDARD 17) set (CMAKE_CXX_STANDARD 17)
# These lists of sources were generated from build log of the original ICU build system (configure + make). # These lists of sources were generated from build log of the original ICU build system (configure + make).
set(ICUUC_SOURCES set(ICUUC_SOURCES
${ICU_SOURCE_DIR}/common/errorcode.cpp "${ICU_SOURCE_DIR}/common/errorcode.cpp"
${ICU_SOURCE_DIR}/common/putil.cpp "${ICU_SOURCE_DIR}/common/putil.cpp"
${ICU_SOURCE_DIR}/common/umath.cpp "${ICU_SOURCE_DIR}/common/umath.cpp"
${ICU_SOURCE_DIR}/common/utypes.cpp "${ICU_SOURCE_DIR}/common/utypes.cpp"
${ICU_SOURCE_DIR}/common/uinvchar.cpp "${ICU_SOURCE_DIR}/common/uinvchar.cpp"
${ICU_SOURCE_DIR}/common/umutex.cpp "${ICU_SOURCE_DIR}/common/umutex.cpp"
${ICU_SOURCE_DIR}/common/ucln_cmn.cpp "${ICU_SOURCE_DIR}/common/ucln_cmn.cpp"
${ICU_SOURCE_DIR}/common/uinit.cpp "${ICU_SOURCE_DIR}/common/uinit.cpp"
${ICU_SOURCE_DIR}/common/uobject.cpp "${ICU_SOURCE_DIR}/common/uobject.cpp"
${ICU_SOURCE_DIR}/common/cmemory.cpp "${ICU_SOURCE_DIR}/common/cmemory.cpp"
${ICU_SOURCE_DIR}/common/charstr.cpp "${ICU_SOURCE_DIR}/common/charstr.cpp"
${ICU_SOURCE_DIR}/common/cstr.cpp "${ICU_SOURCE_DIR}/common/cstr.cpp"
${ICU_SOURCE_DIR}/common/udata.cpp "${ICU_SOURCE_DIR}/common/udata.cpp"
${ICU_SOURCE_DIR}/common/ucmndata.cpp "${ICU_SOURCE_DIR}/common/ucmndata.cpp"
${ICU_SOURCE_DIR}/common/udatamem.cpp "${ICU_SOURCE_DIR}/common/udatamem.cpp"
${ICU_SOURCE_DIR}/common/umapfile.cpp "${ICU_SOURCE_DIR}/common/umapfile.cpp"
${ICU_SOURCE_DIR}/common/udataswp.cpp "${ICU_SOURCE_DIR}/common/udataswp.cpp"
${ICU_SOURCE_DIR}/common/utrie_swap.cpp "${ICU_SOURCE_DIR}/common/utrie_swap.cpp"
${ICU_SOURCE_DIR}/common/ucol_swp.cpp "${ICU_SOURCE_DIR}/common/ucol_swp.cpp"
${ICU_SOURCE_DIR}/common/utrace.cpp "${ICU_SOURCE_DIR}/common/utrace.cpp"
${ICU_SOURCE_DIR}/common/uhash.cpp "${ICU_SOURCE_DIR}/common/uhash.cpp"
${ICU_SOURCE_DIR}/common/uhash_us.cpp "${ICU_SOURCE_DIR}/common/uhash_us.cpp"
${ICU_SOURCE_DIR}/common/uenum.cpp "${ICU_SOURCE_DIR}/common/uenum.cpp"
${ICU_SOURCE_DIR}/common/ustrenum.cpp "${ICU_SOURCE_DIR}/common/ustrenum.cpp"
${ICU_SOURCE_DIR}/common/uvector.cpp "${ICU_SOURCE_DIR}/common/uvector.cpp"
${ICU_SOURCE_DIR}/common/ustack.cpp "${ICU_SOURCE_DIR}/common/ustack.cpp"
${ICU_SOURCE_DIR}/common/uvectr32.cpp "${ICU_SOURCE_DIR}/common/uvectr32.cpp"
${ICU_SOURCE_DIR}/common/uvectr64.cpp "${ICU_SOURCE_DIR}/common/uvectr64.cpp"
${ICU_SOURCE_DIR}/common/ucnv.cpp "${ICU_SOURCE_DIR}/common/ucnv.cpp"
${ICU_SOURCE_DIR}/common/ucnv_bld.cpp "${ICU_SOURCE_DIR}/common/ucnv_bld.cpp"
${ICU_SOURCE_DIR}/common/ucnv_cnv.cpp "${ICU_SOURCE_DIR}/common/ucnv_cnv.cpp"
${ICU_SOURCE_DIR}/common/ucnv_io.cpp "${ICU_SOURCE_DIR}/common/ucnv_io.cpp"
${ICU_SOURCE_DIR}/common/ucnv_cb.cpp "${ICU_SOURCE_DIR}/common/ucnv_cb.cpp"
${ICU_SOURCE_DIR}/common/ucnv_err.cpp "${ICU_SOURCE_DIR}/common/ucnv_err.cpp"
${ICU_SOURCE_DIR}/common/ucnvlat1.cpp "${ICU_SOURCE_DIR}/common/ucnvlat1.cpp"
${ICU_SOURCE_DIR}/common/ucnv_u7.cpp "${ICU_SOURCE_DIR}/common/ucnv_u7.cpp"
${ICU_SOURCE_DIR}/common/ucnv_u8.cpp "${ICU_SOURCE_DIR}/common/ucnv_u8.cpp"
${ICU_SOURCE_DIR}/common/ucnv_u16.cpp "${ICU_SOURCE_DIR}/common/ucnv_u16.cpp"
${ICU_SOURCE_DIR}/common/ucnv_u32.cpp "${ICU_SOURCE_DIR}/common/ucnv_u32.cpp"
${ICU_SOURCE_DIR}/common/ucnvscsu.cpp "${ICU_SOURCE_DIR}/common/ucnvscsu.cpp"
${ICU_SOURCE_DIR}/common/ucnvbocu.cpp "${ICU_SOURCE_DIR}/common/ucnvbocu.cpp"
${ICU_SOURCE_DIR}/common/ucnv_ext.cpp "${ICU_SOURCE_DIR}/common/ucnv_ext.cpp"
${ICU_SOURCE_DIR}/common/ucnvmbcs.cpp "${ICU_SOURCE_DIR}/common/ucnvmbcs.cpp"
${ICU_SOURCE_DIR}/common/ucnv2022.cpp "${ICU_SOURCE_DIR}/common/ucnv2022.cpp"
${ICU_SOURCE_DIR}/common/ucnvhz.cpp "${ICU_SOURCE_DIR}/common/ucnvhz.cpp"
${ICU_SOURCE_DIR}/common/ucnv_lmb.cpp "${ICU_SOURCE_DIR}/common/ucnv_lmb.cpp"
${ICU_SOURCE_DIR}/common/ucnvisci.cpp "${ICU_SOURCE_DIR}/common/ucnvisci.cpp"
${ICU_SOURCE_DIR}/common/ucnvdisp.cpp "${ICU_SOURCE_DIR}/common/ucnvdisp.cpp"
${ICU_SOURCE_DIR}/common/ucnv_set.cpp "${ICU_SOURCE_DIR}/common/ucnv_set.cpp"
${ICU_SOURCE_DIR}/common/ucnv_ct.cpp "${ICU_SOURCE_DIR}/common/ucnv_ct.cpp"
${ICU_SOURCE_DIR}/common/resource.cpp "${ICU_SOURCE_DIR}/common/resource.cpp"
${ICU_SOURCE_DIR}/common/uresbund.cpp "${ICU_SOURCE_DIR}/common/uresbund.cpp"
${ICU_SOURCE_DIR}/common/ures_cnv.cpp "${ICU_SOURCE_DIR}/common/ures_cnv.cpp"
${ICU_SOURCE_DIR}/common/uresdata.cpp "${ICU_SOURCE_DIR}/common/uresdata.cpp"
${ICU_SOURCE_DIR}/common/resbund.cpp "${ICU_SOURCE_DIR}/common/resbund.cpp"
${ICU_SOURCE_DIR}/common/resbund_cnv.cpp "${ICU_SOURCE_DIR}/common/resbund_cnv.cpp"
${ICU_SOURCE_DIR}/common/ucurr.cpp "${ICU_SOURCE_DIR}/common/ucurr.cpp"
${ICU_SOURCE_DIR}/common/localebuilder.cpp "${ICU_SOURCE_DIR}/common/localebuilder.cpp"
${ICU_SOURCE_DIR}/common/localeprioritylist.cpp "${ICU_SOURCE_DIR}/common/localeprioritylist.cpp"
${ICU_SOURCE_DIR}/common/messagepattern.cpp "${ICU_SOURCE_DIR}/common/messagepattern.cpp"
${ICU_SOURCE_DIR}/common/ucat.cpp "${ICU_SOURCE_DIR}/common/ucat.cpp"
${ICU_SOURCE_DIR}/common/locmap.cpp "${ICU_SOURCE_DIR}/common/locmap.cpp"
${ICU_SOURCE_DIR}/common/uloc.cpp "${ICU_SOURCE_DIR}/common/uloc.cpp"
${ICU_SOURCE_DIR}/common/locid.cpp "${ICU_SOURCE_DIR}/common/locid.cpp"
${ICU_SOURCE_DIR}/common/locutil.cpp "${ICU_SOURCE_DIR}/common/locutil.cpp"
${ICU_SOURCE_DIR}/common/locavailable.cpp "${ICU_SOURCE_DIR}/common/locavailable.cpp"
${ICU_SOURCE_DIR}/common/locdispnames.cpp "${ICU_SOURCE_DIR}/common/locdispnames.cpp"
${ICU_SOURCE_DIR}/common/locdspnm.cpp "${ICU_SOURCE_DIR}/common/locdspnm.cpp"
${ICU_SOURCE_DIR}/common/loclikely.cpp "${ICU_SOURCE_DIR}/common/loclikely.cpp"
${ICU_SOURCE_DIR}/common/locresdata.cpp "${ICU_SOURCE_DIR}/common/locresdata.cpp"
${ICU_SOURCE_DIR}/common/lsr.cpp "${ICU_SOURCE_DIR}/common/lsr.cpp"
${ICU_SOURCE_DIR}/common/loclikelysubtags.cpp "${ICU_SOURCE_DIR}/common/loclikelysubtags.cpp"
${ICU_SOURCE_DIR}/common/locdistance.cpp "${ICU_SOURCE_DIR}/common/locdistance.cpp"
${ICU_SOURCE_DIR}/common/localematcher.cpp "${ICU_SOURCE_DIR}/common/localematcher.cpp"
${ICU_SOURCE_DIR}/common/bytestream.cpp "${ICU_SOURCE_DIR}/common/bytestream.cpp"
${ICU_SOURCE_DIR}/common/stringpiece.cpp "${ICU_SOURCE_DIR}/common/stringpiece.cpp"
${ICU_SOURCE_DIR}/common/bytesinkutil.cpp "${ICU_SOURCE_DIR}/common/bytesinkutil.cpp"
${ICU_SOURCE_DIR}/common/stringtriebuilder.cpp "${ICU_SOURCE_DIR}/common/stringtriebuilder.cpp"
${ICU_SOURCE_DIR}/common/bytestriebuilder.cpp "${ICU_SOURCE_DIR}/common/bytestriebuilder.cpp"
${ICU_SOURCE_DIR}/common/bytestrie.cpp "${ICU_SOURCE_DIR}/common/bytestrie.cpp"
${ICU_SOURCE_DIR}/common/bytestrieiterator.cpp "${ICU_SOURCE_DIR}/common/bytestrieiterator.cpp"
${ICU_SOURCE_DIR}/common/ucharstrie.cpp "${ICU_SOURCE_DIR}/common/ucharstrie.cpp"
${ICU_SOURCE_DIR}/common/ucharstriebuilder.cpp "${ICU_SOURCE_DIR}/common/ucharstriebuilder.cpp"
${ICU_SOURCE_DIR}/common/ucharstrieiterator.cpp "${ICU_SOURCE_DIR}/common/ucharstrieiterator.cpp"
${ICU_SOURCE_DIR}/common/dictionarydata.cpp "${ICU_SOURCE_DIR}/common/dictionarydata.cpp"
${ICU_SOURCE_DIR}/common/edits.cpp "${ICU_SOURCE_DIR}/common/edits.cpp"
${ICU_SOURCE_DIR}/common/appendable.cpp "${ICU_SOURCE_DIR}/common/appendable.cpp"
${ICU_SOURCE_DIR}/common/ustr_cnv.cpp "${ICU_SOURCE_DIR}/common/ustr_cnv.cpp"
${ICU_SOURCE_DIR}/common/unistr_cnv.cpp "${ICU_SOURCE_DIR}/common/unistr_cnv.cpp"
${ICU_SOURCE_DIR}/common/unistr.cpp "${ICU_SOURCE_DIR}/common/unistr.cpp"
${ICU_SOURCE_DIR}/common/unistr_case.cpp "${ICU_SOURCE_DIR}/common/unistr_case.cpp"
${ICU_SOURCE_DIR}/common/unistr_props.cpp "${ICU_SOURCE_DIR}/common/unistr_props.cpp"
${ICU_SOURCE_DIR}/common/utf_impl.cpp "${ICU_SOURCE_DIR}/common/utf_impl.cpp"
${ICU_SOURCE_DIR}/common/ustring.cpp "${ICU_SOURCE_DIR}/common/ustring.cpp"
${ICU_SOURCE_DIR}/common/ustrcase.cpp "${ICU_SOURCE_DIR}/common/ustrcase.cpp"
${ICU_SOURCE_DIR}/common/ucasemap.cpp "${ICU_SOURCE_DIR}/common/ucasemap.cpp"
${ICU_SOURCE_DIR}/common/ucasemap_titlecase_brkiter.cpp "${ICU_SOURCE_DIR}/common/ucasemap_titlecase_brkiter.cpp"
${ICU_SOURCE_DIR}/common/cstring.cpp "${ICU_SOURCE_DIR}/common/cstring.cpp"
${ICU_SOURCE_DIR}/common/ustrfmt.cpp "${ICU_SOURCE_DIR}/common/ustrfmt.cpp"
${ICU_SOURCE_DIR}/common/ustrtrns.cpp "${ICU_SOURCE_DIR}/common/ustrtrns.cpp"
${ICU_SOURCE_DIR}/common/ustr_wcs.cpp "${ICU_SOURCE_DIR}/common/ustr_wcs.cpp"
${ICU_SOURCE_DIR}/common/utext.cpp "${ICU_SOURCE_DIR}/common/utext.cpp"
${ICU_SOURCE_DIR}/common/unistr_case_locale.cpp "${ICU_SOURCE_DIR}/common/unistr_case_locale.cpp"
${ICU_SOURCE_DIR}/common/ustrcase_locale.cpp "${ICU_SOURCE_DIR}/common/ustrcase_locale.cpp"
${ICU_SOURCE_DIR}/common/unistr_titlecase_brkiter.cpp "${ICU_SOURCE_DIR}/common/unistr_titlecase_brkiter.cpp"
${ICU_SOURCE_DIR}/common/ustr_titlecase_brkiter.cpp "${ICU_SOURCE_DIR}/common/ustr_titlecase_brkiter.cpp"
${ICU_SOURCE_DIR}/common/normalizer2impl.cpp "${ICU_SOURCE_DIR}/common/normalizer2impl.cpp"
${ICU_SOURCE_DIR}/common/normalizer2.cpp "${ICU_SOURCE_DIR}/common/normalizer2.cpp"
${ICU_SOURCE_DIR}/common/filterednormalizer2.cpp "${ICU_SOURCE_DIR}/common/filterednormalizer2.cpp"
${ICU_SOURCE_DIR}/common/normlzr.cpp "${ICU_SOURCE_DIR}/common/normlzr.cpp"
${ICU_SOURCE_DIR}/common/unorm.cpp "${ICU_SOURCE_DIR}/common/unorm.cpp"
${ICU_SOURCE_DIR}/common/unormcmp.cpp "${ICU_SOURCE_DIR}/common/unormcmp.cpp"
${ICU_SOURCE_DIR}/common/loadednormalizer2impl.cpp "${ICU_SOURCE_DIR}/common/loadednormalizer2impl.cpp"
${ICU_SOURCE_DIR}/common/chariter.cpp "${ICU_SOURCE_DIR}/common/chariter.cpp"
${ICU_SOURCE_DIR}/common/schriter.cpp "${ICU_SOURCE_DIR}/common/schriter.cpp"
${ICU_SOURCE_DIR}/common/uchriter.cpp "${ICU_SOURCE_DIR}/common/uchriter.cpp"
${ICU_SOURCE_DIR}/common/uiter.cpp "${ICU_SOURCE_DIR}/common/uiter.cpp"
${ICU_SOURCE_DIR}/common/patternprops.cpp "${ICU_SOURCE_DIR}/common/patternprops.cpp"
${ICU_SOURCE_DIR}/common/uchar.cpp "${ICU_SOURCE_DIR}/common/uchar.cpp"
${ICU_SOURCE_DIR}/common/uprops.cpp "${ICU_SOURCE_DIR}/common/uprops.cpp"
${ICU_SOURCE_DIR}/common/ucase.cpp "${ICU_SOURCE_DIR}/common/ucase.cpp"
${ICU_SOURCE_DIR}/common/propname.cpp "${ICU_SOURCE_DIR}/common/propname.cpp"
${ICU_SOURCE_DIR}/common/ubidi_props.cpp "${ICU_SOURCE_DIR}/common/ubidi_props.cpp"
${ICU_SOURCE_DIR}/common/characterproperties.cpp "${ICU_SOURCE_DIR}/common/characterproperties.cpp"
${ICU_SOURCE_DIR}/common/ubidi.cpp "${ICU_SOURCE_DIR}/common/ubidi.cpp"
${ICU_SOURCE_DIR}/common/ubidiwrt.cpp "${ICU_SOURCE_DIR}/common/ubidiwrt.cpp"
${ICU_SOURCE_DIR}/common/ubidiln.cpp "${ICU_SOURCE_DIR}/common/ubidiln.cpp"
${ICU_SOURCE_DIR}/common/ushape.cpp "${ICU_SOURCE_DIR}/common/ushape.cpp"
${ICU_SOURCE_DIR}/common/uscript.cpp "${ICU_SOURCE_DIR}/common/uscript.cpp"
${ICU_SOURCE_DIR}/common/uscript_props.cpp "${ICU_SOURCE_DIR}/common/uscript_props.cpp"
${ICU_SOURCE_DIR}/common/usc_impl.cpp "${ICU_SOURCE_DIR}/common/usc_impl.cpp"
${ICU_SOURCE_DIR}/common/unames.cpp "${ICU_SOURCE_DIR}/common/unames.cpp"
${ICU_SOURCE_DIR}/common/utrie.cpp "${ICU_SOURCE_DIR}/common/utrie.cpp"
${ICU_SOURCE_DIR}/common/utrie2.cpp "${ICU_SOURCE_DIR}/common/utrie2.cpp"
${ICU_SOURCE_DIR}/common/utrie2_builder.cpp "${ICU_SOURCE_DIR}/common/utrie2_builder.cpp"
${ICU_SOURCE_DIR}/common/ucptrie.cpp "${ICU_SOURCE_DIR}/common/ucptrie.cpp"
${ICU_SOURCE_DIR}/common/umutablecptrie.cpp "${ICU_SOURCE_DIR}/common/umutablecptrie.cpp"
${ICU_SOURCE_DIR}/common/bmpset.cpp "${ICU_SOURCE_DIR}/common/bmpset.cpp"
${ICU_SOURCE_DIR}/common/unisetspan.cpp "${ICU_SOURCE_DIR}/common/unisetspan.cpp"
${ICU_SOURCE_DIR}/common/uset_props.cpp "${ICU_SOURCE_DIR}/common/uset_props.cpp"
${ICU_SOURCE_DIR}/common/uniset_props.cpp "${ICU_SOURCE_DIR}/common/uniset_props.cpp"
${ICU_SOURCE_DIR}/common/uniset_closure.cpp "${ICU_SOURCE_DIR}/common/uniset_closure.cpp"
${ICU_SOURCE_DIR}/common/uset.cpp "${ICU_SOURCE_DIR}/common/uset.cpp"
${ICU_SOURCE_DIR}/common/uniset.cpp "${ICU_SOURCE_DIR}/common/uniset.cpp"
${ICU_SOURCE_DIR}/common/usetiter.cpp "${ICU_SOURCE_DIR}/common/usetiter.cpp"
${ICU_SOURCE_DIR}/common/ruleiter.cpp "${ICU_SOURCE_DIR}/common/ruleiter.cpp"
${ICU_SOURCE_DIR}/common/caniter.cpp "${ICU_SOURCE_DIR}/common/caniter.cpp"
${ICU_SOURCE_DIR}/common/unifilt.cpp "${ICU_SOURCE_DIR}/common/unifilt.cpp"
${ICU_SOURCE_DIR}/common/unifunct.cpp "${ICU_SOURCE_DIR}/common/unifunct.cpp"
${ICU_SOURCE_DIR}/common/uarrsort.cpp "${ICU_SOURCE_DIR}/common/uarrsort.cpp"
${ICU_SOURCE_DIR}/common/brkiter.cpp "${ICU_SOURCE_DIR}/common/brkiter.cpp"
${ICU_SOURCE_DIR}/common/ubrk.cpp "${ICU_SOURCE_DIR}/common/ubrk.cpp"
${ICU_SOURCE_DIR}/common/brkeng.cpp "${ICU_SOURCE_DIR}/common/brkeng.cpp"
${ICU_SOURCE_DIR}/common/dictbe.cpp "${ICU_SOURCE_DIR}/common/dictbe.cpp"
${ICU_SOURCE_DIR}/common/filteredbrk.cpp "${ICU_SOURCE_DIR}/common/filteredbrk.cpp"
${ICU_SOURCE_DIR}/common/rbbi.cpp "${ICU_SOURCE_DIR}/common/rbbi.cpp"
${ICU_SOURCE_DIR}/common/rbbidata.cpp "${ICU_SOURCE_DIR}/common/rbbidata.cpp"
${ICU_SOURCE_DIR}/common/rbbinode.cpp "${ICU_SOURCE_DIR}/common/rbbinode.cpp"
${ICU_SOURCE_DIR}/common/rbbirb.cpp "${ICU_SOURCE_DIR}/common/rbbirb.cpp"
${ICU_SOURCE_DIR}/common/rbbiscan.cpp "${ICU_SOURCE_DIR}/common/rbbiscan.cpp"
${ICU_SOURCE_DIR}/common/rbbisetb.cpp "${ICU_SOURCE_DIR}/common/rbbisetb.cpp"
${ICU_SOURCE_DIR}/common/rbbistbl.cpp "${ICU_SOURCE_DIR}/common/rbbistbl.cpp"
${ICU_SOURCE_DIR}/common/rbbitblb.cpp "${ICU_SOURCE_DIR}/common/rbbitblb.cpp"
${ICU_SOURCE_DIR}/common/rbbi_cache.cpp "${ICU_SOURCE_DIR}/common/rbbi_cache.cpp"
${ICU_SOURCE_DIR}/common/serv.cpp "${ICU_SOURCE_DIR}/common/serv.cpp"
${ICU_SOURCE_DIR}/common/servnotf.cpp "${ICU_SOURCE_DIR}/common/servnotf.cpp"
${ICU_SOURCE_DIR}/common/servls.cpp "${ICU_SOURCE_DIR}/common/servls.cpp"
${ICU_SOURCE_DIR}/common/servlk.cpp "${ICU_SOURCE_DIR}/common/servlk.cpp"
${ICU_SOURCE_DIR}/common/servlkf.cpp "${ICU_SOURCE_DIR}/common/servlkf.cpp"
${ICU_SOURCE_DIR}/common/servrbf.cpp "${ICU_SOURCE_DIR}/common/servrbf.cpp"
${ICU_SOURCE_DIR}/common/servslkf.cpp "${ICU_SOURCE_DIR}/common/servslkf.cpp"
${ICU_SOURCE_DIR}/common/uidna.cpp "${ICU_SOURCE_DIR}/common/uidna.cpp"
${ICU_SOURCE_DIR}/common/usprep.cpp "${ICU_SOURCE_DIR}/common/usprep.cpp"
${ICU_SOURCE_DIR}/common/uts46.cpp "${ICU_SOURCE_DIR}/common/uts46.cpp"
${ICU_SOURCE_DIR}/common/punycode.cpp "${ICU_SOURCE_DIR}/common/punycode.cpp"
${ICU_SOURCE_DIR}/common/util.cpp "${ICU_SOURCE_DIR}/common/util.cpp"
${ICU_SOURCE_DIR}/common/util_props.cpp "${ICU_SOURCE_DIR}/common/util_props.cpp"
${ICU_SOURCE_DIR}/common/parsepos.cpp "${ICU_SOURCE_DIR}/common/parsepos.cpp"
${ICU_SOURCE_DIR}/common/locbased.cpp "${ICU_SOURCE_DIR}/common/locbased.cpp"
${ICU_SOURCE_DIR}/common/cwchar.cpp "${ICU_SOURCE_DIR}/common/cwchar.cpp"
${ICU_SOURCE_DIR}/common/wintz.cpp "${ICU_SOURCE_DIR}/common/wintz.cpp"
${ICU_SOURCE_DIR}/common/dtintrv.cpp "${ICU_SOURCE_DIR}/common/dtintrv.cpp"
${ICU_SOURCE_DIR}/common/ucnvsel.cpp "${ICU_SOURCE_DIR}/common/ucnvsel.cpp"
${ICU_SOURCE_DIR}/common/propsvec.cpp "${ICU_SOURCE_DIR}/common/propsvec.cpp"
${ICU_SOURCE_DIR}/common/ulist.cpp "${ICU_SOURCE_DIR}/common/ulist.cpp"
${ICU_SOURCE_DIR}/common/uloc_tag.cpp "${ICU_SOURCE_DIR}/common/uloc_tag.cpp"
${ICU_SOURCE_DIR}/common/icudataver.cpp "${ICU_SOURCE_DIR}/common/icudataver.cpp"
${ICU_SOURCE_DIR}/common/icuplug.cpp "${ICU_SOURCE_DIR}/common/icuplug.cpp"
${ICU_SOURCE_DIR}/common/sharedobject.cpp "${ICU_SOURCE_DIR}/common/sharedobject.cpp"
${ICU_SOURCE_DIR}/common/simpleformatter.cpp "${ICU_SOURCE_DIR}/common/simpleformatter.cpp"
${ICU_SOURCE_DIR}/common/unifiedcache.cpp "${ICU_SOURCE_DIR}/common/unifiedcache.cpp"
${ICU_SOURCE_DIR}/common/uloc_keytype.cpp "${ICU_SOURCE_DIR}/common/uloc_keytype.cpp"
${ICU_SOURCE_DIR}/common/ubiditransform.cpp "${ICU_SOURCE_DIR}/common/ubiditransform.cpp"
${ICU_SOURCE_DIR}/common/pluralmap.cpp "${ICU_SOURCE_DIR}/common/pluralmap.cpp"
${ICU_SOURCE_DIR}/common/static_unicode_sets.cpp "${ICU_SOURCE_DIR}/common/static_unicode_sets.cpp"
${ICU_SOURCE_DIR}/common/restrace.cpp) "${ICU_SOURCE_DIR}/common/restrace.cpp")
set(ICUI18N_SOURCES set(ICUI18N_SOURCES
${ICU_SOURCE_DIR}/i18n/ucln_in.cpp "${ICU_SOURCE_DIR}/i18n/ucln_in.cpp"
${ICU_SOURCE_DIR}/i18n/fmtable.cpp "${ICU_SOURCE_DIR}/i18n/fmtable.cpp"
${ICU_SOURCE_DIR}/i18n/format.cpp "${ICU_SOURCE_DIR}/i18n/format.cpp"
${ICU_SOURCE_DIR}/i18n/msgfmt.cpp "${ICU_SOURCE_DIR}/i18n/msgfmt.cpp"
${ICU_SOURCE_DIR}/i18n/umsg.cpp "${ICU_SOURCE_DIR}/i18n/umsg.cpp"
${ICU_SOURCE_DIR}/i18n/numfmt.cpp "${ICU_SOURCE_DIR}/i18n/numfmt.cpp"
${ICU_SOURCE_DIR}/i18n/unum.cpp "${ICU_SOURCE_DIR}/i18n/unum.cpp"
${ICU_SOURCE_DIR}/i18n/decimfmt.cpp "${ICU_SOURCE_DIR}/i18n/decimfmt.cpp"
${ICU_SOURCE_DIR}/i18n/dcfmtsym.cpp "${ICU_SOURCE_DIR}/i18n/dcfmtsym.cpp"
${ICU_SOURCE_DIR}/i18n/fmtable_cnv.cpp "${ICU_SOURCE_DIR}/i18n/fmtable_cnv.cpp"
${ICU_SOURCE_DIR}/i18n/choicfmt.cpp "${ICU_SOURCE_DIR}/i18n/choicfmt.cpp"
${ICU_SOURCE_DIR}/i18n/datefmt.cpp "${ICU_SOURCE_DIR}/i18n/datefmt.cpp"
${ICU_SOURCE_DIR}/i18n/smpdtfmt.cpp "${ICU_SOURCE_DIR}/i18n/smpdtfmt.cpp"
${ICU_SOURCE_DIR}/i18n/reldtfmt.cpp "${ICU_SOURCE_DIR}/i18n/reldtfmt.cpp"
${ICU_SOURCE_DIR}/i18n/dtfmtsym.cpp "${ICU_SOURCE_DIR}/i18n/dtfmtsym.cpp"
${ICU_SOURCE_DIR}/i18n/udat.cpp "${ICU_SOURCE_DIR}/i18n/udat.cpp"
${ICU_SOURCE_DIR}/i18n/dtptngen.cpp "${ICU_SOURCE_DIR}/i18n/dtptngen.cpp"
${ICU_SOURCE_DIR}/i18n/udatpg.cpp "${ICU_SOURCE_DIR}/i18n/udatpg.cpp"
${ICU_SOURCE_DIR}/i18n/nfrs.cpp "${ICU_SOURCE_DIR}/i18n/nfrs.cpp"
${ICU_SOURCE_DIR}/i18n/nfrule.cpp "${ICU_SOURCE_DIR}/i18n/nfrule.cpp"
${ICU_SOURCE_DIR}/i18n/nfsubs.cpp "${ICU_SOURCE_DIR}/i18n/nfsubs.cpp"
${ICU_SOURCE_DIR}/i18n/rbnf.cpp "${ICU_SOURCE_DIR}/i18n/rbnf.cpp"
${ICU_SOURCE_DIR}/i18n/numsys.cpp "${ICU_SOURCE_DIR}/i18n/numsys.cpp"
${ICU_SOURCE_DIR}/i18n/unumsys.cpp "${ICU_SOURCE_DIR}/i18n/unumsys.cpp"
${ICU_SOURCE_DIR}/i18n/ucsdet.cpp "${ICU_SOURCE_DIR}/i18n/ucsdet.cpp"
${ICU_SOURCE_DIR}/i18n/ucal.cpp "${ICU_SOURCE_DIR}/i18n/ucal.cpp"
${ICU_SOURCE_DIR}/i18n/calendar.cpp "${ICU_SOURCE_DIR}/i18n/calendar.cpp"
${ICU_SOURCE_DIR}/i18n/gregocal.cpp "${ICU_SOURCE_DIR}/i18n/gregocal.cpp"
${ICU_SOURCE_DIR}/i18n/timezone.cpp "${ICU_SOURCE_DIR}/i18n/timezone.cpp"
${ICU_SOURCE_DIR}/i18n/simpletz.cpp "${ICU_SOURCE_DIR}/i18n/simpletz.cpp"
${ICU_SOURCE_DIR}/i18n/olsontz.cpp "${ICU_SOURCE_DIR}/i18n/olsontz.cpp"
${ICU_SOURCE_DIR}/i18n/astro.cpp "${ICU_SOURCE_DIR}/i18n/astro.cpp"
${ICU_SOURCE_DIR}/i18n/taiwncal.cpp "${ICU_SOURCE_DIR}/i18n/taiwncal.cpp"
${ICU_SOURCE_DIR}/i18n/buddhcal.cpp "${ICU_SOURCE_DIR}/i18n/buddhcal.cpp"
${ICU_SOURCE_DIR}/i18n/persncal.cpp "${ICU_SOURCE_DIR}/i18n/persncal.cpp"
${ICU_SOURCE_DIR}/i18n/islamcal.cpp "${ICU_SOURCE_DIR}/i18n/islamcal.cpp"
${ICU_SOURCE_DIR}/i18n/japancal.cpp "${ICU_SOURCE_DIR}/i18n/japancal.cpp"
${ICU_SOURCE_DIR}/i18n/gregoimp.cpp "${ICU_SOURCE_DIR}/i18n/gregoimp.cpp"
${ICU_SOURCE_DIR}/i18n/hebrwcal.cpp "${ICU_SOURCE_DIR}/i18n/hebrwcal.cpp"
${ICU_SOURCE_DIR}/i18n/indiancal.cpp "${ICU_SOURCE_DIR}/i18n/indiancal.cpp"
${ICU_SOURCE_DIR}/i18n/chnsecal.cpp "${ICU_SOURCE_DIR}/i18n/chnsecal.cpp"
${ICU_SOURCE_DIR}/i18n/cecal.cpp "${ICU_SOURCE_DIR}/i18n/cecal.cpp"
${ICU_SOURCE_DIR}/i18n/coptccal.cpp "${ICU_SOURCE_DIR}/i18n/coptccal.cpp"
${ICU_SOURCE_DIR}/i18n/dangical.cpp "${ICU_SOURCE_DIR}/i18n/dangical.cpp"
${ICU_SOURCE_DIR}/i18n/ethpccal.cpp "${ICU_SOURCE_DIR}/i18n/ethpccal.cpp"
${ICU_SOURCE_DIR}/i18n/coleitr.cpp "${ICU_SOURCE_DIR}/i18n/coleitr.cpp"
${ICU_SOURCE_DIR}/i18n/coll.cpp "${ICU_SOURCE_DIR}/i18n/coll.cpp"
${ICU_SOURCE_DIR}/i18n/sortkey.cpp "${ICU_SOURCE_DIR}/i18n/sortkey.cpp"
${ICU_SOURCE_DIR}/i18n/bocsu.cpp "${ICU_SOURCE_DIR}/i18n/bocsu.cpp"
${ICU_SOURCE_DIR}/i18n/ucoleitr.cpp "${ICU_SOURCE_DIR}/i18n/ucoleitr.cpp"
${ICU_SOURCE_DIR}/i18n/ucol.cpp "${ICU_SOURCE_DIR}/i18n/ucol.cpp"
${ICU_SOURCE_DIR}/i18n/ucol_res.cpp "${ICU_SOURCE_DIR}/i18n/ucol_res.cpp"
${ICU_SOURCE_DIR}/i18n/ucol_sit.cpp "${ICU_SOURCE_DIR}/i18n/ucol_sit.cpp"
${ICU_SOURCE_DIR}/i18n/collation.cpp "${ICU_SOURCE_DIR}/i18n/collation.cpp"
${ICU_SOURCE_DIR}/i18n/collationsettings.cpp "${ICU_SOURCE_DIR}/i18n/collationsettings.cpp"
${ICU_SOURCE_DIR}/i18n/collationdata.cpp "${ICU_SOURCE_DIR}/i18n/collationdata.cpp"
${ICU_SOURCE_DIR}/i18n/collationtailoring.cpp "${ICU_SOURCE_DIR}/i18n/collationtailoring.cpp"
${ICU_SOURCE_DIR}/i18n/collationdatareader.cpp "${ICU_SOURCE_DIR}/i18n/collationdatareader.cpp"
${ICU_SOURCE_DIR}/i18n/collationdatawriter.cpp "${ICU_SOURCE_DIR}/i18n/collationdatawriter.cpp"
${ICU_SOURCE_DIR}/i18n/collationfcd.cpp "${ICU_SOURCE_DIR}/i18n/collationfcd.cpp"
${ICU_SOURCE_DIR}/i18n/collationiterator.cpp "${ICU_SOURCE_DIR}/i18n/collationiterator.cpp"
${ICU_SOURCE_DIR}/i18n/utf16collationiterator.cpp "${ICU_SOURCE_DIR}/i18n/utf16collationiterator.cpp"
${ICU_SOURCE_DIR}/i18n/utf8collationiterator.cpp "${ICU_SOURCE_DIR}/i18n/utf8collationiterator.cpp"
${ICU_SOURCE_DIR}/i18n/uitercollationiterator.cpp "${ICU_SOURCE_DIR}/i18n/uitercollationiterator.cpp"
${ICU_SOURCE_DIR}/i18n/collationsets.cpp "${ICU_SOURCE_DIR}/i18n/collationsets.cpp"
${ICU_SOURCE_DIR}/i18n/collationcompare.cpp "${ICU_SOURCE_DIR}/i18n/collationcompare.cpp"
${ICU_SOURCE_DIR}/i18n/collationfastlatin.cpp "${ICU_SOURCE_DIR}/i18n/collationfastlatin.cpp"
${ICU_SOURCE_DIR}/i18n/collationkeys.cpp "${ICU_SOURCE_DIR}/i18n/collationkeys.cpp"
${ICU_SOURCE_DIR}/i18n/rulebasedcollator.cpp "${ICU_SOURCE_DIR}/i18n/rulebasedcollator.cpp"
${ICU_SOURCE_DIR}/i18n/collationroot.cpp "${ICU_SOURCE_DIR}/i18n/collationroot.cpp"
${ICU_SOURCE_DIR}/i18n/collationrootelements.cpp "${ICU_SOURCE_DIR}/i18n/collationrootelements.cpp"
${ICU_SOURCE_DIR}/i18n/collationdatabuilder.cpp "${ICU_SOURCE_DIR}/i18n/collationdatabuilder.cpp"
${ICU_SOURCE_DIR}/i18n/collationweights.cpp "${ICU_SOURCE_DIR}/i18n/collationweights.cpp"
${ICU_SOURCE_DIR}/i18n/collationruleparser.cpp "${ICU_SOURCE_DIR}/i18n/collationruleparser.cpp"
${ICU_SOURCE_DIR}/i18n/collationbuilder.cpp "${ICU_SOURCE_DIR}/i18n/collationbuilder.cpp"
${ICU_SOURCE_DIR}/i18n/collationfastlatinbuilder.cpp "${ICU_SOURCE_DIR}/i18n/collationfastlatinbuilder.cpp"
${ICU_SOURCE_DIR}/i18n/listformatter.cpp "${ICU_SOURCE_DIR}/i18n/listformatter.cpp"
${ICU_SOURCE_DIR}/i18n/ulistformatter.cpp "${ICU_SOURCE_DIR}/i18n/ulistformatter.cpp"
${ICU_SOURCE_DIR}/i18n/strmatch.cpp "${ICU_SOURCE_DIR}/i18n/strmatch.cpp"
${ICU_SOURCE_DIR}/i18n/usearch.cpp "${ICU_SOURCE_DIR}/i18n/usearch.cpp"
${ICU_SOURCE_DIR}/i18n/search.cpp "${ICU_SOURCE_DIR}/i18n/search.cpp"
${ICU_SOURCE_DIR}/i18n/stsearch.cpp "${ICU_SOURCE_DIR}/i18n/stsearch.cpp"
${ICU_SOURCE_DIR}/i18n/translit.cpp "${ICU_SOURCE_DIR}/i18n/translit.cpp"
${ICU_SOURCE_DIR}/i18n/utrans.cpp "${ICU_SOURCE_DIR}/i18n/utrans.cpp"
${ICU_SOURCE_DIR}/i18n/esctrn.cpp "${ICU_SOURCE_DIR}/i18n/esctrn.cpp"
${ICU_SOURCE_DIR}/i18n/unesctrn.cpp "${ICU_SOURCE_DIR}/i18n/unesctrn.cpp"
${ICU_SOURCE_DIR}/i18n/funcrepl.cpp "${ICU_SOURCE_DIR}/i18n/funcrepl.cpp"
${ICU_SOURCE_DIR}/i18n/strrepl.cpp "${ICU_SOURCE_DIR}/i18n/strrepl.cpp"
${ICU_SOURCE_DIR}/i18n/tridpars.cpp "${ICU_SOURCE_DIR}/i18n/tridpars.cpp"
${ICU_SOURCE_DIR}/i18n/cpdtrans.cpp "${ICU_SOURCE_DIR}/i18n/cpdtrans.cpp"
${ICU_SOURCE_DIR}/i18n/rbt.cpp "${ICU_SOURCE_DIR}/i18n/rbt.cpp"
${ICU_SOURCE_DIR}/i18n/rbt_data.cpp "${ICU_SOURCE_DIR}/i18n/rbt_data.cpp"
${ICU_SOURCE_DIR}/i18n/rbt_pars.cpp "${ICU_SOURCE_DIR}/i18n/rbt_pars.cpp"
${ICU_SOURCE_DIR}/i18n/rbt_rule.cpp "${ICU_SOURCE_DIR}/i18n/rbt_rule.cpp"
${ICU_SOURCE_DIR}/i18n/rbt_set.cpp "${ICU_SOURCE_DIR}/i18n/rbt_set.cpp"
${ICU_SOURCE_DIR}/i18n/nultrans.cpp "${ICU_SOURCE_DIR}/i18n/nultrans.cpp"
${ICU_SOURCE_DIR}/i18n/remtrans.cpp "${ICU_SOURCE_DIR}/i18n/remtrans.cpp"
${ICU_SOURCE_DIR}/i18n/casetrn.cpp "${ICU_SOURCE_DIR}/i18n/casetrn.cpp"
${ICU_SOURCE_DIR}/i18n/titletrn.cpp "${ICU_SOURCE_DIR}/i18n/titletrn.cpp"
${ICU_SOURCE_DIR}/i18n/tolowtrn.cpp "${ICU_SOURCE_DIR}/i18n/tolowtrn.cpp"
${ICU_SOURCE_DIR}/i18n/toupptrn.cpp "${ICU_SOURCE_DIR}/i18n/toupptrn.cpp"
${ICU_SOURCE_DIR}/i18n/anytrans.cpp "${ICU_SOURCE_DIR}/i18n/anytrans.cpp"
${ICU_SOURCE_DIR}/i18n/name2uni.cpp "${ICU_SOURCE_DIR}/i18n/name2uni.cpp"
${ICU_SOURCE_DIR}/i18n/uni2name.cpp "${ICU_SOURCE_DIR}/i18n/uni2name.cpp"
${ICU_SOURCE_DIR}/i18n/nortrans.cpp "${ICU_SOURCE_DIR}/i18n/nortrans.cpp"
${ICU_SOURCE_DIR}/i18n/quant.cpp "${ICU_SOURCE_DIR}/i18n/quant.cpp"
${ICU_SOURCE_DIR}/i18n/transreg.cpp "${ICU_SOURCE_DIR}/i18n/transreg.cpp"
${ICU_SOURCE_DIR}/i18n/brktrans.cpp "${ICU_SOURCE_DIR}/i18n/brktrans.cpp"
${ICU_SOURCE_DIR}/i18n/regexcmp.cpp "${ICU_SOURCE_DIR}/i18n/regexcmp.cpp"
${ICU_SOURCE_DIR}/i18n/rematch.cpp "${ICU_SOURCE_DIR}/i18n/rematch.cpp"
${ICU_SOURCE_DIR}/i18n/repattrn.cpp "${ICU_SOURCE_DIR}/i18n/repattrn.cpp"
${ICU_SOURCE_DIR}/i18n/regexst.cpp "${ICU_SOURCE_DIR}/i18n/regexst.cpp"
${ICU_SOURCE_DIR}/i18n/regextxt.cpp "${ICU_SOURCE_DIR}/i18n/regextxt.cpp"
${ICU_SOURCE_DIR}/i18n/regeximp.cpp "${ICU_SOURCE_DIR}/i18n/regeximp.cpp"
${ICU_SOURCE_DIR}/i18n/uregex.cpp "${ICU_SOURCE_DIR}/i18n/uregex.cpp"
${ICU_SOURCE_DIR}/i18n/uregexc.cpp "${ICU_SOURCE_DIR}/i18n/uregexc.cpp"
${ICU_SOURCE_DIR}/i18n/ulocdata.cpp "${ICU_SOURCE_DIR}/i18n/ulocdata.cpp"
${ICU_SOURCE_DIR}/i18n/measfmt.cpp "${ICU_SOURCE_DIR}/i18n/measfmt.cpp"
${ICU_SOURCE_DIR}/i18n/currfmt.cpp "${ICU_SOURCE_DIR}/i18n/currfmt.cpp"
${ICU_SOURCE_DIR}/i18n/curramt.cpp "${ICU_SOURCE_DIR}/i18n/curramt.cpp"
${ICU_SOURCE_DIR}/i18n/currunit.cpp "${ICU_SOURCE_DIR}/i18n/currunit.cpp"
${ICU_SOURCE_DIR}/i18n/measure.cpp "${ICU_SOURCE_DIR}/i18n/measure.cpp"
${ICU_SOURCE_DIR}/i18n/utmscale.cpp "${ICU_SOURCE_DIR}/i18n/utmscale.cpp"
${ICU_SOURCE_DIR}/i18n/csdetect.cpp "${ICU_SOURCE_DIR}/i18n/csdetect.cpp"
${ICU_SOURCE_DIR}/i18n/csmatch.cpp "${ICU_SOURCE_DIR}/i18n/csmatch.cpp"
${ICU_SOURCE_DIR}/i18n/csr2022.cpp "${ICU_SOURCE_DIR}/i18n/csr2022.cpp"
${ICU_SOURCE_DIR}/i18n/csrecog.cpp "${ICU_SOURCE_DIR}/i18n/csrecog.cpp"
${ICU_SOURCE_DIR}/i18n/csrmbcs.cpp "${ICU_SOURCE_DIR}/i18n/csrmbcs.cpp"
${ICU_SOURCE_DIR}/i18n/csrsbcs.cpp "${ICU_SOURCE_DIR}/i18n/csrsbcs.cpp"
${ICU_SOURCE_DIR}/i18n/csrucode.cpp "${ICU_SOURCE_DIR}/i18n/csrucode.cpp"
${ICU_SOURCE_DIR}/i18n/csrutf8.cpp "${ICU_SOURCE_DIR}/i18n/csrutf8.cpp"
${ICU_SOURCE_DIR}/i18n/inputext.cpp "${ICU_SOURCE_DIR}/i18n/inputext.cpp"
${ICU_SOURCE_DIR}/i18n/wintzimpl.cpp "${ICU_SOURCE_DIR}/i18n/wintzimpl.cpp"
${ICU_SOURCE_DIR}/i18n/windtfmt.cpp "${ICU_SOURCE_DIR}/i18n/windtfmt.cpp"
${ICU_SOURCE_DIR}/i18n/winnmfmt.cpp "${ICU_SOURCE_DIR}/i18n/winnmfmt.cpp"
${ICU_SOURCE_DIR}/i18n/basictz.cpp "${ICU_SOURCE_DIR}/i18n/basictz.cpp"
${ICU_SOURCE_DIR}/i18n/dtrule.cpp "${ICU_SOURCE_DIR}/i18n/dtrule.cpp"
${ICU_SOURCE_DIR}/i18n/rbtz.cpp "${ICU_SOURCE_DIR}/i18n/rbtz.cpp"
${ICU_SOURCE_DIR}/i18n/tzrule.cpp "${ICU_SOURCE_DIR}/i18n/tzrule.cpp"
${ICU_SOURCE_DIR}/i18n/tztrans.cpp "${ICU_SOURCE_DIR}/i18n/tztrans.cpp"
${ICU_SOURCE_DIR}/i18n/vtzone.cpp "${ICU_SOURCE_DIR}/i18n/vtzone.cpp"
${ICU_SOURCE_DIR}/i18n/zonemeta.cpp "${ICU_SOURCE_DIR}/i18n/zonemeta.cpp"
${ICU_SOURCE_DIR}/i18n/standardplural.cpp "${ICU_SOURCE_DIR}/i18n/standardplural.cpp"
${ICU_SOURCE_DIR}/i18n/upluralrules.cpp "${ICU_SOURCE_DIR}/i18n/upluralrules.cpp"
${ICU_SOURCE_DIR}/i18n/plurrule.cpp "${ICU_SOURCE_DIR}/i18n/plurrule.cpp"
${ICU_SOURCE_DIR}/i18n/plurfmt.cpp "${ICU_SOURCE_DIR}/i18n/plurfmt.cpp"
${ICU_SOURCE_DIR}/i18n/selfmt.cpp "${ICU_SOURCE_DIR}/i18n/selfmt.cpp"
${ICU_SOURCE_DIR}/i18n/dtitvfmt.cpp "${ICU_SOURCE_DIR}/i18n/dtitvfmt.cpp"
${ICU_SOURCE_DIR}/i18n/dtitvinf.cpp "${ICU_SOURCE_DIR}/i18n/dtitvinf.cpp"
${ICU_SOURCE_DIR}/i18n/udateintervalformat.cpp "${ICU_SOURCE_DIR}/i18n/udateintervalformat.cpp"
${ICU_SOURCE_DIR}/i18n/tmunit.cpp "${ICU_SOURCE_DIR}/i18n/tmunit.cpp"
${ICU_SOURCE_DIR}/i18n/tmutamt.cpp "${ICU_SOURCE_DIR}/i18n/tmutamt.cpp"
${ICU_SOURCE_DIR}/i18n/tmutfmt.cpp "${ICU_SOURCE_DIR}/i18n/tmutfmt.cpp"
${ICU_SOURCE_DIR}/i18n/currpinf.cpp "${ICU_SOURCE_DIR}/i18n/currpinf.cpp"
${ICU_SOURCE_DIR}/i18n/uspoof.cpp "${ICU_SOURCE_DIR}/i18n/uspoof.cpp"
${ICU_SOURCE_DIR}/i18n/uspoof_impl.cpp "${ICU_SOURCE_DIR}/i18n/uspoof_impl.cpp"
${ICU_SOURCE_DIR}/i18n/uspoof_build.cpp "${ICU_SOURCE_DIR}/i18n/uspoof_build.cpp"
${ICU_SOURCE_DIR}/i18n/uspoof_conf.cpp "${ICU_SOURCE_DIR}/i18n/uspoof_conf.cpp"
${ICU_SOURCE_DIR}/i18n/smpdtfst.cpp "${ICU_SOURCE_DIR}/i18n/smpdtfst.cpp"
${ICU_SOURCE_DIR}/i18n/ztrans.cpp "${ICU_SOURCE_DIR}/i18n/ztrans.cpp"
${ICU_SOURCE_DIR}/i18n/zrule.cpp "${ICU_SOURCE_DIR}/i18n/zrule.cpp"
${ICU_SOURCE_DIR}/i18n/vzone.cpp "${ICU_SOURCE_DIR}/i18n/vzone.cpp"
${ICU_SOURCE_DIR}/i18n/fphdlimp.cpp "${ICU_SOURCE_DIR}/i18n/fphdlimp.cpp"
${ICU_SOURCE_DIR}/i18n/fpositer.cpp "${ICU_SOURCE_DIR}/i18n/fpositer.cpp"
${ICU_SOURCE_DIR}/i18n/ufieldpositer.cpp "${ICU_SOURCE_DIR}/i18n/ufieldpositer.cpp"
${ICU_SOURCE_DIR}/i18n/decNumber.cpp "${ICU_SOURCE_DIR}/i18n/decNumber.cpp"
${ICU_SOURCE_DIR}/i18n/decContext.cpp "${ICU_SOURCE_DIR}/i18n/decContext.cpp"
${ICU_SOURCE_DIR}/i18n/alphaindex.cpp "${ICU_SOURCE_DIR}/i18n/alphaindex.cpp"
${ICU_SOURCE_DIR}/i18n/tznames.cpp "${ICU_SOURCE_DIR}/i18n/tznames.cpp"
${ICU_SOURCE_DIR}/i18n/tznames_impl.cpp "${ICU_SOURCE_DIR}/i18n/tznames_impl.cpp"
${ICU_SOURCE_DIR}/i18n/tzgnames.cpp "${ICU_SOURCE_DIR}/i18n/tzgnames.cpp"
${ICU_SOURCE_DIR}/i18n/tzfmt.cpp "${ICU_SOURCE_DIR}/i18n/tzfmt.cpp"
${ICU_SOURCE_DIR}/i18n/compactdecimalformat.cpp "${ICU_SOURCE_DIR}/i18n/compactdecimalformat.cpp"
${ICU_SOURCE_DIR}/i18n/gender.cpp "${ICU_SOURCE_DIR}/i18n/gender.cpp"
${ICU_SOURCE_DIR}/i18n/region.cpp "${ICU_SOURCE_DIR}/i18n/region.cpp"
${ICU_SOURCE_DIR}/i18n/scriptset.cpp "${ICU_SOURCE_DIR}/i18n/scriptset.cpp"
${ICU_SOURCE_DIR}/i18n/uregion.cpp "${ICU_SOURCE_DIR}/i18n/uregion.cpp"
${ICU_SOURCE_DIR}/i18n/reldatefmt.cpp "${ICU_SOURCE_DIR}/i18n/reldatefmt.cpp"
${ICU_SOURCE_DIR}/i18n/quantityformatter.cpp "${ICU_SOURCE_DIR}/i18n/quantityformatter.cpp"
${ICU_SOURCE_DIR}/i18n/measunit.cpp "${ICU_SOURCE_DIR}/i18n/measunit.cpp"
${ICU_SOURCE_DIR}/i18n/sharedbreakiterator.cpp "${ICU_SOURCE_DIR}/i18n/sharedbreakiterator.cpp"
${ICU_SOURCE_DIR}/i18n/scientificnumberformatter.cpp "${ICU_SOURCE_DIR}/i18n/scientificnumberformatter.cpp"
${ICU_SOURCE_DIR}/i18n/dayperiodrules.cpp "${ICU_SOURCE_DIR}/i18n/dayperiodrules.cpp"
${ICU_SOURCE_DIR}/i18n/nounit.cpp "${ICU_SOURCE_DIR}/i18n/nounit.cpp"
${ICU_SOURCE_DIR}/i18n/number_affixutils.cpp "${ICU_SOURCE_DIR}/i18n/number_affixutils.cpp"
${ICU_SOURCE_DIR}/i18n/number_compact.cpp "${ICU_SOURCE_DIR}/i18n/number_compact.cpp"
${ICU_SOURCE_DIR}/i18n/number_decimalquantity.cpp "${ICU_SOURCE_DIR}/i18n/number_decimalquantity.cpp"
${ICU_SOURCE_DIR}/i18n/number_decimfmtprops.cpp "${ICU_SOURCE_DIR}/i18n/number_decimfmtprops.cpp"
${ICU_SOURCE_DIR}/i18n/number_fluent.cpp "${ICU_SOURCE_DIR}/i18n/number_fluent.cpp"
${ICU_SOURCE_DIR}/i18n/number_formatimpl.cpp "${ICU_SOURCE_DIR}/i18n/number_formatimpl.cpp"
${ICU_SOURCE_DIR}/i18n/number_grouping.cpp "${ICU_SOURCE_DIR}/i18n/number_grouping.cpp"
${ICU_SOURCE_DIR}/i18n/number_integerwidth.cpp "${ICU_SOURCE_DIR}/i18n/number_integerwidth.cpp"
${ICU_SOURCE_DIR}/i18n/number_longnames.cpp "${ICU_SOURCE_DIR}/i18n/number_longnames.cpp"
${ICU_SOURCE_DIR}/i18n/number_modifiers.cpp "${ICU_SOURCE_DIR}/i18n/number_modifiers.cpp"
${ICU_SOURCE_DIR}/i18n/number_notation.cpp "${ICU_SOURCE_DIR}/i18n/number_notation.cpp"
${ICU_SOURCE_DIR}/i18n/number_output.cpp "${ICU_SOURCE_DIR}/i18n/number_output.cpp"
${ICU_SOURCE_DIR}/i18n/number_padding.cpp "${ICU_SOURCE_DIR}/i18n/number_padding.cpp"
${ICU_SOURCE_DIR}/i18n/number_patternmodifier.cpp "${ICU_SOURCE_DIR}/i18n/number_patternmodifier.cpp"
${ICU_SOURCE_DIR}/i18n/number_patternstring.cpp "${ICU_SOURCE_DIR}/i18n/number_patternstring.cpp"
${ICU_SOURCE_DIR}/i18n/number_rounding.cpp "${ICU_SOURCE_DIR}/i18n/number_rounding.cpp"
${ICU_SOURCE_DIR}/i18n/number_scientific.cpp "${ICU_SOURCE_DIR}/i18n/number_scientific.cpp"
${ICU_SOURCE_DIR}/i18n/number_utils.cpp "${ICU_SOURCE_DIR}/i18n/number_utils.cpp"
${ICU_SOURCE_DIR}/i18n/number_asformat.cpp "${ICU_SOURCE_DIR}/i18n/number_asformat.cpp"
${ICU_SOURCE_DIR}/i18n/number_mapper.cpp "${ICU_SOURCE_DIR}/i18n/number_mapper.cpp"
${ICU_SOURCE_DIR}/i18n/number_multiplier.cpp "${ICU_SOURCE_DIR}/i18n/number_multiplier.cpp"
${ICU_SOURCE_DIR}/i18n/number_currencysymbols.cpp "${ICU_SOURCE_DIR}/i18n/number_currencysymbols.cpp"
${ICU_SOURCE_DIR}/i18n/number_skeletons.cpp "${ICU_SOURCE_DIR}/i18n/number_skeletons.cpp"
${ICU_SOURCE_DIR}/i18n/number_capi.cpp "${ICU_SOURCE_DIR}/i18n/number_capi.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-string-to-double.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-string-to-double.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-double-to-string.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-double-to-string.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-bignum-dtoa.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-bignum-dtoa.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-bignum.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-bignum.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-cached-powers.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-cached-powers.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-fast-dtoa.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-fast-dtoa.cpp"
${ICU_SOURCE_DIR}/i18n/double-conversion-strtod.cpp "${ICU_SOURCE_DIR}/i18n/double-conversion-strtod.cpp"
${ICU_SOURCE_DIR}/i18n/string_segment.cpp "${ICU_SOURCE_DIR}/i18n/string_segment.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_parsednumber.cpp "${ICU_SOURCE_DIR}/i18n/numparse_parsednumber.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_impl.cpp "${ICU_SOURCE_DIR}/i18n/numparse_impl.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_symbols.cpp "${ICU_SOURCE_DIR}/i18n/numparse_symbols.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_decimal.cpp "${ICU_SOURCE_DIR}/i18n/numparse_decimal.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_scientific.cpp "${ICU_SOURCE_DIR}/i18n/numparse_scientific.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_currency.cpp "${ICU_SOURCE_DIR}/i18n/numparse_currency.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_affixes.cpp "${ICU_SOURCE_DIR}/i18n/numparse_affixes.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_compositions.cpp "${ICU_SOURCE_DIR}/i18n/numparse_compositions.cpp"
${ICU_SOURCE_DIR}/i18n/numparse_validators.cpp "${ICU_SOURCE_DIR}/i18n/numparse_validators.cpp"
${ICU_SOURCE_DIR}/i18n/numrange_fluent.cpp "${ICU_SOURCE_DIR}/i18n/numrange_fluent.cpp"
${ICU_SOURCE_DIR}/i18n/numrange_impl.cpp "${ICU_SOURCE_DIR}/i18n/numrange_impl.cpp"
${ICU_SOURCE_DIR}/i18n/erarules.cpp "${ICU_SOURCE_DIR}/i18n/erarules.cpp"
${ICU_SOURCE_DIR}/i18n/formattedvalue.cpp "${ICU_SOURCE_DIR}/i18n/formattedvalue.cpp"
${ICU_SOURCE_DIR}/i18n/formattedval_iterimpl.cpp "${ICU_SOURCE_DIR}/i18n/formattedval_iterimpl.cpp"
${ICU_SOURCE_DIR}/i18n/formattedval_sbimpl.cpp "${ICU_SOURCE_DIR}/i18n/formattedval_sbimpl.cpp"
${ICU_SOURCE_DIR}/i18n/formatted_string_builder.cpp) "${ICU_SOURCE_DIR}/i18n/formatted_string_builder.cpp")
file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/empty.cpp CONTENT " ") file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/empty.cpp" CONTENT " ")
enable_language(ASM) enable_language(ASM)
set(ICUDATA_SOURCES set(ICUDATA_SOURCES
${ICUDATA_SOURCE_DIR}/icudt66l_dat.S "${ICUDATA_SOURCE_DIR}/icudt66l_dat.S"
${CMAKE_CURRENT_BINARY_DIR}/empty.cpp # Without this cmake can incorrectly detects library type (OBJECT) instead of SHARED/STATIC "${CMAKE_CURRENT_BINARY_DIR}/empty.cpp" # Without this cmake can incorrectly detects library type (OBJECT) instead of SHARED/STATIC
) )
# Note that we don't like any kind of binary plugins (because of runtime dependencies, vulnerabilities, ABI incompatibilities). # Note that we don't like any kind of binary plugins (because of runtime dependencies, vulnerabilities, ABI incompatibilities).
@ -454,8 +454,8 @@ add_library(icudata ${ICUDATA_SOURCES})
target_link_libraries(icuuc PRIVATE icudata) target_link_libraries(icuuc PRIVATE icudata)
target_link_libraries(icui18n PRIVATE icuuc) target_link_libraries(icui18n PRIVATE icuuc)
target_include_directories(icuuc SYSTEM PUBLIC ${ICU_SOURCE_DIR}/common/) target_include_directories(icuuc SYSTEM PUBLIC "${ICU_SOURCE_DIR}/common/")
target_include_directories(icui18n SYSTEM PUBLIC ${ICU_SOURCE_DIR}/i18n/) target_include_directories(icui18n SYSTEM PUBLIC "${ICU_SOURCE_DIR}/i18n/")
target_compile_definitions(icuuc PRIVATE -DU_COMMON_IMPLEMENTATION) target_compile_definitions(icuuc PRIVATE -DU_COMMON_IMPLEMENTATION)
target_compile_definitions(icui18n PRIVATE -DU_I18N_IMPLEMENTATION) target_compile_definitions(icui18n PRIVATE -DU_I18N_IMPLEMENTATION)

View File

@ -1,10 +1,13 @@
if (SANITIZE OR NOT (ARCH_AMD64 OR ARCH_ARM OR ARCH_PPC64LE) OR NOT (OS_LINUX OR OS_FREEBSD OR OS_DARWIN)) if (SANITIZE OR NOT (
((OS_LINUX OR OS_FREEBSD) AND (ARCH_AMD64 OR ARCH_ARM OR ARCH_PPC64LE)) OR
(OS_DARWIN AND CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
))
if (ENABLE_JEMALLOC) if (ENABLE_JEMALLOC)
message (${RECONFIGURE_MESSAGE_LEVEL} message (${RECONFIGURE_MESSAGE_LEVEL}
"jemalloc is disabled implicitly: it doesn't work with sanitizers and can only be used with x86_64, aarch64 or ppc64le on linux or freebsd.") "jemalloc is disabled implicitly: it doesn't work with sanitizers and can only be used with x86_64, aarch64, or ppc64le Linux or FreeBSD builds and RelWithDebInfo macOS builds.")
endif() endif ()
set (ENABLE_JEMALLOC OFF) set (ENABLE_JEMALLOC OFF)
else() else ()
option (ENABLE_JEMALLOC "Enable jemalloc allocator" ${ENABLE_LIBRARIES}) option (ENABLE_JEMALLOC "Enable jemalloc allocator" ${ENABLE_LIBRARIES})
endif () endif ()
@ -34,9 +37,9 @@ if (OS_LINUX)
# avoid spurious latencies and additional work associated with # avoid spurious latencies and additional work associated with
# MADV_DONTNEED. See # MADV_DONTNEED. See
# https://github.com/ClickHouse/ClickHouse/issues/11121 for motivation. # https://github.com/ClickHouse/ClickHouse/issues/11121 for motivation.
set (JEMALLOC_CONFIG_MALLOC_CONF "percpu_arena:percpu,oversize_threshold:0,muzzy_decay_ms:10000") set (JEMALLOC_CONFIG_MALLOC_CONF "percpu_arena:percpu,oversize_threshold:0,muzzy_decay_ms:5000,dirty_decay_ms:5000")
else() else()
set (JEMALLOC_CONFIG_MALLOC_CONF "oversize_threshold:0,muzzy_decay_ms:10000") set (JEMALLOC_CONFIG_MALLOC_CONF "oversize_threshold:0,muzzy_decay_ms:5000,dirty_decay_ms:5000")
endif() endif()
# CACHE variable is empty, to allow changing defaults without necessity # CACHE variable is empty, to allow changing defaults without necessity
# to purge cache # to purge cache
@ -49,46 +52,46 @@ message (STATUS "jemalloc malloc_conf: ${JEMALLOC_CONFIG_MALLOC_CONF}")
set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/jemalloc") set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/jemalloc")
set (SRCS set (SRCS
${LIBRARY_DIR}/src/arena.c "${LIBRARY_DIR}/src/arena.c"
${LIBRARY_DIR}/src/background_thread.c "${LIBRARY_DIR}/src/background_thread.c"
${LIBRARY_DIR}/src/base.c "${LIBRARY_DIR}/src/base.c"
${LIBRARY_DIR}/src/bin.c "${LIBRARY_DIR}/src/bin.c"
${LIBRARY_DIR}/src/bitmap.c "${LIBRARY_DIR}/src/bitmap.c"
${LIBRARY_DIR}/src/ckh.c "${LIBRARY_DIR}/src/ckh.c"
${LIBRARY_DIR}/src/ctl.c "${LIBRARY_DIR}/src/ctl.c"
${LIBRARY_DIR}/src/div.c "${LIBRARY_DIR}/src/div.c"
${LIBRARY_DIR}/src/extent.c "${LIBRARY_DIR}/src/extent.c"
${LIBRARY_DIR}/src/extent_dss.c "${LIBRARY_DIR}/src/extent_dss.c"
${LIBRARY_DIR}/src/extent_mmap.c "${LIBRARY_DIR}/src/extent_mmap.c"
${LIBRARY_DIR}/src/hash.c "${LIBRARY_DIR}/src/hash.c"
${LIBRARY_DIR}/src/hook.c "${LIBRARY_DIR}/src/hook.c"
${LIBRARY_DIR}/src/jemalloc.c "${LIBRARY_DIR}/src/jemalloc.c"
${LIBRARY_DIR}/src/large.c "${LIBRARY_DIR}/src/large.c"
${LIBRARY_DIR}/src/log.c "${LIBRARY_DIR}/src/log.c"
${LIBRARY_DIR}/src/malloc_io.c "${LIBRARY_DIR}/src/malloc_io.c"
${LIBRARY_DIR}/src/mutex.c "${LIBRARY_DIR}/src/mutex.c"
${LIBRARY_DIR}/src/mutex_pool.c "${LIBRARY_DIR}/src/mutex_pool.c"
${LIBRARY_DIR}/src/nstime.c "${LIBRARY_DIR}/src/nstime.c"
${LIBRARY_DIR}/src/pages.c "${LIBRARY_DIR}/src/pages.c"
${LIBRARY_DIR}/src/prng.c "${LIBRARY_DIR}/src/prng.c"
${LIBRARY_DIR}/src/prof.c "${LIBRARY_DIR}/src/prof.c"
${LIBRARY_DIR}/src/rtree.c "${LIBRARY_DIR}/src/rtree.c"
${LIBRARY_DIR}/src/sc.c "${LIBRARY_DIR}/src/sc.c"
${LIBRARY_DIR}/src/stats.c "${LIBRARY_DIR}/src/stats.c"
${LIBRARY_DIR}/src/sz.c "${LIBRARY_DIR}/src/sz.c"
${LIBRARY_DIR}/src/tcache.c "${LIBRARY_DIR}/src/tcache.c"
${LIBRARY_DIR}/src/test_hooks.c "${LIBRARY_DIR}/src/test_hooks.c"
${LIBRARY_DIR}/src/ticker.c "${LIBRARY_DIR}/src/ticker.c"
${LIBRARY_DIR}/src/tsd.c "${LIBRARY_DIR}/src/tsd.c"
${LIBRARY_DIR}/src/witness.c "${LIBRARY_DIR}/src/witness.c"
${LIBRARY_DIR}/src/safety_check.c "${LIBRARY_DIR}/src/safety_check.c"
) )
if (OS_DARWIN) if (OS_DARWIN)
list(APPEND SRCS ${LIBRARY_DIR}/src/zone.c) list(APPEND SRCS "${LIBRARY_DIR}/src/zone.c")
endif () endif ()
add_library(jemalloc ${SRCS}) add_library(jemalloc ${SRCS})
target_include_directories(jemalloc PRIVATE ${LIBRARY_DIR}/include) target_include_directories(jemalloc PRIVATE "${LIBRARY_DIR}/include")
target_include_directories(jemalloc SYSTEM PUBLIC include) target_include_directories(jemalloc SYSTEM PUBLIC include)
set (JEMALLOC_INCLUDE_PREFIX) set (JEMALLOC_INCLUDE_PREFIX)
@ -116,17 +119,19 @@ endif ()
configure_file(${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal/jemalloc_internal_defs.h.in configure_file(${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal/jemalloc_internal_defs.h.in
${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal/jemalloc_internal_defs.h) ${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal/jemalloc_internal_defs.h)
target_include_directories(jemalloc SYSTEM PRIVATE target_include_directories(jemalloc SYSTEM PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal) "${CMAKE_CURRENT_BINARY_DIR}/${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal")
target_compile_definitions(jemalloc PRIVATE -DJEMALLOC_NO_PRIVATE_NAMESPACE) target_compile_definitions(jemalloc PRIVATE -DJEMALLOC_NO_PRIVATE_NAMESPACE)
if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG") if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
target_compile_definitions(jemalloc PRIVATE -DJEMALLOC_DEBUG=1 -DJEMALLOC_PROF=1) target_compile_definitions(jemalloc PRIVATE -DJEMALLOC_DEBUG=1)
endif ()
if (USE_UNWIND) target_compile_definitions(jemalloc PRIVATE -DJEMALLOC_PROF=1)
target_compile_definitions (jemalloc PRIVATE -DJEMALLOC_PROF_LIBUNWIND=1)
target_link_libraries (jemalloc PRIVATE unwind) if (USE_UNWIND)
endif () target_compile_definitions (jemalloc PRIVATE -DJEMALLOC_PROF_LIBUNWIND=1)
target_link_libraries (jemalloc PRIVATE unwind)
endif () endif ()
target_compile_options(jemalloc PRIVATE -Wno-redundant-decls) target_compile_options(jemalloc PRIVATE -Wno-redundant-decls)

View File

@ -42,7 +42,7 @@
* total number of bits in a pointer, e.g. on x64, for which the uppermost 16 * total number of bits in a pointer, e.g. on x64, for which the uppermost 16
* bits are the same as bit 47. * bits are the same as bit 47.
*/ */
#define LG_VADDR 48 #define LG_VADDR 64
/* Defined if C11 atomics are available. */ /* Defined if C11 atomics are available. */
#define JEMALLOC_C11_ATOMICS 1 #define JEMALLOC_C11_ATOMICS 1
@ -101,11 +101,6 @@
*/ */
#define JEMALLOC_HAVE_MACH_ABSOLUTE_TIME 1 #define JEMALLOC_HAVE_MACH_ABSOLUTE_TIME 1
/*
* Defined if clock_gettime(CLOCK_REALTIME, ...) is available.
*/
#define JEMALLOC_HAVE_CLOCK_REALTIME 1
/* /*
* Defined if _malloc_thread_cleanup() exists. At least in the case of * Defined if _malloc_thread_cleanup() exists. At least in the case of
* FreeBSD, pthread_key_create() allocates, which if used during malloc * FreeBSD, pthread_key_create() allocates, which if used during malloc
@ -181,14 +176,14 @@
/* #undef LG_QUANTUM */ /* #undef LG_QUANTUM */
/* One page is 2^LG_PAGE bytes. */ /* One page is 2^LG_PAGE bytes. */
#define LG_PAGE 16 #define LG_PAGE 14
/* /*
* One huge page is 2^LG_HUGEPAGE bytes. Note that this is defined even if the * One huge page is 2^LG_HUGEPAGE bytes. Note that this is defined even if the
* system does not explicitly support huge pages; system calls that require * system does not explicitly support huge pages; system calls that require
* explicit huge page support are separately configured. * explicit huge page support are separately configured.
*/ */
#define LG_HUGEPAGE 29 #define LG_HUGEPAGE 21
/* /*
* If defined, adjacent virtual memory mappings with identical attributes * If defined, adjacent virtual memory mappings with identical attributes
@ -356,7 +351,7 @@
/* #undef JEMALLOC_EXPORT */ /* #undef JEMALLOC_EXPORT */
/* config.malloc_conf options string. */ /* config.malloc_conf options string. */
#define JEMALLOC_CONFIG_MALLOC_CONF "@JEMALLOC_CONFIG_MALLOC_CONF@" #define JEMALLOC_CONFIG_MALLOC_CONF ""
/* If defined, jemalloc takes the malloc/free/etc. symbol names. */ /* If defined, jemalloc takes the malloc/free/etc. symbol names. */
/* #undef JEMALLOC_IS_MALLOC */ /* #undef JEMALLOC_IS_MALLOC */

File diff suppressed because it is too large Load Diff

2
contrib/libcxx vendored

@ -1 +1 @@
Subproject commit 8b80a151d12b98ffe2d0c22f7cec12c3b9ff88d7 Subproject commit 2fa892f69acbaa40f8a18c6484854a6183a34482

View File

@ -1,49 +1,49 @@
include(CheckCXXCompilerFlag) include(CheckCXXCompilerFlag)
set(LIBCXX_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/libcxx) set(LIBCXX_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/libcxx")
set(SRCS set(SRCS
${LIBCXX_SOURCE_DIR}/src/algorithm.cpp "${LIBCXX_SOURCE_DIR}/src/algorithm.cpp"
${LIBCXX_SOURCE_DIR}/src/any.cpp "${LIBCXX_SOURCE_DIR}/src/any.cpp"
${LIBCXX_SOURCE_DIR}/src/atomic.cpp "${LIBCXX_SOURCE_DIR}/src/atomic.cpp"
${LIBCXX_SOURCE_DIR}/src/barrier.cpp "${LIBCXX_SOURCE_DIR}/src/barrier.cpp"
${LIBCXX_SOURCE_DIR}/src/bind.cpp "${LIBCXX_SOURCE_DIR}/src/bind.cpp"
${LIBCXX_SOURCE_DIR}/src/charconv.cpp "${LIBCXX_SOURCE_DIR}/src/charconv.cpp"
${LIBCXX_SOURCE_DIR}/src/chrono.cpp "${LIBCXX_SOURCE_DIR}/src/chrono.cpp"
${LIBCXX_SOURCE_DIR}/src/condition_variable.cpp "${LIBCXX_SOURCE_DIR}/src/condition_variable.cpp"
${LIBCXX_SOURCE_DIR}/src/condition_variable_destructor.cpp "${LIBCXX_SOURCE_DIR}/src/condition_variable_destructor.cpp"
${LIBCXX_SOURCE_DIR}/src/debug.cpp "${LIBCXX_SOURCE_DIR}/src/debug.cpp"
${LIBCXX_SOURCE_DIR}/src/exception.cpp "${LIBCXX_SOURCE_DIR}/src/exception.cpp"
${LIBCXX_SOURCE_DIR}/src/experimental/memory_resource.cpp "${LIBCXX_SOURCE_DIR}/src/experimental/memory_resource.cpp"
${LIBCXX_SOURCE_DIR}/src/filesystem/directory_iterator.cpp "${LIBCXX_SOURCE_DIR}/src/filesystem/directory_iterator.cpp"
${LIBCXX_SOURCE_DIR}/src/filesystem/int128_builtins.cpp "${LIBCXX_SOURCE_DIR}/src/filesystem/int128_builtins.cpp"
${LIBCXX_SOURCE_DIR}/src/filesystem/operations.cpp "${LIBCXX_SOURCE_DIR}/src/filesystem/operations.cpp"
${LIBCXX_SOURCE_DIR}/src/functional.cpp "${LIBCXX_SOURCE_DIR}/src/functional.cpp"
${LIBCXX_SOURCE_DIR}/src/future.cpp "${LIBCXX_SOURCE_DIR}/src/future.cpp"
${LIBCXX_SOURCE_DIR}/src/hash.cpp "${LIBCXX_SOURCE_DIR}/src/hash.cpp"
${LIBCXX_SOURCE_DIR}/src/ios.cpp "${LIBCXX_SOURCE_DIR}/src/ios.cpp"
${LIBCXX_SOURCE_DIR}/src/ios.instantiations.cpp "${LIBCXX_SOURCE_DIR}/src/ios.instantiations.cpp"
${LIBCXX_SOURCE_DIR}/src/iostream.cpp "${LIBCXX_SOURCE_DIR}/src/iostream.cpp"
${LIBCXX_SOURCE_DIR}/src/locale.cpp "${LIBCXX_SOURCE_DIR}/src/locale.cpp"
${LIBCXX_SOURCE_DIR}/src/memory.cpp "${LIBCXX_SOURCE_DIR}/src/memory.cpp"
${LIBCXX_SOURCE_DIR}/src/mutex.cpp "${LIBCXX_SOURCE_DIR}/src/mutex.cpp"
${LIBCXX_SOURCE_DIR}/src/mutex_destructor.cpp "${LIBCXX_SOURCE_DIR}/src/mutex_destructor.cpp"
${LIBCXX_SOURCE_DIR}/src/new.cpp "${LIBCXX_SOURCE_DIR}/src/new.cpp"
${LIBCXX_SOURCE_DIR}/src/optional.cpp "${LIBCXX_SOURCE_DIR}/src/optional.cpp"
${LIBCXX_SOURCE_DIR}/src/random.cpp "${LIBCXX_SOURCE_DIR}/src/random.cpp"
${LIBCXX_SOURCE_DIR}/src/random_shuffle.cpp "${LIBCXX_SOURCE_DIR}/src/random_shuffle.cpp"
${LIBCXX_SOURCE_DIR}/src/regex.cpp "${LIBCXX_SOURCE_DIR}/src/regex.cpp"
${LIBCXX_SOURCE_DIR}/src/shared_mutex.cpp "${LIBCXX_SOURCE_DIR}/src/shared_mutex.cpp"
${LIBCXX_SOURCE_DIR}/src/stdexcept.cpp "${LIBCXX_SOURCE_DIR}/src/stdexcept.cpp"
${LIBCXX_SOURCE_DIR}/src/string.cpp "${LIBCXX_SOURCE_DIR}/src/string.cpp"
${LIBCXX_SOURCE_DIR}/src/strstream.cpp "${LIBCXX_SOURCE_DIR}/src/strstream.cpp"
${LIBCXX_SOURCE_DIR}/src/system_error.cpp "${LIBCXX_SOURCE_DIR}/src/system_error.cpp"
${LIBCXX_SOURCE_DIR}/src/thread.cpp "${LIBCXX_SOURCE_DIR}/src/thread.cpp"
${LIBCXX_SOURCE_DIR}/src/typeinfo.cpp "${LIBCXX_SOURCE_DIR}/src/typeinfo.cpp"
${LIBCXX_SOURCE_DIR}/src/utility.cpp "${LIBCXX_SOURCE_DIR}/src/utility.cpp"
${LIBCXX_SOURCE_DIR}/src/valarray.cpp "${LIBCXX_SOURCE_DIR}/src/valarray.cpp"
${LIBCXX_SOURCE_DIR}/src/variant.cpp "${LIBCXX_SOURCE_DIR}/src/variant.cpp"
${LIBCXX_SOURCE_DIR}/src/vector.cpp "${LIBCXX_SOURCE_DIR}/src/vector.cpp"
) )
add_library(cxx ${SRCS}) add_library(cxx ${SRCS})
@ -56,6 +56,11 @@ if (USE_UNWIND)
target_compile_definitions(cxx PUBLIC -DSTD_EXCEPTION_HAS_STACK_TRACE=1) target_compile_definitions(cxx PUBLIC -DSTD_EXCEPTION_HAS_STACK_TRACE=1)
endif () endif ()
# Override the deduced attribute support that causes error.
if (OS_DARWIN AND COMPILER_GCC)
add_compile_definitions(_LIBCPP_INIT_PRIORITY_MAX)
endif ()
target_compile_options(cxx PUBLIC $<$<COMPILE_LANGUAGE:CXX>:-nostdinc++>) target_compile_options(cxx PUBLIC $<$<COMPILE_LANGUAGE:CXX>:-nostdinc++>)
# Third party library may have substandard code. # Third party library may have substandard code.

View File

@ -1,24 +1,24 @@
set(LIBCXXABI_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/libcxxabi) set(LIBCXXABI_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/libcxxabi")
set(SRCS set(SRCS
${LIBCXXABI_SOURCE_DIR}/src/stdlib_stdexcept.cpp "${LIBCXXABI_SOURCE_DIR}/src/stdlib_stdexcept.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_virtual.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_virtual.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_thread_atexit.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_thread_atexit.cpp"
${LIBCXXABI_SOURCE_DIR}/src/fallback_malloc.cpp "${LIBCXXABI_SOURCE_DIR}/src/fallback_malloc.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_guard.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_guard.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_default_handlers.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_default_handlers.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_personality.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_personality.cpp"
${LIBCXXABI_SOURCE_DIR}/src/stdlib_exception.cpp "${LIBCXXABI_SOURCE_DIR}/src/stdlib_exception.cpp"
${LIBCXXABI_SOURCE_DIR}/src/abort_message.cpp "${LIBCXXABI_SOURCE_DIR}/src/abort_message.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_demangle.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_demangle.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_exception.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_exception.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_handlers.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_handlers.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_exception_storage.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_exception_storage.cpp"
${LIBCXXABI_SOURCE_DIR}/src/private_typeinfo.cpp "${LIBCXXABI_SOURCE_DIR}/src/private_typeinfo.cpp"
${LIBCXXABI_SOURCE_DIR}/src/stdlib_typeinfo.cpp "${LIBCXXABI_SOURCE_DIR}/src/stdlib_typeinfo.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_aux_runtime.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_aux_runtime.cpp"
${LIBCXXABI_SOURCE_DIR}/src/cxa_vector.cpp "${LIBCXXABI_SOURCE_DIR}/src/cxa_vector.cpp"
${LIBCXXABI_SOURCE_DIR}/src/stdlib_new_delete.cpp "${LIBCXXABI_SOURCE_DIR}/src/stdlib_new_delete.cpp"
) )
add_library(cxxabi ${SRCS}) add_library(cxxabi ${SRCS})

View File

@ -22,7 +22,7 @@ ADD_DEFINITIONS(-D_GLIBCXX_USE_NANOSLEEP)
TRY_COMPILE(STRERROR_R_RETURN_INT TRY_COMPILE(STRERROR_R_RETURN_INT
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
${HDFS3_ROOT_DIR}/CMake/CMakeTestCompileStrerror.cpp "${HDFS3_ROOT_DIR}/CMake/CMakeTestCompileStrerror.cpp"
CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'" CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'"
OUTPUT_VARIABLE OUTPUT) OUTPUT_VARIABLE OUTPUT)
@ -36,13 +36,13 @@ ENDIF(STRERROR_R_RETURN_INT)
TRY_COMPILE(HAVE_STEADY_CLOCK TRY_COMPILE(HAVE_STEADY_CLOCK
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
${HDFS3_ROOT_DIR}/CMake/CMakeTestCompileSteadyClock.cpp "${HDFS3_ROOT_DIR}/CMake/CMakeTestCompileSteadyClock.cpp"
CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'" CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'"
OUTPUT_VARIABLE OUTPUT) OUTPUT_VARIABLE OUTPUT)
TRY_COMPILE(HAVE_NESTED_EXCEPTION TRY_COMPILE(HAVE_NESTED_EXCEPTION
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
${HDFS3_ROOT_DIR}/CMake/CMakeTestCompileNestedException.cpp "${HDFS3_ROOT_DIR}/CMake/CMakeTestCompileNestedException.cpp"
CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'" CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'"
OUTPUT_VARIABLE OUTPUT) OUTPUT_VARIABLE OUTPUT)

View File

@ -24,9 +24,9 @@ else()
endif() endif()
# project and source dir # project and source dir
set(HDFS3_ROOT_DIR ${ClickHouse_SOURCE_DIR}/contrib/libhdfs3) set(HDFS3_ROOT_DIR "${ClickHouse_SOURCE_DIR}/contrib/libhdfs3")
set(HDFS3_SOURCE_DIR ${HDFS3_ROOT_DIR}/src) set(HDFS3_SOURCE_DIR "${HDFS3_ROOT_DIR}/src")
set(HDFS3_COMMON_DIR ${HDFS3_SOURCE_DIR}/common) set(HDFS3_COMMON_DIR "${HDFS3_SOURCE_DIR}/common")
# module # module
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
@ -35,165 +35,165 @@ include(Options)
# source # source
set(PROTO_FILES set(PROTO_FILES
#${HDFS3_SOURCE_DIR}/proto/encryption.proto #"${HDFS3_SOURCE_DIR}/proto/encryption.proto"
${HDFS3_SOURCE_DIR}/proto/ClientDatanodeProtocol.proto "${HDFS3_SOURCE_DIR}/proto/ClientDatanodeProtocol.proto"
${HDFS3_SOURCE_DIR}/proto/hdfs.proto "${HDFS3_SOURCE_DIR}/proto/hdfs.proto"
${HDFS3_SOURCE_DIR}/proto/Security.proto "${HDFS3_SOURCE_DIR}/proto/Security.proto"
${HDFS3_SOURCE_DIR}/proto/ProtobufRpcEngine.proto "${HDFS3_SOURCE_DIR}/proto/ProtobufRpcEngine.proto"
${HDFS3_SOURCE_DIR}/proto/ClientNamenodeProtocol.proto "${HDFS3_SOURCE_DIR}/proto/ClientNamenodeProtocol.proto"
${HDFS3_SOURCE_DIR}/proto/IpcConnectionContext.proto "${HDFS3_SOURCE_DIR}/proto/IpcConnectionContext.proto"
${HDFS3_SOURCE_DIR}/proto/RpcHeader.proto "${HDFS3_SOURCE_DIR}/proto/RpcHeader.proto"
${HDFS3_SOURCE_DIR}/proto/datatransfer.proto "${HDFS3_SOURCE_DIR}/proto/datatransfer.proto"
) )
if(USE_PROTOBUF) if(USE_PROTOBUF)
PROTOBUF_GENERATE_CPP(PROTO_SOURCES PROTO_HEADERS ${PROTO_FILES}) PROTOBUF_GENERATE_CPP(PROTO_SOURCES PROTO_HEADERS ${PROTO_FILES})
endif() endif()
configure_file(${HDFS3_SOURCE_DIR}/platform.h.in ${CMAKE_CURRENT_BINARY_DIR}/platform.h) configure_file("${HDFS3_SOURCE_DIR}/platform.h.in" "${CMAKE_CURRENT_BINARY_DIR}/platform.h")
set(SRCS set(SRCS
${HDFS3_SOURCE_DIR}/network/TcpSocket.cpp "${HDFS3_SOURCE_DIR}/network/TcpSocket.cpp"
${HDFS3_SOURCE_DIR}/network/DomainSocket.cpp "${HDFS3_SOURCE_DIR}/network/DomainSocket.cpp"
${HDFS3_SOURCE_DIR}/network/BufferedSocketReader.cpp "${HDFS3_SOURCE_DIR}/network/BufferedSocketReader.cpp"
${HDFS3_SOURCE_DIR}/client/ReadShortCircuitInfo.cpp "${HDFS3_SOURCE_DIR}/client/ReadShortCircuitInfo.cpp"
${HDFS3_SOURCE_DIR}/client/Pipeline.cpp "${HDFS3_SOURCE_DIR}/client/Pipeline.cpp"
${HDFS3_SOURCE_DIR}/client/Hdfs.cpp "${HDFS3_SOURCE_DIR}/client/Hdfs.cpp"
${HDFS3_SOURCE_DIR}/client/Packet.cpp "${HDFS3_SOURCE_DIR}/client/Packet.cpp"
${HDFS3_SOURCE_DIR}/client/OutputStreamImpl.cpp "${HDFS3_SOURCE_DIR}/client/OutputStreamImpl.cpp"
${HDFS3_SOURCE_DIR}/client/KerberosName.cpp "${HDFS3_SOURCE_DIR}/client/KerberosName.cpp"
${HDFS3_SOURCE_DIR}/client/PacketHeader.cpp "${HDFS3_SOURCE_DIR}/client/PacketHeader.cpp"
${HDFS3_SOURCE_DIR}/client/LocalBlockReader.cpp "${HDFS3_SOURCE_DIR}/client/LocalBlockReader.cpp"
${HDFS3_SOURCE_DIR}/client/UserInfo.cpp "${HDFS3_SOURCE_DIR}/client/UserInfo.cpp"
${HDFS3_SOURCE_DIR}/client/RemoteBlockReader.cpp "${HDFS3_SOURCE_DIR}/client/RemoteBlockReader.cpp"
${HDFS3_SOURCE_DIR}/client/Permission.cpp "${HDFS3_SOURCE_DIR}/client/Permission.cpp"
${HDFS3_SOURCE_DIR}/client/FileSystemImpl.cpp "${HDFS3_SOURCE_DIR}/client/FileSystemImpl.cpp"
${HDFS3_SOURCE_DIR}/client/DirectoryIterator.cpp "${HDFS3_SOURCE_DIR}/client/DirectoryIterator.cpp"
${HDFS3_SOURCE_DIR}/client/FileSystemKey.cpp "${HDFS3_SOURCE_DIR}/client/FileSystemKey.cpp"
${HDFS3_SOURCE_DIR}/client/DataTransferProtocolSender.cpp "${HDFS3_SOURCE_DIR}/client/DataTransferProtocolSender.cpp"
${HDFS3_SOURCE_DIR}/client/LeaseRenewer.cpp "${HDFS3_SOURCE_DIR}/client/LeaseRenewer.cpp"
${HDFS3_SOURCE_DIR}/client/PeerCache.cpp "${HDFS3_SOURCE_DIR}/client/PeerCache.cpp"
${HDFS3_SOURCE_DIR}/client/InputStream.cpp "${HDFS3_SOURCE_DIR}/client/InputStream.cpp"
${HDFS3_SOURCE_DIR}/client/FileSystem.cpp "${HDFS3_SOURCE_DIR}/client/FileSystem.cpp"
${HDFS3_SOURCE_DIR}/client/InputStreamImpl.cpp "${HDFS3_SOURCE_DIR}/client/InputStreamImpl.cpp"
${HDFS3_SOURCE_DIR}/client/Token.cpp "${HDFS3_SOURCE_DIR}/client/Token.cpp"
${HDFS3_SOURCE_DIR}/client/PacketPool.cpp "${HDFS3_SOURCE_DIR}/client/PacketPool.cpp"
${HDFS3_SOURCE_DIR}/client/OutputStream.cpp "${HDFS3_SOURCE_DIR}/client/OutputStream.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcChannelKey.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcChannelKey.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcProtocolInfo.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcProtocolInfo.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcClient.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcClient.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcRemoteCall.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcRemoteCall.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcChannel.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcChannel.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcAuth.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcAuth.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcContentWrapper.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcContentWrapper.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcConfig.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcConfig.cpp"
${HDFS3_SOURCE_DIR}/rpc/RpcServerInfo.cpp "${HDFS3_SOURCE_DIR}/rpc/RpcServerInfo.cpp"
${HDFS3_SOURCE_DIR}/rpc/SaslClient.cpp "${HDFS3_SOURCE_DIR}/rpc/SaslClient.cpp"
${HDFS3_SOURCE_DIR}/server/Datanode.cpp "${HDFS3_SOURCE_DIR}/server/Datanode.cpp"
${HDFS3_SOURCE_DIR}/server/LocatedBlocks.cpp "${HDFS3_SOURCE_DIR}/server/LocatedBlocks.cpp"
${HDFS3_SOURCE_DIR}/server/NamenodeProxy.cpp "${HDFS3_SOURCE_DIR}/server/NamenodeProxy.cpp"
${HDFS3_SOURCE_DIR}/server/NamenodeImpl.cpp "${HDFS3_SOURCE_DIR}/server/NamenodeImpl.cpp"
${HDFS3_SOURCE_DIR}/server/NamenodeInfo.cpp "${HDFS3_SOURCE_DIR}/server/NamenodeInfo.cpp"
${HDFS3_SOURCE_DIR}/common/WritableUtils.cpp "${HDFS3_SOURCE_DIR}/common/WritableUtils.cpp"
${HDFS3_SOURCE_DIR}/common/ExceptionInternal.cpp "${HDFS3_SOURCE_DIR}/common/ExceptionInternal.cpp"
${HDFS3_SOURCE_DIR}/common/SessionConfig.cpp "${HDFS3_SOURCE_DIR}/common/SessionConfig.cpp"
${HDFS3_SOURCE_DIR}/common/StackPrinter.cpp "${HDFS3_SOURCE_DIR}/common/StackPrinter.cpp"
${HDFS3_SOURCE_DIR}/common/Exception.cpp "${HDFS3_SOURCE_DIR}/common/Exception.cpp"
${HDFS3_SOURCE_DIR}/common/Logger.cpp "${HDFS3_SOURCE_DIR}/common/Logger.cpp"
${HDFS3_SOURCE_DIR}/common/CFileWrapper.cpp "${HDFS3_SOURCE_DIR}/common/CFileWrapper.cpp"
${HDFS3_SOURCE_DIR}/common/XmlConfig.cpp "${HDFS3_SOURCE_DIR}/common/XmlConfig.cpp"
${HDFS3_SOURCE_DIR}/common/WriteBuffer.cpp "${HDFS3_SOURCE_DIR}/common/WriteBuffer.cpp"
${HDFS3_SOURCE_DIR}/common/HWCrc32c.cpp "${HDFS3_SOURCE_DIR}/common/HWCrc32c.cpp"
${HDFS3_SOURCE_DIR}/common/MappedFileWrapper.cpp "${HDFS3_SOURCE_DIR}/common/MappedFileWrapper.cpp"
${HDFS3_SOURCE_DIR}/common/Hash.cpp "${HDFS3_SOURCE_DIR}/common/Hash.cpp"
${HDFS3_SOURCE_DIR}/common/SWCrc32c.cpp "${HDFS3_SOURCE_DIR}/common/SWCrc32c.cpp"
${HDFS3_SOURCE_DIR}/common/Thread.cpp "${HDFS3_SOURCE_DIR}/common/Thread.cpp"
${HDFS3_SOURCE_DIR}/network/TcpSocket.h "${HDFS3_SOURCE_DIR}/network/TcpSocket.h"
${HDFS3_SOURCE_DIR}/network/BufferedSocketReader.h "${HDFS3_SOURCE_DIR}/network/BufferedSocketReader.h"
${HDFS3_SOURCE_DIR}/network/Socket.h "${HDFS3_SOURCE_DIR}/network/Socket.h"
${HDFS3_SOURCE_DIR}/network/DomainSocket.h "${HDFS3_SOURCE_DIR}/network/DomainSocket.h"
${HDFS3_SOURCE_DIR}/network/Syscall.h "${HDFS3_SOURCE_DIR}/network/Syscall.h"
${HDFS3_SOURCE_DIR}/client/InputStreamImpl.h "${HDFS3_SOURCE_DIR}/client/InputStreamImpl.h"
${HDFS3_SOURCE_DIR}/client/FileSystem.h "${HDFS3_SOURCE_DIR}/client/FileSystem.h"
${HDFS3_SOURCE_DIR}/client/ReadShortCircuitInfo.h "${HDFS3_SOURCE_DIR}/client/ReadShortCircuitInfo.h"
${HDFS3_SOURCE_DIR}/client/InputStreamInter.h "${HDFS3_SOURCE_DIR}/client/InputStreamInter.h"
${HDFS3_SOURCE_DIR}/client/FileSystemImpl.h "${HDFS3_SOURCE_DIR}/client/FileSystemImpl.h"
${HDFS3_SOURCE_DIR}/client/PacketPool.h "${HDFS3_SOURCE_DIR}/client/PacketPool.h"
${HDFS3_SOURCE_DIR}/client/Pipeline.h "${HDFS3_SOURCE_DIR}/client/Pipeline.h"
${HDFS3_SOURCE_DIR}/client/OutputStreamInter.h "${HDFS3_SOURCE_DIR}/client/OutputStreamInter.h"
${HDFS3_SOURCE_DIR}/client/RemoteBlockReader.h "${HDFS3_SOURCE_DIR}/client/RemoteBlockReader.h"
${HDFS3_SOURCE_DIR}/client/Token.h "${HDFS3_SOURCE_DIR}/client/Token.h"
${HDFS3_SOURCE_DIR}/client/KerberosName.h "${HDFS3_SOURCE_DIR}/client/KerberosName.h"
${HDFS3_SOURCE_DIR}/client/DirectoryIterator.h "${HDFS3_SOURCE_DIR}/client/DirectoryIterator.h"
${HDFS3_SOURCE_DIR}/client/hdfs.h "${HDFS3_SOURCE_DIR}/client/hdfs.h"
${HDFS3_SOURCE_DIR}/client/FileSystemStats.h "${HDFS3_SOURCE_DIR}/client/FileSystemStats.h"
${HDFS3_SOURCE_DIR}/client/FileSystemKey.h "${HDFS3_SOURCE_DIR}/client/FileSystemKey.h"
${HDFS3_SOURCE_DIR}/client/DataTransferProtocolSender.h "${HDFS3_SOURCE_DIR}/client/DataTransferProtocolSender.h"
${HDFS3_SOURCE_DIR}/client/Packet.h "${HDFS3_SOURCE_DIR}/client/Packet.h"
${HDFS3_SOURCE_DIR}/client/PacketHeader.h "${HDFS3_SOURCE_DIR}/client/PacketHeader.h"
${HDFS3_SOURCE_DIR}/client/FileSystemInter.h "${HDFS3_SOURCE_DIR}/client/FileSystemInter.h"
${HDFS3_SOURCE_DIR}/client/LocalBlockReader.h "${HDFS3_SOURCE_DIR}/client/LocalBlockReader.h"
${HDFS3_SOURCE_DIR}/client/TokenInternal.h "${HDFS3_SOURCE_DIR}/client/TokenInternal.h"
${HDFS3_SOURCE_DIR}/client/InputStream.h "${HDFS3_SOURCE_DIR}/client/InputStream.h"
${HDFS3_SOURCE_DIR}/client/PipelineAck.h "${HDFS3_SOURCE_DIR}/client/PipelineAck.h"
${HDFS3_SOURCE_DIR}/client/BlockReader.h "${HDFS3_SOURCE_DIR}/client/BlockReader.h"
${HDFS3_SOURCE_DIR}/client/Permission.h "${HDFS3_SOURCE_DIR}/client/Permission.h"
${HDFS3_SOURCE_DIR}/client/OutputStreamImpl.h "${HDFS3_SOURCE_DIR}/client/OutputStreamImpl.h"
${HDFS3_SOURCE_DIR}/client/LeaseRenewer.h "${HDFS3_SOURCE_DIR}/client/LeaseRenewer.h"
${HDFS3_SOURCE_DIR}/client/UserInfo.h "${HDFS3_SOURCE_DIR}/client/UserInfo.h"
${HDFS3_SOURCE_DIR}/client/PeerCache.h "${HDFS3_SOURCE_DIR}/client/PeerCache.h"
${HDFS3_SOURCE_DIR}/client/OutputStream.h "${HDFS3_SOURCE_DIR}/client/OutputStream.h"
${HDFS3_SOURCE_DIR}/client/FileStatus.h "${HDFS3_SOURCE_DIR}/client/FileStatus.h"
${HDFS3_SOURCE_DIR}/client/DataTransferProtocol.h "${HDFS3_SOURCE_DIR}/client/DataTransferProtocol.h"
${HDFS3_SOURCE_DIR}/client/BlockLocation.h "${HDFS3_SOURCE_DIR}/client/BlockLocation.h"
${HDFS3_SOURCE_DIR}/rpc/RpcConfig.h "${HDFS3_SOURCE_DIR}/rpc/RpcConfig.h"
${HDFS3_SOURCE_DIR}/rpc/SaslClient.h "${HDFS3_SOURCE_DIR}/rpc/SaslClient.h"
${HDFS3_SOURCE_DIR}/rpc/RpcAuth.h "${HDFS3_SOURCE_DIR}/rpc/RpcAuth.h"
${HDFS3_SOURCE_DIR}/rpc/RpcClient.h "${HDFS3_SOURCE_DIR}/rpc/RpcClient.h"
${HDFS3_SOURCE_DIR}/rpc/RpcCall.h "${HDFS3_SOURCE_DIR}/rpc/RpcCall.h"
${HDFS3_SOURCE_DIR}/rpc/RpcContentWrapper.h "${HDFS3_SOURCE_DIR}/rpc/RpcContentWrapper.h"
${HDFS3_SOURCE_DIR}/rpc/RpcProtocolInfo.h "${HDFS3_SOURCE_DIR}/rpc/RpcProtocolInfo.h"
${HDFS3_SOURCE_DIR}/rpc/RpcRemoteCall.h "${HDFS3_SOURCE_DIR}/rpc/RpcRemoteCall.h"
${HDFS3_SOURCE_DIR}/rpc/RpcServerInfo.h "${HDFS3_SOURCE_DIR}/rpc/RpcServerInfo.h"
${HDFS3_SOURCE_DIR}/rpc/RpcChannel.h "${HDFS3_SOURCE_DIR}/rpc/RpcChannel.h"
${HDFS3_SOURCE_DIR}/rpc/RpcChannelKey.h "${HDFS3_SOURCE_DIR}/rpc/RpcChannelKey.h"
${HDFS3_SOURCE_DIR}/server/BlockLocalPathInfo.h "${HDFS3_SOURCE_DIR}/server/BlockLocalPathInfo.h"
${HDFS3_SOURCE_DIR}/server/LocatedBlocks.h "${HDFS3_SOURCE_DIR}/server/LocatedBlocks.h"
${HDFS3_SOURCE_DIR}/server/DatanodeInfo.h "${HDFS3_SOURCE_DIR}/server/DatanodeInfo.h"
${HDFS3_SOURCE_DIR}/server/RpcHelper.h "${HDFS3_SOURCE_DIR}/server/RpcHelper.h"
${HDFS3_SOURCE_DIR}/server/ExtendedBlock.h "${HDFS3_SOURCE_DIR}/server/ExtendedBlock.h"
${HDFS3_SOURCE_DIR}/server/NamenodeInfo.h "${HDFS3_SOURCE_DIR}/server/NamenodeInfo.h"
${HDFS3_SOURCE_DIR}/server/NamenodeImpl.h "${HDFS3_SOURCE_DIR}/server/NamenodeImpl.h"
${HDFS3_SOURCE_DIR}/server/LocatedBlock.h "${HDFS3_SOURCE_DIR}/server/LocatedBlock.h"
${HDFS3_SOURCE_DIR}/server/NamenodeProxy.h "${HDFS3_SOURCE_DIR}/server/NamenodeProxy.h"
${HDFS3_SOURCE_DIR}/server/Datanode.h "${HDFS3_SOURCE_DIR}/server/Datanode.h"
${HDFS3_SOURCE_DIR}/server/Namenode.h "${HDFS3_SOURCE_DIR}/server/Namenode.h"
${HDFS3_SOURCE_DIR}/common/XmlConfig.h "${HDFS3_SOURCE_DIR}/common/XmlConfig.h"
${HDFS3_SOURCE_DIR}/common/Logger.h "${HDFS3_SOURCE_DIR}/common/Logger.h"
${HDFS3_SOURCE_DIR}/common/WriteBuffer.h "${HDFS3_SOURCE_DIR}/common/WriteBuffer.h"
${HDFS3_SOURCE_DIR}/common/HWCrc32c.h "${HDFS3_SOURCE_DIR}/common/HWCrc32c.h"
${HDFS3_SOURCE_DIR}/common/Checksum.h "${HDFS3_SOURCE_DIR}/common/Checksum.h"
${HDFS3_SOURCE_DIR}/common/SessionConfig.h "${HDFS3_SOURCE_DIR}/common/SessionConfig.h"
${HDFS3_SOURCE_DIR}/common/Unordered.h "${HDFS3_SOURCE_DIR}/common/Unordered.h"
${HDFS3_SOURCE_DIR}/common/BigEndian.h "${HDFS3_SOURCE_DIR}/common/BigEndian.h"
${HDFS3_SOURCE_DIR}/common/Thread.h "${HDFS3_SOURCE_DIR}/common/Thread.h"
${HDFS3_SOURCE_DIR}/common/StackPrinter.h "${HDFS3_SOURCE_DIR}/common/StackPrinter.h"
${HDFS3_SOURCE_DIR}/common/Exception.h "${HDFS3_SOURCE_DIR}/common/Exception.h"
${HDFS3_SOURCE_DIR}/common/WritableUtils.h "${HDFS3_SOURCE_DIR}/common/WritableUtils.h"
${HDFS3_SOURCE_DIR}/common/StringUtil.h "${HDFS3_SOURCE_DIR}/common/StringUtil.h"
${HDFS3_SOURCE_DIR}/common/LruMap.h "${HDFS3_SOURCE_DIR}/common/LruMap.h"
${HDFS3_SOURCE_DIR}/common/Function.h "${HDFS3_SOURCE_DIR}/common/Function.h"
${HDFS3_SOURCE_DIR}/common/DateTime.h "${HDFS3_SOURCE_DIR}/common/DateTime.h"
${HDFS3_SOURCE_DIR}/common/Hash.h "${HDFS3_SOURCE_DIR}/common/Hash.h"
${HDFS3_SOURCE_DIR}/common/SWCrc32c.h "${HDFS3_SOURCE_DIR}/common/SWCrc32c.h"
${HDFS3_SOURCE_DIR}/common/ExceptionInternal.h "${HDFS3_SOURCE_DIR}/common/ExceptionInternal.h"
${HDFS3_SOURCE_DIR}/common/Memory.h "${HDFS3_SOURCE_DIR}/common/Memory.h"
${HDFS3_SOURCE_DIR}/common/FileWrapper.h "${HDFS3_SOURCE_DIR}/common/FileWrapper.h"
) )
# old kernels (< 3.17) doesn't have SYS_getrandom. Always use POSIX implementation to have better compatibility # old kernels (< 3.17) doesn't have SYS_getrandom. Always use POSIX implementation to have better compatibility
set_source_files_properties(${HDFS3_SOURCE_DIR}/rpc/RpcClient.cpp PROPERTIES COMPILE_FLAGS "-DBOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX=1") set_source_files_properties("${HDFS3_SOURCE_DIR}/rpc/RpcClient.cpp" PROPERTIES COMPILE_FLAGS "-DBOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX=1")
# target # target
add_library(hdfs3 ${SRCS} ${PROTO_SOURCES} ${PROTO_HEADERS}) add_library(hdfs3 ${SRCS} ${PROTO_SOURCES} ${PROTO_HEADERS})

View File

@ -1,58 +1,58 @@
set(LIBPQ_SOURCE_DIR ${ClickHouse_SOURCE_DIR}/contrib/libpq) set(LIBPQ_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/libpq")
set(SRCS set(SRCS
${LIBPQ_SOURCE_DIR}/fe-auth.c "${LIBPQ_SOURCE_DIR}/fe-auth.c"
${LIBPQ_SOURCE_DIR}/fe-auth-scram.c "${LIBPQ_SOURCE_DIR}/fe-auth-scram.c"
${LIBPQ_SOURCE_DIR}/fe-connect.c "${LIBPQ_SOURCE_DIR}/fe-connect.c"
${LIBPQ_SOURCE_DIR}/fe-exec.c "${LIBPQ_SOURCE_DIR}/fe-exec.c"
${LIBPQ_SOURCE_DIR}/fe-lobj.c "${LIBPQ_SOURCE_DIR}/fe-lobj.c"
${LIBPQ_SOURCE_DIR}/fe-misc.c "${LIBPQ_SOURCE_DIR}/fe-misc.c"
${LIBPQ_SOURCE_DIR}/fe-print.c "${LIBPQ_SOURCE_DIR}/fe-print.c"
${LIBPQ_SOURCE_DIR}/fe-protocol2.c "${LIBPQ_SOURCE_DIR}/fe-protocol2.c"
${LIBPQ_SOURCE_DIR}/fe-protocol3.c "${LIBPQ_SOURCE_DIR}/fe-protocol3.c"
${LIBPQ_SOURCE_DIR}/fe-secure.c "${LIBPQ_SOURCE_DIR}/fe-secure.c"
${LIBPQ_SOURCE_DIR}/fe-secure-common.c "${LIBPQ_SOURCE_DIR}/fe-secure-common.c"
${LIBPQ_SOURCE_DIR}/fe-secure-openssl.c "${LIBPQ_SOURCE_DIR}/fe-secure-openssl.c"
${LIBPQ_SOURCE_DIR}/legacy-pqsignal.c "${LIBPQ_SOURCE_DIR}/legacy-pqsignal.c"
${LIBPQ_SOURCE_DIR}/libpq-events.c "${LIBPQ_SOURCE_DIR}/libpq-events.c"
${LIBPQ_SOURCE_DIR}/pqexpbuffer.c "${LIBPQ_SOURCE_DIR}/pqexpbuffer.c"
${LIBPQ_SOURCE_DIR}/common/scram-common.c "${LIBPQ_SOURCE_DIR}/common/scram-common.c"
${LIBPQ_SOURCE_DIR}/common/sha2_openssl.c "${LIBPQ_SOURCE_DIR}/common/sha2_openssl.c"
${LIBPQ_SOURCE_DIR}/common/md5.c "${LIBPQ_SOURCE_DIR}/common/md5.c"
${LIBPQ_SOURCE_DIR}/common/saslprep.c "${LIBPQ_SOURCE_DIR}/common/saslprep.c"
${LIBPQ_SOURCE_DIR}/common/unicode_norm.c "${LIBPQ_SOURCE_DIR}/common/unicode_norm.c"
${LIBPQ_SOURCE_DIR}/common/ip.c "${LIBPQ_SOURCE_DIR}/common/ip.c"
${LIBPQ_SOURCE_DIR}/common/jsonapi.c "${LIBPQ_SOURCE_DIR}/common/jsonapi.c"
${LIBPQ_SOURCE_DIR}/common/wchar.c "${LIBPQ_SOURCE_DIR}/common/wchar.c"
${LIBPQ_SOURCE_DIR}/common/base64.c "${LIBPQ_SOURCE_DIR}/common/base64.c"
${LIBPQ_SOURCE_DIR}/common/link-canary.c "${LIBPQ_SOURCE_DIR}/common/link-canary.c"
${LIBPQ_SOURCE_DIR}/common/fe_memutils.c "${LIBPQ_SOURCE_DIR}/common/fe_memutils.c"
${LIBPQ_SOURCE_DIR}/common/string.c "${LIBPQ_SOURCE_DIR}/common/string.c"
${LIBPQ_SOURCE_DIR}/common/pg_get_line.c "${LIBPQ_SOURCE_DIR}/common/pg_get_line.c"
${LIBPQ_SOURCE_DIR}/common/stringinfo.c "${LIBPQ_SOURCE_DIR}/common/stringinfo.c"
${LIBPQ_SOURCE_DIR}/common/psprintf.c "${LIBPQ_SOURCE_DIR}/common/psprintf.c"
${LIBPQ_SOURCE_DIR}/common/encnames.c "${LIBPQ_SOURCE_DIR}/common/encnames.c"
${LIBPQ_SOURCE_DIR}/common/logging.c "${LIBPQ_SOURCE_DIR}/common/logging.c"
${LIBPQ_SOURCE_DIR}/port/snprintf.c "${LIBPQ_SOURCE_DIR}/port/snprintf.c"
${LIBPQ_SOURCE_DIR}/port/strlcpy.c "${LIBPQ_SOURCE_DIR}/port/strlcpy.c"
${LIBPQ_SOURCE_DIR}/port/strerror.c "${LIBPQ_SOURCE_DIR}/port/strerror.c"
${LIBPQ_SOURCE_DIR}/port/inet_net_ntop.c "${LIBPQ_SOURCE_DIR}/port/inet_net_ntop.c"
${LIBPQ_SOURCE_DIR}/port/getpeereid.c "${LIBPQ_SOURCE_DIR}/port/getpeereid.c"
${LIBPQ_SOURCE_DIR}/port/chklocale.c "${LIBPQ_SOURCE_DIR}/port/chklocale.c"
${LIBPQ_SOURCE_DIR}/port/noblock.c "${LIBPQ_SOURCE_DIR}/port/noblock.c"
${LIBPQ_SOURCE_DIR}/port/pg_strong_random.c "${LIBPQ_SOURCE_DIR}/port/pg_strong_random.c"
${LIBPQ_SOURCE_DIR}/port/pgstrcasecmp.c "${LIBPQ_SOURCE_DIR}/port/pgstrcasecmp.c"
${LIBPQ_SOURCE_DIR}/port/thread.c "${LIBPQ_SOURCE_DIR}/port/thread.c"
${LIBPQ_SOURCE_DIR}/port/path.c "${LIBPQ_SOURCE_DIR}/port/path.c"
${LIBPQ_SOURCE_DIR}/port/explicit_bzero.c "${LIBPQ_SOURCE_DIR}/port/explicit_bzero.c"
) )
add_library(libpq ${SRCS}) add_library(libpq ${SRCS})
target_include_directories (libpq PUBLIC ${LIBPQ_SOURCE_DIR}) target_include_directories (libpq PUBLIC ${LIBPQ_SOURCE_DIR})
target_include_directories (libpq PUBLIC ${LIBPQ_SOURCE_DIR}/include) target_include_directories (libpq PUBLIC "${LIBPQ_SOURCE_DIR}/include")
target_include_directories (libpq PRIVATE ${LIBPQ_SOURCE_DIR}/configs) target_include_directories (libpq PRIVATE "${LIBPQ_SOURCE_DIR}/configs")
target_link_libraries (libpq PRIVATE ssl) target_link_libraries (libpq PRIVATE ssl)

Some files were not shown because too many files have changed in this diff Show More