Skip to content

Consumer-side fallout from #965 (WSC): unconditional Linux deps, missing Apple toggle, silent submodule failures #989

Description

@v-patrickpe

Tracking issue for consumer-side fallout from #965 (WebSocket Compression support). Even with compression turned off, consumers must take on new dependencies and submodules. Filing here so the work can be scoped/split.

Gaps identified

  • (fixed by companion PR) Linux CMakeLists.txt:84-86 adds websocketpp_websocket.cpp/.h to LINUX_SOURCE_FILES unconditionally. Consumers building with HC_NOWEBSOCKETS still compile the TU and require External/asio + External/websocketpp submodules to be initialized.
  • (fixed by companion PR) Build/libHttpClient.Linux/install_dependencies.bash installs zlib1g / zlib1g-dev unconditionally. Should honor HC_NOZLIB and HC_NOWEBSOCKETS.
  • Apple has no HC_ENABLE_WEBSOCKET_COMPRESSION toggle. The macro is hard-coded =1 in 4 places in Build/libHttpClient.Apple.C/libHttpClient.xcodeproj/project.pbxproj (iOS/macOS Debug/Release). Other HC_* knobs are exposed as build settings; this one should follow suit.
  • Win32 / GDK silent feature loss when boost-wintls submodule is missing. All WSC-related per-file ClCompile entries in Win32.Shared.vcxitems / GDK.Shared.vcxitems are guarded with Exists('$(HCRoot)\External\boost-wintls\include\wintls.hpp') AND HCEnableWebSocketCompression == 'true'. A consumer who forgets git submodule update --init --recursive gets a working build that silently lacks compression. Suggest emitting an MSBuild <Error> (or at least <Warning>) when HCEnableWebSocketCompression=true and the submodule file is absent.
  • %(PreprocessorDefinitions) inheritance bug sweep. GDK: add ASIO_DISABLE_SERIAL_PORT to per-file websocketpp_websocket.cpp defines (follow-up to #987) #988 fixes one instance (ASIO_DISABLE_SERIAL_PORT was dropped on the per-file websocketpp_websocket.cpp overrides because shared-items %(PreprocessorDefinitions) doesn't inherit from the consuming project's ItemDefinitionGroup). The same pattern may exist for other per-file overrides added in WebSocket Compression support #965 and should be audited.

Why "turn it off" doesn't free consumers

Platform Issue
Linux websocketpp_websocket.cpp is in the source list unconditionally; External/asio + External/websocketpp are in COMMON_INCLUDE_DIRS unconditionally; install_dependencies.bash installs zlib unconditionally.
Win32/GDK New External/boost-wintls submodule is required for WSC; missing submodule silently disables the feature.
Apple No off switch at all.

Companion PR

A companion PR addresses the first two checklist items. Filing the others here because they involve broader design decisions (Apple build settings; MSBuild error emission; per-file-defines audit) that may warrant author input.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions