aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/drogon
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/drogon')
-rw-r--r--vcpkg/ports/drogon/0001-vcpkg.patch40
-rw-r--r--vcpkg/ports/drogon/0002-drogon-config.patch13
-rw-r--r--vcpkg/ports/drogon/0003-deps-redis.patch30
-rw-r--r--vcpkg/ports/drogon/0004-drogon-ctl.patch30
-rw-r--r--vcpkg/ports/drogon/0005-drogon-cross-compile.patch25
-rw-r--r--vcpkg/ports/drogon/portfile.cmake72
-rw-r--r--vcpkg/ports/drogon/usage4
-rw-r--r--vcpkg/ports/drogon/vcpkg.json109
8 files changed, 323 insertions, 0 deletions
diff --git a/vcpkg/ports/drogon/0001-vcpkg.patch b/vcpkg/ports/drogon/0001-vcpkg.patch
new file mode 100644
index 0000000..151f9fe
--- /dev/null
+++ b/vcpkg/ports/drogon/0001-vcpkg.patch
@@ -0,0 +1,40 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9cbc6d73..30a88c1a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -361,11 +361,10 @@ endif()
+
+ if (BUILD_POSTGRESQL)
+ # find postgres
+- find_package(pg)
+- if (pg_FOUND)
+- message(STATUS "libpq inc path:" ${PG_INCLUDE_DIRS})
+- message(STATUS "libpq lib:" ${PG_LIBRARIES})
+- target_link_libraries(${PROJECT_NAME} PRIVATE pg_lib)
++ find_package(PostgreSQL REQUIRED)
++ if(PostgreSQL_FOUND)
++ set(pg_FOUND true)
++ target_link_libraries(${PROJECT_NAME} PRIVATE PostgreSQL::PostgreSQL)
+ set(DROGON_SOURCES
+ ${DROGON_SOURCES}
+ orm_lib/src/postgresql_impl/PostgreSQLResultImpl.cc
+@@ -395,7 +394,7 @@ if (BUILD_POSTGRESQL)
+ ${private_headers}
+ orm_lib/src/postgresql_impl/PgConnection.h)
+ endif (libpq_supports_batch)
+- endif (pg_FOUND)
++ endif (PostgreSQL_FOUND)
+ endif (BUILD_POSTGRESQL)
+
+ if (BUILD_MYSQL)
+@@ -420,7 +419,9 @@ if (BUILD_MYSQL)
+ message(STATUS "Mariadb support mysql_optionsv")
+ add_definitions(-DHAS_MYSQL_OPTIONSV)
+ endif(HAS_MYSQL_OPTIONSV)
+-
++ if (NOT BUILD_SHARED_LIBS AND WIN32)
++ target_link_libraries(${PROJECT_NAME} PUBLIC bcrypt)
++ endif()
+ set(DROGON_SOURCES
+ ${DROGON_SOURCES}
+ orm_lib/src/mysql_impl/MysqlConnection.cc
diff --git a/vcpkg/ports/drogon/0002-drogon-config.patch b/vcpkg/ports/drogon/0002-drogon-config.patch
new file mode 100644
index 0000000..61b7c96
--- /dev/null
+++ b/vcpkg/ports/drogon/0002-drogon-config.patch
@@ -0,0 +1,13 @@
+diff --git a/cmake/templates/DrogonConfig.cmake.in b/cmake/templates/DrogonConfig.cmake.in
+index a21122a..6367259 100644
+--- a/cmake/templates/DrogonConfig.cmake.in
++++ b/cmake/templates/DrogonConfig.cmake.in
+@@ -19,7 +19,7 @@ find_dependency(UUID REQUIRED)
+ endif(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" AND NOT WIN32)
+ find_dependency(ZLIB REQUIRED)
+ if(@pg_FOUND@)
+-find_dependency(pg)
++find_dependency(PostgreSQL)
+ endif()
+ if(@SQLite3_FOUND@)
+ find_dependency(SQLite3)
diff --git a/vcpkg/ports/drogon/0003-deps-redis.patch b/vcpkg/ports/drogon/0003-deps-redis.patch
new file mode 100644
index 0000000..be59e49
--- /dev/null
+++ b/vcpkg/ports/drogon/0003-deps-redis.patch
@@ -0,0 +1,30 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d7218a6..ccd08cb 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -467,10 +467,10 @@ if (BUILD_SQLITE)
+ endif (BUILD_SQLITE)
+
+ if (BUILD_REDIS)
+- find_package(Hiredis)
++ find_package(Hiredis NAMES hiredis CONFIG REQUIRED)
+ if (Hiredis_FOUND)
+ add_definitions(-DUSE_REDIS)
+- target_link_libraries(${PROJECT_NAME} PRIVATE Hiredis_lib)
++ target_link_libraries(${PROJECT_NAME} PRIVATE hiredis::hiredis)
+ set(DROGON_SOURCES
+ ${DROGON_SOURCES}
+ nosql_lib/redis/src/RedisClientImpl.cc
+diff --git a/cmake/templates/DrogonConfig.cmake.in b/cmake/templates/DrogonConfig.cmake.in
+index 48eb393..9a9742e 100644
+--- a/cmake/templates/DrogonConfig.cmake.in
++++ b/cmake/templates/DrogonConfig.cmake.in
+@@ -38,7 +38,7 @@ if(@COZ-PROFILER_FOUND@)
+ find_dependency(coz-profiler)
+ endif()
+ if(@Hiredis_FOUND@)
+-find_dependency(Hiredis)
++find_dependency(hiredis CONFIG)
+ endif()
+ if(@yaml-cpp_FOUND@)
+ find_dependency(yaml-cpp)
diff --git a/vcpkg/ports/drogon/0004-drogon-ctl.patch b/vcpkg/ports/drogon/0004-drogon-ctl.patch
new file mode 100644
index 0000000..5672f25
--- /dev/null
+++ b/vcpkg/ports/drogon/0004-drogon-ctl.patch
@@ -0,0 +1,30 @@
+diff --git a/cmake/DrogonUtilities.cmake b/cmake/DrogonUtilities.cmake
+index 7cb9799..5462572 100644
+--- a/cmake/DrogonUtilities.cmake
++++ b/cmake/DrogonUtilities.cmake
+@@ -3,6 +3,7 @@
+ # [TRUE to use_path_as_namespace] [prefixed namespace])
+ # ##############################################################################
+ function(drogon_create_views arg)
++ find_program(DROGON_CTL_COMMAND drogon_ctl REQUIRED)
+ if(ARGC LESS 3)
+ message(STATUS "arguments error when calling drogon_create_views")
+ return()
+@@ -39,7 +40,7 @@ function(drogon_create_views arg)
+ set(ns "")
+ endif()
+ add_custom_command(OUTPUT ${ARGV2}/${outputFile}.h ${ARGV2}/${outputFile}.cc
+- COMMAND drogon_ctl
++ COMMAND ${DROGON_CTL_COMMAND}
+ ARGS
+ create
+ view
+@@ -55,7 +56,7 @@ function(drogon_create_views arg)
+ else()
+ get_filename_component(classname ${cspFile} NAME_WE)
+ add_custom_command(OUTPUT ${ARGV2}/${classname}.h ${ARGV2}/${classname}.cc
+- COMMAND drogon_ctl
++ COMMAND ${DROGON_CTL_COMMAND}
+ ARGS
+ create
+ view
diff --git a/vcpkg/ports/drogon/0005-drogon-cross-compile.patch b/vcpkg/ports/drogon/0005-drogon-cross-compile.patch
new file mode 100644
index 0000000..2a7dd85
--- /dev/null
+++ b/vcpkg/ports/drogon/0005-drogon-cross-compile.patch
@@ -0,0 +1,25 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c36d29a2..437e5d73 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -14,6 +14,7 @@ option(BUILD_BROTLI "Build Brotli" ON)
+ option(BUILD_YAML_CONFIG "Build yaml config" ON)
+ option(USE_SUBMODULE "Use trantor as a submodule" ON)
+ option(USE_STATIC_LIBS_ONLY "Use only static libraries as dependencies" OFF)
++set(DROGON_CTL_TOOL "" CACHE STRING "drogon_ctl tool executable when doing cross builds")
+
+ include(CMakeDependentOption)
+ CMAKE_DEPENDENT_OPTION(BUILD_POSTGRESQL "Build with postgresql support" ON "BUILD_ORM" OFF)
+diff --git a/drogon_ctl/CMakeLists.txt b/drogon_ctl/CMakeLists.txt
+index 04b790d3..854f7139 100755
+--- a/drogon_ctl/CMakeLists.txt
++++ b/drogon_ctl/CMakeLists.txt
+@@ -43,7 +43,7 @@ foreach(cspFile ${SCP_LIST})
+ get_filename_component(classname ${cspFile} NAME_WE)
+ message(STATUS "view classname:" ${classname})
+ add_custom_command(OUTPUT ${classname}.h ${classname}.cc
+- COMMAND $<TARGET_FILE:_drogon_ctl>
++ COMMAND $<IF:$<BOOL:${DROGON_CTL_TOOL}>,${DROGON_CTL_TOOL},$<TARGET_FILE:_drogon_ctl>>
+ ARGS
+ create
+ view
diff --git a/vcpkg/ports/drogon/portfile.cmake b/vcpkg/ports/drogon/portfile.cmake
new file mode 100644
index 0000000..df45bac
--- /dev/null
+++ b/vcpkg/ports/drogon/portfile.cmake
@@ -0,0 +1,72 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO an-tao/drogon
+ REF "v${VERSION}"
+ SHA512 ce61c65281bde0246e96c3558cf635241adbcab514d6a71e8267201340f577af26b1cbc69fa48652d655971122a66c70db75d1a4c034384ba0716fccf7ad9584
+ HEAD_REF master
+ PATCHES
+ 0001-vcpkg.patch
+ 0002-drogon-config.patch
+ 0003-deps-redis.patch
+ 0004-drogon-ctl.patch
+ 0005-drogon-cross-compile.patch
+)
+
+set(DROGON_CTL_TOOL "")
+if(VCPKG_CROSSCOMPILING)
+ set(DROGON_CTL_TOOL "${CURRENT_HOST_INSTALLED_DIR}/tools/drogon/drogon_ctl${VCPKG_HOST_EXECUTABLE_SUFFIX}")
+endif()
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ ctl BUILD_CTL
+ mysql BUILD_MYSQL
+ orm BUILD_ORM
+ postgres BUILD_POSTGRESQL
+ postgres LIBPQ_BATCH_MODE
+ redis BUILD_REDIS
+ sqlite3 BUILD_SQLITE
+ yaml BUILD_YAML_CONFIG
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_DROGON_SHARED)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ DISABLE_PARALLEL_CONFIGURE
+ OPTIONS
+ -DBUILD_SHARED_LIBS=${BUILD_DROGON_SHARED}
+ -DBUILD_EXAMPLES=OFF
+ -DCMAKE_DISABLE_FIND_PACKAGE_Boost=ON
+ -DUSE_SUBMODULE=OFF
+ "-DDROGON_CTL_TOOL=${DROGON_CTL_TOOL}"
+ ${FEATURE_OPTIONS}
+ MAYBE_UNUSED_VARIABLES
+ CMAKE_DISABLE_FIND_PACKAGE_Boost
+)
+
+vcpkg_cmake_install(ADD_BIN_TO_PATH)
+
+# Fix CMake files
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/Drogon)
+
+vcpkg_fixup_pkgconfig()
+
+# Copy drogon_ctl
+if("ctl" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES drogon_ctl AUTO_CLEAN)
+endif()
+
+# Remove includes in debug
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+endif()
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
+
+# Copy pdb files
+vcpkg_copy_pdbs()
diff --git a/vcpkg/ports/drogon/usage b/vcpkg/ports/drogon/usage
new file mode 100644
index 0000000..7887e34
--- /dev/null
+++ b/vcpkg/ports/drogon/usage
@@ -0,0 +1,4 @@
+The package drogon provides CMake targets:
+
+ find_package(Drogon CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE Drogon::Drogon)
diff --git a/vcpkg/ports/drogon/vcpkg.json b/vcpkg/ports/drogon/vcpkg.json
new file mode 100644
index 0000000..0964961
--- /dev/null
+++ b/vcpkg/ports/drogon/vcpkg.json
@@ -0,0 +1,109 @@
+{
+ "name": "drogon",
+ "version-semver": "1.9.11",
+ "description": "A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows",
+ "homepage": "https://github.com/an-tao/drogon",
+ "documentation": "https://drogon.docsforge.com/master/overview/",
+ "license": "MIT",
+ "supports": "!uwp",
+ "dependencies": [
+ "brotli",
+ "jsoncpp",
+ {
+ "name": "libuuid",
+ "platform": "!windows & !osx"
+ },
+ "trantor",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "ctl": {
+ "description": "Build drogon_ctl tool.",
+ "dependencies": [
+ {
+ "name": "drogon",
+ "host": true,
+ "default-features": false,
+ "features": [
+ "ctl"
+ ]
+ }
+ ]
+ },
+ "mysql": {
+ "description": "Support reading and writing from/to MySQL databases.",
+ "dependencies": [
+ {
+ "name": "drogon",
+ "features": [
+ "orm"
+ ]
+ },
+ {
+ "name": "libmariadb",
+ "features": [
+ "iconv"
+ ],
+ "platform": "osx"
+ },
+ {
+ "name": "libmariadb",
+ "platform": "!osx"
+ }
+ ]
+ },
+ "orm": {
+ "description": "Build with object-relational mapping support."
+ },
+ "postgres": {
+ "description": "Support reading and writing from/to Postgres databases.",
+ "dependencies": [
+ {
+ "name": "drogon",
+ "features": [
+ "orm"
+ ]
+ },
+ "libpq"
+ ]
+ },
+ "redis": {
+ "description": "Support reading and writing from/to Redis databases.",
+ "dependencies": [
+ {
+ "name": "drogon",
+ "features": [
+ "orm"
+ ]
+ },
+ "hiredis"
+ ]
+ },
+ "sqlite3": {
+ "description": "Support reading and writing from/to SQLite databases.",
+ "dependencies": [
+ {
+ "name": "drogon",
+ "features": [
+ "orm"
+ ]
+ },
+ "sqlite3"
+ ]
+ },
+ "yaml": {
+ "description": "Support YAML Drogon configuration files",
+ "dependencies": [
+ "yaml-cpp"
+ ]
+ }
+ }
+}