forked from apache/hawq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
163 lines (144 loc) · 7.61 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
PROJECT(hawq)
SET(generate_source
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/parser/gram.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/catalog/caql/gram.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/catalog/caql/catquery.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/catalog/core/catcoretable.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/bootstrap/bootparse.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/port/dynloader.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/port/pg_sema.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/port/pg_shmem.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/utils/fmgrtab.c
)
set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/parser/gram.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/catalog/caql/gram.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/catalog/caql/catquery.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/catalog/core/catcoretable.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/bootstrap/bootparse.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/port/dynloader.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/port/pg_sema.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/port/pg_shmem.c
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/utils/fmgrtab.c
PROPERTIES GENERATED TRUE
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/config.log
COMMAND ./configure --enable-orca --with-python
COMMAND make skip-orca-build
COMMAND make -C src/port/ pg_config_paths.h
COMMAND make -C src/backend/
../../src/include/utils/hawq_funcoid_mapping.h
../../src/include/utils/fmgroids.h
../../src/include/utils/probes.h
../../src/include/parser/gram.h
COMMAND make -C src/backend/catalog/caql/ catquery.c gram.c scan.c
COMMAND make -C src/backend/catalog/core/ catcoretable.c
COMMAND make -C src/backend/bootstrap/ bootparse.c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(config
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.log
)
FILE(GLOB cdb_parquet_source "${CMAKE_CURRENT_SOURCE_DIR}/src/backend/access/parquet/metadatautil_c++/*.cpp")
FILE(GLOB_RECURSE dxltranslators_source "${CMAKE_CURRENT_SOURCE_DIR}/src/backend/gpopt/*.cpp")
FILE(GLOB_RECURSE pg_timezone_source "${CMAKE_CURRENT_SOURCE_DIR}/src/timezone/*.c")
LIST(FILTER pg_timezone_source EXCLUDE REGEX ".*/timezone/zic.c")
FILE(GLOB_RECURSE pg_port_source "${CMAKE_CURRENT_SOURCE_DIR}/src/port/*.c")
LIST(FILTER pg_port_source INCLUDE REGEX "chklocale|copydir|dirmod|exec|noblock|path|pgsleep|pgstrcasecmp|qsort|qsort_arg|sprompt|thread|strlcpy|strlcat|pg_crc32c")
FILE(GLOB_RECURSE pg_regex_source "${CMAKE_CURRENT_SOURCE_DIR}/src/backend/regex/*.c")
LIST(FILTER pg_regex_source INCLUDE REGEX "regcomp|regerror|regexec|regfree")
FILE(GLOB_RECURSE cdb_source "${CMAKE_CURRENT_SOURCE_DIR}/src/backend/*.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/test/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/test_discard/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/mb/conversion_procs/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/mb/win1251.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/mb/win866.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/mb/iso.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/index/catquery.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/bootscanner.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/scan.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/guc-file.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/cdbdistributedxidmap.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/nodeParquetScan.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/nodeSeqscan.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/like_match.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/win32.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/regex/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/beos/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/dynloader/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/nextstep/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/qnx4/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/win32/.*")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/ipc_test.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/posix_sema.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/win32_sema.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/win32_shmem.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/sysv_sema.c")
LIST(FILTER cdb_source EXCLUDE REGEX ".*/port/sysv_shmem.c")
LIST(APPEND cdb_source ${pg_port_source} ${pg_timezone_source} ${cdb_parquet_source} ${pg_regex_source})
if (CMAKE_SYSTEM_NAME STREQUAL Darwin)
ADD_DEFINITIONS(-DGPOS_Darwin)
endif (CMAKE_SYSTEM_NAME STREQUAL Darwin)
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
ADD_DEFINITIONS(-D_GNU_SOURCE)
LIST(FILTER cdb_source EXCLUDE REGEX "src/backend/port/darwin/system.c")
endif (CMAKE_SYSTEM_NAME STREQUAL Linux)
ADD_DEFINITIONS(-DDLSUFFIX="so")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
include_directories(src/include)
include_directories(src/backend/resourcemanager/include)
include_directories(src/backend/gp_libpq_fe)
include_directories(src/port)
include_directories(${CMAKE_SOURCE_DIR}/hornet/dbcommon/src)
include_directories(${CMAKE_SOURCE_DIR}/hornet/univplan/src)
include_directories(${CMAKE_SOURCE_DIR}/hornet/magma/src)
include_directories(${CMAKE_SOURCE_DIR}/hornet/storage/src)
include_directories(${CMAKE_SOURCE_DIR}/hornet/executor/src)
include_directories(${CMAKE_BINARY_DIR}/hornet/dbcommon/src)
include_directories(/opt/dependency/package/include)
link_directories(/opt/dependency-Darwin/package/lib)
link_directories(/opt/dependency/package/lib)
# gporca
add_library(dxltranslators ${dxltranslators_source})
add_dependencies(dxltranslators config)
# postgres
add_executable(postgres ${cdb_source} ${generate_source})
target_link_libraries(postgres z bz2 lz4 snappy xml2 curl ldap json-c krb5 yarn thrift) # basic
target_link_libraries(postgres gpos xerces-c naucrates gpdbcost gpopt dxltranslators) # gp-orca
target_link_libraries(postgres hdfs3 dbcommon-shared univplan-shared storage-shared magma-client-shared storage-magma-format-shared executor-shared) # hornet
target_link_libraries(postgres dl)
add_dependencies(postgres config)
# pluggable storage
add_library(orc.so contrib/orc/orc.c)
add_library(magma.so contrib/magma/magma.c)
# libpq
FILE(GLOB_RECURSE libpq_source "${CMAKE_CURRENT_SOURCE_DIR}/src/interfaces/libpq/*.c")
LIST(FILTER libpq_source EXCLUDE REGEX "win32.c")
LIST(APPEND libpq_source src/backend/libpq/ip.c)
LIST(APPEND libpq_source src/backend/libpq/md5.c)
LIST(APPEND libpq_source src/backend/utils/mb/encnames.c)
LIST(APPEND libpq_source src/backend/utils/mb/wchar.c)
add_library(pq ${libpq_source})
add_library(pgport ${pg_port_source})
target_link_libraries(pq ldap pgport)
target_compile_options(pq PRIVATE -DFRONTEND)
add_dependencies(pq config)
add_dependencies(pgport config)
# feature-test
set(CMAKE_CXX_STANDARD 11)
FILE(GLOB_RECURSE feature_test_source "${CMAKE_CURRENT_SOURCE_DIR}/src/test/feature/*.cpp")
LIST(FILTER feature_test_source EXCLUDE REGEX "/Ranger/")
LIST(FILTER feature_test_source EXCLUDE REGEX "/userPoc/")
LIST(FILTER feature_test_source EXCLUDE REGEX "/sqlreport/")
add_executable(feature-test ${feature_test_source})
target_include_directories(feature-test PUBLIC src/test/feature)
target_include_directories(feature-test PUBLIC src/test/feature/lib)
target_include_directories(feature-test PUBLIC src/interfaces/libpq)
target_link_libraries(feature-test xml2 gtest pq)
target_link_libraries(feature-test pthread)
set_target_properties(feature-test
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/test/feature/"
)