Uploaded image for project: 'Qbs ("Cubes")'
  1. Qbs ("Cubes")
  2. QBS-226

Add support for minimum operating system version

    XMLWordPrintable

Details

    • 84f5d13adb3ab6dc9510a3e512799bff13d6d01d

    Description

      The property shall be called minimumSystemVersion.

      Windows: Compilers need to define WINVER and _WIN32_WINNT (https://blogs.msdn.com/b/oldnewthing/archive/2007/04/11/2079137.aspx) to a hex value indicating the OS version, and linkers need to specify the OS version in /SUBSYSTEM (-Wl,subsystem for MinGW)

      OS X: Compiler and linker need -mmacosx-version-min=<version>

      iOS: Compiler and linker need -miphoneos-version-min=<version>

      Newly created Qt profiles should set the cpp.minimumSystemVersion to a default value as the Qt version/configuration influences this.

      For OS X, the minimum version should be 10.6 for Qt 5, 10.5 for Qt 4 Cocoa, and 10.4 for Qt 4 Carbon.

      For all versions of MSVC, the minimum and default versions for the CONSOLE and WINDOWS subsystems are exactly the same. However because of the compiler definitions we still have to set the minimum.

      For MSVC 2008, 2010 and 2012, the default/minimum subsystem versions are 5.00 for x86 and 5.02 for x64 and Itanium.

      For MSVC 2005, the default/minimum subsystem versions are 4.00 for x86, 5.02 for x64, and 5.01 for Itanium.

      For MSVC 2003 there's an exception; x64 is not supported at all, and the minimum is 3.10 for x86.

      So that leaves this property having an effect on: Windows, OS X, iOS

      Regarding other operating systems to which this property would apply...

      Windows CE will need to be added to the list at some point. The story would go mostly the same as Windows itself.

      Android minimum versions are defined in the manifest file (AndroidManifest.xml). In cases where we automatically generate this file, we should translate an Android OS version number into an SDK version and set it appropriately. If the user specifies their own file, we should provide preprocessing so all minimum OS versions can be neatly specified in the QBS file with all the flexibility that comes with that.

      BlackBerry (QNX) minimum versions are defined in the bar-descriptor.xml file in the <platformVersion> tag. See http://developer.blackberry.com/native/documentation/bb10/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/r_barfile_dtd_ref_platformversion.html

      I'm not sure what the situation is for Windows Phone / WinRT, Linux, or other Unix systems.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              jakepetroules Jake Petroules (DO NOT ASSIGN ISSUES)
              jakepetroules Jake Petroules (DO NOT ASSIGN ISSUES)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes