microsoft / microsoft/libHttpClient

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

Open
#989 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
295
Forks
144
Avg merge
2d 19h
Merged PRs (30d)
2

Description

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. #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 #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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by splitting the remaining work across CMakeLists.txt, install_dependencies.bash, the Apple project.pbxproj, Win32.Shared.vcxitems, GDK.Shared.vcxitems, and the per-file preprocessor definitions from #988. Review the existing companion changes and the listed build guards first. Done means compression-off builds avoid unnecessary dependencies, Apple exposes the toggle, missing Win32/GDK submodules are reported, and the override audit is complete.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, git, shell
Domain
build-system, devtools
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.