Fix g++ 8.3.0 compilation error
[tidl/tidl-api.git] / tidl_api / Makefile
1 # Copyright (c) 2018 Texas Instruments Incorporated - http://www.ti.com/
2 # All rights reserved.
3
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are met:
6 # * Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer.
8 # * Redistributions in binary form must reproduce the above copyright
9 # notice, this list of conditions and the following disclaimer in the
10 # documentation and/or other materials provided with the distribution.
11 # * Neither the name of Texas Instruments Incorporated nor the
12 # names of its contributors may be used to endorse or promote products
13 # derived from this software without specific prior written permission.
14
15 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
25 # THE POSSIBILITY OF SUCH DAMAGE.
26 PYTHON_INCLUDE_DIR ?= $(wildcard $(TARGET_ROOTDIR)/usr/include/python3*)
28 LIB_NAME = tidl_api.a
29 LIB_IMGUTIL_NAME = tidl_imgutil.a
30 PY_LIB_NAME = tidl.so
32 all: $(LIB_NAME) $(LIB_IMGUTIL_NAME) $(PY_LIB_NAME)
34 include make.inc
35 include make.buildid
37 RM = rm
38 AR = ar
41 SRCS = ocl_device.cpp configuration_parser.cpp configuration.cpp\
42            executor.cpp execution_object.cpp trace.cpp util.cpp \
43        execution_object_pipeline.cpp
44 SRCS_IMGUTIL = imgutil.cpp
45 SRCS_PYBIND  = pybind_eo.cpp pybind_eop.cpp pybind_executor.cpp \
46                            pybind_configuration.cpp pybind_helpers.cpp
48 OBJS = $(SRCS:.cpp=.o)
49 OBJS_IMGUTIL = $(SRCS_IMGUTIL:.cpp=.o)
50 OBJS_PYBIND  = $(SRCS_PYBIND:.cpp=.o)
52 HOST_OBJ_FILES         = $(addprefix obj/,$(OBJS))
53 HOST_OBJ_IMGUTIL_FILES = $(addprefix obj/,$(OBJS_IMGUTIL))
54 HOST_OBJ_PYBIND_FILES  = $(addprefix obj/,$(OBJS_PYBIND))
56 HEADERS  = src/common_defines.h src/executor_impl.h src/ocl_device.h
57 HEADERS += src/parameters.h src/tidl_create_params.h src/trace.h src/util.h
58 HEADERS += inc/configuration.h inc/execution_object.h inc/executor.h
59 HEADERS += inc/imgutil.h src/device_arginfo.h inc/execution_object_pipeline.h
61 ifeq ($(BUILD), debug)
62         CXXFLAGS += -Og -g -ggdb
63 else
64         CXXFLAGS += -O3
65 endif
67 CXXFLAGS += -std=c++11 -Wall -Werror -Wno-error=ignored-attributes
68 CXXFLAGS += -fPIC
69 CXXFLAGS += -I$(TI_OCL_INSTALL)/usr/share/ti/opencl
70 CXXFLAGS += -I$(TARGET_ROOTDIR)/usr/share/ti/opencl
71 CXXFLAGS += -Isrc -Iinc
72 CXXFLAGS += $(BUILD_ID)
73 PY_INCLUDE = -I$(PYTHON_INCLUDE_DIR) -I$(PYBIND11_INC_DIR)
75 # pybind11 recommends setting visibility to hidden to reduce code size and
76 # prevent name clashed when multiple shared libraries use pybind11
77 $(HOST_OBJ_PYBIND_FILES): CXXFLAGS += -fvisibility=hidden
79 $(HOST_OBJ_PYBIND_FILES): obj/%.o: src/%.cpp $(HEADERS) src/pybind_common.h
80         @mkdir -p obj
81         @echo Compiling pybind $< ...
82         $(CXX) -c $(PY_INCLUDE) $(CXXFLAGS) $< -o $@
85 obj/%.o: src/%.cpp $(HEADERS)
86         @mkdir -p obj
87         @echo Compiling $< ...
88         $(CXX) -c $(CXXFLAGS) $< -o $@
90 $(LIB_NAME): $(HOST_OBJ_FILES)
91         $(AR) cr $@ $(HOST_OBJ_FILES)
93 $(PY_LIB_NAME): $(HOST_OBJ_PYBIND_FILES) $(LIB_NAME)
94         $(CXX) $(CXXFLAGS) -Wl,-Bsymbolic -shared -lOpenCL -locl_util $^ -o $@
96 $(LIB_IMGUTIL_NAME): $(HOST_OBJ_IMGUTIL_FILES)
97         $(AR) cr $@ $(HOST_OBJ_IMGUTIL_FILES)
99 clean::
100         $(RM) -f $(LIB_NAME) $(PY_LIB_NAME)
101         $(RM) -f $(LIB_IMGUTIL_NAME)
102         $(RM) -rf obj