|
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)
|