Changeset 127583 in webkit


Ignore:
Timestamp:
Sep 5, 2012 6:11:35 AM (12 years ago)
Author:
vestbo@webkit.org
Message:

[Qt] Fix makefile race condition between derived sources and target

r121966 removed too much of the old qmake logic, including the rule
that ensured that qmake_all would not trigger dual runs of qmake --
one of the derived sources -qmake-all rule, and one for making the
derived sources.

We now follow a similar pattern as before, by introducing a custom
target that explicitly depends on the derived sources' qmake-all before
doing a manual run of make. That ensures a single qmake run for the derived
sources.

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

Reviewed by Csaba Osztrogonác.

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

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r127578 r127583  
     12012-09-05  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
     2
     3        [Qt] Fix makefile race condition between derived sources and target
     4
     5        r121966 removed too much of the old qmake logic, including the rule
     6        that ensured that qmake_all would not trigger dual runs of qmake --
     7        one of the derived sources -qmake-all rule, and one for making the
     8        derived sources.
     9
     10        We now follow a similar pattern as before, by introducing a custom
     11        target that explicitly depends on the derived sources' qmake-all before
     12        doing a manual run of make. That ensures a single qmake run for the derived
     13        sources.
     14
     15        https://bugs.webkit.org/show_bug.cgi?id=93847
     16
     17        Reviewed by Csaba Osztrogonác.
     18
     19        * qmake/mkspecs/features/functions.prf:
     20
    1212012-09-05  Christophe Dumez  <christophe.dumez@intel.com>
    222
  • trunk/Tools/qmake/mkspecs/features/functions.prf

    r125411 r127583  
    138138    second_base_target = sub-$$replace(secondSubdirFile, [^a-zA-Z0-9_], -)
    139139
     140    # Use a custom target for making the derived sources, as the default target
     141    # will do 'test -f $(MAKEFILE).DerivedSources || $(QMAKE) ...', which clashes
     142    # with the qmake-run of the -qmake_all target, and we end up with a race
     143    # and potentially half-written makefiles. The custom target depends explicitly
     144    # on -qmake_all, to ensure that we have a makefile, and then calls make.
     145    derived_make_for_qmake.target = $${first_base_target}-make_for_qmake
     146    derived_make_for_qmake.depends = $${first_base_target}-qmake_all
     147    derived_make_for_qmake.commands = $(MAKE) -f $$eval($${firstSubdir}.makefile)
     148    QMAKE_EXTRA_TARGETS += derived_make_for_qmake
     149
    140150    # This target ensures that running "make qmake_all" will force both qmake and make
    141151    # to be run on the derived sources before running qmake on the target, so that
    142152    # qmake can pick up the right dependencies for the target based on the derived
    143     # sources that were generated. Just "make qmake" is non-recursive anyway.
     153    # sources that were generated.
    144154    target_make_qmake.target = $${second_base_target}-qmake_all
    145     target_make_qmake.depends = $${first_base_target}
     155    target_make_qmake.depends = $${derived_make_for_qmake.target}
    146156    QMAKE_EXTRA_TARGETS += target_make_qmake
    147157
Note: See TracChangeset for help on using the changeset viewer.