# zig run/cc: recognize "\-x language" · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/6b3f59c3a735ddbda3b3a62a0dfb5d55fa045f57)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 6b3f59c3a735ddbda3b3a62a0dfb5d55fa045f57

Requested commit: 6b3f59c3a735ddbda3b3a62a0dfb5d55fa045f57

Commit: 6b3f59c3a735ddbda3b3a62a0dfb5d55fa045f57

Tree: 457c3ef57718e31cd6297bb3154dcb6177793027

Author: Motiejus Jakštys

Committer: Andrew Kelley

## Message

```
zig run/cc: recognize "-x language"

This commit adds support for "-x language" for a couple of hand-picked
supported languages. There is no reason the list of supported languages
to not grow (e.g. add "c-header"), but I'd like to keep it small at the
start.

Alternative 1
-------------

I first tried to add a new type "Language", and then add that to the
`CSourceFile`. But oh boy what a change it turns out to be. So I am
keeping myself tied to FileExt and see what you folks think.

Alternative 2
-------------

I tried adding `Language: ?[]const u8` to `CSourceFile`. However, the
language/ext, whatever we want to call it, still needs to be interpreted
in the main loop: one kind of handling for source files, other kind of
handling for everything else.

Test case
---------

*standalone.c*

    #include <iostream>

    int main() {
        std::cout << "elho\n";
    }

Compile and run:

    $ ./zig run -x c++ -lc++ standalone.c
    elho
    $ ./zig c++ -x c++ standalone.c -o standalone && ./standalone
    elho

Fixes #10915

```

## Parents

- [d813cef42af43b499fc5dc465e34f873008aaad0](https://git.cafe/gitcafe/zig/commit/d813cef42af43b499fc5dc465e34f873008aaad0?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/6b3f59c3a735ddbda3b3a62a0dfb5d55fa045f57?format=markdown)
