[llvm-commits] [llvm] r79296 - in /llvm/trunk: Makefile.config.in Makefile.rules autoconf/configure.ac lib/Transforms/Makefile test/Makefile test/lib/llvm2cpp.exp tools/Makefile tools/lto/Makefile utils/unittest/googletest/Makefile

Anton Korobeynikov asl at math.spbu.ru
Mon Aug 17 17:40:33 PDT 2009


Author: asl
Date: Mon Aug 17 19:40:33 2009
New Revision: 79296

URL: http://llvm.org/viewvc/llvm-project?rev=79296&view=rev
Log:
The attached patches attempt to fix cross builds. For example, if you
try to use i686-darwin to build for arm-eabi, you'll quickly run into
several false assumptions that the target OS must be the same as the
host OS. These patches split $(OS) into $(HOST_OS) and $(TARGET_OS) to
help builds like "make check" and the test-suite able to cross
compile. Along the way a target of *-unknown-eabi is defined as
"Freestanding" so that TARGET_OS checks have something to work with.

Patch by Sandeep Patel!

Modified:
    llvm/trunk/Makefile.config.in
    llvm/trunk/Makefile.rules
    llvm/trunk/autoconf/configure.ac
    llvm/trunk/lib/Transforms/Makefile
    llvm/trunk/test/Makefile
    llvm/trunk/test/lib/llvm2cpp.exp
    llvm/trunk/tools/Makefile
    llvm/trunk/tools/lto/Makefile
    llvm/trunk/utils/unittest/googletest/Makefile

Modified: llvm/trunk/Makefile.config.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/Makefile.config.in (original)
+++ llvm/trunk/Makefile.config.in Mon Aug 17 19:40:33 2009
@@ -89,8 +89,11 @@
 LLVM_ON_UNIX:=@LLVM_ON_UNIX@
 LLVM_ON_WIN32:=@LLVM_ON_WIN32@
 
-# Target operating system for which LLVM will be compiled.
+# Host operating system for which LLVM will be run.
 OS=@OS@
+HOST_OS=@HOST_OS@
+# Target operating system for which LLVM will compile for.
+TARGET_OS=@TARGET_OS@
 
 # Target hardware architecture
 ARCH=@ARCH@
@@ -128,6 +131,7 @@
 
 # Path to the library archiver program.
 AR_PATH = @AR@
+AR = @AR@
 
 # Path to the nm program
 NM_PATH = @NM@

Modified: llvm/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/Makefile.rules (original)
+++ llvm/trunk/Makefile.rules Mon Aug 17 19:40:33 2009
@@ -287,7 +287,7 @@
 # OPTIMIZE_OPTION - The optimization level option we want to build LLVM with
 # this can be overridden on the make command line.
 ifndef OPTIMIZE_OPTION
-  ifneq ($(OS),MingW)
+  ifneq ($(HOST_OS),MingW)
     OPTIMIZE_OPTION := -O3
   else
     OPTIMIZE_OPTION := -O2
@@ -297,8 +297,8 @@
 ifeq ($(ENABLE_OPTIMIZED),1)
   BuildMode := Release
   # Don't use -fomit-frame-pointer on Darwin or FreeBSD.
-  ifneq ($(OS),FreeBSD)
-  ifneq ($(OS),Darwin)
+  ifneq ($(HOST_OS),FreeBSD)
+  ifneq ($(HOST_OS),Darwin)
     OmitFramePointer := -fomit-frame-pointer
   endif
   endif
@@ -306,7 +306,7 @@
   # Darwin requires -fstrict-aliasing to be explicitly enabled.
   # Avoid -fstrict-aliasing on Darwin for now, there are unresolved issues
   # with -fstrict-aliasing and ipa-type-escape radr://6756684
-  #ifeq ($(OS),Darwin)
+  #ifeq ($(HOST_OS),Darwin)
   #  EXTRA_OPTIONS += -fstrict-aliasing -Wstrict-aliasing
   #endif
   CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer)
@@ -379,10 +379,10 @@
 endif
 
 ifeq ($(ENABLE_PIC),1)
-  ifeq ($(OS), $(filter $(OS), Cygwin MingW))
+  ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
     # Nothing. Win32 defaults to PIC and warns when given -fPIC
   else
-    ifeq ($(OS),Darwin)
+    ifeq ($(HOST_OS),Darwin)
       # Common symbols not allowed in dylib files
       CXX.Flags += -fno-common
       C.Flags   += -fno-common
@@ -393,7 +393,7 @@
     endif
   endif
 else
-  ifeq ($(OS),Darwin)
+  ifeq ($(HOST_OS),Darwin)
       CXX.Flags += -mdynamic-no-pic
       C.Flags   += -mdynamic-no-pic
   endif
@@ -420,7 +420,7 @@
   LD.Flags += -Wl,--no-relax
 endif
 
-ifeq ($(OS),MingW)
+ifeq ($(HOST_OS),MingW)
   ifeq ($(LLVM_CROSS_COMPILING),1)
     # Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=525016
     ifdef TOOLNAME
@@ -502,7 +502,7 @@
 # Adjust to user's request
 #--------------------------------------------------------------------
 
-ifeq ($(OS),Darwin)
+ifeq ($(HOST_OS),Darwin)
   DARWIN_VERSION := `sw_vers -productVersion`
   # Strip a number like 10.4.7 to 10.4
   DARWIN_VERSION := $(shell echo $(DARWIN_VERSION)| sed -E 's/(10.[0-9]).*/\1/')
@@ -511,9 +511,8 @@
 
   SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined -Wl,suppress \
                     -dynamiclib -mmacosx-version-min=$(DARWIN_VERSION)
-  TargetCommonOpts += -mmacosx-version-min=$(DARWIN_VERSION)
 else
-  ifeq ($(OS),Cygwin)
+  ifeq ($(HOST_OS),Cygwin)
     SharedLinkOptions=-shared -nostdlib -Wl,--export-all-symbols \
                       -Wl,--enable-auto-import -Wl,--enable-auto-image-base
   else
@@ -521,6 +520,10 @@
   endif
 endif
 
+ifeq ($(TARGET_OS),Darwin)
+  TargetCommonOpts += -mmacosx-version-min=$(DARWIN_VERSION)
+endif
+
 # Adjust LD.Flags depending on the kind of library that is to be built. Note
 # that if LOADABLE_MODULE is specified then the resulting shared library can
 # be opened with dlopen.
@@ -558,7 +561,7 @@
 endif
 
 # Adjust linker flags for building an executable
-ifneq ($(OS),Darwin)
+ifneq ($(HOST_OS),Darwin)
 ifneq ($(DARWIN_MAJVERS),4)
 ifdef TOOLNAME
 ifdef EXAMPLE_TOOL
@@ -580,7 +583,7 @@
 CompileCommonOpts += -Wall -W -Wno-unused-parameter -Wwrite-strings \
                      $(EXTRA_OPTIONS)
 
-ifeq ($(OS),HP-UX)
+ifeq ($(HOST_OS),HP-UX)
   CompileCommonOpts := -D_REENTRANT -D_HPUX_SOURCE
 endif
 
@@ -608,7 +611,7 @@
   # Building universal cannot compute dependencies automatically.
   DISABLE_AUTO_DEPENDENCIES=1
 else
-  ifeq ($(OS),Darwin)
+  ifeq ($(TARGET_OS),Darwin)
     ifeq ($(ARCH),x86_64)
       TargetCommonOpts = -m64
     else
@@ -619,7 +622,7 @@
   endif
 endif
 
-ifeq ($(OS),SunOS)
+ifeq ($(HOST_OS),SunOS)
 CPP.BaseFlags += -include llvm/System/Solaris.h
 endif
 
@@ -1172,7 +1175,7 @@
 # not exporting all of the weak symbols from the binary.  This reduces dyld
 # startup time by 4x on darwin in some cases.
 ifdef TOOL_NO_EXPORTS
-ifeq ($(OS),Darwin)
+ifeq ($(HOST_OS),Darwin)
 
 # Tiger tools don't support this.
 ifneq ($(DARWIN_MAJVERS),4)
@@ -1180,7 +1183,7 @@
 endif
 endif
 
-ifeq ($(OS), $(filter $(OS), Linux NetBSD FreeBSD))
+ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux NetBSD FreeBSD))
 LD.Flags += -Wl,--version-script=$(LLVM_SRC_ROOT)/autoconf/ExportMap.map
 endif
 endif
@@ -1234,7 +1237,7 @@
 ###############################################################################
 
 # FIXME: This should be checking for "if not GCC or ICC", not for "if HP-UX"
-ifeq ($(OS),HP-UX)
+ifeq ($(HOST_OS),HP-UX)
   DISABLE_AUTO_DEPENDENCIES=1
 endif
 

Modified: llvm/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/autoconf/configure.ac (original)
+++ llvm/trunk/autoconf/configure.ac Mon Aug 17 19:40:33 2009
@@ -175,6 +175,16 @@
     llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
     llvm_cv_os_type="MingW"
     llvm_cv_platform_type="Win32" ;;
+  *-unknown-eabi*)
+    llvm_cv_link_all_option="-Wl,--whole-archive"
+    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
+    llvm_cv_os_type="Freestanding"
+    llvm_cv_platform_type="Unix" ;;
+  *-unknown-elf*)
+    llvm_cv_link_all_option="-Wl,--whole-archive"
+    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
+    llvm_cv_os_type="Freestanding"
+    llvm_cv_platform_type="Unix" ;;
   *)
     llvm_cv_link_all_option=""
     llvm_cv_no_link_all_option=""
@@ -182,6 +192,43 @@
     llvm_cv_platform_type="Unknown" ;;
 esac])
 
+AC_CACHE_CHECK([type of operating system we're going to target],
+               [llvm_cv_target_os_type],
+[case $target in
+  *-*-aix*)
+    llvm_cv_target_os_type="AIX" ;;
+  *-*-irix*)
+    llvm_cv_target_os_type="IRIX" ;;
+  *-*-cygwin*)
+    llvm_cv_target_os_type="Cygwin" ;;
+  *-*-darwin*)
+    llvm_cv_target_os_type="Darwin" ;;
+  *-*-freebsd*)
+    llvm_cv_target_os_type="FreeBSD" ;;
+  *-*-openbsd*)
+    llvm_cv_target_os_type="OpenBSD" ;;
+  *-*-netbsd*)
+    llvm_cv_target_os_type="NetBSD" ;;
+  *-*-dragonfly*)
+    llvm_cv_target_os_type="DragonFly" ;;
+  *-*-hpux*)
+    llvm_cv_target_os_type="HP-UX" ;;
+  *-*-interix*)
+    llvm_cv_target_os_type="Interix" ;;
+  *-*-linux*)
+    llvm_cv_target_os_type="Linux" ;;
+  *-*-solaris*)
+    llvm_cv_target_os_type="SunOS" ;;
+  *-*-win32*)
+    llvm_cv_target_os_type="Win32" ;;
+  *-*-mingw*)
+    llvm_cv_target_os_type="MingW" ;;
+  *-unknown-eabi*)
+    llvm_cv_target_os_type="Freestanding" ;;
+  *)
+    llvm_cv_target_os_type="Unknown" ;;
+esac])
+
 dnl Make sure we aren't attempting to configure for an unknown system
 if test "$llvm_cv_os_type" = "Unknown" ; then
   AC_MSG_ERROR([Operating system is unknown, configure can't continue])
@@ -190,6 +237,8 @@
 dnl Set the "OS" Makefile variable based on the platform type so the
 dnl makefile can configure itself to specific build hosts
 AC_SUBST(OS,$llvm_cv_os_type)
+AC_SUBST(HOST_OS,$llvm_cv_os_type)
+AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
 
 dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
 AC_SUBST(LINKALL,$llvm_cv_link_all_option)

Modified: llvm/trunk/lib/Transforms/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Makefile?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Makefile (original)
+++ llvm/trunk/lib/Transforms/Makefile Mon Aug 17 19:40:33 2009
@@ -13,7 +13,7 @@
 include $(LEVEL)/Makefile.config
 
 # No support for plugins on windows targets
-ifeq ($(OS), $(filter $(OS), Cygwin MingW))
+ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
   PARALLEL_DIRS := $(filter-out Hello, $(PARALLEL_DIRS))
 endif
 

Modified: llvm/trunk/test/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Makefile?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/test/Makefile (original)
+++ llvm/trunk/test/Makefile Mon Aug 17 19:40:33 2009
@@ -53,7 +53,7 @@
 endif
 
 # Both AuroraUX & Solaris do not have the -m flag for ulimit
-ifeq ($(OS),SunOS)
+ifeq ($(HOST_OS),SunOS)
 ULIMIT=ulimit -t 600 ; ulimit -d 512000 ; ulimit -v 512000 ;
 else
 ULIMIT=ulimit -t 600 ; ulimit -d 512000 ; ulimit -m 512000 ; ulimit -v 512000 ;
@@ -93,7 +93,7 @@
 	$(RM) -rf `find $(LLVM_OBJ_ROOT)/test -name Output -type d -print`
 
 # dsymutil is used on the Darwin to manipulate DWARF debugging information.
-ifeq ($(OS),Darwin)
+ifeq ($(TARGET_OS),Darwin)
 DSYMUTIL=dsymutil
 else
 DSYMUTIL=true

Modified: llvm/trunk/test/lib/llvm2cpp.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/lib/llvm2cpp.exp?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/test/lib/llvm2cpp.exp (original)
+++ llvm/trunk/test/lib/llvm2cpp.exp Mon Aug 17 19:40:33 2009
@@ -73,7 +73,7 @@
     }
 
     set retval [ catch { 
-      exec -keepnewline gcc -g -D__STDC_LIMIT_MACROS -o $executable $generated -I$srcroot/include -I$objroot/include -L$llvmlibsdir -lLLVMCore -lLLVMSupport -lLLVMbzip2 -lLLVMSystem -lstdc++ } msg ] 
+      exec -keepnewline gcc -g -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -o $executable $generated -I$srcroot/include -I$objroot/include -L$llvmlibsdir -lLLVMCore -lLLVMSupport -lLLVMSystem -lstdc++ } msg ] 
     if { $retval != 0 } {
       fail "$test: gcc returned $retval\n$msg"
       continue

Modified: llvm/trunk/tools/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/Makefile?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/tools/Makefile (original)
+++ llvm/trunk/tools/Makefile Mon Aug 17 19:40:33 2009
@@ -39,7 +39,7 @@
 endif
 
 # No support for lto / gold on windows targets
-ifeq ($(OS), $(filter $(OS), Cygwin MingW))
+ifeq ($(TARGET_OS), $(filter $(TARGET_OS), Cygwin MingW))
   DIRS := $(filter-out lto gold, $(DIRS))
 endif
 

Modified: llvm/trunk/tools/lto/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/Makefile?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/tools/lto/Makefile (original)
+++ llvm/trunk/tools/lto/Makefile Mon Aug 17 19:40:33 2009
@@ -22,7 +22,7 @@
 
 include $(LEVEL)/Makefile.common
 
-ifeq ($(OS),Darwin)
+ifeq ($(HOST_OS),Darwin)
     # set dylib internal version number to llvmCore submission number
     ifdef LLVM_SUBMIT_VERSION
         LLVMLibsOptions := $(LLVMLibsOptions) -Wl,-current_version \

Modified: llvm/trunk/utils/unittest/googletest/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/unittest/googletest/Makefile?rev=79296&r1=79295&r2=79296&view=diff

==============================================================================
--- llvm/trunk/utils/unittest/googletest/Makefile (original)
+++ llvm/trunk/utils/unittest/googletest/Makefile Mon Aug 17 19:40:33 2009
@@ -18,7 +18,7 @@
 CPP.Flags += -I$(LLVM_SRC_ROOT)/utils/unittest/googletest/include
 CPP.Flags += $(NO_MISSING_FIELD_INITIALIZERS) $(NO_VARIADIC_MACROS)
 
-ifeq ($(OS),MingW)
+ifeq ($(HOST_OS),MingW)
   CPP.Flags += -DGTEST_OS_WINDOWS=1
 endif
 





More information about the llvm-commits mailing list