Skip to content

Make the HTTP server optional via ODR_WITH_HTTP_SERVER#601

Merged
andiwand merged 2 commits into
mainfrom
feat/optional-http-server
Jul 11, 2026
Merged

Make the HTTP server optional via ODR_WITH_HTTP_SERVER#601
andiwand merged 2 commits into
mainfrom
feat/optional-http-server

Conversation

@andiwand

Copy link
Copy Markdown
Member

Summary

Makes the HTTP server optional behind a new ODR_WITH_HTTP_SERVER CMake option (default ON, so the default build is unchanged).

The HTTP server is self-contained — src/odr/http_server.cpp, the server CLI, and its only dependency cpp-httplib — and nothing else in libodr references HttpServer. Gating it lets consumers that don't need the server drop the cpp-httplib dependency entirely.

This also sidesteps a link failure on Apple platforms: recent cpp-httplib compiles a CFHost-based DNS resolver that needs CoreFoundation/CFNetwork, which is awkward to satisfy for consumers that don't use the server at all (e.g. the iOS build).

Behavior

With -DODR_WITH_HTTP_SERVER=OFF:

  • cpp-httplib is not searched for (find_package) or linked
  • http_server.cpp is not compiled
  • the server CLI target is not built
  • the public http_server.hpp header is not installed (the API it declares isn't available)

Notes

The dependency is wired as a single self-contained block next to the other optional dependencies (pdf2htmlEX, wvWare, libmagic), following their find_package + target_sources + target_link_libraries + target_compile_definitions pattern.

The HTTP server (src/odr/http_server.cpp, the `server` CLI, and its only
dependency cpp-httplib) is self-contained: nothing else in libodr references
HttpServer. Gate it behind a new ODR_WITH_HTTP_SERVER option (default ON, so
the build is unchanged by default) so consumers that don't need it can drop the
cpp-httplib dependency entirely.

When OFF: cpp-httplib is not searched for or linked, http_server.cpp is not
compiled, the `server` CLI target is not built, and the public http_server.hpp
header is not installed (the API it declares isn't available).

The dependency is wired as a single self-contained block next to the other
optional dependencies (pdf2htmlEX, wvWare, libmagic), matching their
find_package + target_sources + target_link_libraries + target_compile_definitions
pattern.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bbab044416

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread CMakeLists.txt
Expose a matching with_http_server option (default True), guard the cpp-httplib
requirement on it, and pass ODR_WITH_HTTP_SERVER into the toolchain, so Conan
consumers can actually take the -DODR_WITH_HTTP_SERVER=OFF path and drop the
cpp-httplib dependency (and its platform link requirements).
@andiwand andiwand enabled auto-merge (squash) July 11, 2026 09:53
@andiwand andiwand merged commit ec686ac into main Jul 11, 2026
11 checks passed
@andiwand andiwand deleted the feat/optional-http-server branch July 11, 2026 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant