Giter Site home page Giter Site logo

library-manager's People

Watchers

 avatar

Forkers

pjknowles

library-manager's Issues

Correct entries in generated pkgconfig file

In GitLab by @mxs301 on Sep 16, 2020, 14:27

We have an option to dump all C and Fortran flags to a pkgconfig file. Currently we just make list of different options by recursively going through target dependencies and appending. There is no clean up which means linker flags are wrong. It's time to process those options to generate a pkgconfig file that actually works.

TODO:

  • Remove duplicate CFlags.
  • Remove duplicate linker flags. Link flags are currently appended in order of dependence, so only leaving the right most entry should lead to correct order.
  • Use "-L /path/to/lib -l lib.a" idiom to make the output intelligible.

LibraryManager_LAPACK and LibraryManager_BLAS should have well-defined outcomes, and should be controllable by options

In GitLab by @KnowlesPJ on Aug 30, 2020, 12:35

cmake 3.16 and 3.18 behave quite differently. Sometimes you get an imported target BLAS::BLAS, which needs the GLOBAL property setting; sometimes (I think 3.16) you don't get this target at all. We need to look at this and either fix it up, or mandate a sufficiently new cmake. Whatever happens, the outcome of LibraryManager_BLAS and LibraryManager_LAPACK should be uniform.

Perhaps it would be best if all the logic in https://gitlab.com/Knowles-group/Molpro/-/blob/14511fdcb5ba3964a05246563da3fc81908581a9/external/src/CMakeLists.txt#L10-26 would be best done inside the function - in other words express, optionally, preference for integer size and threading as parameters to LibraryManager_LAPACK

  • Ensure that the outcome is always independent of cmake version, if necessary insisting on a higher minimum version than at present
  • Provide options to express preference for integer length and threading
  • Decide, implement, document and use what is expected to be set by these functions. Target name BLAS::BLAS? Local or global? Information on integer length?

Related to #3.

Mechanism to override flags of some targets

In GitLab by @mxs301 on Sep 18, 2020, 09:37

It might be necessary to build one target with debugging and no optimisation, while the rest of the targets have full optimisation. This type of scenario is very common in things like game development where speed of debugging is crucial.
We should provide a mechanism for this.

To override the flags at CMake level, we need to know the target name and the flags. LibraryManager can accept a variable "OVERRIDE_FLAGS_${TARGET_NAME}" with a new list of flags. This can be passed during configure, and in external/src/CMakeLists.txt we can add a function call "LibraryManager_OverrideFlags" that will loop over all targets defined in "${BUILDSYSTEM_TARGETS}" and apply override flags if the corresponding variable is defined.

Install fortran modules to include

In GitLab by @mxs301 on Aug 29, 2020, 13:53

Currently we install them to include/fortran but there is no need for that and it is simpler to install them to include/.

Bring FindBLAS and FindLAPACK modules into LibraryManager

In GitLab by @mxs301 on Sep 18, 2020, 09:49

There is quite a bit of variation in those modules depending on CMake version. Most importantly in 3.18 they create targets, and this is exactly the mechanism we introduced ourselves. Those modules are pretty much stand-alone and we should attempt to provide the most recent versions, irrespective of installed cmake. This speaks in favour of copying those modules into LibraryManager.

BLAS/LAPACK discovery does not signal MKL unless MKL was explicitly requested

In GitLab by @KnowlesPJ on Sep 13, 2020, 20:45

https://gitlab.com/molpro/librarymanager/-/blob/d34819f57238b9efab14acb51ae3abfeccd64016/cmake/LibraryManager.cmake#L456-470 is not effective in the case that no arguments are given to LibraryManager_FindLAPACK and BLA_VENDOR is empty. At that point, BLA_VENDOR_FOUND contains All. Somehow one should discover that MKL has been found even though not asked for explicitly. Without this there is trouble on MacOS because of the lack of https://gitlab.com/molpro/librarymanager/-/blob/d34819f57238b9efab14acb51ae3abfeccd64016/cmake/LibraryManager.cmake#L458

scoping of FORTRAN_INTEGER8

In GitLab by @KnowlesPJ on Jun 21, 2020, 12:57

https://gitlab.com/molpro/librarymanager/-/blob/b44b32d41842e03e655e89c887d123cab0729959/cmake/LibraryManager.cmake#L79-84 looks imperfect to me, because the scope of the outcome (CMAKE_Fortran_FLAGS) is local, but a global property is set to prevent it being done anywhere in the future. It is fine if, as intended, this is called at the top level, but not otherwise. At the very least, a trap would be good, as some hours of debugging can result otherwise for the uninitiated!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.