Skip to content

Bug: unsupported -v option by cosmocc #1316

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

Open
ivmai opened this issue Oct 15, 2024 · 3 comments
Open

Bug: unsupported -v option by cosmocc #1316

ivmai opened this issue Oct 15, 2024 · 3 comments
Labels
low severity Used to report low severity bugs (e.g. cosmetic issues, non critical UI glitches)

Comments

@ivmai
Copy link

ivmai commented Oct 15, 2024

Contact Details

ivmai/bdwgc#666

What happened?

Hello,
cosmocc does not recognize "-v" option (extended version info). Such information could be used during configure of 3rd-party packages (e.g. bdwgc), e.g. to determine threads API, e.g. like this.
Not a bug, but a kind of missing functionality compared to gcc/clang.

Both gcc and clang output such info at least: compiler version, target and thread model, e.g.:

clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix

Version

cosmocc (GCC) 14.1.0

What operating system are you seeing the problem on?

Linux

Relevant log output

cosmocc: fatal error: precompiled headers only supported with ARCH-unknown-cosmo-cc compilers compilation terminated.
@ivmai ivmai added the low severity Used to report low severity bugs (e.g. cosmetic issues, non critical UI glitches) label Oct 15, 2024
@jart
Copy link
Owner

jart commented Dec 24, 2024

The issue is I don't know what to put in there.

$ cc -v
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-fG75Ri/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-fG75Ri/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04)

We can't supply a lot of that information in our frontend. What information does your configure script try to parse out?

@ivmai
Copy link
Author

ivmai commented Dec 24, 2024

What information does your configure script try to parse out?

Thread model: ...

@LekKit
Copy link

LekKit commented Mar 20, 2025

I also stumbled upon this.

My project build system extracts compiler brand (GCC / Clang / possibly TCC etc) and version via cc -v, and falls back to cc -dumpfullversion -dumpversion (The latter one indeed works on cosmocc, so I get to know compiler version but not brand).

It then dumps target triplet via cc -print-multiarch or cc -dumpmachine (Whichever is available), and extracts architecture/os from it, which also doesn't work - it at least would help detecting that it's a cosmopolitan build.

Currently this is how it looks when trying to build RVVM with cosmocc without any supplementary info (It works fine this way for many other targets, i.e. mingw etc):

$ make bin CC="cosmocc"                                                                                                                                                             11:57:29 

[INFO] Assuming target OS=Linux, set explicitly if cross-compiling
[INFO] Assuming target ARCH=x86_64, set explicitly if cross-compiling
Detected OS: Linux
Detected CC: Unknown 14.1.0
Target arch: x86_64
Version:     RVVM 0.7-c0225c9-dirty

This is how it works when supplying all the info manually, but point is that I'd prefer my build system to figure it automatically at least for known targets:

$ make bin CC="cosmocc" ARCH=x86_64_arm64 OS=Cosmopolitan CC_BRAND=gcc                                                                                                             

Detected OS: Cosmopolitan
Detected CC: GCC 14.1.0
Target arch: x86_64_arm64
Version:     RVVM 0.7-c0225c9-dirty

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
low severity Used to report low severity bugs (e.g. cosmetic issues, non critical UI glitches)
Projects
None yet
Development

No branches or pull requests

3 participants