Commit Graph
18 Commits
Author SHA1 Message Date
Dario LipicarandClaude Opus 4.8 3aefbc55b5 feat(universal): route core universal modules through the cdylib mechanism (#12)
apiStyle for `interface: "universal"` core modules becomes "lp" (was "std"):
they now build as header-first cdylibs — Qt-free impl + the common
module-impl C ABI export seam + uniform Qt glue, with outbound
modules().<dep> calls hitting logos-protocol's lp_* C ABI directly. An
unchanged universal module recompiles Qt-free in its impl/wrapper TUs and
still loads via the same Qt plugin (load + call ABI preserved).

UI universal backends (type: ui_qml) derive a Qt SimpleSource and cannot be
Qt-free, so they stay on the std surface. Everything else (legacy) stays qt.

Pairs with logos-module-builder modulePreConfigure.universalCodegen, which
now derives the LIDL from the impl header and runs the cdylib backend.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 00:55:13 -03:00
Dario Lipicar 82fe9fa76f cdylib: generate the Qt-free (lp) outbound surface (#11)
For interface: cdylib modules, drive the umbrella + dependency-wrapper
codegen with --api-style lp so modules().<dep>... calls the logos-protocol
C ABI directly (logos::LpClient) instead of LogosAPIClient — the module
keeps Qt out of its own translation units. universal stays std, others qt.
2026-06-14 00:47:42 -03:00
Dario Lipicar 650ecfa063 Retarget Qt backend to logos-qt-sdk: three-root resolution in LogosModule.cmake (#10)
* Link modules against logos-qt-sdk + logos-protocol (Qt split)

The SDK stack split: logos-cpp-sdk is now the Qt-free header-only base
(detected via logos_module_context.h and linked as
logos-cpp-sdk::logos_headers), the Qt developer layer (LogosAPI,
provider glue, legacy PluginInterface) lives in logos-qt-sdk, and the
transports + lp_* C ABI live in logos-protocol.

logos_module() now resolves LOGOS_QT_SDK_ROOT / LOGOS_PROTOCOL_ROOT
(env / CMake var / sibling checkout), links
logos-qt-sdk::logos_qt_sdk (which chains logos-protocol and its
OpenSSL/Boost/nlohmann link interface), and adds the new include roots.
Source-layout builds compile qt-sdk's sources into the plugin and take
logos-protocol installed or as a subproject.

* cmake: compile the generated universal-UI glue into the plugin

type=ui_qml + interface=universal backends get their plugin class
(Q_PLUGIN_METADATA + initLogos wiring) generated into generated_code/ by
logos-qt-generator — this copy of LogosModule.cmake only picked up
logos_sdk.cpp, so the built dylib had no Qt plugin metadata at all
('Failed to extract plugin meta data'). Scoped append (not a broad glob)
so the provider-dispatch handling below can't double-compile.
2026-06-12 20:59:29 -03:00
Dario LipicarandClaude Opus 4.7 68090d0a97 feat: pass concrete deps to the generator as --dep (LIDL, no dep build) (#9)
* feat: pass concrete dependencies to the generator as --dep (LIDL)

buildPlugin accepts a `staticDeps` list (resolved by mkLogosModule from each
dep's published `lidl` output) and emits one escaped
`--dep=<name>=<lidl>[=<impl_class>]` flag per entry to logos-cpp-generator —
generating the name-baked modules().<dep> wrapper WITHOUT building the dep's
plugin. default.nix forwards the new arg.

The header-copy `moduleDepIncludes` is now the TRANSITIONAL fallback: it skips
any dep present in staticDeps (those come via --dep) and copies headers only
for deps that don't publish a LIDL output yet (which still builds them).
Banner-commented for removal once every module exposes packages.<sys>.lidl.

Requires logos-cpp-sdk#77 (the --dep generator flag); driven by
logos-module-builder.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* address review: use builtins.map for staticDepNames

Consistent with the nearby builtins.elem (map is a global builtin, so this is
a no-op functionally — clears the review note).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 11:44:28 -03:00
Dario LipicarandClaude Opus 4.7 f58fbaa25a feat: pass interface dependencies to the generator (#8)
buildPlugin accepts an interfaceDeps list and emits one
--interface <name>=<path>[=<impl_class>] flag per entry to
logos-cpp-generator during preConfigure; default.nix forwards the new arg.
The resolved paths come from mkLogosModule (local files from src, cross-repo
files from a flake input), so the generator never touches flake inputs.
Generated <name>_api.{h,cpp} flow through the existing generated_code glob —
no CMake change needed.

Requires logos-cpp-sdk#74; driven by logos-module-builder#108.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 20:49:15 -03:00
Dario Gabriel Lipicar 8f8260e6f9 adapt to latest cpp-sdk 2026-05-19 12:54:48 -03:00
Dario Lipicar 8c45eca86d fix logosSdk dependency (#7) 2026-05-07 12:36:58 -03:00
Khushboo-dev-cpp 78a04d603d Merge pull request #6 from logos-co/feat/supportForRepInterfaces
feat: add support for rep files and its various interfaces needed
2026-04-10 17:31:10 +02:00
Khushboo Mehta 343eafb294 feat: add support for rep files and its various interfaces needed 2026-04-10 14:50:31 +02:00
Iuri Matias b30f00cbbc Merge pull request #5 from logos-co/move_non_qt_logic
move non-qt specific logic out; add tests
2026-04-02 10:28:06 -04:00
Iuri Matias 1ee1fb2536 move non-qt specific logic out 2026-04-01 18:05:47 -04:00
Iuri Matias d37ad1dc16 Merge pull request #3 from logos-co/use_new_providers
update flake
2026-03-31 16:36:28 -04:00
Iuri Matias d9f6dbbf52 support new cpp-sdk and logos-module for universal interface
update flake

copy headers

update flake
2026-03-31 16:35:49 -04:00
Dario Lipicar 07f457ff49 Merge pull request #4 from logos-co/copy-external-bundled-libs
bundle external bundled libs
2026-03-31 11:18:59 -03:00
Iuri Matias 9896e01ae0 Merge pull request #2 from logos-co/dont_strip_metadata
don't strip module metadata
2026-03-30 16:53:29 -04:00
Iuri Matias 49b486efd3 don't strip module metadata 2026-03-30 16:51:39 -04:00
Iuri Matias 5305602e80 update readme 2026-03-28 10:01:59 -04:00
Iuri Matias 68c372c894 Initial commit: extract Qt plugin backend from logos-module-builder to enable swapping the plugin technology without chaning the module builder or the modules 2026-03-28 10:01:46 -04:00