make/bsd/makefiles/gcc.make
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8015252 Cdiff make/bsd/makefiles/gcc.make

make/bsd/makefiles/gcc.make

Print this page

        

*** 69,101 **** endif CXX = $(CXX32) CC = $(CC32) endif HOSTCXX = $(CXX) HOSTCC = $(CC) endif AS = $(CC) -c -x assembler-with-cpp endif ! # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only ! # prints the numbers (e.g. "2.95", "3.2.1") ! CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1) ! CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) ! ! # check for precompiled headers support ! ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" ! # Allow the user to turn off precompiled headers from the command line. ! ifneq ($(USE_PRECOMPILED_HEADER),0) ! PRECOMPILED_HEADER_DIR=. ! PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp ! PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch endif endif #------------------------------------------------------------------------ # Compiler flags # position-independent code --- 69,164 ---- endif CXX = $(CXX32) CC = $(CC32) endif + ifeq ($(USE_CLANG), true) + CXX = clang++ + CC = clang + endif + HOSTCXX = $(CXX) HOSTCC = $(CC) endif AS = $(CC) -c -x assembler-with-cpp endif ! ifeq ($(USE_CLANG), true) ! CC_VER_MAJOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f1) ! CC_VER_MINOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f2) ! else ! # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only ! # prints the numbers (e.g. "2.95", "3.2.1") ! CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1) ! CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) endif + + ifeq ($(USE_CLANG), true) + # clang has precompiled headers support by default, but the user can switch + # it off by using 'USE_PRECOMPILED_HEADER=0'. + ifdef LP64 + ifeq ($(USE_PRECOMPILED_HEADER),) + USE_PRECOMPILED_HEADER=1 + endif + else + # We don't support precompiled headers on 32-bit builds because there some files are + # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make) + # Clang produces an error if the PCH file was compiled with other options than the actual compilation unit. + USE_PRECOMPILED_HEADER=0 + endif + + ifeq ($(USE_PRECOMPILED_HEADER),1) + + ifndef LP64 + $(error " Precompiled Headers only supported on 64-bit platforms!") + endif + + PRECOMPILED_HEADER_DIR=. + PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp + PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.pch + + PCH_FLAG = -include precompiled.hpp + PCH_FLAG/DEFAULT = $(PCH_FLAG) + PCH_FLAG/NO_PCH = -DNO_PCH + PCH_FLAG/BY_FILE = $(PCH_FLAG/$@)$(PCH_FLAG/DEFAULT$(PCH_FLAG/$@)) + + VM_PCH_FLAG/LIBJVM = $(PCH_FLAG/BY_FILE) + VM_PCH_FLAG/AOUT = + VM_PCH_FLAG = $(VM_PCH_FLAG/$(LINK_INTO)) + + # We only use precompiled headers for the JVM build + CFLAGS += $(VM_PCH_FLAG) + + # There are some files which don't like precompiled headers + # The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build. + # But Clang doesn't support a precompiled header which was compiled with -O3 + # to be used in a compilation unit which uses '-O0'. We could also prepare an + # extra '-O0' PCH file for the opt build and use it here, but it's probably + # not worth the effort as long as only two files need this special handling. + PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH) + PCH_FLAG/sharedRuntimeTrig.o = $(PCH_FLAG/NO_PCH) + PCH_FLAG/sharedRuntimeTrans.o = $(PCH_FLAG/NO_PCH) + + endif + else # ($(USE_CLANG), true) + # check for precompiled headers support + ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" + # Allow the user to turn off precompiled headers from the command line. + ifneq ($(USE_PRECOMPILED_HEADER),0) + PRECOMPILED_HEADER_DIR=. + PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp + PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch + endif + endif endif + # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. + ifeq ($(USE_PRECOMPILED_HEADER),0) + CFLAGS += -DDONT_USE_PRECOMPILED_HEADER + endif #------------------------------------------------------------------------ # Compiler flags # position-independent code
*** 113,133 **** CFLAGS += $(LLVM_CFLAGS) endif CFLAGS += $(VM_PICFLAG) CFLAGS += -fno-rtti CFLAGS += -fno-exceptions ! CFLAGS += -pthread ! CFLAGS += -fcheck-new ! # version 4 and above support fvisibility=hidden (matches jni_x86.h file) ! # except 4.1.2 gives pointless warnings that can't be disabled (afaik) ! ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" ! CFLAGS += -fvisibility=hidden endif ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) ARCHFLAG/i486 = -m32 -march=i586 ! ARCHFLAG/amd64 = -m64 ARCHFLAG/ia64 = ARCHFLAG/sparc = -m32 -mcpu=v9 ARCHFLAG/sparcv9 = -m64 -mcpu=v9 ARCHFLAG/zero = $(ZERO_ARCHFLAG) --- 176,210 ---- CFLAGS += $(LLVM_CFLAGS) endif CFLAGS += $(VM_PICFLAG) CFLAGS += -fno-rtti CFLAGS += -fno-exceptions ! ifeq ($(USE_CLANG),) ! CFLAGS += -pthread ! CFLAGS += -fcheck-new ! # version 4 and above support fvisibility=hidden (matches jni_x86.h file) ! # except 4.1.2 gives pointless warnings that can't be disabled (afaik) ! ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" ! CFLAGS += -fvisibility=hidden ! endif ! else ! CFLAGS += -fvisibility=hidden ! endif ! ! ifeq ($(USE_CLANG), true) ! # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm' ! # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment') ! ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0" ! STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16 ! else ! STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16 ! endif endif ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) ARCHFLAG/i486 = -m32 -march=i586 ! ARCHFLAG/amd64 = -m64 $(STACK_ALIGNMENT_OPT) ARCHFLAG/ia64 = ARCHFLAG/sparc = -m32 -mcpu=v9 ARCHFLAG/sparcv9 = -m64 -mcpu=v9 ARCHFLAG/zero = $(ZERO_ARCHFLAG)
*** 161,178 **** # Compiler warnings are treated as errors ifneq ($(COMPILER_WARNINGS_FATAL),false) WARNINGS_ARE_ERRORS = -Werror endif ! # Except for a few acceptable ones ! # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit ! # conversions which might affect the values. To avoid that, we need to turn ! # it off explicitly. ! ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef ! else ! WARNING_FLAGS = -Wpointer-arith -Wconversion -Wsign-compare -Wundef endif CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS) # Special cases CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@)) --- 238,266 ---- # Compiler warnings are treated as errors ifneq ($(COMPILER_WARNINGS_FATAL),false) WARNINGS_ARE_ERRORS = -Werror endif ! ifeq ($(USE_CLANG), true) ! # However we need to clean the code up before we can unrestrictedly enable this option with Clang ! WARNINGS_ARE_ERRORS += -Wno-unused-value -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses ! WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-compare ! # Not yet supported by clang in Xcode 4.6.2 ! # WARNINGS_ARE_ERRORS += -Wno-tautological-constant-out-of-range-compare ! WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess ! WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body ! endif ! WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef ! ! ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" ! # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit ! # conversions which might affect the values. Only enable it in earlier versions. ! WARNING_FLAGS = -Wunused-function ! ifeq ($(USE_CLANG),) ! WARNINGS_FLAGS += -Wconversion ! endif endif CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS) # Special cases CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
*** 212,229 **** OPT_CFLAGS += -fno-expensive-optimizations endif OPT_CFLAGS/NOOPT=-O0 ! # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation. ! ifneq "$(shell expr \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) = 3 \) \))" "0" ! OPT_CFLAGS/mulnode.o += -O0 endif # Flags for generating make dependency flags. ! ifneq ("${CC_VER_MAJOR}", "2") ! DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d) endif # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. ifeq ($(USE_PRECOMPILED_HEADER),0) CFLAGS += -DDONT_USE_PRECOMPILED_HEADER --- 300,327 ---- OPT_CFLAGS += -fno-expensive-optimizations endif OPT_CFLAGS/NOOPT=-O0 ! # Work around some compiler bugs. ! ifeq ($(USE_CLANG), true) ! ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1) ! OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) ! endif ! else ! # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation. ! ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1) ! OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT) ! endif endif # Flags for generating make dependency flags. ! DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d) ! ifeq ($(USE_CLANG),) ! ifneq ($(CC_VER_MAJOR), 2) ! DEPFLAGS += -fpch-deps ! endif endif # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. ifeq ($(USE_PRECOMPILED_HEADER),0) CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
*** 247,263 **** # Linker flags # statically link libstdc++.so, work with gcc but ignored by g++ STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic ! # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x. ! ifneq ("${CC_VER_MAJOR}", "2") ! STATIC_LIBGCC += -static-libgcc ! endif ! ifeq ($(BUILDARCH), ia64) ! LFLAGS += -Wl,-relax endif # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. MAPFLAG = -Xlinker --version-script=FILENAME --- 345,363 ---- # Linker flags # statically link libstdc++.so, work with gcc but ignored by g++ STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic ! ifeq ($(USE_CLANG),) ! # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x. ! ifneq ("${CC_VER_MAJOR}", "2") ! STATIC_LIBGCC += -static-libgcc ! endif ! ifeq ($(BUILDARCH), ia64) ! LFLAGS += -Wl,-relax ! endif endif # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. MAPFLAG = -Xlinker --version-script=FILENAME
*** 294,322 **** endif #------------------------------------------------------------------------ # Debug flags ! # Use the stabs format for debugging information (this is the default ! # on gcc-2.91). It's good enough, has all the information about line ! # numbers and local variables, and libjvm.so is only about 16M. ! # Change this back to "-g" if you want the most expressive format. ! # (warning: that could easily inflate libjvm.so to 150M!) ! # Note: The Itanium gcc compiler crashes when using -gstabs. ! DEBUG_CFLAGS/ia64 = -g ! DEBUG_CFLAGS/amd64 = -g ! DEBUG_CFLAGS/arm = -g ! DEBUG_CFLAGS/ppc = -g ! DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) ! ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),) ! DEBUG_CFLAGS += -gstabs endif ! # DEBUG_BINARIES overrides everything, use full -g debug information ifeq ($(DEBUG_BINARIES), true) ! DEBUG_CFLAGS = -g ! CFLAGS += $(DEBUG_CFLAGS) endif # If we are building HEADLESS, pass on to VM # so it can set the java.awt.headless property ifdef HEADLESS --- 394,428 ---- endif #------------------------------------------------------------------------ # Debug flags ! ifeq ($(USE_CLANG), true) ! # Restrict the debug information created by Clang to avoid ! # too big object files and speed the build up a little bit ! # (see http://llvm.org/bugs/show_bug.cgi?id=7554) ! CFLAGS += -flimit-debug-info endif ! # DEBUG_BINARIES uses full -g debug information for all configs ifeq ($(DEBUG_BINARIES), true) ! CFLAGS += -g ! else ! # Use the stabs format for debugging information (this is the default ! # on gcc-2.91). It's good enough, has all the information about line ! # numbers and local variables, and libjvm.so is only about 16M. ! # Change this back to "-g" if you want the most expressive format. ! # (warning: that could easily inflate libjvm.so to 150M!) ! # Note: The Itanium gcc compiler crashes when using -gstabs. ! DEBUG_CFLAGS/ia64 = -g ! DEBUG_CFLAGS/amd64 = -g ! DEBUG_CFLAGS/arm = -g ! DEBUG_CFLAGS/ppc = -g ! DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) ! ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),) ! DEBUG_CFLAGS += -gstabs ! endif endif # If we are building HEADLESS, pass on to VM # so it can set the java.awt.headless property ifdef HEADLESS
make/bsd/makefiles/gcc.make
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File