Problème d'install de darling (emulateur mac/linux)

Tout d’abord la bise au passage aux anciens du forum, ça faisait longtemps que je n’étais pas passé.
Salutations à tous les autres.

Je souhaite installer l’emulateur mac darling sur ma jessie.
Comme il n’y a pas de version packagée (si vous en connaissez une, je prend), je suis parti à le compiler avec les sources git.
Problème, quand je lance le make, ça plante avec un message d’erreur /home/mj/Documents/installs/darling/darling/src/kernel/libsyscall/wrappers/kdebug_trace.c:27:10: fatal error: ‘stdatomic.h’ file not found

J’ai un peu googlisé, et j’ai vu que ça pouvait venir d’une version pré 4.9 de gcc (le fichier stdatomic.h n’existait pas en 4.8).
Mais c’est bizarre, car je suis bien en gcc-4.9 par defaut, et je vois bien le fichier concerné dans /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdatomic.h
J’ai essayé de shunter le problème en copiant le fichier dans /usr/include, mais ça ne passe pas…

Quelqu’un aurait une idée ?

Bonjour mattotop

En faisant quelques recherches, je viens de trouver ce lien :

http://en.cppreference.com/w/c/atomic

C’est gentil de m’aider, mais j’ai déjà toutes ces infos là directement dans le fichier stdatomic.h qui est sur ma machine, et ça ne m’apporte aucune piste.

Je présume donc que la constante :

 __STDC_NO_ATOMICS__

n’est pas définie dans les fichiers de configuration du compilateur.

Désolé, comme tu n’en parlais pas, et que ça aurait pu être la cause du comportement du compilateur que tu constates, j’avais pensé que tu avais oublié de le vérifier.

J’aurais dû ne citer que la première ligne de cette library

Ce flag sert à un #ifndef qui court circuite tout le contenu du .h pour éviter de redéfinir plusieurs fois si l’include est appelé plusieurs fois, donc je vois mal à quoi ça pourrait servir, vu qu’il ne trouve même pas le fichier, mais ça ne coûte peut être rien d’essayer ?

Tu le mettrais dans quel fichier de config et sous quelle forme, du coup ?

Ça fait bien trop longtemps que je n’ai pas utilisé de compilateur pour pouvoir répondre à cette question.
En fait, je m’arrangerais pour que cette constante ne soit définie nulle part.

Bonjour,

En lisant ceci

Build Instructions [Darling Wiki]

clang 3.8 minimum est recommandé

Disponible dans jessie-backports, est-ce bien cette version qui est utilisée ?

J’ai bien jessie-backports dans mon sources.list, mais pas de clang dedans, et la seule version que j’ai est loin de la 3.8:

mj@mercure:~$ apt-cache policy clang
clang:
Installé : 1:3.5-25
Candidat : 1:3.5-25
Table de version :
*** 1:3.5-25 0
500 http://ftp.fr.debian.org/debian/ jessie/main amd64 Packages
100 /var/lib/dpkg/status
Bizarre.

Le paquet s’appelle clang-3.8

@jcsm33 pris d’une illumination hier, j’ai fait un aptitude search clang, et j’ai vu ça, oui.
Je l’ai donc installé, mais ça n’a rien changé.
J’ai refait un cmake sans succés.
Je vais recommencer la compil au début, en réimportant le git, mais là, je manque de temps.

Je reviens ASAP dire le résultat.

Il doit y avoir moyen de modifier la recette de compilation pour lui dire d’utiliser Clang à la place de GCC un peu de ce genre là :

[code]export CC=clang
export CXX=clang++

or, force a specific version of clang:

export CC=clang-3.8
export CXX=clang+±3.8[/code]

En tout cas c’est ce qu’il précise sur la doc :

Dependencies

It is recommended that you use at least Clang 3.8. You can force a specific version of Clang (if it is installed on your system) by editing Toolchain.cmake.
Debian

Et ravi de te voir de passage sur le forum :wink:

Content de te voir aussi.
Et merci pour l’ajustement de config dans Toolchain.cmake, je n’avais pas vu.
Ca avance, mais ça ne passe toujours pas…
J’ai supprimé les fichiers de build, ajusté la version de clang dans le Toolchain.cmake:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR “x86-64”)

SET(CMAKE_C_COMPILER clang-3.8)
SET(CMAKE_CXX_COMPILER clang+±3.8)
SET(CMAKE_SKIP_RPATH TRUE)

Et relancé le tout, mais lors du make, ça s’arrête sur:

(…)
Linking C shared library libsystem_asl_firstpass.dylib
clang: warning: argument unused during compilation: '-nostdinc’
ld: warning: directory not found for option '-F/System/Library/Frameworks/'
ld: warning: directory not found for option ‘-F/System/Library/Frameworks/’
[ 33%] Built target system_asl_firstpass
[ 33%] Building CXX object src/external/libdispatch/CMakeFiles/libdispatch_shared_obj.dir/src/datam.o
error: invalid argument ‘-std=c++11’ not allowed with 'C/ObjC’
src/external/libdispatch/CMakeFiles/libdispatch_shared_obj.dir/build.make:163: recipe for target ‘src/external/libdispatch/CMakeFiles/libdispatch_shared_obj.dir/src/datam.o’ failed
make[2]: *** [src/external/libdispatch/CMakeFiles/libdispatch_shared_obj.dir/src/datam.o] Error 1
CMakeFiles/Makefile2:8871: recipe for target ‘src/external/libdispatch/CMakeFiles/libdispatch_shared_obj.dir/all’ failed
make[1]: *** [src/external/libdispatch/CMakeFiles/libdispatch_shared_obj.dir/all] Error 2
Makefile:117: recipe for target ‘all’ failed
make: *** [all] Error 2