Skip to content

Commit c5ecdf7

Browse files
committed
Move engine into monorepo
2 parents 3ed2310 + 18b0090 commit c5ecdf7

File tree

591 files changed

+69823
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

591 files changed

+69823
-0
lines changed

src/engine/.clang-format

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
Language: Cpp
3+
BasedOnStyle: Google

src/engine/.dockerignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

src/engine/.gitignore

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
*.ipch
2+
*.bin
3+
*.o
4+
*.db
5+
*.cache
6+
projects/*
7+
8+
*.swp
9+
*.swo
10+
/**/.DS_Store
11+
12+
/**/.vscode
13+
14+
**/model.json
15+
**/model.sql
16+
17+
compile_commands.json
18+
19+
*~
20+
#~
21+
22+
build/
23+
CMakeUserPresets.json

src/engine/CMakeLists.txt

+164
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
cmake_minimum_required(VERSION 3.25)
2+
3+
include(cmake/vcpkg.cmake)
4+
prepare_vcpkg()
5+
6+
include(cmake/conan.cmake)
7+
prepare_conan()
8+
9+
include(cmake/version.cmake)
10+
get_version()
11+
12+
project(
13+
engine
14+
DESCRIPTION "Engine for GetML"
15+
HOMEPAGE_URL "https://www.getml.com/"
16+
LANGUAGES CXX
17+
)
18+
set(PROJECT_VERSION ${GETML_VERSION})
19+
20+
include(cmake/ccache.cmake)
21+
prepare_ccache()
22+
23+
include(cmake/static_analysis.cmake)
24+
prepare_static_analysis()
25+
26+
option(HIDE_DEBUG_INFO "Hide extra debug information" ON)
27+
option(USE_PROFILING "Enable gperftools profiling settings" OFF)
28+
if(USE_PROFILING)
29+
message(STATUS "gperftools profiling enabled.")
30+
find_package(PkgConfig REQUIRED)
31+
pkg_check_modules(libprofiler REQUIRED IMPORTED_TARGET libprofiler)
32+
pkg_check_modules(libunwind REQUIRED IMPORTED_TARGET libunwind)
33+
else()
34+
message(STATUS "gperftools profiling disabled.")
35+
endif()
36+
37+
option(EIGEN_PARALLELIZE "Enable Eigen parallelization" ON)
38+
39+
include(CheckIPOSupported)
40+
check_ipo_supported(RESULT is_ipo_supported)
41+
42+
find_package(Poco REQUIRED Foundation Net)
43+
find_package(PostgreSQL REQUIRED)
44+
find_package(SQLite3 REQUIRED)
45+
find_package(Arrow REQUIRED)
46+
find_package(Eigen3 REQUIRED)
47+
find_package(OpenMP REQUIRED)
48+
find_package(xgboost REQUIRED)
49+
find_package(range-v3 REQUIRED)
50+
51+
52+
if(NOT ${USE_VCPKG} AND NOT ${USE_CONAN})
53+
54+
message(STATUS "Using system packages")
55+
56+
find_package(PkgConfig REQUIRED)
57+
58+
message(STATUS "-> mariadb")
59+
pkg_check_modules(libmariadb REQUIRED IMPORTED_TARGET libmariadb)
60+
add_library(libmariadb::libmariadb ALIAS PkgConfig::libmariadb)
61+
62+
message(STATUS "-> Arrow")
63+
if(${ARROW_BUILD_STATIC})
64+
add_library(arrow::arrow ALIAS Arrow::arrow_static)
65+
else()
66+
add_library(arrow::arrow ALIAS Arrow::arrow_shared)
67+
endif()
68+
69+
message(STATUS "-> Parquet")
70+
find_package(Parquet REQUIRED)
71+
if(${ARROW_BUILD_STATIC})
72+
add_library(parquet::parquet ALIAS Parquet::parquet_static)
73+
else()
74+
add_library(parquet::parquet ALIAS Parquet::parquet_shared)
75+
endif()
76+
77+
message(STATUS "-> reflect-cpp")
78+
find_package(reflectcpp REQUIRED)
79+
80+
elseif(${USE_VCPKG})
81+
82+
message(STATUS "Using vcpkg packages")
83+
84+
message(STATUS "-> unofficial mariadb")
85+
find_package(unofficial-libmariadb REQUIRED)
86+
add_library(libmariadb::libmariadb ALIAS unofficial::libmariadb)
87+
88+
message(STATUS "-> Arrow")
89+
if(${ARROW_BUILD_STATIC})
90+
add_library(arrow::arrow ALIAS Arrow::arrow_static)
91+
else()
92+
add_library(arrow::arrow ALIAS Arrow::arrow_shared)
93+
endif()
94+
95+
message(STATUS "-> Parquet")
96+
find_package(Parquet REQUIRED)
97+
if(${ARROW_BUILD_STATIC})
98+
add_library(parquet::parquet ALIAS Parquet::parquet_static)
99+
else()
100+
add_library(parquet::parquet ALIAS Parquet::parquet_shared)
101+
endif()
102+
103+
message(STATUS "-> reflect-cpp")
104+
find_package(ctre REQUIRED)
105+
find_package(yyjson REQUIRED)
106+
find_package(reflectcpp REQUIRED)
107+
108+
elseif(${USE_CONAN})
109+
110+
message(STATUS "Using Conan packages")
111+
112+
message(STATUS "-> mariadb")
113+
find_package(mariadb-connector-c REQUIRED)
114+
add_library(libmariadb::libmariadb ALIAS mariadb-connector-c::mariadb-connector-c)
115+
116+
message(STATUS "-> Parquet")
117+
add_library(parquet::parquet ALIAS Parquet::parquet_static)
118+
119+
message(STATUS "-> reflect-cpp")
120+
find_package(reflect-cpp REQUIRED)
121+
add_library(reflectcpp::reflectcpp ALIAS reflect-cpp::reflect-cpp)
122+
find_package(yyjson REQUIRED)
123+
124+
else()
125+
message(FATAL_ERROR "No package manager specified. Please set either USE_VCPKG or USE_CONAN, or none to use system packages.")
126+
endif()
127+
128+
if(DEFINED ENV{CMAKE_BUILD_RPATH})
129+
set(
130+
CMAKE_BUILD_RPATH
131+
"$ENV{CMAKE_BUILD_RPATH}"
132+
CACHE
133+
STRING
134+
"Semicolon-separated list specifying runtime path (RPATH) entries to add to binaries linked in the build tree (for platforms that support it)."
135+
FORCE)
136+
endif()
137+
138+
if(DEFINED ENV{CPACK_EXCLUDE_RUNTIME_DEPENDENCIES})
139+
set(
140+
CPACK_EXCLUDE_RUNTIME_DEPENDENCIES
141+
"$ENV{CPACK_EXCLUDE_RUNTIME_DEPENDENCIES}"
142+
CACHE
143+
STRING
144+
"List of runtime dependencies to exclude from the package."
145+
FORCE)
146+
endif()
147+
148+
add_subdirectory(src)
149+
150+
include(InstallRequiredSystemLibraries)
151+
152+
set(CPACK_PACKAGE_VENDOR "https://www.code17.io/")
153+
set(CPACK_PACKAGE_DIRECTORY "package")
154+
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
155+
set(CPACK_THREADS 0)
156+
include(CPack)
157+
158+
option(BUILD_TESTS "Build tests" OFF)
159+
if(${BUILD_TESTS})
160+
find_package(GTest REQUIRED)
161+
enable_testing()
162+
include(GoogleTest)
163+
add_subdirectory(test)
164+
endif()

0 commit comments

Comments
 (0)