bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #46304] HAVE_CASE_INSENSITIVE_FS breaks default rules since 3.99.90


From: anonymous
Subject: [bug #46304] HAVE_CASE_INSENSITIVE_FS breaks default rules since 3.99.90
Date: Mon, 26 Oct 2015 23:05:37 +0000
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7

URL:
  <http://savannah.gnu.org/bugs/?46304>

                 Summary: HAVE_CASE_INSENSITIVE_FS breaks default rules since
3.99.90
                 Project: make
            Submitted by: None
            Submitted on: Mon 26 Oct 2015 11:05:36 PM UTC
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 4.0
        Operating System: MS Windows
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

Hello,

Somewhere between 3.81.90 and 3.99.90 the built-in rule for .c files got
changed to call `g++` instead of `cc`, when using ./configure option
`--enable-case-insensitive-file-system` or the corresponding build-time macro
`HAVE_CASE_INSENSITIVE_FS`. This is the recommended way to build under
Windows, as per README.w32. The problem is still present in latest version 4.1
and even in the Git master repository.

The problem is likely caused by internal confusion about .C and .c extensions
differing only in casing, where the former implies C++, while the latter is
expected to imply plain C - even on Windows - but it implies C++ instead.

The end result is that certain plain C sources cannot be compiled, as it is
being fed to the C++ compiler, which is much more picky about the language and
might also generate incompatible object files.

Reproducible using a zero-length `test.c` file and following `Makefile` in the
same directory:
```
test:
```

Running `mingw-make.exe` results in:
3.81.90 (ok):
```
cc     test.c   -o test
```

3.99.90 (not OK):
```
g++     test.c   -o test
```

Also apparent by listing built-in rules using -p option:
`mingw32-make.exe -p`

3.81.90 (ok):
```
%.o: %.c
#  recipe to execute (built-in):
        $(COMPILE.c) $(OUTPUT_OPTION) $<
```

3.99.90 (not OK):
```
%.o: %.c
#  recipe to execute (built-in):
        $(COMPILE.C) $(OUTPUT_OPTION) $<
```

Example Windows binary that
- exhibit the problem (= built _with_ the HAVE_CASE_INSENSITIVE_FS option):
  
https://www.mirrorservice.org/sites/dl.sourceforge.net/pub/sourceforge/m/mi/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.1.0/threads-win32/sjlj/x86_64-5.1.0-release-win32-sjlj-rt_v4-rev0.7z
- is working correctly (= built _without_ the HAVE_CASE_INSENSITIVE_FS
option):
  
https://www.mirrorservice.org/sites/dl.sourceforge.net/pub/sourceforge/m/mi/mingw-w64-dgn/mingw-w64/mingw-w64-bin-x86_64-20150611.7z

Additional information on this URL:
https://github.com/niXman/mingw-builds/issues/413

-Viktor





    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?46304>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]