jll63 / yomm2

Fast, orthogonal, open multi-methods. Solve the Expression Problem in C++17.
Boost Software License 1.0
348 stars 18 forks source link

cmake fixes and improvements #22

Closed jll63 closed 3 years ago

jll63 commented 3 years ago

Three things here:

  1. Travis
    • The script did not detect that hybrid builds were broken. That's because it didn't exit in error when intermediate steps failed.
    • I also cleaned it up a bit, now CONFIG is used to specify all configurations (i.e. also the hybrid ones).
    • I added a dimension to the build matrix: with or without Boost pre-installed.
    • At the end, I run make install, and check that Boost libs were also installed if they were not already available. I don't know why, but installing does not work for hybrid builds so I skip this step in that case. To be investigated.
  2. Hybrid builds were broken after the auto-fetch work. My fix involves a few symlinks. If you have a better solution, please tell me.
  3. I moved the dependencies directory to the build area. It seems much cleaner to me, some users want to keep their source tree entirely free of artifacts. It leads to redundant downloads when building several configurations, but the cost is not huge and we don't run cmake that frequently. It also makes testing cmake related work easier, as deleting the build dir suffices to start again from scratch (a couple of times I forgot to rm dependencies and puzzled over the output).
jll63 commented 3 years ago

Travis lives here by the way.

jll63 commented 3 years ago

@derpda Happy new year! Can you give this a quick look please?

derpda commented 3 years ago

I assume you moved the location where dependencies are saved to during the build because it clutters the yomm root directory? However with this change it downloads the boost dependency twice for the hybrid builds:

I made a few alterations to avoid all the symlinks you had to add, just to keep things clean.

jll63 commented 3 years ago

Thanks!

jll63 commented 3 years ago

I assume you moved the location where dependencies are saved to during the build because it clutters the yomm root directory?

Yes, I think that the source tree should not contain artefacts.

However with this change it downloads the boost dependency twice for the hybrid builds:

  • Once when we download it for the Hybrid build
  • Once when we download it to build the Debug/Release YOMM2 I guess its fine since its just for testing, but it does take significant time.

Exactly. Only maintainers build these. And Travis haha. Zero impact on users.

I made a few alterations to avoid all the symlinks you had to add, just to keep things clean.

Great!