Merge commit '33f0fc3c9565308044c934c9e0c1bb81c1a26311'
[osmocom-bb.git] / src / Makefile
1
2 # this is not really used as we don't do 'make install'. You can still specify
3 # it in case you _want_ to manually 'make install' the target libosmocore.
4 CROSS_INST_PREFIX=/usr/local/stow/osmocom-bb/arm-elf
5
6 # this is the prefix of your cross-toolchain programs
7 CROSS_TOOL_PREFIX=arm-elf-
8
9 TOPDIR=$(shell pwd)
10 OSMOCORE_CONFIGURE_ENV= LIBOSMOCORE_LIBS=$(TOPDIR)/shared/libosmocore/build-host/src/.libs/libosmocore.a \
11                         LIBOSMOVTY_LIBS=$(TOPDIR)/shared/libosmocore/build-host/src/vty/.libs/libosmovty.a \
12                         LIBOSMOCORE_CFLAGS=-I$(TOPDIR)/shared/libosmocore/include \
13                         LIBOSMOVTY_CFLAGS=-I$(TOPDIR)/shared/libosmocore/include
14
15 all: libosmocore-host libosmocore-target layer23 osmocon firmware
16
17 libosmocore-host: shared/libosmocore/build-host/src/.libs/libosmocore.la
18
19 shared/libosmocore/build-host:
20         mkdir $@
21
22 shared/libosmocore/configure: shared/libosmocore/configure.in
23         cd shared/libosmocore && autoreconf -i
24
25 shared/libosmocore/build-host/Makefile: shared/libosmocore/configure shared/libosmocore/build-host
26         cd shared/libosmocore/build-host && ../configure
27
28 shared/libosmocore/build-host/src/.libs/libosmocore.la: shared/libosmocore/build-host/Makefile
29         cd shared/libosmocore/build-host && make
30
31
32 libosmocore-target: shared/libosmocore/build-target/src/.libs/libosmocore.a
33
34 shared/libosmocore/build-target:
35         mkdir $@
36
37 shared/libosmocore/build-target/Makefile: shared/libosmocore/configure shared/libosmocore/build-target
38         cd shared/libosmocore/build-target && ../configure \
39                         --host=arm-elf-linux --disable-vty \
40                         --disable-shared --disable-talloc --disable-tests \
41                 CC="$(CROSS_TOOL_PREFIX)gcc" CFLAGS="-Os -ffunction-sections -I../../../../target/firmware/include"
42
43 shared/libosmocore/build-target/src/.libs/libosmocore.a: shared/libosmocore/build-target/Makefile
44         cd shared/libosmocore/build-target && make
45
46
47 .PHONY: osmocon
48 osmocon: host/osmocon/osmocon
49
50 host/osmocon/configure: host/osmocon/configure.ac
51         cd host/osmocon && autoreconf -i
52
53 host/osmocon/Makefile: host/osmocon/configure
54         cd host/osmocon && $(OSMOCORE_CONFIGURE_ENV) ./configure
55
56 host/osmocon/osmocon: host/osmocon/Makefile libosmocore-host
57         make -C host/osmocon
58
59
60 .PHONY: layer23
61 layer23: host/layer23/layer23
62
63 host/layer23/configure: host/layer23/configure.ac
64         cd host/layer23 && autoreconf -i
65
66 host/layer23/Makefile: host/layer23/configure
67         cd host/layer23 && $(OSMOCORE_CONFIGURE_ENV) ./configure
68
69 host/layer23/layer23: host/layer23/Makefile libosmocore-host
70         make -C host/layer23
71
72
73 .PHONY: firmware
74 firmware: libosmocore-target
75         make -C target/firmware CROSS_COMPILE=$(CROSS_TOOL_PREFIX)
76
77
78 clean:
79         make -C shared/libosmocore/build-host $@
80         make -C shared/libosmocore/build-target $@
81         make -C host/layer23 $@
82         make -C host/osmocon $@
83         make -C target/firmware $@
84
85 distclean:
86         rm -rf shared/libosmocore/build-host
87         rm -rf shared/libosmocore/build-target
88         make -C host/layer23 $@
89         make -C host/osmocon $@
90         make -C target/firmware $@