initial release
[apps/tidep0074.git] / host / makefile
1 #
2 #  Copyright (c) 2013-2015 Texas Instruments Incorporated - http://www.ti.com
3 #  All rights reserved.
4 #
5 #  Redistribution and use in source and binary forms, with or without
6 #  modification, are permitted provided that the following conditions
7 #  are met:
8 #
9 #  *  Redistributions of source code must retain the above copyright
10 #     notice, this list of conditions and the following disclaimer.
11 #
12 #  *  Redistributions in binary form must reproduce the above copyright
13 #     notice, this list of conditions and the following disclaimer in the
14 #     documentation and/or other materials provided with the distribution.
15 #
16 #  *  Neither the name of Texas Instruments Incorporated nor the names of
17 #     its contributors may be used to endorse or promote products derived
18 #     from this software without specific prior written permission.
19 #
20 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 #  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 #  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 #  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 #  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 #  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 #  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 #  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 #  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 #  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 #  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #
33 #
34 #  ======== Makefile ========
35 #
37 srcs = main_host.c App.c
39 EXBASE = ..
40 include $(EXBASE)/products.mak
41 -include $(addprefix bin/$(PROFILE)/obj/,$(patsubst %.c,%.ov7A.dep,$(srcs)))
43 objs = $(addprefix bin/$(PROFILE)/obj/,$(patsubst %.c,%.ov7A,$(srcs)))
44 libs = $(IPC_INSTALL_DIR)/linux/src/transport/.libs/libtitransportrpmsg.a \
45        $(IPC_INSTALL_DIR)/linux/src/api/.libs/libtiipc.a \
46        $(IPC_INSTALL_DIR)/linux/src/utils/.libs/libtiipcutils.a \
47        $(CMEM_INSTALL_DIR)/lib/libticmem.a
50 # Use dynamic or shared libs
51 #libs = $(IPC_INSTALL_DIR)/linux/src/api/.libs/libtiipc.so \
52 #       $(IPC_INSTALL_DIR)/linux/src/utils/.libs/libtiipcutils.so \
53 #       $(IPC_INSTALL_DIR)/linux/src/transport/.libs/libtitransportrpmsg.so
55 all:
56         @$(ECHO) "#"
57         @$(ECHO) "# Making $@ ..."
58         $(MAKE) PROFILE=debug app_host
59         $(MAKE) PROFILE=release app_host
61 help:
62         @$(ECHO) "make                  # build executables"
63         @$(ECHO) "make clean            # clean everything"
65 install:
66         @$(ECHO) "#"
67         @$(ECHO) "# Making $@ ..."
68         @$(MKDIR) $(EXEC_DIR)/debug
69         $(CP) bin/debug/app_host $(EXEC_DIR)/debug
70         @$(MKDIR) $(EXEC_DIR)/release
71         $(CP) bin/release/app_host $(EXEC_DIR)/release
73 clean::
74         $(RMDIR) bin
77 #
78 #  ======== rules ========
79 #
80 app_host: bin/$(PROFILE)/app_host
81 bin/$(PROFILE)/app_host: $(objs) $(libs)
82         @$(ECHO) "#"
83         @$(ECHO) "# Making $@ ..."
84         $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
86 bin/$(PROFILE)/obj/%.ov7A: %.c
87         @$(ECHO) "#"
88         @$(ECHO) "# Making $@ ..."
89         $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
91 #  ======== install validation ========
92 ifeq (install,$(MAKECMDGOALS))
93 ifeq (,$(EXEC_DIR))
94 $(error must specify EXEC_DIR)
95 endif
96 endif
98 #  ======== toolchain macros ========
99 CC = $(TOOLCHAIN_PREFIX)gcc -c -MD -MF $@.dep
100 AR = $(TOOLCHAIN_PREFIX)ar cr
101 LD = $(TOOLCHAIN_PREFIX)gcc
103 CPPFLAGS = -D_REENTRANT
105 CFLAGS = -D_FILE_OFFSET_BITS=64 -Wall -ffloat-store -fPIC -Wunused -Dfar= $(CCPROFILE_$(PROFILE)) \
106     -I. -I.. -I $(IPC_INSTALL_DIR)/linux/include -I $(IPC_INSTALL_DIR)/packages -I $(CMEM_INSTALL_DIR)/include
108 LDFLAGS = $(LDPROFILE_$(PROFILE)) -Wall -Wl,-Map=$@.map
109 LDLIBS = -lpthread -lc -lrt
111 CCPROFILE_debug = -ggdb -D DEBUG
112 CCPROFILE_release = -O3 -D NDEBUG
114 LDPROFILE_debug = -ggdb
115 LDPROFILE_release = -O3
117 #  ======== standard macros ========
118 ifneq (,$(wildcard $(XDC_INSTALL_DIR)/bin/echo.exe))
119     # use these on Windows
120     CP      = $(XDC_INSTALL_DIR)/bin/cp
121     ECHO    = $(XDC_INSTALL_DIR)/bin/echo
122     MKDIR   = $(XDC_INSTALL_DIR)/bin/mkdir -p
123     RM      = $(XDC_INSTALL_DIR)/bin/rm -f
124     RMDIR   = $(XDC_INSTALL_DIR)/bin/rm -rf
125 else
126     # use these on Linux
127     CP      = cp
128     ECHO    = echo
129     MKDIR   = mkdir -p
130     RM      = rm -f
131     RMDIR   = rm -rf
132 endif
134 #  ======== create output directories ========
135 ifneq (clean,$(MAKECMDGOALS))
136 ifneq (,$(PROFILE))
137 ifeq (,$(wildcard bin/$(PROFILE)/obj))
138     $(shell $(MKDIR) -p bin/$(PROFILE)/obj)
139 endif
140 endif
141 endif