1. 09 Jun, 2002 8 commits
    • Kai Germaschewski's avatar
      kbuild: Generate modversions only for selected objects · d84e208a
      Kai Germaschewski authored
      Up to now, we generated module versions for all objects which
      were listed in $(export-objs).
      
      This had one advantage: A changed .config will not affect which
      .ver files are built, thus saving recompiles.
      
      However, it is fundamentally broken. To build .ver files, we preprocess
      the exporting sources - and the result can obviously depend on
      the current .config. Even worse, some files generate errors when
      preprocessed with the wrong .config - it doesn't matter a lot that
      drivers/sbus/* will generate errors on x86, since it won't be used anyway,
      but e.g. kernel/suspend.c cannot be preprocessed unless 
      CONFIG_SOFTWARE_SUSPEND is set. - Up to now, we just silently ignore
      these errors.
      
      Actually, the whole point behind CONFIG_MODVERSIONS is to make sure
      we don't insert modules into a kernel which was configured differently,
      and as such the generation of symbols can only work when .config is
      known.
      
      So we now only generate symbols for objects which will actually be
      compiled - which means less work, and enforce the kernel to be configured
      before "make dep".
      d84e208a
    • Kai Germaschewski's avatar
      kbuild: Optimize include of .*.cmd · badaa98e
      Kai Germaschewski authored
      Keep track of possible targets while we add rules - Later, only
      include the command lines / dependencies as needed.
      
      E.g., when defining how to build multi-part objects listed in
      $(multi-used-y) and $(multi-used-m), add $(multi-used-y,m) to 
      the variable targets. At the end of Rules.make, we then include
      the saved command lines for these targets (if they exist), needed
      to check whether the command changed and we hence need to rebuild.
      badaa98e
    • Kai Germaschewski's avatar
      kbuild: Put .cmd/.d files into the same directory as the target · 2c3d57b4
      Kai Germaschewski authored
      Previously, we always had put the .cmd/.d files into the local subdir
      - now we put them into the directory where the target lives, like
      
      	some/dir/target.o <-> some/dir/.target.o.cmd
      
      It does not yet make a difference, since we always only generated
      targets in the local directory anyway, but that will change with
      tracking dependencies for .ver files.
      2c3d57b4
    • Kai Germaschewski's avatar
      kbuild: Rules.make cleanup · f9f8d484
      Kai Germaschewski authored
      We use A/CFLAGS_KERNEL by default anyway, so no need to set them
      explicitly for built-in objects.
      f9f8d484
    • Kai Germaschewski's avatar
      kbuild: Rearrange Rules.make · 7a3b08a2
      Kai Germaschewski authored
      This patch doesn't change anything but the order (and some comments) in
      Rules.make. The reason for that is that we use Rules.make for three
      different purposes, fastdep, modules_install and the actual building.
      
      As an example, we don't need all the dependencies and saved command lines
      when installing modules, so it'll speed up this pass to only include the
      rules which will actually get used.
      7a3b08a2
    • Kai Germaschewski's avatar
      kbuild: Generate dependencies for all targets · e5f9911d
      Kai Germaschewski authored
      So far, we had been lazy and not generated dependencies for 
      debugging-only targets, like some/dir/foo.[is]. It actually
      cleans up Rules.make to handle them by the same mechanism, though.
      
      Additionally, make use of $(call if_changed) and $(call if_changed_dep)
      more consistent, the only difference now is post-processing of
      gcc -MD output, which is done for if_changed_dep but not for if_changed.
      e5f9911d
    • Kai Germaschewski's avatar
      kbuild: Pass <target> to fixdep · 33ec0479
      Kai Germaschewski authored
      cpp -MD guesses the target name from the source file name, but not
      always correctly, e.g. when compiling fixdep, it generates prequisites
      for fixdep.o instead of fixdep.
       
      fixdep now fixes up the -MD generated output to contain the right target,
      which is the one we pass on the command line.
      33ec0479
    • Kai Germaschewski's avatar
      kbuild: Small fixes · ea253a53
      Kai Germaschewski authored
      o When using "make -j<n>", the order in modversions.h could change,
        thus causing unnecessary rebuilds.
      o Move a comment in Rules.make which I forgot when I moved the
        associated code.
      o When descending into init/ during the final vmlinux link,
        add a '+' do tell make to use its normal "-j" jobserver handling.
      o It'd be nice to get the logic between make clean and make mrproper
        clearer. I think make clean should remove all targets used in the
        actual build,
        make mrproper should remove the rest, build-specific files, like
        e.g. the .*.cmd files used to save dependencies and command lines
        and other temporary files.
        A real small step in the direction: Remove .tmpversion/.tmp-export-objs
        at mrproper time.
      ea253a53
  2. 08 Jun, 2002 30 commits
  3. 07 Jun, 2002 2 commits