1. 06 10月, 2016 1 次提交
    • P
      rules.mak: quiet-command: Split command name and args to print · 0bdb12c7
      Peter Maydell 提交于
      The quiet-command make rule currently takes two arguments:
      the command and arguments to run, and a string to print if
      the V flag is not set (ie we are not being verbose).
      By convention, the string printed is of the form
      "  NAME   some args". Unfortunately to get nicely lined up
      output all the strings have to agree about what column the
      arguments should start in, which means that if we add a
      new quiet-command usage which wants a slightly longer CMD
      name then we either put up with misalignment or change
      every quiet-command string.
      
      Split the quiet-mode string into two, the "NAME" and
      the "same args" part, and use printf(1) to format the
      string automatically. This means we only need to change
      one place if we want to support a longer maximum name.
      
      In particular, we can now print 7-character names lined
      up properly (they are needed for the OSX "SETTOOL" invocation).
      
      Change all the uses of quiet-command to the new syntax.
      (Any which are missed or inadvertently reintroduced
      via later merges will result in slightly misformatted
      quiet output rather than disaster.)
      
      A few places in the pc-bios/ makefiles are updated to use
      "BUILD", "SIGN" and "STRIP" rather than "Building",
      "Signing" and "Stripping" for consistency and to keep them
      below 7 characters. Module .mo links now print "LD" rather
      than the nonstandard "LD -r".
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 1475598441-27908-1-git-send-email-peter.maydell@linaro.org
      0bdb12c7
  2. 14 9月, 2016 1 次提交
    • F
      rules.mak: Don't extract libs from .mo-libs in link command · 5b1b6dbd
      Fam Zheng 提交于
      For module build, .mo objects are passed to LINK and consumed in
      process-archive-undefs. The reason behind that is documented in the
      comment above process-archive-undefs.
      
      Similarly, extract-libs should be called with .mo filtered out too.
      Otherwise, the .mo-libs are added to the link command incorrectly,
      spoiling the purpose of modularization.
      
      Currently we don't have any .mo-libs usage, but it will be used soon
      when we modularize more multi-source objects, like sdl and gtk.
      Reported-by: NColin Lord <clord@redhat.com>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-Id: <1469600777-30413-2-git-send-email-famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      5b1b6dbd
  3. 06 9月, 2016 1 次提交
    • M
      s390x/cpumodel: generate CPU feature lists for CPU models · dced7eec
      Michael Mueller 提交于
      This patch introduces the helper "gen-features" which allows to generate
      feature list definitions at compile time. Its flexibility is better and the
      error-proneness is lower when compared to static programming time added
      statements.
      
      The helper includes "target-s390x/cpu_features.h" to be able to use named
      facility bits instead of numbers. The generated defines will be used for
      the definition of CPU models.
      
      We generate feature lists for each HW generation and GA for EC models. BC
      models are always based on a EC version and have no separate definitions.
      
      Base features: Features we expect to be always available in sane setups.
      Migration safe - will never change. Can be seen as "minimum features
      required for a CPU model".
      
      Default features: Features we expect to be stable and around in latest
      setups (e.g. having KVM support) - not migration safe.
      
      Max features: All supported features that are theoretically allowed for a
      CPU model. Exceeding these features could otherwise produce problems with
      IBC (instruction blocking controls) in KVM.
      Acked-by: NCornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NMichael Mueller <mimu@linux.vnet.ibm.com>
      Signed-off-by: NDavid Hildenbrand <dahi@linux.vnet.ibm.com>
      [generate base, default and models. renaming and cleanup]
      Message-Id: <20160905085244.99980-6-dahi@linux.vnet.ibm.com>
      Signed-off-by: NCornelia Huck <cornelia.huck@de.ibm.com>
      dced7eec
  4. 29 7月, 2016 1 次提交
  5. 11 7月, 2016 1 次提交
  6. 06 7月, 2016 1 次提交
    • R
      build: Use $(CCAS) for compiling .S files · 5f6f0e27
      Richard Henderson 提交于
      We fail to pass to $(AS) all of the different flags that may be required
      for a given set of CFLAGS.  Rather than figuring out the host-specific
      mapping, it's better to allow the compiler driver to do that.
      
      However, simply using $(CC) runs afoul of clang trying to build the
      option roms.  C.f. 3dd46c78, wherein we changed from
      using $(CC) to using $(AS) in the first place.
      
      Work around this by passing -fno-integrated-as to clang, so that we use
      the external assembler, and the clang driver still passes along all of
      the options that the assembler might require.
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      Message-Id: <1466703558-7723-1-git-send-email-rth@twiddle.net>
      5f6f0e27
  7. 07 6月, 2016 2 次提交
  8. 01 6月, 2016 1 次提交
  9. 17 2月, 2016 1 次提交
  10. 11 2月, 2016 1 次提交
  11. 13 8月, 2015 2 次提交
  12. 08 5月, 2015 1 次提交
    • F
      rules.mak: Force CFLAGS for all objects in DSO · d24697e1
      Fam Zheng 提交于
      Because of the trick of process-archive-undefs, all .mo objects, even
      with --enable-modules, are dependencies of executables.
      
      This breaks CFLAGS propogation because the compiling of module object
      will happen too early before building for DSO.
      
      With GCC 5, the linking would fail because .o doesn't have -fPIC. Also,
      BUILD_DSO will be missed. (module-common.o will have it, so the stamp
      symbol was still liked in .so).
      
      Fix the problem by forcing the CFLAGS on individual .o-cflags during
      unnest-vars.
      Reported-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Cc: qemu-stable@nongnu.org # 2.3
      Message-Id: <1430981715-31465-1-git-send-email-famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d24697e1
  13. 14 1月, 2015 1 次提交
  14. 31 10月, 2014 1 次提交
  15. 20 9月, 2014 1 次提交
  16. 09 9月, 2014 1 次提交
    • F
      rules.mak: Fix DSO build by pulling in archive symbols · c261d774
      Fam Zheng 提交于
      This fixes an issue with module build system. block/iscsi.so is
      currently broken:
      
          $ ~/build/last/qemu-img
          Failed to open module: /home/fam/build/master/block-iscsi.so:
          undefined symbol: qmp_query_uuid
          qemu-img: Not enough arguments
          Try 'qemu-img --help' for more information
      
      To fix this, we should (at least) let qemu-img link qmp_query_uuid from
      libqemustub.a. (There are a few other symbols missing, as well.)
      
      This patch changes the linking rules to:
      
      1) Build ".mo" with "ld -r -o $@ $^" for each ".so", and later build .so
         with it.
      
      2) Always build all the .mo before linking the executables. This is
         achieved by adding those .mo files to the executables' "-y"
         variables.
      
      3) When linking an executable, those .mo files in its "-y" variables are
         filtered out, and replaced by one or more -Wl,-u,$symbol flags. This
         is done in the added macro "process-archive-undefs".
      
         These "-Wl,-u,$symbol" flags will force ld to pull in the function
         definition from the archives when linking.
      
         Note that the .mo objects, that are actually meant to be linked in
         the executables, are already expanded in unnest-vars, before the
         linking command. So we are safe to simply filter out .mo for the
         purpose of pulling undefined symbols.
      
         process-archive-undefs works as this: For each ".mo", find all the
         undefined symbols in it, filter ones that are defined in the
         archives. For each of these symbols, generate a "-Wl,-u,$symbol" in
         the link command, and put them before archive names in the command
         line.
      Suggested-by: NH.J. Lu <hjl.tools@gmail.com>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c261d774
  17. 25 6月, 2014 1 次提交
  18. 16 6月, 2014 1 次提交
  19. 10 6月, 2014 1 次提交
    • F
      rules.mak: Rewrite unnest-vars · 1c33ac57
      Fam Zheng 提交于
      The macro unnest-vars is the most important, complicated but hard to
      track magic in QEMU's build system.
      
      Rewrite it in a (hopefully) clearer way, with more comments, to make it
      easier to understand and maintain.
      
      Remove DSO_CFLAGS and module-objs-m that are not used.
      
      A bonus fix of this version is, per object variables are properly
      protected in save-objs and load-objs, before including sub-dir
      Makefile.objs, just as nested variables are. So the occasional same
      object name from different directory levels won't step on each other's
      foot.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      1c33ac57
  20. 10 5月, 2014 1 次提交
    • P
      build: simplify and fix fix-obj-vars · 2a8e6c7a
      Paolo Bonzini 提交于
      fix-obj-vars has the undesired side effect of breaking -cflags
      -objs and -libs variables in the toplevel Makefile.objs.  The
      variables in the toplevel Makefile.objs do not need any fix,
      so fix-obj-vars need not do anything.
      
      Since we are touching it, remove the now unnecessary $(if)
      in the callers.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      2a8e6c7a
  21. 08 5月, 2014 2 次提交
  22. 17 3月, 2014 1 次提交
  23. 20 2月, 2014 4 次提交
    • F
      module: implement module loading · e26110cf
      Fam Zheng 提交于
      This patch adds loading, stamp checking and initialization of modules.
      
      The init function of dynamic module is no longer directly called as
      __attribute__((constructor)) in static linked version, it is called
      only after passed the checking of presense of stamp symbol:
      
          qemu_stamp_$RELEASEHASH
      
      where $RELEASEHASH is generated by hashing version strings and content
      of configure script.
      
      With this, modules built from a different tree/version/configure will
      not be loaded.
      
      The module loading code requires gmodule-2.0.
      
      Modules are searched under
       - CONFIG_MODDIR
       - executable folder (to allow running qemu-{img,io} in the build
         directory)
       - ../ of executable folder (to allow running system emulator in the
         build directory)
      
      Modules are linked under their subdir respectively, then copied to top
      level of build directory for above convinience, e.g.:
          $(BUILD_DIR)/block/curl.so -> $(BUILD_DIR)/block-curl.so
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e26110cf
    • F
      rules.mak: introduce DSO rules · 17969268
      Fam Zheng 提交于
      Add necessary rules and flags for shared object generation.
      The new rules introduced here are:
      
      1) %.o in $(common-obj-m) is compiled to %.o, then linked to %.so.
      
      2) %.mo in $(common-obj-m) is the placeholder for %.so for pattern
      matching in Makefile. It's linked to "-shared" with all its dependencies
      (multiple *.o) as input. Which means the list of depended objects must
      be specified in each sub-Makefile.objs:
      
          foo.mo-objs := bar.o baz.o qux.o
      
      in the same style with foo.o-cflags and foo.o-libs. The objects here
      will be prefixed with "$(obj)/" if it's a subdirectory Makefile.objs.
      
      3) For all files ending up in %.so, the following is added automatically:
      
          foo.o-cflags += -fPIC -DBUILD_DSO
      
      Also introduce --enable-modules in configure, the option will enable
      support of shared object build. Otherwise objects are static linked to
      executables.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      17969268
    • F
      rules.mak: allow per object cflags and libs · 5c0d52bc
      Fam Zheng 提交于
      Adds extract-libs in LINK to expand any "per object libs", the syntax to define
      such a libs options is like:
      
              foo.o-libs := $(CURL_LIBS)
      
      in block/Makefile.objs.
      
      Similarly,
      
              foo.o-cflags := $(FOO_CFLAGS)
      
      is also supported.
      
      "foo.o" must be listed in a nested var (e.g. common-obj-y) to make the
      option variables effective.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      5c0d52bc
    • F
      rules.mak: fix $(obj) to a real relative path · ba1183da
      Fam Zheng 提交于
      Makefile.target includes rule.mak and unnested common-obj-y, then prefix
      them with '../', this will ignore object specific QEMU_CFLAGS in subdir
      Makefile.objs:
      
          $(obj)/curl.o: QEMU_CFLAGS += $(CURL_CFLAGS)
      
      Because $(obj) here is './block', instead of '../block'. This doesn't
      hurt compiling because we basically build all .o from top Makefile,
      before entering Makefile.target, but it will affact arriving per-object
      libs support.
      
      The starting point of $(obj) is passed in as argument of unnest-vars, as
      well as nested variables, so that different Makefiles can pass in a
      right value.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      ba1183da
  24. 08 2月, 2014 2 次提交
  25. 17 10月, 2013 2 次提交
  26. 10 9月, 2013 1 次提交
  27. 04 5月, 2013 1 次提交
    • P
      win32: fix compilation again · fba90ac1
      Paolo Bonzini 提交于
      While commit c02817e5 fixed compilation
      without an installed libtool, moving the dependencies to rules.mak does
      not work because the version-*-y variables are not defined yet.  Building
      in a clean tree thus fails.
      
      Revert the commit and remove the dummy /bin/false assignment to LIBTOOL.
      This makes the build work, at the price of slightly worse errors when
      there are Makefile bugs.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1367425815-15083-1-git-send-email-pbonzini@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      fba90ac1
  28. 30 4月, 2013 1 次提交
    • D
      rules.mk: Fix build breakage · 7e7da8e3
      Dunrong Huang 提交于
      The following error occurs when building dtc module:
      
              CHK version_gen.h
               CC libfdt/fdt.o
      cc1: error: dtc: No such file or directory [-Werror]
      cc1: all warnings being treated as errors
      make[1]: *** [libfdt/fdt.o] Error 1
      make: *** [subdir-dtc] Error 2
      
      In rules.mak, "-I$(<D) -I$(@D)" was expanded to "-Idtc -I." when
      building submodule dct. Due to the using of "-Wmissing-include-dirs,
      a warning would be rarsed. To avoid it, add "-I$(<D) -I$(@D)" to
      QEMU_INCLUDES instead of QEMU_CFLAGS so that QEMU_CFLAGS does not
      contain the "-Idtc".
      
      Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
      Cc: Blue Swirl <blauwirbel@gmail.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NDunrong Huang <riegamaths@gmail.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1367247132-19622-1-git-send-email-riegamaths@gmail.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      7e7da8e3
  29. 27 4月, 2013 2 次提交
  30. 24 4月, 2013 2 次提交