Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 1 | # Makefile - requires GNU make |
| 2 | # |
Szabolcs Nagy | e823e3a | 2021-02-17 14:28:25 +0000 | [diff] [blame] | 3 | # Copyright (c) 2018-2020, Arm Limited. |
Szabolcs Nagy | 11253b0 | 2018-11-12 11:10:57 +0000 | [diff] [blame] | 4 | # SPDX-License-Identifier: MIT |
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 |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 14 | HOST_CC = cc |
Szabolcs Nagy | a202746 | 2018-07-27 11:14:11 +0100 | [diff] [blame] | 15 | HOST_CFLAGS = -std=c99 -O2 |
| 16 | HOST_LDFLAGS = |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 17 | HOST_LDLIBS = |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 18 | EMULATOR = |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 19 | CPPFLAGS = |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 20 | CFLAGS = -std=c99 -O2 |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 21 | CFLAGS_SHARED = -fPIC |
| 22 | CFLAGS_ALL = -Ibuild/include $(CPPFLAGS) $(CFLAGS) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 23 | LDFLAGS = |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 24 | LDLIBS = |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 25 | AR = $(CROSS_COMPILE)ar |
| 26 | RANLIB = $(CROSS_COMPILE)ranlib |
| 27 | INSTALL = install |
| 28 | |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 29 | all: |
| 30 | |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 31 | -include config.mk |
| 32 | |
Szabolcs Nagy | dec9ffe | 2019-11-26 11:52:25 +0000 | [diff] [blame] | 33 | $(foreach sub,$(SUBS),$(eval include $(srcdir)/$(sub)/Dir.mk)) |
Szabolcs Nagy | 0af9fce | 2019-07-18 10:21:43 +0100 | [diff] [blame] | 34 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 35 | # Required targets of subproject foo: |
| 36 | # all-foo |
| 37 | # check-foo |
| 38 | # clean-foo |
| 39 | # install-foo |
| 40 | # Required make variables of subproject foo: |
| 41 | # foo-files: Built files (all in build/). |
| 42 | # Make variables used by subproject foo: |
| 43 | # foo-...: Variables defined in foo/Dir.mk or by config.mk. |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 44 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 45 | all: $(SUBS:%=all-%) |
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_FILES = $(foreach sub,$(SUBS),$($(sub)-files)) |
| 48 | DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_FILES)))) |
| 49 | $(ALL_FILES): | $(DIRS) |
| 50 | $(DIRS): |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 51 | mkdir -p $@ |
| 52 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 53 | $(filter %.os,$(ALL_FILES)): CFLAGS_ALL += $(CFLAGS_SHARED) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 54 | |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 55 | build/%.o: $(srcdir)/%.S |
| 56 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 57 | |
| 58 | build/%.o: $(srcdir)/%.c |
| 59 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 60 | |
| 61 | build/%.os: $(srcdir)/%.S |
| 62 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 63 | |
| 64 | build/%.os: $(srcdir)/%.c |
| 65 | $(CC) $(CFLAGS_ALL) -c -o $@ $< |
| 66 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 67 | clean: $(SUBS:%=clean-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 68 | rm -rf build |
| 69 | |
| 70 | distclean: clean |
| 71 | rm -f config.mk |
| 72 | |
| 73 | $(DESTDIR)$(bindir)/%: build/bin/% |
| 74 | $(INSTALL) -D $< $@ |
| 75 | |
| 76 | $(DESTDIR)$(libdir)/%.so: build/lib/%.so |
| 77 | $(INSTALL) -D $< $@ |
| 78 | |
| 79 | $(DESTDIR)$(libdir)/%: build/lib/% |
| 80 | $(INSTALL) -m 644 -D $< $@ |
| 81 | |
| 82 | $(DESTDIR)$(includedir)/%: build/include/% |
| 83 | $(INSTALL) -m 644 -D $< $@ |
| 84 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 85 | install: $(SUBS:%=install-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 86 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 87 | check: $(SUBS:%=check-%) |
Szabolcs Nagy | 7889228 | 2018-04-24 17:10:05 +0100 | [diff] [blame] | 88 | |
Szabolcs Nagy | 1fd2aaa | 2019-11-20 18:05:06 +0000 | [diff] [blame] | 89 | .PHONY: all clean distclean install check |