-
Notifications
You must be signed in to change notification settings - Fork 79
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
static assert fires in exmemy.c on win32 build #405
Comments
The 32-bit builds have definitely not been used lately and could probably be considered unsupported. The code still exists in various places, but I can't remember the last time I or someone did a 32-bit build especially with the fortran codes. Depending on what you are trying to support, you might not need the fortran-based seacas applications. The exodus and IOSS libraries do not need fortran. There are a few seacas applications that are still commonly used that need fortran (explore, grepos are probably the two most used fortran seacas codes). The whole fortran/C 32/64 bit integer strangeness started a few decades ago and we would definitely do something different if we had to start over today (and we have improved it somewhat...). But, we do require that the size of the integers used by the fortran compiler are able to store a pointer since this is used in the dynamic memory system that we developed a long long time ago for use in fortran... I don't know enough about windows fortran to know how to force 8-byte integers in windows fortran, but the file you link to is how it is done on various compilers... I can give more help if needed depending on your needs with this. Easiest may be to not build the fortran-dependent seacas codes which might give you the functionality you need. |
I probably don't have users for this, I just need to make choice one way or another whether I should try to fix something (letting anybody who might care try at their own risk) or just disable it entirely, so I figured I'd check in.
So is the only requirement then that
Our toolchain is just gfortran there, so the existing setting is working (which is what's causing the assert to fail ;) ). |
It might be OK to modify the test to I would think that if you make the change, it should show up immediately when running either |
I'm working on building Trilinos (including seacas) for distribution in the Julia language package ecosystem. Windows is one of our Tier 1 platforms, so I'm trying to build for windows as well (even though I don't expect may users).
I'm seeing the following assert fire in my 32-bit windows build:
seacas/packages/seacas/libraries/supes/ext_lib/exmemy.c
Line 112 in 1e5138c
Now, looking at
seacas/packages/seacas/libraries/supes/fortranc.h
Lines 14 to 27 in 1e5138c
I'm assuming that
FTNINT
stands for fortran int and I see that athttps://github.com/sandialabs/seacas/blob/1e5138cf4b6a2855e54ea69b172df5ae36013a2b/packages/seacas/cmake/FortranSettings.cmake#L3C1-L18
the fortran integer size is unconditionally set to 8 bytes, which matches the definition of
FTNINT
, but obviously does not match the assert. Interestingly, it does build on linux32, becauselong int
is 32 bits there (though it then of course does not match the fortran int size).So my question is, what's the expected behavior:
FTNINT
always match the fortran int size (if so, is there an issue on linux32)?The text was updated successfully, but these errors were encountered: