Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8152067

non-fatal build error when generating precompiled.hpp.gch on linux

XMLWordPrintable

      When performing an open only build on linux, make will try to build precompiled.hpp.gch before the jvmti files have been generated which produces a non-fatal error. Later it will successfuly regenerate precompiled.hpp.gch but the error message is concerning.

      cd linux_amd64_jvmci/product && make " LP64=1 "
      make[1]: Entering directory `/home/vagrant/ws/basic-graal/jvmci/build/linux/linux_amd64_jvmci/product'
      make -f vm.make ./precompiled.hpp.gch -w
      make[2]: Entering directory `/home/vagrant/ws/basic-graal/jvmci/build/linux/linux_amd64_jvmci/product'
      Generating precompiled header precompiled.hpp.gch
      In file included from /home/vagrant/ws/basic-graal/jvmci/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp:29,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/runtime/atomic.inline.hpp:32,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/memory/allocation.inline.hpp:28,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/utilities/array.hpp:29,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/memory/universe.hpp:29,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/code/oopRecorder.hpp:28,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/asm/codeBuffer.hpp:28,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/asm/assembler.hpp:28,
                       from /home/vagrant/ws/basic-graal/jvmci/src/share/vm/precompiled/precompiled.hpp:29:
      /home/vagrant/ws/basic-graal/jvmci/src/share/vm/runtime/os.hpp:28:30: error: jvmtifiles/jvmti.h: No such file or directory

      The problem seems to be the -include of gcc.make from HS_ALT_MAKE, which of course doesn't exist in an open build. Make appears to try to figure out how to produce this gcc.make and somehow that triggers the early generation of the precompiled headers. Adding a PHONY target seems to fix this.

      diff -r 6758183dd36b make/linux/makefiles/gcc.make
      --- a/make/linux/makefiles/gcc.make Fri Feb 26 13:21:28 2016 +0100
      +++ b/make/linux/makefiles/gcc.make Thu Mar 17 02:47:43 2016 +0000
      @@ -398,3 +398,5 @@
       endif

       -include $(HS_ALT_MAKE)/linux/makefiles/gcc.make
      +
      +.PHONY: $(HS_ALT_MAKE)/linux/makefiles/gcc.make

            Unassigned Unassigned
            never Tom Rodriguez
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: