You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Jiri Daněk (Jira)" <ji...@apache.org> on 2024/01/13 17:09:00 UTC

[jira] [Resolved] (PROTON-2774) Support composite CMake builds

     [ https://issues.apache.org/jira/browse/PROTON-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jiri Daněk resolved PROTON-2774.
--------------------------------
    Resolution: Incomplete

My intention was to do composite builds of qpid-proton and qpid-dispatch/skupper-router, which might provide opportunities for better performance of the resulting binaries. Profile guided optimization across both proton and the router was what I had in mind.

However, configuring cmake this way seems quite messy and the benefits are uncertain. I feel like I have more useful things to do than this, so I'm going to leave the task unfinished.

The changes so far were I think it a good direction on their own right. There is few more things that can be improved about Proton CMakeLists, but it does not seem worth messing with something that works.

For Proton 1.0, we should remove the Proton_INCLUDE_DIRS etc. legacy find variables and only export targets.

> Support composite CMake builds
> ------------------------------
>
>                 Key: PROTON-2774
>                 URL: https://issues.apache.org/jira/browse/PROTON-2774
>             Project: Qpid Proton
>          Issue Type: Improvement
>          Components: build, proton-c
>    Affects Versions: proton-c-0.39.0
>            Reporter: Jiri Daněk
>            Assignee: Jiri Daněk
>            Priority: Major
>             Fix For: proton-c-0.40.0
>
>
> CMake recognizes the notion that project may be either top-level, or included from other projects that intend to depend on it.
> https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
> This inclusion is performed either with add_subdirectory() or by FetchContent_MakeAvailable().
> There are several preconditions for this to work
> #. proton must compile cleanly with whatever compile (warning) flags the top-level project sets; I intend to clean proton so that it compiles with qpid-dispatch/skupper-router flags
> #. CMakeLists.txt need to be written to not assume that CMAKE_SOURCE_DIRECTORY corresponds to the currently active project. Use the PROJECT_SOURCE_DIRECTORY and similar variables instead.
> #. targets in CMakeLists.txt must be written so that they can be immediately used by the including projects
> #. tests and other miscellaneous parts of the project should not be enabled when proton is not the top-project
> As an example, the Google Test project supports this kind of composite builds.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org