Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 8 additions & 99 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ if(NOT userver_FOUND) # Fallback to subdirectory usage

# Compatibility mode: some systems don't support these features
set(USERVER_FEATURE_CRYPTOPP_BLAKE2 OFF CACHE BOOL "" FORCE)
set(USERVER_FEATURE_GRPC_CHANNELZ OFF CACHE BOOL "" FORCE)
set(USERVER_FEATURE_REDIS_HI_MALLOC ON CACHE BOOL "" FORCE)

if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/userver)
message(STATUS "Using userver framework from third_party/userver")
Expand All @@ -28,93 +26,14 @@ set(CPP_JWT_BUILD_TESTS OFF)
set(CPP_JWT_BUILD_EXAMPLES OFF)
add_subdirectory(third_party/cpp-jwt)


option(JWT_BUILD_EXAMPLES OFF)

# Common sources
add_library(${PROJECT_NAME}_objs OBJECT
src/cache/articles_cache.hpp
src/cache/articles_cache.cpp
src/cache/comments_cache.cpp
src/cache/comments_cache.hpp
src/handlers/common.cpp
src/handlers/common.hpp
src/handlers/profiles/profiles.cpp
src/handlers/profiles/profiles.hpp
src/handlers/users/users.cpp
src/handlers/users/users.hpp
src/handlers/tags/tags.cpp
src/handlers/tags/tags.hpp
src/handlers/users/users_login.cpp
src/handlers/users/users_login.hpp
src/handlers/users/user_get.cpp
src/handlers/users/user_get.hpp
src/handlers/users/user_put.cpp
src/handlers/users/user_put.hpp
src/handlers/profiles/profiles_follow.cpp
src/handlers/profiles/profiles_follow.hpp
src/handlers/profiles/profiles_follow_delete.cpp
src/handlers/profiles/profiles_follow_delete.hpp
src/handlers/articles/articles_slug_delete.cpp
src/handlers/articles/articles_slug_delete.hpp
src/handlers/articles/articles_slug_get.cpp
src/handlers/articles/articles_slug_get.hpp
src/handlers/articles/articles_slug_put.cpp
src/handlers/articles/articles_slug_put.hpp
src/handlers/articles/articles_get.cpp
src/handlers/articles/articles_get.hpp
src/handlers/articles/articles_post.cpp
src/handlers/articles/articles_post.hpp
src/handlers/articles/feed_articles.hpp
src/handlers/articles/feed_articles.cpp
src/handlers/articles/articles_favorite.cpp
src/handlers/articles/articles_favorite.hpp
src/handlers/comments/comment_delete.cpp
src/handlers/comments/comment_delete.hpp
src/handlers/comments/comment_post.cpp
src/handlers/comments/comment_post.hpp
src/handlers/comments/comments_get.cpp
src/handlers/comments/comments_get.hpp
src/handlers/auth/auth_bearer.hpp
src/handlers/auth/auth_bearer.cpp
src/dto/article.cpp
src/dto/article.hpp
src/dto/comment.hpp
src/dto/comment.cpp
src/db/sql.hpp
src/models/user.hpp
src/models/user.cpp
src/models/comment.hpp
src/models/comment.cpp
src/models/article.hpp
src/models/article.cpp
src/models/profile.hpp
src/validators/user_validators.hpp
src/validators/user_validators.cpp
src/validators/length_validator.hpp
src/validators/length_validator.cpp
src/utils/random.hpp
src/utils/random.cpp
src/utils/errors.hpp
src/utils/errors.cpp
src/utils/make_error.hpp
src/utils/make_error.cpp
src/utils/jwt.hpp
src/utils/jwt.cpp
src/utils/slugify.hpp
src/utils/slugify.cpp
src/handlers/articles/articles_unfavorite.cpp
src/handlers/articles/articles_unfavorite.hpp
src/dto/filter.hpp
src/dto/filter.cpp
src/validators/validators.cpp
src/validators/article_validators.cpp
src/validators/article_validators.hpp

)
file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.[hc]pp)
file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp)
list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)

add_library(${PROJECT_NAME}_objs OBJECT ${SOURCES})
include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(${PROJECT_NAME}_objs PUBLIC userver::core userver::postgresql)
target_link_libraries(${PROJECT_NAME}_objs PUBLIC userver::postgresql)

file(GLOB_RECURSE SCHEMAS ${CMAKE_CURRENT_SOURCE_DIR}/docs/*.yaml)
userver_target_generate_chaotic(${PROJECT_NAME}-chgen
Expand All @@ -128,25 +47,17 @@ userver_target_generate_chaotic(${PROJECT_NAME}-chgen
${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ${PROJECT_NAME}-chgen)

target_include_directories(${PROJECT_NAME}_objs PUBLIC cpp-jwt)
target_link_libraries(${PROJECT_NAME}_objs PUBLIC cpp-jwt)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
find_package(ICU 4.4 COMPONENTS io i18n REQUIRED)
target_include_directories(${PROJECT_NAME}_objs PUBLIC ${ICU_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ${ICU_LIBRARIES})
find_package(ICU COMPONENTS uc i18n REQUIRED)
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ICU::uc ICU::i18n)

# The Service
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_objs)

# Unit Tests
add_executable(${PROJECT_NAME}_unittest
src/utils/slugify_test.cpp
src/validators/validator_test.cpp
)

add_executable(${PROJECT_NAME}_unittest ${UNIT_TEST_SOURCES})
target_link_libraries(${PROJECT_NAME}_unittest PRIVATE ${PROJECT_NAME}_objs userver::utest)
add_google_tests(${PROJECT_NAME}_unittest)

Expand All @@ -164,8 +75,6 @@ if(DEFINED ENV{PREFIX})
set(CMAKE_INSTALL_PREFIX ${PREFIX_PATH})
endif()

set(CONFIG_JWT ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME}/jwt_config.json)

file(GLOB CONFIGS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.yaml ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.json)

install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${PROJECT_NAME})
Expand Down
Loading