ampl / gsl

GNU Scientific Library with CMake build support and AMPL bindings
https://gsl.ampl.com
GNU General Public License v3.0
565 stars 213 forks source link

Building failure under mingw810_64 #67

Open MittigaENEA opened 1 year ago

MittigaENEA commented 1 year ago

I am trying to build the Windows 10 GSL shared library under mingw810_64 (x86_64-w64-mingw32) in this way: _mkdir build cd build cmake .. -G"MinGW Makefiles" -DNO_AMPL_BINDINGS=1 -DBUILD_SHAREDLIBS:BOOL=ON cmake –build .

Many warnings and errors appear during the building process and, while the libgslcblas.dll is working, the libgsl.dll does not work. The first cmake command produces few warnings. One of them is : _Performing Test C_EXTERNINLINE – Failed The second cmake command produces many almost identical warning as: _[ 35%] Building C object CMakeFiles/gsl.dir/specfunc/gamma.c.obj In file included from C:/gsl-2.7/build/gsl/gsl_math.h:23, from C:\gsl-2.7\specfunc\gamma.c:23: C:/gsl-2.7/build/gsl/gsl_sys.h:45:5: warning: 'gsl_finite' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes] int gslfinite (const double x); ^~~~~~ The obj files are produced but, after the linking into libgsl.dll, the sys_test.exe compilation gives a long list of errors as: _undefined reference to `gslxxxxx' If the option -DBUILD_SHARED_LIBS:BOOL=ON is removed the situation improves and the ctest command: ctest --output-on-failure reports: _91% tests passed, 5 tests failed out of 55 Total Test time (real) = 54.09 sec The following tests FAILED: 6 - block_test (Failed) 7 - vector_test (Failed) 8 - vector_test_static (Failed) 9 - matrix_test (Failed) 10 - matrix_teststatic (Failed) Errors while running CTest

Is there anything I can try to get a working libgsl.dll?

xakod commented 1 year ago

@MittigaENEA can you try with #69 fix?

MittigaENEA commented 1 year ago

I have tried to change the file CMakeLists.txt as suggested in the #69 Fix (removed lines 836,840 and 843 and added lines 831,837,838) but no changes were observed. The errors remain.