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 18*a6efaa2cSIan RogersINSTALL = install 19*a6efaa2cSIan Rogers 20*a6efaa2cSIan Rogers 21*a6efaa2cSIan Rogers# Use DESTDIR for installing into a different root directory. 22*a6efaa2cSIan Rogers# This is useful for building a package. The program will be 23*a6efaa2cSIan Rogers# installed in this directory as if it was the root directory. 24*a6efaa2cSIan Rogers# Then the build tool can move it later. 25*a6efaa2cSIan RogersDESTDIR ?= 26*a6efaa2cSIan RogersDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))' 27*a6efaa2cSIan 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 58*a6efaa2cSIan Rogersifeq ($(LP64), 1) 59*a6efaa2cSIan Rogers libdir_relative = lib64 60*a6efaa2cSIan Rogerselse 61*a6efaa2cSIan Rogers libdir_relative = lib 62*a6efaa2cSIan Rogersendif 63*a6efaa2cSIan Rogers 64*a6efaa2cSIan Rogersprefix ?= 65*a6efaa2cSIan Rogerslibdir = $(prefix)/$(libdir_relative) 66*a6efaa2cSIan Rogers 67*a6efaa2cSIan Rogers# Shell quotes 68*a6efaa2cSIan Rogerslibdir_SQ = $(subst ','\'',$(libdir)) 69*a6efaa2cSIan Rogers 707c422f55SJiri Olsaall: 717c422f55SJiri Olsa 72b4f91668SJiri Olsaexport srctree OUTPUT CC LD CFLAGS V 73ab6201d0SJiri Olsainclude $(srctree)/tools/build/Makefile.include 74*a6efaa2cSIan 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 84*a6efaa2cSIan Rogersdefine do_install_mkdir 85*a6efaa2cSIan Rogers if [ ! -d '$(DESTDIR_SQ)$1' ]; then \ 86*a6efaa2cSIan Rogers $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \ 87*a6efaa2cSIan Rogers fi 88*a6efaa2cSIan Rogersendef 89*a6efaa2cSIan Rogers 90*a6efaa2cSIan Rogersdefine do_install 91*a6efaa2cSIan Rogers if [ ! -d '$(DESTDIR_SQ)$2' ]; then \ 92*a6efaa2cSIan Rogers $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \ 93*a6efaa2cSIan Rogers fi; \ 94*a6efaa2cSIan Rogers $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2' 95*a6efaa2cSIan Rogersendef 96*a6efaa2cSIan Rogers 97*a6efaa2cSIan Rogersinstall_lib: $(LIBFILE) 98*a6efaa2cSIan Rogers $(call QUIET_INSTALL, $(LIBFILE)) \ 99*a6efaa2cSIan Rogers $(call do_install_mkdir,$(libdir_SQ)); \ 100*a6efaa2cSIan Rogers cp -fpR $(LIBFILE) $(DESTDIR)$(libdir_SQ) 101*a6efaa2cSIan Rogers 102*a6efaa2cSIan Rogersinstall_headers: 103*a6efaa2cSIan Rogers $(call QUIET_INSTALL, headers) \ 104*a6efaa2cSIan Rogers $(call do_install,cpu.h,$(prefix)/include/api,644); \ 105*a6efaa2cSIan Rogers $(call do_install,debug.h,$(prefix)/include/api,644); \ 106*a6efaa2cSIan Rogers $(call do_install,io.h,$(prefix)/include/api,644); 107*a6efaa2cSIan Rogers 108*a6efaa2cSIan Rogersinstall: install_lib install_headers 109*a6efaa2cSIan Rogers 110553873e1SBorislav Petkovclean: 111285a8f24SJiri Olsa $(call QUIET_CLEAN, libapi) $(RM) $(LIBFILE); \ 1125c816641SMasahiro Yamada find $(or $(OUTPUT),.) -name \*.o -or -name \*.o.cmd -or -name \*.o.d | xargs $(RM) 113553873e1SBorislav Petkov 114b4f91668SJiri OlsaFORCE: 115b4f91668SJiri Olsa 116b4f91668SJiri Olsa.PHONY: clean FORCE 117