New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix order of hpx libs in HPX_CONF_LIBRARIES. #3365

Merged
merged 1 commit into from Jul 10, 2018

Conversation

Projects
None yet
3 participants
@Jakub-Golinowski
Contributor

Jakub-Golinowski commented Jul 5, 2018

Fixes building issue that surfaced when building OpenCV with HPX backend (opencv/opencv#11897).

The hpx_init depends on hpx therefore it should be before it in the list of hpx libraries.

Proposed Changes

  • inserts hpx_init before hpx in the list of hpx libraries in cmake HPX_CONF_LIBRARIES
@@ -60,7 +60,7 @@ if(HPX_WITH_STATIC_LINKING)
set(HPX_PKG_LIBRARIES "\${libdir}/libhpx.a ${HPX_PKG_LIBRARIES}")
set(HPX_PKG_DEBUG_LIBRARIES "\${libdir}/libhpxd.a ${HPX_PKG_DEBUG_LIBRARIES}")
else()
set(HPX_CONF_LIBRARIES "general;hpx;general;hpx_init;${HPX_LIBRARIES}")
set(HPX_CONF_LIBRARIES "general;hpx_init;hpx;general;${HPX_LIBRARIES}")

This comment has been minimized.

@hkaiser

hkaiser Jul 5, 2018

Member

This will break cmake dependency handling. the 'general;' has to prefix the library name. If you need to change the linking order, please modify this to

set(HPX_CONF_LIBRARIES "general;hpx_init;general;hpx;${HPX_LIBRARIES}") 

This comment has been minimized.

@Jakub-Golinowski

Jakub-Golinowski Jul 5, 2018

Contributor

Ok, thank you for pointing that out. I made the changes as suggested.

@hkaiser

This comment has been minimized.

Member

hkaiser commented Jul 5, 2018

@khuck I remember you were having link order issues related to libhpx_init.a. Would this PR help your issue or would it make things worse?

@khuck

This comment has been minimized.

Contributor

khuck commented Jul 5, 2018

@hkaiser It doesn't fix anything in Phylanx, but it doesn't seem to make things worse. What does this change do? I see that the library ordering later in the same cmake file stays the same (libhpx then libhpx_init), so I don't know what this flag is used for. What about HPX_PKG_LIBRARIES_BAZEL, or HPX_PKG_LIBRARIES?

@hkaiser

This comment has been minimized.

Member

hkaiser commented Jul 5, 2018

@khuck well, this change is supposed to modify the link order for libhpx_init.a and libhpx.so for libraries that depend on HPX..

Also, thanks for noticing the same problem in other places - @Jakub-Golinowski would you mind fixing those as well?

@Jakub-Golinowski

This comment has been minimized.

Contributor

Jakub-Golinowski commented Jul 6, 2018

@hkaiser I changed the order of libraries in all occurrences as suggested. If this is OK, let me know and I will squash it to single before merge.

@hkaiser

LGTM, thanks!

@hkaiser

This comment has been minimized.

Member

hkaiser commented Jul 10, 2018

@Jakub-Golinowski could you rebase this branch onto master, please? We can't merge it otherwise.

@Jakub-Golinowski

This comment has been minimized.

Contributor

Jakub-Golinowski commented Jul 10, 2018

@hkaiser rebased against master and squashed to 1 commit.

Fix order of hpx libs in HPX_GeneratePackage.cmake
The hpx_init depends on hpx therefore it should be before it in the list of hpx libraries.
@hkaiser

LGTM, thanks a lot!

@hkaiser hkaiser merged commit c861dcd into STEllAR-GROUP:master Jul 10, 2018

44 checks passed

ci/circleci: checkout_code Your tests passed on CircleCI!
Details
ci/circleci: clang_tidy Your tests passed on CircleCI!
Details
ci/circleci: configure Your tests passed on CircleCI!
Details
ci/circleci: core Your tests passed on CircleCI!
Details
ci/circleci: examples Your tests passed on CircleCI!
Details
ci/circleci: inspect Your tests passed on CircleCI!
Details
ci/circleci: install Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.compat Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.components Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.compute Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.config Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.include Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.lcos Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.parallel Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.performance_counters Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.plugins Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.runtime Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.traits Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.util Your tests passed on CircleCI!
Details
ci/circleci: tests.performance Your tests passed on CircleCI!
Details
ci/circleci: tests.regressions Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.actions Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.agas Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.build Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.component Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.computeapi Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.diagnostics Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.lcos Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.block Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.container_algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.datapar_algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.executors Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.segmented_algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parcelset Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.performance_counter Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.resource Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.serialization Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.threads Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.traits Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.util Your tests passed on CircleCI!
Details
pycicle daint-3365-clang-6.0.0-Boost-1.65.0-Release Build errors 0
Details
pycicle daint-3365-clang-6.0.0-Boost-1.65.0-Release Config errors 0
Details
pycicle daint-3365-clang-6.0.0-Boost-1.65.0-Release Test errors 0
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment