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