Skip to content
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

getGccPaths returns empty seq #266

Open
artemklevtsov opened this issue Jan 10, 2021 · 2 comments
Open

getGccPaths returns empty seq #266

artemklevtsov opened this issue Jan 10, 2021 · 2 comments

Comments

@artemklevtsov
Copy link

artemklevtsov commented Jan 10, 2021

Code to reproduce:

import os
import nimterop/cimport
import nimterop/build

static:
  cDebug()
  cDisableCaching()

echo getCompiler()
echo getGccModeArg("c")
echo getGccPaths("c")
let cmd = getCompiler() & " -Wp,-v " & getGccModeArg("c") & " /dev/null"
echo cmd
echo execShellCmd cmd

Result:

$ nim c -r test.nim
Hint: used config file '/etc/nim/nim.cfg' [Conf]
Hint: used config file '/etc/nim/config.nims' [Conf]
............................................
Hint:  [Link]
Hint: 127945 lines; 0.626s; 94.531MiB peakmem; Debug build; proj: /home/unikum/Projects/Nim/nim-uchardet/uchardet/test.nim; out: /home/unikum/Projects/Nim/nim-uchardet/uchardet/test [SuccessX]
Hint: /home/unikum/Projects/Nim/nim-uchardet/uchardet/test  [Exec]
gcc
-xc
@[]
gcc -Wp,-v -xc /dev/null
несуществующий каталог "/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/include" проигнорирован
порядок поиска для #include "...":
порядок поиска для #include <...>:
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed
 /usr/include
Конец списка поиска.
/usr/sbin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib/Scrt1.o: в функции «_start»:
(.text+0x24): неопределённая ссылка на «main»
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
1

with LANG=C seems works:

$ LANG=C nim c -r test.nim
Hint: used config file '/etc/nim/nim.cfg' [Conf]
Hint: used config file '/etc/nim/config.nims' [Conf]
............................................CC: test.nim

Hint:  [Link]
Hint: 127945 lines; 0.727s; 94.215MiB peakmem; Debug build; proj: /home/unikum/Projects/Nim/nim-uchardet/test.nim; out: /home/unikum/Projects/Nim/nim-uchardet/test [SuccessX]
Hint: /home/unikum/Projects/Nim/nim-uchardet/test  [Exec]
gcc
-xc
@["/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include", "/usr/local/include", "/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed", "/usr/include"]
gcc -Wp,-v -xc /dev/null
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed
 /usr/include
End of search list.
/usr/sbin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
1

Additional info:

$ cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux
$LANG=C gcc -v
Using built-in specs.
COLLECT_GCC=/usr/sbin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-libunwind-exceptions --disable-werror gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (GCC) 
@genotrance
Copy link
Collaborator

Just need to remove the search starts here piece from here and just look for #include <...>:

if "#include <...> search starts here" in line:

PR appreciated, thank you!

@artemklevtsov
Copy link
Author

I think we should force the C locale for the gcc command, because:

#include "..." search starts here:
порядок поиска для #include "...":

and

End of search list.
Конец списка поиска.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants