diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/drogon | |
Diffstat (limited to 'vcpkg/ports/drogon')
| -rw-r--r-- | vcpkg/ports/drogon/0001-vcpkg.patch | 40 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/0002-drogon-config.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/0003-deps-redis.patch | 30 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/0004-drogon-ctl.patch | 30 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/0005-drogon-cross-compile.patch | 25 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/portfile.cmake | 72 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/drogon/vcpkg.json | 109 |
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" + ] + } + } +} |