Adding py example script and improving CMake dist execution (now including...

Adding py example script and improving CMake dist execution (now including distutils call and auto-copy to dist folder)
parent 9dc0ae79
......@@ -19,40 +19,57 @@ endif( )
add_definitions( -DPy_NO_ENABLE_SHARED )
# Only add library here to check if it compiles. Use python distutils to actually compile the extension.
# Only add library here to check if it compiles in your preferred build env. CMake will run Python distutils to actually compile the extension, see below.
add_library( VAPython STATIC "src/vasingleton.cpp" "src/vasingletondoc.hpp" "src/vasingletonmethods.hpp" "MANIFEST.in" "setup.py" )
target_link_libraries( VAPython ${VISTA_USE_PACKAGE_LIBRARIES} )
# Run distutils after (useless) build in your dev env to compile the Python extension into 'dist' folder
set( BATCH_SCRIPT_EXTENSION "bat" )
if( NOT WIN32 )
set( BATCH_SCRIPT_EXTENSION "sh" )
endif( )
add_custom_command( TARGET VAPython POST_BUILD COMMAND "distutils_build.${BATCH_SCRIPT_EXTENSION}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Running distutils" VERBATIM )
# configure
vista_configure_lib( VAPython )
vista_install( VAPython )
set( VACS_INCLUDE_OUTDIR "${CMAKE_CURRENT_SOURCE_DIR}/include" )
vista_create_cmake_configs( VAPython )
vista_create_default_info_file( VAPython )
set_property( TARGET VAPython PROPERTY FOLDER "VA/Bindings" )
# install
if( WIN32 )
# This is hacky, but Pythons distutils needs the dependend libraries below root folder to create a distributable package.
install( FILES "${VABASE_LIBRARY_DIRS}/VABase.dll" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/bin" )
install( FILES "${VANET_LIBRARY_DIRS}/VANet.dll" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/bin" )
foreach( VISTACORELIBS_LIBRARY_DIR ${VISTACORELIBS_LIBRARY_DIRS} )
if( EXISTS "${VISTACORELIBS_LIBRARY_DIR}/VistaBase.dll" )
install( FILES "${VISTACORELIBS_LIBRARY_DIR}/VistaBase.dll" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/bin" )
endif( )
if( EXISTS "${VISTACORELIBS_LIBRARY_DIR}/VistaAspects.dll" )
install( FILES "${VISTACORELIBS_LIBRARY_DIR}/VistaAspects.dll" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/bin" )
endif( )
if( EXISTS "${VISTACORELIBS_LIBRARY_DIR}/VistaInterProcComm.dll" )
install( FILES "${VISTACORELIBS_LIBRARY_DIR}/VistaInterProcComm.dll" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/bin" )
endif( )
endforeach( )
else( )
message( WARN "VAPython distribution preparation not implemented yet. Please provide required VA and ViSTA libraries on runtime." )
# Please adapt for other OS or install VABase, VANet and VistaCoreLibs into your system (so VAPython can find the shared libraries)
# Copy python extension if available. Requires successful distutils execution.
vista_install_files_by_extension( dist/Lib/site-packages "python/Lib/site-packages" "pyd" "egg-info" )
# install by copying DLL/SO next to python extension
set( SHARED_LIBRARY_EXTENSION "dll" )
if( NOT WIN32 )
set( SHARED_LIBRARY_EXTENSION "so" )
endif( )
# VA shared libs
install( FILES "${VABASE_LIBRARY_DIRS}/VABase.${SHARED_LIBRARY_EXTENSION}" DESTINATION "python/Lib/site-packages" )
install( FILES "${VANET_LIBRARY_DIRS}/VANet.${SHARED_LIBRARY_EXTENSION}" DESTINATION "python/Lib/site-packages" )
# VistaCoreLibs shared libs
foreach( VISTACORELIBS_LIBRARY_DIR ${VISTACORELIBS_LIBRARY_DIRS} )
if( EXISTS "${VISTACORELIBS_LIBRARY_DIR}/VistaBase.${SHARED_LIBRARY_EXTENSION}" )
install( FILES "${VISTACORELIBS_LIBRARY_DIR}/VistaBase.${SHARED_LIBRARY_EXTENSION}" DESTINATION "python/Lib/site-packages" )
endif( )
if( EXISTS "${VISTACORELIBS_LIBRARY_DIR}/VistaAspects.${SHARED_LIBRARY_EXTENSION}" )
install( FILES "${VISTACORELIBS_LIBRARY_DIR}/VistaAspects.${SHARED_LIBRARY_EXTENSION}" DESTINATION "python/Lib/site-packages" )
endif( )
if( EXISTS "${VISTACORELIBS_LIBRARY_DIR}/VistaInterProcComm.${SHARED_LIBRARY_EXTENSION}" )
install( FILES "${VISTACORELIBS_LIBRARY_DIR}/VistaInterProcComm.${SHARED_LIBRARY_EXTENSION}" DESTINATION "python/Lib/site-packages" )
endif( )
endforeach( )
# Tests
install( DIRECTORY "tests" DESTINATION "python" )#
# Examples
install( DIRECTORY "tests" DESTINATION "python" )
# file GENERATED by distutils, do NOT edit
LICENSE.md
MANIFEST.in
README.md
setup.py
bin\VABase.dll
bin\VANet.dll
bin\VistaAspects.dll
bin\VistaBase.dll
bin\VistaInterProcComm.dll
src\vasingleton.cpp
src\vasingletondoc.hpp
src\vasingletonmethods.hpp
tests\vatest.py
import os
current_exec_dir = os.getcwd()
import va
va.connect # localhost
va.add_search_path( current_exec_dir ) # add current working path to find any file lying around here
signal_source_id = va.create_audio_file_signal_source( "Bauer.wav" ) # Provide this file or any other file
dir_id = va.load_directivity( "${DefaultDir}" )
sound_source_id = va.create_sound_source( "PySoundSource" )
va.set_sound_source_signal_source( sound_source_id, signal_source_id )
va.set_directivity( sound_source_id, dir_id )
va.set_sound_source_position( sound_source_id, ( 1, 1.2, -1 ) ) # OpenGL axes convention, direction is lower front-right from listener pos (s.b.)
hrir_id = va.load_hrir( "${DefaultHRIR}" )
listener_id = va.create_listener( "PyListener" )
va.set_listener_hrir( listener_id, hrir_id )
va.set_listener_position( listener_id, ( 0, 1.7, 0 ) ) # Ear height at 1.7m
va.set_audio_file_signal_source_is_looping( signal_source_id, true )
va.set_audio_file_signal_source_play_state( signal_source_id, "play" )
va.disconnect
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment