cross build giac avec mingw

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

cross build giac avec mingw

Message par frederic han » mer. oct. 26, 2022 12:51 pm

Salut, cela fait un moment que j'ai des problèmes pour compiler giac pour windows.
avec 1.9.0-27 cela casse beaucoup plus tot:

avant je compilais ainsi:

Code : Tout sélectionner

export CPPFLAGS='-I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/home/fred/dev/win64/include'
export CXXFLAGS=' -Wa,-mbig-obj -std=gnu++14 -D__MINGW_H -DGIAC_MPQS -D_GLIBCXX_USE_CXX11_ABI=0'
export LDFLAGS='-L/usr/x86_64-w64-mingw32/sys-root/mingw/bin -L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -L/home/fred/dev/win64/lib'
export LIBS+='-lssp'
./configure --enable-micropy=no --disable-fltk --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32  --prefix=/home/fred/dev/win64
sans le --disable-fltk il ne crée meme pas le Makefile.in
avec cela commence à compiler jusque:

Code : Tout sélectionner

Xcas1.cc:3729:8: error: variable or field 'Menu_Insert_ItemName' declared void
 3729 |   void Menu_Insert_ItemName(Fl_Widget * w , void*) {
      |        ^~~~~~~~~~~~~~~~~~~~
Xcas1.cc:3729:29: error: 'Fl_Widget' was not declared in this scope
 3729 |   void Menu_Insert_ItemName(Fl_Widget * w , void*) {
      |                             ^~~~~~~~~
Xcas1.cc:3729:41: error: 'w' was not declared in this scope
 3729 |   void Menu_Insert_ItemName(Fl_Widget * w , void*) {
      |                                         ^
Xcas1.cc:3729:45: error: expected primary-expression before 'void'
 3729 |   void Menu_Insert_ItemName(Fl_Widget * w , void*) {
      |                                             ^~~~
Xcas1.cc:3795:3: error: 'Fl_Menu_Item' does not name a type
 3795 |   Fl_Menu_Item icas_xcas_menu[] = {

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: cross build giac avec mingw

Message par parisse » dim. oct. 30, 2022 6:39 am

En effet, il faut mettre la fonction Menu_Insert_ItemName et le tableau Fl_Menu_Item icas_xcas_menu[] entre un #ifdef HAVE_LIBFLTK et #endif (il s'agit de l'interface xcas light accessible depuis icas, creee suite aux decisions des jurys de l'agreg).
Qu'est-ce qui bloque dans la configuration "normale"?

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: cross build giac avec mingw

Message par frederic han » dim. oct. 30, 2022 10:23 pm

Merci ca marche. C'etait le configure qui plantait avec ton fltk, mais si j'installais le fltk de mingw alors ca compilait.

Aussi j'ai vu que tu avais des versions pour mingw de xcas et des dll, et j'arrive à compiler giacpy avec, je vais peut etre les utiliser mais c'est nettement plus gros alors que dans giacpy fltk sert tres peu ou peut etre meme pas du tout.

Par contre j'ai remarqué ceci: Ta version http://www-fourier.ujf-grenoble.fr/~par ... ininst.exe
a un probleme avec pari:

Code : Tout sélectionner

pari():;
A:=pari_factor(2**128+1);
ifactor(A[0][0]*A[1][0]-1);
ne donne pas 2^128 alors que la version 1.9.0-27 que je compile pour mingw64 fonctionne.
D'un autre coté la mienne est bien plus lente sur ecm_factor il me manque peut etre une librairie?

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: cross build giac avec mingw

Message par parisse » lun. oct. 31, 2022 8:44 am

Bizarre que fltk ne compile pas avec mingw, c'est la derniere version stable depuis leur site, il faudra que j'essaie de le compiler pour voir. Bon si les dll que je fournis avec xcas fonctionnent, ce n'est pas tres grave. L'ajout de FLTK ne devrait pas changer significativement la taille des DLL, peut-etre 10%, ce doit etre autre chose qui explique la difference de taille que tu signales. Et puis, ca peut quand meme etre interessant d'avoir FLTK dans giacpy, apres tout les gens peuvent etre amenes a tracer un graphe et pouvoir profiter de l'affichage du curseur/tangente/normale/etc. c'est un plus!
Curieux aussi pour pari. Ca doit etre encore une fois un probleme de conversion d'entiers.

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: cross build giac avec mingw

Message par parisse » lun. oct. 31, 2022 10:27 am

Bon, j'ai modifie le code actif pour t_INT2gen dans pari.cc (code 1 au lieu de 2), ce qui corrige le probleme de conversion d'entiers avec PARI. J'ai aussi strippe giacxcas.dll (33M au lieu de plus de 200), ca ne devrait plus poser de problemes de taille pour giacpy. J'ai mis a jour xcaswininst.exe (la version est passee en 1.9.0-28).

Sinon, FLTK compile normalement dans un mingw windows chez moi, ca doit etre la cross compilation qui pose probleme.
Pour ecm, j'utilise libecm, sinon c'est le code de courbes elliptiques de giac qui est utilise, comme il n'est pas optimise, c'est donc normal qu'il soit significativement plus lent.

Répondre