xref: /aosp_15_r20/external/wpa_supplicant_8/src/build.rules (revision 03f9172ca588f91df233974f4258bab95191f931)
1*03f9172cSAndroid Build Coastguard Worker.PHONY: all
2*03f9172cSAndroid Build Coastguard Workerall: _all
3*03f9172cSAndroid Build Coastguard Worker
4*03f9172cSAndroid Build Coastguard Worker# disable built-in rules
5*03f9172cSAndroid Build Coastguard Worker.SUFFIXES:
6*03f9172cSAndroid Build Coastguard Worker
7*03f9172cSAndroid Build Coastguard Worker# setup some variables
8*03f9172cSAndroid Build Coastguard WorkerROOTDIR := $(dir $(lastword $(MAKEFILE_LIST)))
9*03f9172cSAndroid Build Coastguard WorkerROOTDIR := $(dir $(ROOTDIR:%../src/=%))../
10*03f9172cSAndroid Build Coastguard WorkerBUILDDIR ?= $(abspath $(ROOTDIR)build)
11*03f9172cSAndroid Build Coastguard WorkerBUILDDIR := $(BUILDDIR:%/=%)
12*03f9172cSAndroid Build Coastguard WorkerABSROOT := $(abspath $(ROOTDIR))
13*03f9172cSAndroid Build Coastguard Workerifeq ($(origin OUT),command line)
14*03f9172cSAndroid Build Coastguard Worker_PROJ := $(OUT:%/=%)
15*03f9172cSAndroid Build Coastguard Worker_PROJ := $(_PROJ:$(BUILDDIR)/%=%)
16*03f9172cSAndroid Build Coastguard Workerelse
17*03f9172cSAndroid Build Coastguard Worker_PROJ := $(abspath $(dir $(firstword $(MAKEFILE_LIST))))
18*03f9172cSAndroid Build Coastguard Worker_PROJ := $(_PROJ:$(ABSROOT)/%=%)
19*03f9172cSAndroid Build Coastguard Workerendif
20*03f9172cSAndroid Build Coastguard Worker
21*03f9172cSAndroid Build Coastguard Workerifndef CC
22*03f9172cSAndroid Build Coastguard WorkerCC=gcc
23*03f9172cSAndroid Build Coastguard Workerendif
24*03f9172cSAndroid Build Coastguard Worker
25*03f9172cSAndroid Build Coastguard Workerifndef RANLIB
26*03f9172cSAndroid Build Coastguard WorkerRANLIB=ranlib
27*03f9172cSAndroid Build Coastguard Workerendif
28*03f9172cSAndroid Build Coastguard Worker
29*03f9172cSAndroid Build Coastguard Workerifndef LDO
30*03f9172cSAndroid Build Coastguard WorkerLDO=$(CC)
31*03f9172cSAndroid Build Coastguard Workerendif
32*03f9172cSAndroid Build Coastguard Worker
33*03f9172cSAndroid Build Coastguard Workerifndef CFLAGS
34*03f9172cSAndroid Build Coastguard WorkerCFLAGS = -MMD -O2 -Wall -g
35*03f9172cSAndroid Build Coastguard Workerendif
36*03f9172cSAndroid Build Coastguard Worker
37*03f9172cSAndroid Build Coastguard Workerifneq ($(CONFIG_FILE),)
38*03f9172cSAndroid Build Coastguard Worker-include $(CONFIG_FILE)
39*03f9172cSAndroid Build Coastguard Worker
40*03f9172cSAndroid Build Coastguard Worker# export for sub-makefiles
41*03f9172cSAndroid Build Coastguard Workerexport CONFIG_CODE_COVERAGE
42*03f9172cSAndroid Build Coastguard Worker
43*03f9172cSAndroid Build Coastguard Worker.PHONY: verify_config
44*03f9172cSAndroid Build Coastguard Workerverify_config:
45*03f9172cSAndroid Build Coastguard Worker	@if [ ! -r $(CONFIG_FILE) ]; then \
46*03f9172cSAndroid Build Coastguard Worker		echo 'Building $(firstword $(ALL)) requires a configuration file'; \
47*03f9172cSAndroid Build Coastguard Worker		echo '(.config). See README for more instructions. You can'; \
48*03f9172cSAndroid Build Coastguard Worker		echo 'run "cp defconfig .config" to create an example'; \
49*03f9172cSAndroid Build Coastguard Worker		echo 'configuration.'; \
50*03f9172cSAndroid Build Coastguard Worker		exit 1; \
51*03f9172cSAndroid Build Coastguard Worker	fi
52*03f9172cSAndroid Build Coastguard WorkerVERIFY := verify_config
53*03f9172cSAndroid Build Coastguard Workerelse
54*03f9172cSAndroid Build Coastguard WorkerVERIFY :=
55*03f9172cSAndroid Build Coastguard Workerendif
56*03f9172cSAndroid Build Coastguard Worker
57*03f9172cSAndroid Build Coastguard Worker# default target
58*03f9172cSAndroid Build Coastguard Worker.PHONY: _all
59*03f9172cSAndroid Build Coastguard Worker_all: $(VERIFY) $(ALL) $(EXTRA_TARGETS)
60*03f9172cSAndroid Build Coastguard Worker
61*03f9172cSAndroid Build Coastguard Worker# continue setup
62*03f9172cSAndroid Build Coastguard WorkerCOVSUFFIX := $(if $(CONFIG_CODE_COVERAGE),-cov,)
63*03f9172cSAndroid Build Coastguard WorkerPROJ := $(_PROJ)$(COVSUFFIX)
64*03f9172cSAndroid Build Coastguard Worker
65*03f9172cSAndroid Build Coastguard WorkerQ=@
66*03f9172cSAndroid Build Coastguard WorkerE=echo
67*03f9172cSAndroid Build Coastguard Workerifeq ($(V), 1)
68*03f9172cSAndroid Build Coastguard WorkerQ=
69*03f9172cSAndroid Build Coastguard WorkerE=true
70*03f9172cSAndroid Build Coastguard Workerendif
71*03f9172cSAndroid Build Coastguard Workerifeq ($(QUIET), 1)
72*03f9172cSAndroid Build Coastguard WorkerQ=@
73*03f9172cSAndroid Build Coastguard WorkerE=true
74*03f9172cSAndroid Build Coastguard Workerendif
75*03f9172cSAndroid Build Coastguard Worker
76*03f9172cSAndroid Build Coastguard Workerifeq ($(Q),@)
77*03f9172cSAndroid Build Coastguard WorkerMAKEFLAGS += --no-print-directory
78*03f9172cSAndroid Build Coastguard Workerendif
79*03f9172cSAndroid Build Coastguard Worker
80*03f9172cSAndroid Build Coastguard Worker_DIRS := $(BUILDDIR)/$(PROJ)
81*03f9172cSAndroid Build Coastguard Worker.PHONY: _make_dirs
82*03f9172cSAndroid Build Coastguard Worker_make_dirs:
83*03f9172cSAndroid Build Coastguard Worker	@mkdir -p $(sort $(_DIRS))
84*03f9172cSAndroid Build Coastguard Worker
85*03f9172cSAndroid Build Coastguard Worker$(BUILDDIR)/$(PROJ)/src/%.o: $(ROOTDIR)src/%.c $(CONFIG_FILE) | _make_dirs
86*03f9172cSAndroid Build Coastguard Worker	$(Q)$(CC) -c -o $@ $(CFLAGS) $<
87*03f9172cSAndroid Build Coastguard Worker	@$(E) "  CC " $<
88*03f9172cSAndroid Build Coastguard Worker$(BUILDDIR)/$(PROJ)/%.o: %.c $(CONFIG_FILE) | _make_dirs
89*03f9172cSAndroid Build Coastguard Worker	$(Q)$(CC) -c -o $@ $(CFLAGS) $<
90*03f9172cSAndroid Build Coastguard Worker	@$(E) "  CC " $<
91*03f9172cSAndroid Build Coastguard Worker# for the fuzzing tests
92*03f9172cSAndroid Build Coastguard Worker$(BUILDDIR)/$(PROJ)/wpa_supplicant/%.o: $(ROOTDIR)wpa_supplicant/%.c $(CONFIG_FILE) | _make_dirs
93*03f9172cSAndroid Build Coastguard Worker	$(Q)$(CC) -c -o $@ $(CFLAGS) $<
94*03f9172cSAndroid Build Coastguard Worker	@$(E) "  CC " $<
95*03f9172cSAndroid Build Coastguard Worker
96*03f9172cSAndroid Build Coastguard Worker# libraries - they know how to build themselves
97*03f9172cSAndroid Build Coastguard Worker# (lib_phony so we recurse all the time)
98*03f9172cSAndroid Build Coastguard Worker.PHONY: lib_phony
99*03f9172cSAndroid Build Coastguard Workerlib_phony:
100*03f9172cSAndroid Build Coastguard Worker# nothing
101*03f9172cSAndroid Build Coastguard Worker
102*03f9172cSAndroid Build Coastguard Worker$(BUILDDIR)/$(PROJ)/%.a: $(CONFIG_FILE) lib_phony
103*03f9172cSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(ROOTDIR)$(dir $(@:$(BUILDDIR)/$(PROJ)/%=%)) OUT=$(abspath $(dir $@))/
104*03f9172cSAndroid Build Coastguard Worker
105*03f9172cSAndroid Build Coastguard WorkerBUILDOBJ = $(patsubst %,$(BUILDDIR)/$(PROJ)/%,$(patsubst $(ROOTDIR)%,%,$(1)))
106*03f9172cSAndroid Build Coastguard Worker
107*03f9172cSAndroid Build Coastguard Worker.PHONY: common-clean
108*03f9172cSAndroid Build Coastguard Workercommon-clean:
109*03f9172cSAndroid Build Coastguard Worker	$(Q)rm -rf $(ALL) $(BUILDDIR)/$(PROJ)
110