]> git.proxmox.com Git - mirror_edk2.git/commitdiff
EmulatorPkg Linux: Improve detection of libraries for host executable
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 31 Oct 2011 15:56:28 +0000 (15:56 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 31 Oct 2011 15:56:28 +0000 (15:56 +0000)
build.sh will detect the locations of the libraries required by
the host executable, and sets the HOST_DLINK_PATHS environment
variable.

In EmulatorPkg/Unix/Host/Host.inf, this environment variable is
used in the linking build step.

Signed-off-by: jljusten
Reviewed-by: andrewfish
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12612 6f19259b-4bc3-4df7-8a09-765794883524

EmulatorPkg/Unix/Host/Host.inf
EmulatorPkg/build.sh

index c2d16697c90e34413cd5cf735dc72ac90c921ebc..018ed8673f2897138cbc68482584f21b3731a102 100644 (file)
 \r
 \r
 [BuildOptions]\r
-   GCC:*_*_IA32_DLINK_FLAGS == -o $(BIN_DIR)/Host -m elf_i386 -dynamic-linker /lib$(LIB_ARCH_SFX)/ld-linux.so.2 /usr/lib$(LIB_ARCH_SFX)/crt1.o /usr/lib$(LIB_ARCH_SFX)/crti.o -L/usr/X11R6/lib -lXext -lX11 /usr/lib$(LIB_ARCH_SFX)/crtn.o\r
-   GCC:*_*_*_DLINK2_FLAGS == -lpthread -lc\r
+   GCC:*_*_IA32_DLINK_FLAGS == -o $(BIN_DIR)/Host -m elf_i386 -dynamic-linker $(HOST_DLINK_PATHS) -L/usr/X11R6/lib -lXext -lX11\r
    GCC:*_*_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings\r
    GCC:*_*_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
    GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h\r
 \r
-   GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -m elf_x86_64 -dynamic-linker /lib$(LIB_ARCH_SFX)/ld-linux-x86-64.so.2 /usr/lib$(LIB_ARCH_SFX)/crt1.o /usr/lib$(LIB_ARCH_SFX)/crti.o -L/usr/X11R6/lib -lXext -lX11 /usr/lib$(LIB_ARCH_SFX)/crtn.o\r
+   GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -m elf_x86_64 -dynamic-linker $(HOST_DLINK_PATHS) -L/usr/X11R6/lib -lXext -lX11\r
    GCC:*_*_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings\r
    GCC:*_GCC44_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"\r
    GCC:*_GCC45_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"\r
+   GCC:*_GCC46_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"\r
    GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
    GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h\r
 \r
+   GCC:*_*_*_DLINK2_FLAGS == -lpthread -lc\r
+\r
 #\r
 # Need to do this link via gcc and not ld as the pathing to libraries changes from OS version to OS version\r
 #\r
index 06ec37a4c167740e3a928e5d79a74ceb10f3a980..ecf56e640201cf96ae1dd620391963eb4a7dbce4 100755 (executable)
@@ -159,19 +159,27 @@ case $PROCESSOR in
   IA32)
     ARCH_SIZE=32
     BUILD_OUTPUT_DIR=$WORKSPACE/Build/Emulator32
-    if [ -d /lib32 ]; then
-      export LIB_ARCH_SFX=32
-    fi
+    LIB_NAMES="ld-linux.so.2 crt1.o crti.o crtn.o"
+    LIB_SEARCH_PATHS="/usr/lib/i386-linux-gnu /usr/lib32 /lib32 /usr/lib /lib"
     ;;
   X64)
     ARCH_SIZE=64
     BUILD_OUTPUT_DIR=$WORKSPACE/Build/Emulator
-    if [ -d /lib64 ]; then
-      export LIB_ARCH_SFX=64
-    fi
+    LIB_NAMES="ld-linux-x86-64.so.2 crt1.o crti.o crtn.o"
+    LIB_SEARCH_PATHS="/usr/lib/x86_64-linux-gnu /usr/lib64 /lib64 /usr/lib /lib"
     ;;
 esac
 
+for libname in $LIB_NAMES
+do
+  for dirname in $LIB_SEARCH_PATHS
+  do
+    if [ -e $dirname/$libname ]; then
+      export HOST_DLINK_PATHS="$HOST_DLINK_PATHS $dirname/$libname"
+      break
+    fi
+  done
+done
 
 PLATFORMFILE=$WORKSPACE/EmulatorPkg/EmulatorPkg.dsc
 BUILD_ROOT_ARCH=$BUILD_OUTPUT_DIR/DEBUG_"$TARGET_TOOLS"/$PROCESSOR