]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - tidl/tidl-api.git/blobdiff - tidl_api/Makefile
Update TIDL network data structure
[tidl/tidl-api.git] / tidl_api / Makefile
index 3fc6a2c1922f86dc09aa5e64d83cf7e0c5873f21..abae078564733d1f36d547f274741a3a8566719c 100644 (file)
 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 # THE POSSIBILITY OF SUCH DAMAGE.
+PYTHON_INCLUDE_DIR ?= $(wildcard $(TARGET_ROOTDIR)/usr/include/python3*)
 
 LIB_NAME = tidl_api.a
 DSP_SRCFILE = dsp/ocl_wrapper.cl
 DSP_OUTFILE = dsp/ocl_wrapper.dsp_h
 LIB_IMGUTIL_NAME = tidl_imgutil.a
+PY_LIB_NAME = tidl.so
 
-all: $(LIB_NAME) $(LIB_IMGUTIL_NAME)
+all: $(LIB_NAME) $(LIB_IMGUTIL_NAME) $(PY_LIB_NAME)
 
 include make.inc
 include make.buildid
@@ -40,16 +42,18 @@ AR = ar
 
 SRCS = ocl_device.cpp configuration_parser.cpp configuration.cpp\
           executor.cpp execution_object.cpp trace.cpp util.cpp \
-           execution_object_pipeline.cpp
+       execution_object_pipeline.cpp
 SRCS_IMGUTIL = imgutil.cpp
+SRCS_PYBIND  = pybind_eo.cpp pybind_eop.cpp pybind_executor.cpp \
+                          pybind_configuration.cpp pybind_helpers.cpp
 
 OBJS = $(SRCS:.cpp=.o)
 OBJS_IMGUTIL = $(SRCS_IMGUTIL:.cpp=.o)
+OBJS_PYBIND  = $(SRCS_PYBIND:.cpp=.o)
 
-HOST_SRC_FILES = $(addprefix src/,$(SRCS))
-HOST_OBJ_FILES = $(addprefix obj/,$(OBJS))
-HOST_SRC_IMGUTIL_FILES = $(addprefix src/,$(SRCS_IMGUTIL))
+HOST_OBJ_FILES         = $(addprefix obj/,$(OBJS))
 HOST_OBJ_IMGUTIL_FILES = $(addprefix obj/,$(OBJS_IMGUTIL))
+HOST_OBJ_PYBIND_FILES  = $(addprefix obj/,$(OBJS_PYBIND))
 
 HEADERS  = src/common_defines.h src/executor_impl.h src/ocl_device.h
 HEADERS += src/parameters.h src/tidl_create_params.h src/trace.h src/util.h
@@ -63,10 +67,16 @@ else
 endif
 
 CXXFLAGS += -std=c++11 -Wall -Werror -Wno-error=ignored-attributes
+CXXFLAGS += -fPIC
 CXXFLAGS += -I$(TI_OCL_INSTALL)/usr/share/ti/opencl
 CXXFLAGS += -I$(TARGET_ROOTDIR)/usr/share/ti/opencl
 CXXFLAGS += -Isrc -Iinc
 CXXFLAGS += $(BUILD_ID)
+PY_INCLUDE = -I$(PYTHON_INCLUDE_DIR) -I$(PYBIND11_INC_DIR)
+
+# pybind11 recommends setting visibility to hidden to reduce code size and
+# prevent name clashed when multiple shared libraries use pybind11
+$(HOST_OBJ_PYBIND_FILES): CXXFLAGS += -fvisibility=hidden
 
 $(DSP_OUTFILE): $(DSP_SRCFILE)
        $(MAKE) -C dsp
@@ -74,6 +84,12 @@ $(DSP_OUTFILE): $(DSP_SRCFILE)
 src/ocl_device.cpp: $(DSP_OUTFILE)
        touch $@
 
+$(HOST_OBJ_PYBIND_FILES): obj/%.o: src/%.cpp $(HEADERS) src/pybind_common.h
+       @mkdir -p obj
+       @echo Compiling pybind $< ...
+       $(CXX) -c $(PY_INCLUDE) $(CXXFLAGS) $< -o $@
+
+
 obj/%.o: src/%.cpp $(HEADERS)
        @mkdir -p obj
        @echo Compiling $< ...
@@ -82,13 +98,15 @@ obj/%.o: src/%.cpp $(HEADERS)
 $(LIB_NAME): $(HOST_OBJ_FILES)
        $(AR) cr $@ $(HOST_OBJ_FILES)
 
+$(PY_LIB_NAME): $(HOST_OBJ_PYBIND_FILES) $(LIB_NAME)
+       $(CXX) $(CXXFLAGS) -Wl,-Bsymbolic -shared -lOpenCL -locl_util $^ -o $@
 
 $(LIB_IMGUTIL_NAME): $(HOST_OBJ_IMGUTIL_FILES)
        $(AR) cr $@ $(HOST_OBJ_IMGUTIL_FILES)
 
 clean::
        $(MAKE) -C dsp clean
-       $(RM) -f $(LIB_NAME) $(HOST_OBJ_FILES)
+       $(RM) -f $(LIB_NAME) $(PY_LIB_NAME) $(HOST_OBJ_FILES)
        $(RM) -f $(LIB_IMGUTIL_NAME) $(HOST_OBJ_IMGUTIL_FILES)
        $(RM) -rf obj