Blame opae-libs/pyopae/CMakeLists.txt

Packit 534379
## Copyright(c) 2018-2020, Intel Corporation
Packit 534379
##
Packit 534379
## Redistribution  and  use  in source  and  binary  forms,  with  or  without
Packit 534379
## modification, are permitted provided that the following conditions are met:
Packit 534379
##
Packit 534379
## * Redistributions of  source code  must retain the  above copyright notice,
Packit 534379
##   this list of conditions and the following disclaimer.
Packit 534379
## * Redistributions in binary form must reproduce the above copyright notice,
Packit 534379
##   this list of conditions and the following disclaimer in the documentation
Packit 534379
##   and/or other materials provided with the distribution.
Packit 534379
## * Neither the name  of Intel Corporation  nor the names of its contributors
Packit 534379
##   may be used to  endorse or promote  products derived  from this  software
Packit 534379
##   without specific prior written permission.
Packit 534379
##
Packit 534379
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Packit 534379
## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,  BUT NOT LIMITED TO,  THE
Packit 534379
## IMPLIED WARRANTIES OF  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
Packit 534379
## ARE DISCLAIMED.  IN NO EVENT  SHALL THE COPYRIGHT OWNER  OR CONTRIBUTORS BE
Packit 534379
## LIABLE  FOR  ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR
Packit 534379
## CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT  NOT LIMITED  TO,  PROCUREMENT  OF
Packit 534379
## SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE,  DATA, OR PROFITS;  OR BUSINESS
Packit 534379
## INTERRUPTION)  HOWEVER CAUSED  AND ON ANY THEORY  OF LIABILITY,  WHETHER IN
Packit 534379
## CONTRACT,  STRICT LIABILITY,  OR TORT  (INCLUDING NEGLIGENCE  OR OTHERWISE)
Packit 534379
## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,  EVEN IF ADVISED OF THE
Packit 534379
## POSSIBILITY OF SUCH DAMAGE.
Packit 534379
Packit 534379
set(PYOPAE_PYBIND11_VERSION "2.2.4")
Packit 534379
Packit 534379
set(PYOPAE_SRC
Packit 534379
    opae.cpp
Packit 534379
    pycontext.h
Packit 534379
    pycontext.cpp
Packit 534379
    pyproperties.h
Packit 534379
    pyproperties.cpp
Packit 534379
    pyhandle.h
Packit 534379
    pyhandle.cpp
Packit 534379
    pytoken.h
Packit 534379
    pytoken.cpp
Packit 534379
    pyshared_buffer.h
Packit 534379
    pyshared_buffer.cpp
Packit 534379
    pyevents.h
Packit 534379
    pyevents.cpp
Packit 534379
    pyerrors.h
Packit 534379
    pyerrors.cpp
Packit 534379
    pysysobject.h
Packit 534379
    pysysobject.cpp
Packit 534379
)
Packit 534379
Packit 534379
opae_external_project_add(PROJECT_NAME pybind11
Packit 534379
                          GIT_URL https://github.com/pybind/pybind11.git
Packit 534379
                          GIT_TAG v2.4.3
Packit 534379
                          )
Packit 534379
Packit 534379
opae_add_module_library(TARGET _opae
Packit 534379
    SOURCE ${PYOPAE_SRC}
Packit 534379
    LIBS
Packit 534379
        opae-c
Packit 534379
        opae-cxx-core
Packit 534379
)
Packit 534379
Packit 534379
target_include_directories(_opae
Packit 534379
    PRIVATE ${PYBIND11_INCLUDE_DIR}
Packit 534379
    PRIVATE ${PYTHON_INCLUDE_DIRS})
Packit 534379
Packit 534379
set_target_properties(_opae
Packit 534379
    PROPERTIES PREFIX ""
Packit 534379
    CXX_VISIBILITY_PRESET "hidden"
Packit 534379
    LINK_FLAGS "-std=c++11"
Packit 534379
    LIBRARY_OUTPUT_DIRECTORY
Packit 534379
    ${LIBRARY_OUTPUT_PATH}/python${OPAE_PYTHON_VERSION}/opae/fpga
Packit 534379
)
Packit 534379
Packit 534379
add_custom_command(TARGET _opae
Packit 534379
    POST_BUILD
Packit 534379
    COMMAND ${CMAKE_COMMAND} -E copy
Packit 534379
    ${CMAKE_CURRENT_SOURCE_DIR}/opae/__init__.py
Packit 534379
    ${LIBRARY_OUTPUT_PATH}/python${OPAE_PYTHON_VERSION}/opae
Packit 534379
    COMMAND ${CMAKE_COMMAND} -E copy
Packit 534379
    ${CMAKE_CURRENT_SOURCE_DIR}/opae/fpga/__init__.py
Packit 534379
    ${LIBRARY_OUTPUT_PATH}/python${OPAE_PYTHON_VERSION}/opae/fpga
Packit 534379
    COMMENT "Copying namespace package files")
Packit 534379
Packit 534379
add_custom_command(TARGET _opae
Packit 534379
    POST_BUILD
Packit 534379
    COMMAND ${CMAKE_COMMAND} -E copy
Packit 534379
    ${CMAKE_CURRENT_SOURCE_DIR}/test_pyopae.py
Packit 534379
    ${LIBRARY_OUTPUT_PATH}/python${OPAE_PYTHON_VERSION}
Packit 534379
    COMMENT "Copying Python test files")
Packit 534379
Packit 534379
if (OPAE_BUILD_PYTHON_DIST)
Packit 534379
    set(SETUP_INCLUDE_DIRS "${OPAE_INCLUDE_DIR}:${PYBIND_INCLUDE_DIR}")
Packit 534379
Packit 534379
    set(PYFILES
Packit 534379
        setup.py
Packit 534379
        opae/__init__.py
Packit 534379
        opae/fpga/__init__.py
Packit 534379
        test_pyopae.py
Packit 534379
        )
Packit 534379
Packit 534379
    set (PYDIST_STAGE_DIR ${CMAKE_CURRENT_BINARY_DIR}/stage)
Packit 534379
Packit 534379
    configure_file(README.md ${PYDIST_STAGE_DIR}/README.md @ONLY)
Packit 534379
    foreach(pyfile ${PYFILES})
Packit 534379
        configure_file(${pyfile} ${PYDIST_STAGE_DIR}/${pyfile} @ONLY)
Packit 534379
    endforeach(pyfile ${PYFILES})
Packit 534379
Packit 534379
    foreach(cppfile ${PYOPAE_SRC})
Packit 534379
        file(COPY ${cppfile} DESTINATION ${PYDIST_STAGE_DIR})
Packit 534379
    endforeach(cppfile ${PYOPAE_SRC})
Packit 534379
    file(COPY MANIFEST.in DESTINATION ${PYDIST_STAGE_DIR})
Packit 534379
    add_custom_target(pyopae-dist
Packit 534379
        COMMAND ${PYTHON_EXECUTABLE} setup.py sdist
Packit 534379
        COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext
Packit 534379
        --include-dirs=${OPAE_INCLUDE_DIR}
Packit 534379
        --library-dirs=${LIBRARY_OUTPUT_PATH}
Packit 534379
        COMMAND ${PYTHON_EXECUTABLE} setup.py bdist_wheel
Packit 534379
        DEPENDS ${PYFILES} ${PYOPAE_SRC}
Packit 534379
        WORKING_DIRECTORY ${PYDIST_STAGE_DIR}
Packit 534379
        COMMENT "Building Python distrubutions")
Packit 534379
endif (OPAE_BUILD_PYTHON_DIST)