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 1212024aacSDavid Carrillo-CisnerosCC ?= $(CROSS_COMPILE)gcc 1312024aacSDavid Carrillo-CisnerosAR ?= $(CROSS_COMPILE)ar 1412024aacSDavid Carrillo-CisnerosLD ?= $(CROSS_COMPILE)ld 15553873e1SBorislav Petkov 16b4f91668SJiri OlsaMAKEFLAGS += --no-print-directory 17553873e1SBorislav Petkov 18a6efaa2cSIan RogersINSTALL = install 19a6efaa2cSIan Rogers 20a6efaa2cSIan Rogers 21a6efaa2cSIan Rogers# Use DESTDIR for installing into a different root directory. 22a6efaa2cSIan Rogers# This is useful for building a package. The program will be 23a6efaa2cSIan Rogers# installed in this directory as if it was the root directory. 24a6efaa2cSIan Rogers# Then the build tool can move it later. 25a6efaa2cSIan RogersDESTDIR ?= 26a6efaa2cSIan RogersDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))' 27a6efaa2cSIan Rogers 28285a8f24SJiri OlsaLIBFILE = $(OUTPUT)libapi.a 29553873e1SBorislav Petkov 30b4f91668SJiri OlsaCFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) 3158b79186SJiri OlsaCFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -U_FORTIFY_SOURCE -fPIC 3249b3cd30SArnaldo Carvalho de Melo 3358b79186SJiri Olsaifeq ($(DEBUG),0) 343866058eSDavid Carrillo-Cisnerosifeq ($(CC_NO_CLANG), 0) 3549b3cd30SArnaldo Carvalho de Melo CFLAGS += -O3 3649b3cd30SArnaldo Carvalho de Meloelse 3749b3cd30SArnaldo Carvalho de Melo CFLAGS += -O6 3849b3cd30SArnaldo Carvalho de Meloendif 3958b79186SJiri Olsaendif 4058b79186SJiri Olsa 4158b79186SJiri Olsaifeq ($(DEBUG),0) 4258b79186SJiri Olsa CFLAGS += -D_FORTIFY_SOURCE 4358b79186SJiri Olsaendif 44b983d544SChris Phlipot 45b983d544SChris Phlipot# Treat warnings as errors unless directed not to 46b983d544SChris Phlipotifneq ($(WERROR),0) 47b983d544SChris Phlipot CFLAGS += -Werror 48b983d544SChris Phlipotendif 49b983d544SChris Phlipot 50b4f91668SJiri OlsaCFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 51975f14faSJiri OlsaCFLAGS += -I$(srctree)/tools/lib/api 52b31e3e33SArnaldo Carvalho de MeloCFLAGS += -I$(srctree)/tools/include 53553873e1SBorislav Petkov 54553873e1SBorislav PetkovRM = rm -f 55553873e1SBorislav Petkov 56285a8f24SJiri OlsaAPI_IN := $(OUTPUT)libapi-in.o 57553873e1SBorislav Petkov 58a6efaa2cSIan Rogersifeq ($(LP64), 1) 59a6efaa2cSIan Rogers libdir_relative = lib64 60a6efaa2cSIan Rogerselse 61a6efaa2cSIan Rogers libdir_relative = lib 62a6efaa2cSIan Rogersendif 63a6efaa2cSIan Rogers 64a6efaa2cSIan Rogersprefix ?= 65a6efaa2cSIan Rogerslibdir = $(prefix)/$(libdir_relative) 66a6efaa2cSIan Rogers 67a6efaa2cSIan Rogers# Shell quotes 68a6efaa2cSIan Rogerslibdir_SQ = $(subst ','\'',$(libdir)) 69a6efaa2cSIan Rogers 707c422f55SJiri Olsaall: 717c422f55SJiri Olsa 72b4f91668SJiri Olsaexport srctree OUTPUT CC LD CFLAGS V 73ab6201d0SJiri Olsainclude $(srctree)/tools/build/Makefile.include 74a6efaa2cSIan Rogersinclude $(srctree)/tools/scripts/Makefile.include 75553873e1SBorislav Petkov 767c422f55SJiri Olsaall: fixdep $(LIBFILE) 77553873e1SBorislav Petkov 78b4f91668SJiri Olsa$(API_IN): FORCE 79285a8f24SJiri Olsa @$(MAKE) $(build)=libapi 80b4f91668SJiri Olsa 81b4f91668SJiri Olsa$(LIBFILE): $(API_IN) 82b4f91668SJiri Olsa $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(API_IN) 83553873e1SBorislav Petkov 84a6efaa2cSIan Rogersdefine do_install_mkdir 85a6efaa2cSIan Rogers if [ ! -d '$(DESTDIR_SQ)$1' ]; then \ 86a6efaa2cSIan Rogers $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \ 87a6efaa2cSIan Rogers fi 88a6efaa2cSIan Rogersendef 89a6efaa2cSIan Rogers 90a6efaa2cSIan Rogersdefine do_install 91*1849f9f0SIan Rogers if [ ! -d '$2' ]; then \ 92*1849f9f0SIan Rogers $(INSTALL) -d -m 755 '$2'; \ 93a6efaa2cSIan Rogers fi; \ 94*1849f9f0SIan Rogers $(INSTALL) $1 $(if $3,-m $3,) '$2' 95a6efaa2cSIan Rogersendef 96a6efaa2cSIan Rogers 97a6efaa2cSIan Rogersinstall_lib: $(LIBFILE) 98a6efaa2cSIan Rogers $(call QUIET_INSTALL, $(LIBFILE)) \ 99a6efaa2cSIan Rogers $(call do_install_mkdir,$(libdir_SQ)); \ 100a6efaa2cSIan Rogers cp -fpR $(LIBFILE) $(DESTDIR)$(libdir_SQ) 101a6efaa2cSIan Rogers 102*1849f9f0SIan RogersHDRS := cpu.h debug.h io.h 103*1849f9f0SIan RogersFD_HDRS := fd/array.h 104*1849f9f0SIan RogersFS_HDRS := fs/fs.h fs/tracing_path.h 105*1849f9f0SIan RogersINSTALL_HDRS_PFX := $(DESTDIR)$(prefix)/include/api 106*1849f9f0SIan RogersINSTALL_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(HDRS)) 107*1849f9f0SIan RogersINSTALL_FD_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(FD_HDRS)) 108*1849f9f0SIan RogersINSTALL_FS_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(FS_HDRS)) 109*1849f9f0SIan Rogers 110*1849f9f0SIan Rogers$(INSTALL_HDRS): $(INSTALL_HDRS_PFX)/%.h: %.h 111*1849f9f0SIan Rogers $(call QUIET_INSTALL, $@) \ 112*1849f9f0SIan Rogers $(call do_install,$<,$(INSTALL_HDRS_PFX)/,644) 113*1849f9f0SIan Rogers 114*1849f9f0SIan Rogers$(INSTALL_FD_HDRS): $(INSTALL_HDRS_PFX)/fd/%.h: fd/%.h 115*1849f9f0SIan Rogers $(call QUIET_INSTALL, $@) \ 116*1849f9f0SIan Rogers $(call do_install,$<,$(INSTALL_HDRS_PFX)/fd/,644) 117*1849f9f0SIan Rogers 118*1849f9f0SIan Rogers$(INSTALL_FS_HDRS): $(INSTALL_HDRS_PFX)/fs/%.h: fs/%.h 119*1849f9f0SIan Rogers $(call QUIET_INSTALL, $@) \ 120*1849f9f0SIan Rogers $(call do_install,$<,$(INSTALL_HDRS_PFX)/fs/,644) 121*1849f9f0SIan Rogers 122*1849f9f0SIan Rogersinstall_headers: $(INSTALL_HDRS) $(INSTALL_FD_HDRS) $(INSTALL_FS_HDRS) 123*1849f9f0SIan Rogers $(call QUIET_INSTALL, libapi_headers) 124a6efaa2cSIan Rogers 125a6efaa2cSIan Rogersinstall: install_lib install_headers 126a6efaa2cSIan Rogers 127553873e1SBorislav Petkovclean: 128285a8f24SJiri Olsa $(call QUIET_CLEAN, libapi) $(RM) $(LIBFILE); \ 1295c816641SMasahiro Yamada find $(or $(OUTPUT),.) -name \*.o -or -name \*.o.cmd -or -name \*.o.d | xargs $(RM) 130553873e1SBorislav Petkov 131b4f91668SJiri OlsaFORCE: 132b4f91668SJiri Olsa 133b4f91668SJiri Olsa.PHONY: clean FORCE 134