build: Put ld scripts in separate lib/lib64 directories in order to better
support multilib packages.
---
For example this puts elf32ppclinux* in $PREFIX/lib/libhugetlbfs and
elf64ppc* in $PREFIX/lib64/libhugetlbfs. This also creates a ld.hugetlbfs
in each dir which points to the appropriate ld scripts. This is already 
how some distros ship our package and others have requested the same.

NOTE: This is an RFC for two reasons:

1) Someone may know of more elaborate way to install the separate ld.hugetlbfs
   scripts without near-duplicating the make targets.

2) The ld.hugetlbfs script tries to return the highest "bit-ness" for the
   hardware, regardless of being in the 32-bit lib dir. This results in 
   trying to use a non-existant ld script when linking our "easy" way.

   e.g. export LDFLAGS="-Wl,--hugetlbfs-link=B -B/usr/local/lib/libhugetlbfs"

   We need to make ld.hugetlbfs smarter so that linking remains this easy.

diff --git a/Makefile b/Makefile
index 3868dea..8376a84 100644
--- a/Makefile
+++ b/Makefile
@@ -62,8 +62,8 @@ endif
 
 LIBDIR32 = $(PREFIX)/$(LIB32)
 LIBDIR64 = $(PREFIX)/$(LIB64)
-LDSCRIPTDIR = $(PREFIX)/share/libhugetlbfs/ldscripts
-BINDIR = $(PREFIX)/share/libhugetlbfs
+LDSCRIPTDIR32 = $(LIBDIR32)/libhugetlbfs
+LDSCRIPTDIR64 = $(LIBDIR64)/libhugetlbfs
 SBINDIR = $(PREFIX)/sbin
 DOCDIR = $(PREFIX)/share/doc/libhugetlbfs
 
@@ -73,10 +73,10 @@ EXTRA_DIST = \
        LGPL-2.1
 
 ifdef CC32
-INSTALL_LDSCRIPTS = $(foreach type,$(LDSCRIPT_TYPES),$(ELF32).x$(type))
+INSTALL_LDSCRIPTS32 = $(foreach type,$(LDSCRIPT_TYPES),$(ELF32).x$(type))
 endif
 ifdef CC64
-INSTALL_LDSCRIPTS += $(foreach type,$(LDSCRIPT_TYPES),$(ELF64).x$(type))
+INSTALL_LDSCRIPTS64 = $(foreach type,$(LDSCRIPT_TYPES),$(ELF64).x$(type))
 endif
 
 
@@ -200,32 +200,41 @@ ifeq (,$(findstring <$(MAKECMDGOALS)>,$(
 -include $(DEPFILES)
 endif
 
-obj32/install:
+obj32/install: $(INSTALL_OBJSCRIPT:%=objscript32.%)
        @$(VECHO) INSTALL32 $(LIBDIR32)
        $(INSTALL) -d $(DESTDIR)$(LIBDIR32)
        $(INSTALL) $(INSTALL_OBJ_LIBS:%=obj32/%) $(DESTDIR)$(LIBDIR32)
+       $(INSTALL) -d $(DESTDIR)$(LDSCRIPTDIR32)
+       $(INSTALL) -m 644 $(INSTALL_LDSCRIPTS32:%=ldscripts/%) \
+               $(DESTDIR)$(LDSCRIPTDIR32)
+       for x in $(INSTALL_OBJSCRIPT); do \
+               $(INSTALL) -m 755 objscript32.$$x 
$(DESTDIR)$(LDSCRIPTDIR32)/$$x; done
+       cd $(DESTDIR)$(LDSCRIPTDIR32) && ln -sf ld.hugetlbfs ld
        $(INSTALL) -d $(DESTDIR)$(SBINDIR)
        for x in $(SBINOBJS); do $(INSTALL) obj32/$$x $(DESTDIR)$(SBINDIR)/$$x; 
done
 
-obj64/install:
+obj64/install: $(INSTALL_OBJSCRIPT:%=objscript64.%)
        @$(VECHO) INSTALL64 $(LIBDIR64)
        $(INSTALL) -d $(DESTDIR)$(LIBDIR64)
        $(INSTALL) $(INSTALL_OBJ_LIBS:%=obj64/%) $(DESTDIR)$(LIBDIR64)
+       $(INSTALL) -d $(DESTDIR)$(LDSCRIPTDIR64)
+       $(INSTALL) -m 644 $(INSTALL_LDSCRIPTS64:%=ldscripts/%) \
+               $(DESTDIR)$(LDSCRIPTDIR64)
+       for x in $(INSTALL_OBJSCRIPT); do \
+               $(INSTALL) -m 755 objscript64.$$x 
$(DESTDIR)$(LDSCRIPTDIR64)/$$x; done
+       cd $(DESTDIR)$(LDSCRIPTDIR64) && ln -sf ld.hugetlbfs ld
        $(INSTALL) -d $(DESTDIR)$(SBINDIR)
        for x in $(SBINOBJS); do $(INSTALL) obj64/$$x $(DESTDIR)$(SBINDIR)/$$x; 
done
 
-objscript.%: %
+objscript32.%: %
        @$(VECHO) OBJSCRIPT $*
-       sed "s!### SET DEFAULT LDSCRIPT PATH HERE 
###!HUGETLB_LDSCRIPT_PATH=$(LDSCRIPTDIR)!" < $< > $@
+       sed "s!### SET DEFAULT LDSCRIPT PATH HERE 
###!HUGETLB_LDSCRIPT_PATH=$(LDSCRIPTDIR32)!" < $< > $@
 
-install: all $(OBJDIRS:%=%/install) $(INSTALL_OBJSCRIPT:%=objscript.%)
-       @$(VECHO) INSTALL
-       $(INSTALL) -d $(DESTDIR)$(LDSCRIPTDIR)
-       $(INSTALL) -m 644 $(INSTALL_LDSCRIPTS:%=ldscripts/%) 
$(DESTDIR)$(LDSCRIPTDIR)
-       $(INSTALL) -d $(DESTDIR)$(BINDIR)
-       for x in $(INSTALL_OBJSCRIPT); do \
-               $(INSTALL) -m 755 objscript.$$x $(DESTDIR)$(BINDIR)/$$x; done
-       cd $(DESTDIR)$(BINDIR) && ln -sf ld.hugetlbfs ld
+objscript64.%: %
+       @$(VECHO) OBJSCRIPT $*
+       sed "s!### SET DEFAULT LDSCRIPT PATH HERE 
###!HUGETLB_LDSCRIPT_PATH=$(LDSCRIPTDIR64)!" < $< > $@
+
+install: all $(OBJDIRS:%=%/install) 
 
 install-docs:
        $(INSTALL) -d $(DESTDIR)$(DOCDIR)

-- 

Steve Fox
IBM Linux Technology Center

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Libhugetlbfs-devel mailing list
Libhugetlbfs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel

Reply via email to