]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blob - build/Makefile.lib.inc
2418450ddf5bfbc8eeb849a0b845c9e8f0953fa3
[pes-rpp/rpp-lib.git] / build / Makefile.lib.inc
1 # Copyright (C) 2013-2015 Czech Technical University in Prague
2 #
3 # Authors:
4 #     - Michal Sojka <sojkam1@fel.cvut.cz>
5 #
6 # This document contains proprietary information belonging to Czech
7 # Technical University in Prague. Passing on and copying of this
8 # document, and communication of its contents is not permitted
9 # without prior written authorization.
10 #
11 # Rules for compiling rpp-lib.lib.
12
13 makefile_lib_inc_dir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
14
15 all:: $(makefile_lib_inc_dir)/../rpp-lib.lib
16
17 include ../Makefile.config
18
19 # Check that Makefile.config defined values of all defined
20 # TARGET_HAS_* variables and no more.
21 target_has_list = DMM SPI
22 $(foreach name,$(target_has_list),$(if $(filter TARGET_HAS_$(name),$(.VARIABLES)),,\
23         $(error TARGET_HAS_$(name) not defined in Makefile.config)))
24 target_has_extra = $(filter-out $(target_has_list:%=TARGET_HAS_%),$(filter TARGET_HAS_%,$(.VARIABLES)))
25 $(if $(target_has_extra),\
26         $(error Makefile.config contains supefluous variables: $(target_has_extra)))
27 $(foreach name,$(target_has_list),$(if $(or $(filter y,$(TARGET_HAS_$(name))),$(filter n,$(TARGET_HAS_$(name)))),,\
28         $(error TARGET_HAS_$(name) must be 'y' or 'n')))
29
30 include $(makefile_lib_inc_dir)/../Makefile.var
31 include $(makefile_lib_inc_dir)/../common.mk
32 include $(makefile_lib_inc_dir)/Makefile.rules
33
34 rpp_lib_c_OBJS   = $(addsuffix .obj,$(basename $(filter %.c,   $(rpp_lib_SOURCES))))
35 rpp_lib_asm_OBJS = $(addsuffix .obj,$(basename $(filter %.asm, $(rpp_lib_SOURCES))))
36 rpp_lib_OBJS = $(rpp_lib_c_OBJS) $(rpp_lib_asm_OBJS)
37 rpp_lib_DEPS = $(rpp_lib_OBJS:%=%.dep)
38
39 rpp-lib.lib: $(rpp_lib_OBJS) #../rpp/TMS570LS313xFlashLnk.cmd
40         $(AR) r $@ $^
41
42 $(makefile_lib_inc_dir)/../rpp-lib.lib: rpp-lib.lib
43         $(call cp,$<,$@)
44         $(call cp,$(call pathconv,../Makefile.config),$(dir $@))
45
46 -include $(rpp_lib_DEPS)
47
48 $(rpp_lib_c_OBJS): %.obj: $(makefile_lib_inc_dir)/../%.c
49         $(call mkdir,$(dir $@))
50         $(RPP_COMPILE_CMD)
51
52 $(rpp_lib_asm_OBJS): %.obj: $(makefile_lib_inc_dir)/../%.asm
53         $(call mkdir,$(dir $@))
54         $(RPP_COMPILE_CMD)
55
56 .PHONY: all clean $(makefile_lib_inc_dir)/../rpp-lib.lib
57
58 clean::
59         $(call rm,$(rpp_lib_OBJS) $(rpp_lib_DEPS) rpp-lib.lib)