Changeset 121966 in webkit


Ignore:
Timestamp:
Jul 6, 2012 6:20:11 AM (12 years ago)
Author:
Csaba Osztrogonác
Message:

[Qt] Make use of Qt5 qmake's changed makefile recursion behavior

When not using the -r option, qmake now interleaves qmake and make calls,
so we don't need custom logic for this. There's also an option to supress
the effect of the -r option, which we use to make WebKit.pro the only
project file parsed in a recursive qmake-run.

https://bugs.webkit.org/show_bug.cgi?id=90461

Patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> on 2012-07-06
Reviewed by Tor Arne Vestbø.

  • qmake/mkspecs/features/default_post.prf:
  • qmake/mkspecs/features/functions.prf:
Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r121965 r121966  
     12012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>
     2
     3        [Qt] Make use of Qt5 qmake's changed makefile recursion behavior
     4
     5        When not using the -r option, qmake now interleaves qmake and make calls,
     6        so we don't need custom logic for this. There's also an option to supress
     7        the effect of the -r option, which we use to make WebKit.pro the only
     8        project file parsed in a recursive qmake-run.
     9
     10        https://bugs.webkit.org/show_bug.cgi?id=90461
     11
     12        Reviewed by Tor Arne Vestbø.
     13
     14        * qmake/mkspecs/features/default_post.prf:
     15        * qmake/mkspecs/features/functions.prf:
     16
    1172012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>
    218
  • trunk/Tools/qmake/mkspecs/features/default_post.prf

    r121960 r121966  
    237237}
    238238
    239 # Doing `$(MAKE) qmake' should recurse through all subdirs
    240 contains(TEMPLATE, subdirs):!no_recursive_qmake {
     239# Doing '$(MAKE) qmake' should recurse through all subdirs. In Qt5, this is
     240# automatic (for 'qmake_all', while 'qmake' does not enter subdirs at all).
     241haveQt(4):contains(TEMPLATE, subdirs):!no_recursive_qmake {
    241242    recursive_qmake.target = qmake_all
    242243
     
    274275
    275276incremental.target = incremental
    276 incremental.commands = $(MAKE) -f $(MAKEFILE) qmake && $(MAKE) -f $(MAKEFILE)
     277incremental.commands = $(MAKE) -f $(MAKEFILE) qmake_all && $(MAKE) -f $(MAKEFILE)
    277278QMAKE_EXTRA_TARGETS += incremental
    278279
  • trunk/Tools/qmake/mkspecs/features/functions.prf

    r121846 r121966  
    138138    second_base_target = sub-$$replace(secondSubdirFile, [^a-zA-Z0-9_], -)
    139139
    140     # Use a custom target for making the derived sources instead of the default ones,
    141     # as the default ones depend on $(MAKEFILE), while we want to depend on *qmake_all.
    142     # Without this rule we end up running qmake twice for the derived sources, as well as
    143     # introducing a race condition where we run "qmake -o Makefile.DerivedSources" at the
    144     # same time as we run "make -f Makefile.DerivedSources", resulting in make reading a
    145     # half-written makefile.
    146     derived_make_for_qmake.target = $${first_base_target}-make_for_qmake
    147     derived_make_for_qmake.depends = $${first_base_target}-qmake_all
    148     derived_make_for_qmake.commands = $(MAKE) -f $$eval($${firstSubdir}.makefile)
    149     QMAKE_EXTRA_TARGETS += derived_make_for_qmake
    150 
    151     # This target ensures that running "make qmake" will force both qmake and make
    152     # to be run on the derived sources before running qmake on the target, so that
    153     # qmake can pick up the right dependencies for the target based on the derived
    154     # sources that were generated.
    155     target_make_qmake.target = $${second_base_target}-qmake_all
    156     target_make_qmake.depends = $${derived_make_for_qmake.target}
    157     QMAKE_EXTRA_TARGETS += target_make_qmake
    158 
    159     GNUmake {
    160         # This target ensures that running make before any makefiles have been created
    161         # will still force qmake and make to be run on the derived sources first.
    162         target_make.target = $$eval($${secondSubdir}.makefile)
    163 
    164         # We use order-only-prerequisites so that we can run make on the derived sources
    165         # without triggering a qmake run on the target due to updated dependencies.
    166         target_make.depends = "| $${first_base_target}-make_default-ordered"
    167 
    168         QMAKE_EXTRA_TARGETS += target_make
     140    haveQt(4) {
     141        # Use a custom target for making the derived sources instead of the default ones,
     142        # as the default ones depend on $(MAKEFILE), while we want to depend on *qmake_all.
     143        # Without this rule we end up running qmake twice for the derived sources, as well as
     144        # introducing a race condition where we run "qmake -o Makefile.DerivedSources" at the
     145        # same time as we run "make -f Makefile.DerivedSources", resulting in make reading a
     146        # half-written makefile.
     147        derived_make_for_qmake.target = $${first_base_target}-make_for_qmake
     148        derived_make_for_qmake.depends = $${first_base_target}-qmake_all
     149        derived_make_for_qmake.commands = $(MAKE) -f $$eval($${firstSubdir}.makefile)
     150        QMAKE_EXTRA_TARGETS += derived_make_for_qmake
     151
     152        # This target ensures that running "make qmake" will force both qmake and make
     153        # to be run on the derived sources before running qmake on the target, so that
     154        # qmake can pick up the right dependencies for the target based on the derived
     155        # sources that were generated.
     156        target_make_qmake.target = $${second_base_target}-qmake_all
     157        target_make_qmake.depends = $${derived_make_for_qmake.target}
     158        QMAKE_EXTRA_TARGETS += target_make_qmake
     159
     160        GNUmake {
     161            # This target ensures that running make before any makefiles have been created
     162            # will still force qmake and make to be run on the derived sources first.
     163            target_make.target = $$eval($${secondSubdir}.makefile)
     164
     165            # We use order-only-prerequisites so that we can run make on the derived sources
     166            # without triggering a qmake run on the target due to updated dependencies.
     167            target_make.depends = "| $${first_base_target}-make_default-ordered"
     168
     169            QMAKE_EXTRA_TARGETS += target_make
     170        }
     171    } else {
     172        # Qt5's qmake does most of the above for us already.
     173
     174        # This target ensures that running "make qmake_all" will force both qmake and make
     175        # to be run on the derived sources before running qmake on the target, so that
     176        # qmake can pick up the right dependencies for the target based on the derived
     177        # sources that were generated. Just "make qmake" is non-recursive anyway.
     178        target_make_qmake.target = $${second_base_target}-qmake_all
     179        target_make_qmake.depends = $${first_base_target}
     180        QMAKE_EXTRA_TARGETS += target_make_qmake
     181
     182        # Make things work even if qmake -r is used.
     183        CONFIG += dont_recurse
    169184    }
    170185
Note: See TracChangeset for help on using the changeset viewer.