1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2553873e1SBorislav Petkovinclude ../../scripts/Makefile.include 3ca70c24fSArnaldo Carvalho de Meloinclude ../../scripts/utilities.mak # QUIET_CLEAN 4553873e1SBorislav Petkov 5b4f91668SJiri Olsaifeq ($(srctree),) 6e19b7ceeSUwe Kleine-Königsrctree := $(patsubst %/,%,$(dir $(CURDIR))) 7b4f91668SJiri Olsasrctree := $(patsubst %/,%,$(dir $(srctree))) 8b4f91668SJiri Olsasrctree := $(patsubst %/,%,$(dir $(srctree))) 9b4f91668SJiri Olsa#$(info Determined 'srctree' to be $(srctree)) 10b4f91668SJiri Olsaendif 11b4f91668SJiri Olsa 12b4f91668SJiri OlsaMAKEFLAGS += --no-print-directory 13553873e1SBorislav Petkov 14a6efaa2cSIan RogersINSTALL = install 15a6efaa2cSIan Rogers 16a6efaa2cSIan Rogers 17a6efaa2cSIan Rogers# Use DESTDIR for installing into a different root directory. 18a6efaa2cSIan Rogers# This is useful for building a package. The program will be 19a6efaa2cSIan Rogers# installed in this directory as if it was the root directory. 20a6efaa2cSIan Rogers# Then the build tool can move it later. 21a6efaa2cSIan RogersDESTDIR ?= 22a6efaa2cSIan RogersDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))' 23a6efaa2cSIan Rogers 24285a8f24SJiri OlsaLIBFILE = $(OUTPUT)libapi.a 25553873e1SBorislav Petkov 26b4f91668SJiri OlsaCFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) 2758b79186SJiri OlsaCFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -U_FORTIFY_SOURCE -fPIC 2849b3cd30SArnaldo Carvalho de Melo 2958b79186SJiri Olsaifeq ($(DEBUG),0) 3049b3cd30SArnaldo Carvalho de Melo CFLAGS += -O3 3158b79186SJiri Olsaendif 3258b79186SJiri Olsa 3358b79186SJiri Olsaifeq ($(DEBUG),0) 3458b79186SJiri Olsa CFLAGS += -D_FORTIFY_SOURCE 3558b79186SJiri Olsaendif 36b983d544SChris Phlipot 37b983d544SChris Phlipot# Treat warnings as errors unless directed not to 38b983d544SChris Phlipotifneq ($(WERROR),0) 39b983d544SChris Phlipot CFLAGS += -Werror 40b983d544SChris Phlipotendif 41b983d544SChris Phlipot 42b4f91668SJiri OlsaCFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 43975f14faSJiri OlsaCFLAGS += -I$(srctree)/tools/lib/api 44b31e3e33SArnaldo Carvalho de MeloCFLAGS += -I$(srctree)/tools/include 45553873e1SBorislav Petkov 46553873e1SBorislav PetkovRM = rm -f 47553873e1SBorislav Petkov 48285a8f24SJiri OlsaAPI_IN := $(OUTPUT)libapi-in.o 49553873e1SBorislav Petkov 50a6efaa2cSIan Rogersifeq ($(LP64), 1) 51a6efaa2cSIan Rogers libdir_relative = lib64 52a6efaa2cSIan Rogerselse 53a6efaa2cSIan Rogers libdir_relative = lib 54a6efaa2cSIan Rogersendif 55a6efaa2cSIan Rogers 56a6efaa2cSIan Rogersprefix ?= 57a6efaa2cSIan Rogerslibdir = $(prefix)/$(libdir_relative) 58a6efaa2cSIan Rogers 59a6efaa2cSIan Rogers# Shell quotes 60a6efaa2cSIan Rogerslibdir_SQ = $(subst ','\'',$(libdir)) 61a6efaa2cSIan Rogers 627c422f55SJiri Olsaall: 637c422f55SJiri Olsa 64b4f91668SJiri Olsaexport srctree OUTPUT CC LD CFLAGS V 65ab6201d0SJiri Olsainclude $(srctree)/tools/build/Makefile.include 66a6efaa2cSIan Rogersinclude $(srctree)/tools/scripts/Makefile.include 67553873e1SBorislav Petkov 687c422f55SJiri Olsaall: fixdep $(LIBFILE) 69553873e1SBorislav Petkov 70b4f91668SJiri Olsa$(API_IN): FORCE 71285a8f24SJiri Olsa @$(MAKE) $(build)=libapi 72b4f91668SJiri Olsa 73b4f91668SJiri Olsa$(LIBFILE): $(API_IN) 74b4f91668SJiri Olsa $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(API_IN) 75553873e1SBorislav Petkov 76a6efaa2cSIan Rogersdefine do_install_mkdir 77a6efaa2cSIan Rogers if [ ! -d '$(DESTDIR_SQ)$1' ]; then \ 78a6efaa2cSIan Rogers $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \ 79a6efaa2cSIan Rogers fi 80a6efaa2cSIan Rogersendef 81a6efaa2cSIan Rogers 82a6efaa2cSIan Rogersdefine do_install 831849f9f0SIan Rogers if [ ! -d '$2' ]; then \ 841849f9f0SIan Rogers $(INSTALL) -d -m 755 '$2'; \ 85a6efaa2cSIan Rogers fi; \ 861849f9f0SIan Rogers $(INSTALL) $1 $(if $3,-m $3,) '$2' 87a6efaa2cSIan Rogersendef 88a6efaa2cSIan Rogers 89a6efaa2cSIan Rogersinstall_lib: $(LIBFILE) 90a6efaa2cSIan Rogers $(call QUIET_INSTALL, $(LIBFILE)) \ 91a6efaa2cSIan Rogers $(call do_install_mkdir,$(libdir_SQ)); \ 92a6efaa2cSIan Rogers cp -fpR $(LIBFILE) $(DESTDIR)$(libdir_SQ) 93a6efaa2cSIan Rogers 94*d118b08fSIan RogersHDRS := cpu.h debug.h io.h io_dir.h 951849f9f0SIan RogersFD_HDRS := fd/array.h 961849f9f0SIan RogersFS_HDRS := fs/fs.h fs/tracing_path.h 971849f9f0SIan RogersINSTALL_HDRS_PFX := $(DESTDIR)$(prefix)/include/api 981849f9f0SIan RogersINSTALL_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(HDRS)) 991849f9f0SIan RogersINSTALL_FD_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(FD_HDRS)) 1001849f9f0SIan RogersINSTALL_FS_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(FS_HDRS)) 1011849f9f0SIan Rogers 1021849f9f0SIan Rogers$(INSTALL_HDRS): $(INSTALL_HDRS_PFX)/%.h: %.h 1031849f9f0SIan Rogers $(call QUIET_INSTALL, $@) \ 1041849f9f0SIan Rogers $(call do_install,$<,$(INSTALL_HDRS_PFX)/,644) 1051849f9f0SIan Rogers 1061849f9f0SIan Rogers$(INSTALL_FD_HDRS): $(INSTALL_HDRS_PFX)/fd/%.h: fd/%.h 1071849f9f0SIan Rogers $(call QUIET_INSTALL, $@) \ 1081849f9f0SIan Rogers $(call do_install,$<,$(INSTALL_HDRS_PFX)/fd/,644) 1091849f9f0SIan Rogers 1101849f9f0SIan Rogers$(INSTALL_FS_HDRS): $(INSTALL_HDRS_PFX)/fs/%.h: fs/%.h 1111849f9f0SIan Rogers $(call QUIET_INSTALL, $@) \ 1121849f9f0SIan Rogers $(call do_install,$<,$(INSTALL_HDRS_PFX)/fs/,644) 1131849f9f0SIan Rogers 1141849f9f0SIan Rogersinstall_headers: $(INSTALL_HDRS) $(INSTALL_FD_HDRS) $(INSTALL_FS_HDRS) 1151849f9f0SIan Rogers $(call QUIET_INSTALL, libapi_headers) 116a6efaa2cSIan Rogers 117a6efaa2cSIan Rogersinstall: install_lib install_headers 118a6efaa2cSIan Rogers 119553873e1SBorislav Petkovclean: 120285a8f24SJiri Olsa $(call QUIET_CLEAN, libapi) $(RM) $(LIBFILE); \ 1215c816641SMasahiro Yamada find $(or $(OUTPUT),.) -name \*.o -or -name \*.o.cmd -or -name \*.o.d | xargs $(RM) 122553873e1SBorislav Petkov 123b4f91668SJiri OlsaFORCE: 124b4f91668SJiri Olsa 125b4f91668SJiri Olsa.PHONY: clean FORCE 126