xref: /aosp_15_r20/external/arm-optimized-routines/Makefile (revision 412f47f9e737e10ed5cc46ec6a8d7fa2264f8a14)
1*412f47f9SXin Li# Makefile - requires GNU make
2*412f47f9SXin Li#
3*412f47f9SXin Li# Copyright (c) 2018-2022, Arm Limited.
4*412f47f9SXin Li# SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
5*412f47f9SXin Li
6*412f47f9SXin Lisrcdir = .
7*412f47f9SXin Liprefix = /usr
8*412f47f9SXin Libindir = $(prefix)/bin
9*412f47f9SXin Lilibdir = $(prefix)/lib
10*412f47f9SXin Liincludedir = $(prefix)/include
11*412f47f9SXin Li
12*412f47f9SXin Li# Configure these in config.mk, do not make changes in this file.
13*412f47f9SXin LiSUBS = math string networking
14*412f47f9SXin LiPLSUBS = math
15*412f47f9SXin LiHOST_CC = cc
16*412f47f9SXin LiHOST_CFLAGS = -std=c99 -O2
17*412f47f9SXin LiHOST_LDFLAGS =
18*412f47f9SXin LiHOST_LDLIBS =
19*412f47f9SXin LiEMULATOR =
20*412f47f9SXin LiCPPFLAGS =
21*412f47f9SXin LiCFLAGS = -std=c99 -O2
22*412f47f9SXin LiCFLAGS_SHARED = -fPIC
23*412f47f9SXin LiCFLAGS_ALL = -Ibuild/include $(CPPFLAGS) $(CFLAGS)
24*412f47f9SXin LiCFLAGS_PL = -Ibuild/pl/include $(CPPFLAGS) $(CFLAGS) -DPL
25*412f47f9SXin LiLDFLAGS =
26*412f47f9SXin LiLDLIBS =
27*412f47f9SXin LiAR = $(CROSS_COMPILE)ar
28*412f47f9SXin LiRANLIB = $(CROSS_COMPILE)ranlib
29*412f47f9SXin LiINSTALL = install
30*412f47f9SXin Li
31*412f47f9SXin Liall:
32*412f47f9SXin Li
33*412f47f9SXin Li-include config.mk
34*412f47f9SXin Li
35*412f47f9SXin Li$(foreach sub,$(SUBS),$(eval include $(srcdir)/$(sub)/Dir.mk))
36*412f47f9SXin Li
37*412f47f9SXin Li# Required targets of subproject foo:
38*412f47f9SXin Li#   all-foo
39*412f47f9SXin Li#   check-foo
40*412f47f9SXin Li#   clean-foo
41*412f47f9SXin Li#   install-foo
42*412f47f9SXin Li# Required make variables of subproject foo:
43*412f47f9SXin Li#   foo-files: Built files (all in build/).
44*412f47f9SXin Li# Make variables used by subproject foo:
45*412f47f9SXin Li#   foo-...: Variables defined in foo/Dir.mk or by config.mk.
46*412f47f9SXin Li
47*412f47f9SXin Liall: $(SUBS:%=all-%)
48*412f47f9SXin Li
49*412f47f9SXin LiALL_FILES = $(foreach sub,$(SUBS),$($(sub)-files))
50*412f47f9SXin LiDIRS = $(sort $(patsubst %/,%,$(dir $(ALL_FILES))))
51*412f47f9SXin Li$(ALL_FILES): | $(DIRS)
52*412f47f9SXin Li$(DIRS):
53*412f47f9SXin Li	mkdir -p $@
54*412f47f9SXin Li
55*412f47f9SXin Li$(filter %.os,$(ALL_FILES)): CFLAGS_ALL += $(CFLAGS_SHARED)
56*412f47f9SXin Li$(filter %.os,$(ALL_FILES)): CFLAGS_PL += $(CFLAGS_SHARED)
57*412f47f9SXin Li
58*412f47f9SXin Libuild/%.o: $(srcdir)/%.S
59*412f47f9SXin Li	$(CC) $(CFLAGS_ALL) -c -o $@ $<
60*412f47f9SXin Li
61*412f47f9SXin Libuild/%.o: $(srcdir)/%.c
62*412f47f9SXin Li	$(CC) $(CFLAGS_ALL) -c -o $@ $<
63*412f47f9SXin Li
64*412f47f9SXin Libuild/%.os: $(srcdir)/%.S
65*412f47f9SXin Li	$(CC) $(CFLAGS_ALL) -c -o $@ $<
66*412f47f9SXin Li
67*412f47f9SXin Libuild/%.os: $(srcdir)/%.c
68*412f47f9SXin Li	$(CC) $(CFLAGS_ALL) -c -o $@ $<
69*412f47f9SXin Li
70*412f47f9SXin Liclean: $(SUBS:%=clean-%)
71*412f47f9SXin Li	rm -rf build
72*412f47f9SXin Li
73*412f47f9SXin Lidistclean: clean
74*412f47f9SXin Li	rm -f config.mk
75*412f47f9SXin Li
76*412f47f9SXin Li$(DESTDIR)$(bindir)/%: build/bin/%
77*412f47f9SXin Li	$(INSTALL) -D $< $@
78*412f47f9SXin Li
79*412f47f9SXin Li$(DESTDIR)$(libdir)/%.so: build/lib/%.so
80*412f47f9SXin Li	$(INSTALL) -D $< $@
81*412f47f9SXin Li
82*412f47f9SXin Li$(DESTDIR)$(libdir)/%: build/lib/%
83*412f47f9SXin Li	$(INSTALL) -m 644 -D $< $@
84*412f47f9SXin Li
85*412f47f9SXin Li$(DESTDIR)$(includedir)/%: build/include/%
86*412f47f9SXin Li	$(INSTALL) -m 644 -D $< $@
87*412f47f9SXin Li
88*412f47f9SXin Liinstall: $(SUBS:%=install-%)
89*412f47f9SXin Li
90*412f47f9SXin Licheck: $(SUBS:%=check-%)
91*412f47f9SXin Li
92*412f47f9SXin Li.PHONY: all clean distclean install check
93