-
Notifications
You must be signed in to change notification settings - Fork 17
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
build: support a system CUDD installation #48
Conversation
Sorry for the delayed answer. This is rather cool! More than cool, that has been a wish list item for a long time. What annoys me a little bit is that the CI doesn't seem to run on your pull request. I would have liked to have that validation before merging. In any case I have a couple of questions:
Speaking of CI, if we can use external CUDD, it would good to extend the CI to test building against a recent (preferably latest version) of CUDD. |
configure.ac
Outdated
@@ -95,6 +95,16 @@ else | |||
fi | |||
fi | |||
|
|||
SYSTEM_CUDD="" | |||
AC_ARG_WITH([cudd], | |||
[AS_HELP_STRING([--with-cudd=includedir], [Utilize a system-installed CUDD library])], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really like this part. --with-external-cudd
with it being yes or no would be better in my mind. If you need an include directory, then it should be a more specific flag. And then you would expect a matching flag for the library directory.
I would prefer not to take any include directory if possible but test header presence and possibly library presence with AC_CHECK_HEADER and AC_CHECK_LIB.
This may mean that we have to use macro (like SYSTEM_CUDD) to get the right header location.
The CI actually did run but failed. This point to a few more details needing fixing at install time I believe. Look at https://travis-ci.org/github/BRiAl/BRiAl/jobs/725307404 |
libbrial/include/polybori/cudd can be made into a symlink to /usr/include/cudd. With that, two brial-specific files, prefix.h and prefix_internal.h need to be moved elsewhere, hence the new cuddaux directory. Afterwards, one will notice compile errors because PBORI_PREFIX is undefined; this is because .cc files previously failed to include prefix.h and relied on some implicit inclusion through another file (not good), hereby fixed as well. From there, one can abolish the symlink (again) and use an actual -I argument to the compiler, editing "#include" lines as needed, and offer the cudd include directory as a parameter through configure.ac.
implemented
also addressed
polybori/brial makes use cudd internal APIs (cuddInt.h) like
that are not meant to be public. cudd-2.5.0 erroneously installed cuddInt.h to /usr/include which may have led one to believe it's public. cudd-3.0.0 fixed that, cuddInt.h is no longer in /usr/include. |
Still fighting to get travis showing on PR. Hope it will start working soon. Thanks for answering my question and concerns. Do I understand that you still have to fix the use of stuff from cuddInt.h or have you fixed it? |
CI looks good so far. OS X build still have to complete at the time of writing. |
Answering my own question after a bit of thought. This is limited to CUDD 2.5 .0 as you explicitly look for the header in question. This is annoying but clearly could be considered work for later. |
This is good. But may need more work for an official release. This is clearly brial-2.0 material. |
I very much neglected your two first lines before doing a release including this. " |
I hope you read the commit message to the full extent, because it is just an intermediate thought state, ending in "From there, one can abolish the symlink (again)". |
Yes, I have. And as it is, this is not ready to release, I had several thought after people said that you cannot compile against it out of the box. The easiest fix is of course to provide an extra |
Note, that I ultimately want to re-include all of this but it may go into a dev branch until it is ready to be consumed in a more easy way downstream. |
libbrial/include/polybori/cudd can be made into a symlink to
/usr/include/cudd. With that, two brial-specific files, prefix.h and
prefix_internal.h need to be moved elsewhere, hence the new cuddaux
directory.
Afterwards, one will notice compile errors because PBORI_PREFIX is
undefined; this is because .cc files previously failed to include
prefix.h and relied on some implicit inclusion through another file
(not good), hereby fixed as well.
From there, one can abolish the symlink (again) and use an actual -I
argument to the compiler, editing "#include" lines as needed, and
offer the cudd include directory as a parameter through configure.ac.