Blame Makefile

Packit 2d622a
PREFIX ?= /usr/local
Packit 2d622a
EXEDIR ?= /bin
Packit 2d622a
Packit 2d622a
LIBOBJS = hugeutils.o version.o init.o morecore.o debug.o alloc.o shm.o kernel-features.o
Packit 2d622a
LIBPUOBJS = init_privutils.o debug.o hugeutils.o kernel-features.o
Packit 2d622a
INSTALL_OBJ_LIBS = libhugetlbfs.so libhugetlbfs.a libhugetlbfs_privutils.so
Packit 2d622a
BIN_OBJ_DIR=obj
Packit 2d622a
INSTALL_BIN = hugectl hugeedit hugeadm pagesize
Packit 2d622a
INSTALL_HELPER = huge_page_setup_helper.py
Packit 2d622a
INSTALL_PERLMOD = DataCollect.pm OpCollect.pm PerfCollect.pm Report.pm
Packit 2d622a
INSTALL_HEADERS = hugetlbfs.h
Packit 2d622a
INSTALL_MAN1 = ld.hugetlbfs.1 pagesize.1
Packit 2d622a
INSTALL_MAN3 = get_huge_pages.3 get_hugepage_region.3 gethugepagesize.3 \
Packit 2d622a
		gethugepagesizes.3 getpagesizes.3 hugetlbfs_find_path.3 \
Packit 2d622a
		hugetlbfs_test_path.3 hugetlbfs_unlinked_fd.3
Packit 2d622a
INSTALL_MAN7 = libhugetlbfs.7
Packit 479d14
INSTALL_MAN8 = hugectl.8 hugeedit.8 hugeadm.8
Packit 2d622a
LDSCRIPT_TYPES = B BDT
Packit 2d622a
LDSCRIPT_DIST_ELF = elf32ppclinux elf64ppc elf_i386 elf_x86_64
Packit 2d622a
INSTALL_OBJSCRIPT = ld.hugetlbfs
Packit 2d622a
VERSION=version.h
Packit 2d622a
SOURCE = $(shell find . -maxdepth 1 ! -name version.h -a -name '*.[h]')
Packit 2d622a
SOURCE += *.c *.lds Makefile
Packit 2d622a
NODEPTARGETS=<version.h> <clean>
Packit 2d622a
Packit 2d622a
INSTALL = install
Packit 2d622a
Packit 2d622a
LDFLAGS += -ldl
Packit 2d622a
CFLAGS ?= -O2 -g
Packit 2d622a
CFLAGS += -Wall -fPIC
Packit 2d622a
CPPFLAGS += -D__LIBHUGETLBFS__
Packit 2d622a
Packit 2d622a
ARCH ?= $(shell uname -m | sed -e s/i.86/i386/)
Packit 2d622a
CC ?= gcc
Packit 2d622a
Packit 2d622a
CUSTOM_LDSCRIPTS = yes
Packit 2d622a
Packit 2d622a
ifeq ($(ARCH),ppc64)
Packit 2d622a
CC64 = $(CC) -m64
Packit 2d622a
ELF64 = elf64ppc
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
ifneq ($(BUILDTYPE),NATIVEONLY)
Packit 2d622a
CC32 = $(CC) -m32
Packit 2d622a
ELF32 = elf32ppclinux
Packit 2d622a
endif
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),ppc64le)
Packit 2d622a
CC64 = $(CC) -m64
Packit 2d622a
ELF64 = elf64lppc
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
CUSTOM_LDSCRIPTS = no
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),ppc)
Packit 2d622a
CC32 = $(CC) -m32
Packit 2d622a
ELF32 = elf32ppclinux
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
CPPFLAGS += -DPPC_NO_SEGMENTS
Packit 2d622a
else
Packit 2d622a
ifneq (,$(findstring arm,$(ARCH)))
Packit 2d622a
CC32 = $(CC)
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
ELF32 += armelf_linux_eabi
Packit 2d622a
CUSTOM_LDSCRIPTS = no
Packit 2d622a
else
Packit 2d622a
ifneq (,$(findstring aarch64,$(ARCH)))
Packit 2d622a
CC64 = $(CC)
Packit 2d622a
ELF64 = aarch64elf
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
CUSTOM_LDSCRIPTS = no
Packit 2d622a
else
Packit 2d622a
ifneq (,$(filter i386 i486 i586 i686,$(ARCH)))
Packit 2d622a
CC32 = $(CC)
Packit 2d622a
ELF32 = elf_i386
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),x86_64)
Packit 2d622a
CC64 = $(CC) -m64
Packit 2d622a
ELF64 = elf_x86_64
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
ifneq ($(BUILDTYPE),NATIVEONLY)
Packit 2d622a
CC32 = $(CC) -m32
Packit 2d622a
ELF32 = elf_i386
Packit 2d622a
endif
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),ia64)
Packit 2d622a
CC64 = $(CC)
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
CFLAGS += -DNO_ELFLINK
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),sparc64)
Packit 2d622a
CC64 = $(CC) -m64
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
CFLAGS += -DNO_ELFLINK
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),s390x)
Packit 2d622a
CC64 = $(CC) -m64
Packit 2d622a
ELF64 = elf64_s390
Packit 2d622a
TMPLIB64 = lib64
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
CUSTOM_LDSCRIPTS = no
Packit 2d622a
ifneq ($(BUILDTYPE),NATIVEONLY)
Packit 2d622a
CC32 = $(CC) -m31
Packit 2d622a
ELF32 = elf_s390
Packit 2d622a
endif
Packit 2d622a
else
Packit 2d622a
ifeq ($(ARCH),s390)
Packit 2d622a
CC32 = $(CC) -m31
Packit 2d622a
ELF32 = elf_s390
Packit 2d622a
TMPLIB32 = lib
Packit 2d622a
CUSTOM_LDSCRIPTS = no
Packit 2d622a
else
Packit 2d622a
$(error "Unrecognized architecture ($(ARCH))")
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
ifdef CC32
Packit 2d622a
OBJDIRS += obj32
Packit 2d622a
endif
Packit 2d622a
ifdef CC64
Packit 2d622a
OBJDIRS +=  obj64
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
ifdef CC64
Packit 2d622a
CCBIN = $(CC64)
Packit 2d622a
else
Packit 2d622a
CCBIN = $(CC32)
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
ifdef ELF32
Packit 2d622a
LIBOBJS32 = obj32/elflink.o obj32/sys-$(ELF32).o
Packit 2d622a
endif
Packit 2d622a
ifdef ELF64
Packit 2d622a
LIBOBJS64 = obj64/elflink.o obj64/sys-$(ELF64).o
Packit 2d622a
endif
Packit 2d622a
ifeq ($(ELF32),elf32ppclinux)
Packit 2d622a
LIBOBJS32 += obj32/$(ELF32).o
Packit 2d622a
endif
Packit 2d622a
ifeq ($(ELF64),elf64ppc)
Packit 2d622a
LIBOBJS64 += obj64/$(ELF64).o
Packit 2d622a
endif
Packit 2d622a
ifeq ($(ELF64),elf64lppc)
Packit 2d622a
LIBOBJS64 += obj64/$(ELF64).o
Packit 2d622a
endif
Packit 2d622a
LIBOBJS32 += $(LIBOBJS:%=obj32/%)
Packit 2d622a
LIBOBJS64 += $(LIBOBJS:%=obj64/%)
Packit 2d622a
Packit 2d622a
ifeq ($(LIB32),)
Packit 2d622a
LIB32 = $(TMPLIB32)
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
ifdef TMPLIB64
Packit 2d622a
ifeq ($(LIB64),)
Packit 2d622a
LIB64 = $(TMPLIB64)
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
ifeq ($(CUSTOM_LDSCRIPTS),yes)
Packit 2d622a
TEST_LDSCRIPTS = -l
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
# If TMPLIB64 is set, then sure we are not resolving LIB32 and LIB64 to the
Packit 2d622a
# same place
Packit 2d622a
ifdef TMPLIB64
Packit 2d622a
Packit 2d622a
REALLIB32 = $(realpath $(PREFIX)/$(LIB32))
Packit 2d622a
REALLIB64 = $(realpath $(PREFIX)/$(LIB64))
Packit 2d622a
ifneq ($(realpath $(PREFIX)),)
Packit 2d622a
ifeq ($(REALLIB32),$(REALLIB64))
Packit 2d622a
$(error LIB32 ($(PREFIX)/$(LIB32) to $(REALLIB32)) and LIB64 ($(PREFIX)/$(LIB64) to $(REALLIB64)) are resolving to the same place. Manually specify LIB32 and LIB64. e.g. make PREFIX=$(PREFIX) LIB32=lib32 LIB64=lib64)
Packit 2d622a
endif
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
HEADERDIR = $(PREFIX)/include
Packit 2d622a
LIBDIR32 = $(PREFIX)/$(LIB32)
Packit 2d622a
LIBDIR64 = $(PREFIX)/$(LIB64)
Packit 2d622a
LDSCRIPTDIR = $(PREFIX)/share/libhugetlbfs/ldscripts
Packit 2d622a
BINDIR = $(PREFIX)/share/libhugetlbfs
Packit 2d622a
EXEDIR = $(PREFIX)/bin
Packit 2d622a
DOCDIR = $(PREFIX)/share/doc/libhugetlbfs
Packit 2d622a
MANDIR1 = $(PREFIX)/share/man/man1
Packit 2d622a
MANDIR3 = $(PREFIX)/share/man/man3
Packit 2d622a
MANDIR7 = $(PREFIX)/share/man/man7
Packit 2d622a
MANDIR8 = $(PREFIX)/share/man/man8
Packit 2d622a
Packit 2d622a
ifdef LIB32
Packit 2d622a
LIBPATHS += -DLIB32='"$(LIB32)"' -DLIBDIR32='"$(LIBDIR32)"'
Packit 2d622a
endif
Packit 2d622a
ifdef LIB64
Packit 2d622a
LIBPATHS += -DLIB64='"$(LIB64)"' -DLIBDIR64='"$(LIBDIR64)"'
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
EXTRA_DIST = \
Packit 2d622a
	README \
Packit 2d622a
	HOWTO \
Packit 2d622a
	LGPL-2.1
Packit 2d622a
Packit 2d622a
INSTALL_LDSCRIPTS = $(foreach type,$(LDSCRIPT_TYPES),$(LDSCRIPT_DIST_ELF:%=%.x$(type)))
Packit 2d622a
Packit 2d622a
ifdef V
Packit 2d622a
VECHO = :
Packit 2d622a
else
Packit 2d622a
VECHO = echo "	"
Packit 2d622a
ARFLAGS = rc
Packit 2d622a
.SILENT:
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
DEPFILES = $(LIBOBJS:%.o=%.d)
Packit 2d622a
Packit 2d622a
export ARCH
Packit 2d622a
export OBJDIRS
Packit 2d622a
export CC32
Packit 2d622a
export CC64
Packit 2d622a
export ELF32
Packit 2d622a
export ELF64
Packit 2d622a
export LIBDIR32
Packit 2d622a
export LIBDIR64
Packit 2d622a
export CUSTOM_LDSCRIPTS
Packit 2d622a
Packit 2d622a
all:	libs tests tools
Packit 2d622a
Packit 2d622a
.PHONY:	tests libs
Packit 2d622a
Packit 2d622a
libs:	$(foreach file,$(INSTALL_OBJ_LIBS),$(OBJDIRS:%=%/$(file))) $(BIN_OBJ_DIR)/libhugetlbfs_privutils.a
Packit 2d622a
Packit 2d622a
tests:	libs # Force make to build the library first
Packit 2d622a
tests:	tests/all
Packit 2d622a
Packit 2d622a
tests/%: libs
Packit 2d622a
	$(MAKE) -C tests $*
Packit 2d622a
Packit 2d622a
tools:  $(foreach file,$(INSTALL_BIN),$(BIN_OBJ_DIR)/$(file))
Packit 2d622a
Packit 2d622a
check:	all
Packit 2d622a
	cd tests; ./run_tests.py $(TEST_LDSCRIPTS)
Packit 2d622a
Packit 2d622a
checkv:	all
Packit 2d622a
	cd tests; ./run_tests.py -vV $(TEST_LDSCRIPTS)
Packit 2d622a
Packit 2d622a
func:	all
Packit 2d622a
	cd tests; ./run_tests.py -t func $(TEST_LDSCRIPTS)
Packit 2d622a
Packit 2d622a
funcv:	all
Packit 2d622a
	cd tests; ./run_tests.py -t func -vV $(TEST_LDSCRIPTS)
Packit 2d622a
Packit 2d622a
stress:	all
Packit 2d622a
	cd tests; ./run_tests.py -t stress
Packit 2d622a
Packit 2d622a
stressv: all
Packit 2d622a
	cd tests; ./run_tests.py -t stress -vV
Packit 2d622a
Packit 2d622a
# Don't want to remake objects just 'cos the directory timestamp changes
Packit 2d622a
$(OBJDIRS): %:
Packit 2d622a
	@mkdir -p $@
Packit 2d622a
Packit 2d622a
# <Version handling>
Packit 2d622a
$(VERSION): always
Packit 2d622a
	@$(VECHO) VERSION
Packit 2d622a
	./localversion version $(SOURCE)
Packit 2d622a
always:
Packit 2d622a
# </Version handling>
Packit 2d622a
Packit 2d622a
snapshot: $(VERSION)
Packit 2d622a
Packit 2d622a
.SECONDARY:
Packit 2d622a
Packit 2d622a
obj32/%.o: %.c
Packit 2d622a
	@$(VECHO) CC32 $@
Packit 2d622a
	@mkdir -p obj32
Packit 2d622a
	$(CC32) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
Packit 2d622a
Packit 2d622a
obj64/%.o: %.c
Packit 2d622a
	@$(VECHO) CC64 $@
Packit 2d622a
	@mkdir -p obj64
Packit 2d622a
	$(CC64) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
Packit 2d622a
Packit 2d622a
obj32/%.o: %.S
Packit 2d622a
	@$(VECHO) AS32 $@
Packit 2d622a
	@mkdir -p obj32
Packit 2d622a
	$(CC32) $(CPPFLAGS) -o $@ -c $<
Packit 2d622a
Packit 2d622a
obj64/%.o: %.S
Packit 2d622a
	@$(VECHO) AS64 $@
Packit 2d622a
	@mkdir -p obj64
Packit 2d622a
	$(CC64) $(CPPFLAGS) -o $@ -c $<
Packit 2d622a
Packit 2d622a
obj32/libhugetlbfs.a: $(LIBOBJS32)
Packit 2d622a
	@$(VECHO) AR32 $@
Packit 2d622a
	$(AR) $(ARFLAGS) $@ $^
Packit 2d622a
Packit 2d622a
obj64/libhugetlbfs.a: $(LIBOBJS64)
Packit 2d622a
	@$(VECHO) AR64 $@
Packit 2d622a
	$(AR) $(ARFLAGS) $@ $^
Packit 2d622a
Packit 2d622a
obj32/libhugetlbfs.so: $(LIBOBJS32)
Packit 2d622a
	@$(VECHO) LD32 "(shared)" $@
Packit 2d622a
	$(CC32) $(LDFLAGS) -Wl,--version-script=version.lds -Wl,-soname,$(notdir $@) -shared -o $@ $^ $(LDLIBS)
Packit 2d622a
Packit 2d622a
obj64/libhugetlbfs.so: $(LIBOBJS64)
Packit 2d622a
	@$(VECHO) LD64 "(shared)" $@
Packit 2d622a
	$(CC64) $(LDFLAGS) -Wl,--version-script=version.lds -Wl,-soname,$(notdir $@) -shared -o $@ $^ $(LDLIBS)
Packit 2d622a
Packit 2d622a
#obj32/libhugetlbfs_privutils.a: $(LIBPUOBJS:%=obj32/%)
Packit 2d622a
#	@$(VECHO) AR32 $@
Packit 2d622a
#	$(AR) $(ARFLAGS) $@ $^
Packit 2d622a
#
Packit 2d622a
#obj64/libhugetlbfs_privutils.a: $(LIBPUOBJS:%=obj64/%)
Packit 2d622a
#	@$(VECHO) AR64 $@
Packit 2d622a
#	$(AR) $(ARFLAGS) $@ $^
Packit 2d622a
Packit 2d622a
$(BIN_OBJ_DIR)/libhugetlbfs_privutils.a: $(LIBPUOBJS:%=$(BIN_OBJ_DIR)/%)
Packit 2d622a
	@$(VECHO) ARHOST $@
Packit 2d622a
	$(AR) $(ARFLAGS) $@ $^
Packit 2d622a
Packit 2d622a
obj32/libhugetlbfs_privutils.so: $(LIBPUOBJS:%=obj32/%)
Packit 2d622a
	@$(VECHO) LD32 "(shared)" $@
Packit 2d622a
	$(CC32) $(LDFLAGS) -Wl,--version-script=privutils.lds -Wl,-soname,$(notdir $@) -shared -o $@ $^ $(LDLIBS)
Packit 2d622a
Packit 2d622a
obj64/libhugetlbfs_privutils.so: $(LIBPUOBJS:%=obj64/%)
Packit 2d622a
	@$(VECHO) LD64 "(shared)" $@
Packit 2d622a
	$(CC64) $(LDFLAGS) -Wl,--version-script=privutils.lds -Wl,-soname,$(notdir $@) -shared -o $@ $^ $(LDLIBS)
Packit 2d622a
Packit 2d622a
obj32/%.i:	%.c
Packit 2d622a
	@$(VECHO) CPP $@
Packit 2d622a
	$(CC32) $(CPPFLAGS) -E $< > $@
Packit 2d622a
Packit 2d622a
obj64/%.i:	%.c
Packit 2d622a
	@$(VECHO) CPP $@
Packit 2d622a
	$(CC64) $(CPPFLAGS) -E $< > $@
Packit 2d622a
Packit 2d622a
obj32/%.s:	%.c
Packit 2d622a
	@$(VECHO) CC32 -S $@
Packit 2d622a
	$(CC32) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
Packit 2d622a
Packit 2d622a
obj64/%.s:	%.c
Packit 2d622a
	@$(VECHO) CC64 -S $@
Packit 2d622a
	$(CC64) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
Packit 2d622a
Packit 2d622a
$(BIN_OBJ_DIR)/%.o: %.c
Packit 2d622a
	@$(VECHO) CCHOST $@
Packit 2d622a
	@mkdir -p $(BIN_OBJ_DIR)
Packit 2d622a
	$(CCBIN) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ -c $<
Packit 2d622a
Packit 2d622a
$(BIN_OBJ_DIR)/hugectl: $(BIN_OBJ_DIR)/hugectl.o
Packit 2d622a
	@$(VECHO) LDHOST $@
Packit 2d622a
	mkdir -p $(BIN_OBJ_DIR)
Packit 2d622a
	$(CCBIN) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(LDFLAGS)
Packit 2d622a
Packit 2d622a
$(BIN_OBJ_DIR)/hugeedit: $(BIN_OBJ_DIR)/hugeedit.o
Packit 2d622a
	@$(VECHO) LDHOST $@
Packit 2d622a
	mkdir -p $(BIN_OBJ_DIR)
Packit 2d622a
	$(CCBIN) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^ $(LDFLAGS)
Packit 2d622a
Packit 2d622a
HUGEADM_OBJ=hugeadm.o libhugetlbfs_privutils.a
Packit 2d622a
$(BIN_OBJ_DIR)/hugeadm: $(foreach file,$(HUGEADM_OBJ),$(BIN_OBJ_DIR)/$(file))
Packit 2d622a
	@$(VECHO) LDHOST $@
Packit 2d622a
	mkdir -p $(BIN_OBJ_DIR)
Packit 2d622a
	$(CCBIN) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^ $(LDFLAGS)
Packit 2d622a
Packit 2d622a
PAGESIZE_OBJ=pagesize.o libhugetlbfs_privutils.a
Packit 2d622a
$(BIN_OBJ_DIR)/pagesize: $(foreach file,$(PAGESIZE_OBJ),$(BIN_OBJ_DIR)/$(file))
Packit 2d622a
	@$(VECHO) LDHOST $@
Packit 2d622a
	mkdir -p $(BIN_OBJ_DIR)
Packit 2d622a
	$(CCBIN) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^ $(LDFLAGS)
Packit 2d622a
Packit 2d622a
clean:
Packit 2d622a
	@$(VECHO) CLEAN
Packit 2d622a
	rm -f *~ *.o *.so *.a *.d *.i core a.out $(VERSION)
Packit 2d622a
	rm -rf obj*
Packit 2d622a
	rm -f ldscripts/*~
Packit 2d622a
	rm -f libhugetlbfs-sock
Packit 2d622a
	$(MAKE) -C tests clean
Packit 2d622a
Packit 2d622a
%.d: %.c $(VERSION)
Packit 2d622a
	@$(CC) $(CPPFLAGS) -MM -MT "$(foreach DIR,$(OBJDIRS),$(DIR)/$*.o) $@" $< > $@
Packit 2d622a
Packit 2d622a
# Workaround: Don't build dependencies for certain targets
Packit 2d622a
#    When the include below is executed, make will use the %.d target above to
Packit 2d622a
# generate missing files.  For certain targets (clean, version.h, etc) we don't
Packit 2d622a
# need or want these dependency files, so don't include them in this case.
Packit 2d622a
ifeq (,$(findstring <$(MAKECMDGOALS)>,$(NODEPTARGETS)))
Packit 2d622a
-include $(DEPFILES)
Packit 2d622a
endif
Packit 2d622a
Packit 2d622a
obj32/install:
Packit 2d622a
	@$(VECHO) INSTALL-LIB32 $(LIBDIR32)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(LIBDIR32)
Packit 2d622a
	$(INSTALL) $(INSTALL_OBJ_LIBS:%=obj32/%) $(DESTDIR)$(LIBDIR32)
Packit 2d622a
Packit 2d622a
obj64/install:
Packit 2d622a
	@$(VECHO) INSTALL-LIB64 $(LIBDIR64)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(LIBDIR64)
Packit 2d622a
	$(INSTALL) $(INSTALL_OBJ_LIBS:%=obj64/%) $(DESTDIR)$(LIBDIR64)
Packit 2d622a
Packit 2d622a
objscript.%: %
Packit 2d622a
	@$(VECHO) OBJSCRIPT $*
Packit 2d622a
	sed "s!### SET DEFAULT LDSCRIPT PATH HERE ###!HUGETLB_LDSCRIPT_PATH=$(LDSCRIPTDIR)!;s!### SET CUSTOM_LDSCRIPTS HERE ###!CUSTOM_LDSCRIPTS=\"$(CUSTOM_LDSCRIPTS)\"!" < $< > $@
Packit 2d622a
Packit 2d622a
install-libs: libs $(OBJDIRS:%=%/install) $(INSTALL_OBJSCRIPT:%=objscript.%)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(HEADERDIR)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(LDSCRIPTDIR)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(BINDIR)
Packit 2d622a
	$(INSTALL) -m 644 -t $(DESTDIR)$(HEADERDIR) $(INSTALL_HEADERS)
Packit 2d622a
	$(INSTALL) -m 644 $(INSTALL_LDSCRIPTS:%=ldscripts/%) $(DESTDIR)$(LDSCRIPTDIR)
Packit 2d622a
	for x in $(INSTALL_OBJSCRIPT); do \
Packit 2d622a
		$(INSTALL) -m 755 objscript.$$x $(DESTDIR)$(BINDIR)/$$x; done
Packit 2d622a
	cd $(DESTDIR)$(BINDIR) && ln -sf ld.hugetlbfs ld
Packit 2d622a
Packit 2d622a
install-man:
Packit 2d622a
	@$(VECHO) INSTALL_MAN $(DESTDIR)manX
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(MANDIR1)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(MANDIR3)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(MANDIR7)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(MANDIR8)
Packit 2d622a
	for x in $(INSTALL_MAN1); do \
Packit 2d622a
		$(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR1); \
Packit 2d622a
		gzip -f $(DESTDIR)$(MANDIR1)/$$x; \
Packit 2d622a
	done
Packit 2d622a
	for x in $(INSTALL_MAN3); do \
Packit 2d622a
		$(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR3); \
Packit 2d622a
		gzip -f $(DESTDIR)$(MANDIR3)/$$x; \
Packit 2d622a
	done
Packit 2d622a
	rm -f $(DESTDIR)$(MANDIR3)/free_huge_pages.3.gz
Packit 2d622a
	rm -f $(DESTDIR)$(MANDIR3)/free_hugepage_region.3.gz
Packit 2d622a
	rm -f $(DESTDIR)$(MANDIR3)/hugetlbfs_unlinked_fd_for_size.3.gz
Packit 2d622a
	rm -f $(DESTDIR)$(MANDIR3)/hugetlbfs_find_path_for_size.3.gz
Packit 2d622a
	ln -s get_huge_pages.3.gz $(DESTDIR)$(MANDIR3)/free_huge_pages.3.gz
Packit 2d622a
	ln -s get_hugepage_region.3.gz $(DESTDIR)$(MANDIR3)/free_hugepage_region.3.gz
Packit 2d622a
	ln -s hugetlbfs_unlinked_fd.3.gz $(DESTDIR)$(MANDIR3)/hugetlbfs_unlinked_fd_for_size.3.gz
Packit 2d622a
	ln -s hugetlbfs_find_path.3.gz $(DESTDIR)$(MANDIR3)/hugetlbfs_find_path_for_size.3.gz
Packit 2d622a
	for x in $(INSTALL_MAN7); do \
Packit 2d622a
		$(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR7); \
Packit 2d622a
		gzip -f $(DESTDIR)$(MANDIR7)/$$x; \
Packit 2d622a
	done
Packit 2d622a
	for x in $(INSTALL_MAN8); do \
Packit 2d622a
		$(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR8); \
Packit 2d622a
		gzip -f $(DESTDIR)$(MANDIR8)/$$x; \
Packit 2d622a
	done
Packit 2d622a
Packit 2d622a
install-bin:
Packit 2d622a
	@$(VECHO) INSTALL_BIN $(DESTDIR)$(EXEDIR)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(EXEDIR)
Packit 2d622a
	for x in $(INSTALL_BIN); do \
Packit 2d622a
		$(INSTALL) -m 755 $(BIN_OBJ_DIR)/$$x $(DESTDIR)$(EXEDIR); done
Packit 2d622a
Packit 2d622a
install: install-libs install-bin install-man
Packit 2d622a
Packit 2d622a
install-helper:
Packit 2d622a
	@$(VECHO) INSTALL_HELPER $(DESTDIR)$(EXEDIR)
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(EXEDIR)
Packit 2d622a
	for x in $(INSTALL_HELPER); do \
Packit 2d622a
		$(INSTALL) -m 755 $$x $(DESTDIR)$(EXEDIR); done
Packit 2d622a
Packit 2d622a
install-docs:
Packit 2d622a
	$(INSTALL) -d $(DESTDIR)$(DOCDIR)
Packit 2d622a
	for x in $(EXTRA_DIST); do $(INSTALL) -m 755 $$x $(DESTDIR)$(DOCDIR)/$$x; done
Packit 2d622a
Packit 2d622a
install-tests: tests install	# Force make to build tests and install the library first
Packit 2d622a
	${MAKE} -C tests install DESTDIR=$(DESTDIR) OBJDIRS="$(OBJDIRS)" LIB32=$(LIB32) LIB64=$(LIB64)