Skip to content
  • Tor Arne Vestbø's avatar
    Distinguish between Objective-C and Objective-C++ sources · 9ff1310a
    Tor Arne Vestbø authored
    
    
    Instead of lumping both Objective-C (.m) and Objective-C++ (.mm) sources
    into the same pile, passing them on to the same compiler as for C++ (CXX),
    with the C++ flags (CXXFLAGS), we follow Apple's lead and treat them as
    variants of the C and C++ languages separately, so that Objective-C
    sources are built with CC and with CFLAGS, and Objective-C++ sources
    with CXX, and CXXFLAGS.
    
    This lets us remove a lot of duplicated flags and definitions from the
    QMAKE_OBJECTIVE_CFLAGS variable, which in 99% of the cases just matched
    the C++ equivalent. The remaining Objective-C/C++ flags are added to
    CFLAGS/CXXFLAGS, as the compiler will just ignore them when running in
    C/C++ mode. This matches Xcode, which also doesn't have a separate build
    setting for Objective-C/C++ flags.
    
    The Makefile qmake generator has been rewritten to support Objective-C/C++
    fully, by not assuming that we're just iterating over the C and C++
    extensions when dealing with compilation rules, precompiled headers, etc.
    There's some duplicated logic in this code, as inherent by qmake's already
    duplicated code paths, but this can be cleaned up when C++11 support is
    mandatory and we can use lambda functions.
    
    Task-number: QTBUG-36575
    Change-Id: I4f06576d5f49e939333a2e03d965da54119e5e31
    Reviewed-by: default avatarTor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
    9ff1310a