Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 1 | # Makefile - requires GNU make |
| 2 | # |
Szabolcs Nagy | 1eb5d7c | 2023-01-24 13:24:09 +0000 | [diff] [blame] | 3 | # Copyright (c) 2018-2022, Arm Limited. |
Szabolcs Nagy | 189dfef | 2022-02-10 10:32:35 +0000 | [diff] [blame] | 4 | # SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 5 | |
| 6 | srcdir = . |
| 7 | prefix = /usr |
| 8 | bindir = $(prefix)/bin |
| 9 | libdir = $(prefix)/lib |
| 10 | includedir = $(prefix)/include |
| 11 | |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 12 | # Configure these in config.mk, do not make changes in this file. |
Ola Liljedahl | 6a988f6 | 2020-02-27 15:10:03 +0100 | [diff] [blame] | 13 | SUBS = math string networking |
Pierre Blanchard | 82c8c8a | 2022-03-25 15:04:38 +0000 | [diff] [blame] | 14 | PLSUBS = math |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 15 | HOST_CC = cc |
Szabolcs Nagy | a202746 | 2018-07-27 11:14:11 +0100 | [diff] [blame] | 16 | HOST_CFLAGS = -std=c99 -O2 |
| 17 | HOST_LDFLAGS = |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 18 | HOST_LDLIBS = |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 19 | EMULATOR = |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 20 | CPPFLAGS = |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 21 | CFLAGS = -std=c99 -O2 |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 22 | CFLAGS_SHARED = -fPIC |
| 23 | CFLAGS_ALL = -Ibuild/include $(CPPFLAGS) $(CFLAGS) |
Pierre Blanchard | 82c8c8a | 2022-03-25 15:04:38 +0000 | [diff] [blame] | 24 | CFLAGS_PL = -Ibuild/pl/include $(CPPFLAGS) $(CFLAGS) -DPL |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 25 | LDFLAGS = |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 26 | LDLIBS = |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 27 | AR = $(CROSS_COMPILE)ar |
| 28 | RANLIB = $(CROSS_COMPILE)ranlib |
| 29 | INSTALL = install |
| 30 | |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 31 | all: |
| 32 | |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 33 | -include config.mk |
| 34 | |
Szabolcs Nagy | dec9ffe | 2019-11-26 11:52:25 +0000 | [diff] [blame] | 35 | $(foreach sub,$(SUBS),$(eval include $(srcdir)/$(sub)/Dir.mk)) |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 36 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 37 | # Required targets of subproject foo: |
| 38 | # all-foo |
| 39 | # check-foo |
| 40 | # clean-foo |
| 41 | # install-foo |
| 42 | # Required make variables of subproject foo: |
| 43 | # foo-files: Built files (all in build/). |
| 44 | # Make variables used by subproject foo: |
| 45 | # foo-...: Variables defined in foo/Dir.mk or by config.mk. |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 46 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 47 | all: $(SUBS:%=all-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 48 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 49 | ALL_FILES = $(foreach sub,$(SUBS),$($(sub)-files)) |
| 50 | DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_FILES)))) |
| 51 | $(ALL_FILES): | $(DIRS) |
| 52 | $(DIRS): |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 53 | mkdir -p $@ |
| 54 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 55 | $(filter %.os,$(ALL_FILES)): CFLAGS_ALL += $(CFLAGS_SHARED) |
Pierre Blanchard | 82c8c8a | 2022-03-25 15:04:38 +0000 | [diff] [blame] | 56 | $(filter %.os,$(ALL_FILES)): CFLAGS_PL += $(CFLAGS_SHARED) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 57 | |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 58 | build/%.o: $(srcdir)/%.S |
| 59 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 60 | |
| 61 | build/%.o: $(srcdir)/%.c |
| 62 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 63 | |
| 64 | build/%.os: $(srcdir)/%.S |
| 65 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 66 | |
| 67 | build/%.os: $(srcdir)/%.c |
| 68 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 69 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 70 | clean: $(SUBS:%=clean-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 71 | rm -rf build |
| 72 | |
| 73 | distclean: clean |
| 74 | rm -f config.mk |
| 75 | |
| 76 | $(DESTDIR)$(bindir)/%: build/bin/% |
| 77 | $(INSTALL) -D $< $@ |
| 78 | |
| 79 | $(DESTDIR)$(libdir)/%.so: build/lib/%.so |
| 80 | $(INSTALL) -D $< $@ |
| 81 | |
| 82 | $(DESTDIR)$(libdir)/%: build/lib/% |
| 83 | $(INSTALL) -m 644 -D $< $@ |
| 84 | |
| 85 | $(DESTDIR)$(includedir)/%: build/include/% |
| 86 | $(INSTALL) -m 644 -D $< $@ |
| 87 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 88 | install: $(SUBS:%=install-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 89 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 90 | check: $(SUBS:%=check-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 91 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 92 | .PHONY: all clean distclean install check |