Skip to content

Commit c2aeab3

Browse files
author
Joel Winarske
committed
All demos running on Linux, Mac, Windows, and Android builds. Tested using Appveyor, and Travis-CI.
Removed audio_*_alsa.* files in favor of the PortAudio implementation. audio_input_file.cc - Windows requires streams opened with binary flag. base64_encode.cc - u_char is not defined on some systems (Mac), using uint8_t instead. There is a pending PR for my CMake implementation to "build" googleapis tree. Once this is accepted, cmake/build_googleapis.cmake will be removed. When Cross compiling, a host implementation of grpc is required.
1 parent 7429777 commit c2aeab3

17 files changed

+787
-335
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,7 @@ run_assistant_audio
1111
run_assistant_file
1212
run_assistant_text
1313
# Generated files
14-
src/embedded_assistant*
14+
src/embedded_assistant*
15+
build
16+
.DS_Store
17+

.travis.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
language: cpp
2+
3+
os:
4+
- linux
5+
- osx
6+
7+
compiler:
8+
- gcc
9+
- clang
10+
11+
env:
12+
- BUILD_TYPE=Debug CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
13+
- BUILD_TYPE=Debug CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
14+
- BUILD_TYPE=Debug CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
15+
16+
- BUILD_TYPE=Release CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
17+
- BUILD_TYPE=Release CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
18+
- BUILD_TYPE=Release CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
19+
20+
- BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
21+
- BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
22+
- BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE"
23+
24+
addons:
25+
apt:
26+
packages:
27+
- libasound2-dev
28+
29+
install:
30+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"; fi
31+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mkdir ${DEPS_DIR} && cd ${DEPS_DIR} && pwd; fi
32+
33+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then travis_retry wget --no-check-certificate https://cmake.org/files/v3.11/cmake-3.11.0-Linux-x86_64.tar.gz; fi
34+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo "96d67e21f0983ebf0fffc5b106ec338c *cmake-3.11.0-Linux-x86_64.tar.gz" > cmake_md5.txt; fi
35+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then md5sum -c cmake_md5.txt; fi
36+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar -xvf cmake-3.11.0-Linux-x86_64.tar.gz > /dev/null; fi
37+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mv cmake-3.11.0-Linux-x86_64 cmake-install; fi
38+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH; fi
39+
40+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then travis_retry wget --no-check-certificate https://dl.google.com/go/go1.11.1.linux-amd64.tar.gz; fi
41+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo "a6103c8157246dd1ac70528878994f31 *go1.11.1.linux-amd64.tar.gz" > go_md5.txt; fi
42+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then md5sum -c go_md5.txt; fi
43+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar -xzf go1.11.1.linux-amd64.tar.gz > /dev/null; fi
44+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export GOROOT=${DEPS_DIR}/go; fi
45+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then PATH=${DEPS_DIR}/go/bin:$PATH; fi
46+
47+
48+
before_script:
49+
- cd ${TRAVIS_BUILD_DIR}
50+
- mkdir build && cd build
51+
- cmake -DCMAKE_VERBOSE_MAKEFILE=FALSE -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
52+
-DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/build/dist ${CMAKE_ARGS}
53+
..
54+
script:
55+
- cmake --build . --config ${BUILD_TYPE} --target install

CMakeLists.txt

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
cmake_minimum_required(VERSION 3.11)
2+
3+
if(NOT CMAKE_BUILD_TYPE)
4+
set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE)
5+
message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.")
6+
endif()
7+
8+
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake")
9+
10+
if(NOT BUILD_NUMBER)
11+
set(BUILD_NUMBER 0)
12+
endif()
13+
set(ASSISTANT_SDK_CPP_VERSION 0.1.${BUILD_NUMBER})
14+
15+
set(PACKAGE_NAME assistant-sdk-cpp)
16+
project(${PACKAGE_NAME} VERSION "${ASSISTANT_SDK_CPP_VERSION}" LANGUAGES CXX C)
17+
18+
message(STATUS "Generator .............. ${CMAKE_GENERATOR}")
19+
message(STATUS "Build Type ............. ${CMAKE_BUILD_TYPE}")
20+
include (target_arch)
21+
get_target_arch(TARGET_ARCH)
22+
message(STATUS "Target ................. ${TARGET_ARCH}")
23+
24+
include(build_dependencies)
25+
26+
set(CMAKE_CXX_STANDARD_REQUIRED 11)
27+
set(CMAKE_CXX_STANDARD 11)
28+
29+
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
30+
include(FindThreads)
31+
32+
33+
set(GOOGLEAPIS_API_CCS
34+
${GOOGLEAPIS_GENS_PATH}/google/api/http.grpc.pb.cc
35+
${GOOGLEAPIS_GENS_PATH}/google/api/http.pb.cc
36+
${GOOGLEAPIS_GENS_PATH}/google/api/annotations.grpc.pb.cc
37+
${GOOGLEAPIS_GENS_PATH}/google/api/annotations.pb.cc
38+
)
39+
set(GOOGLEAPIS_TYPE_CCS
40+
${GOOGLEAPIS_GENS_PATH}/google/type/latlng.pb.cc
41+
${GOOGLEAPIS_GENS_PATH}/google/type/latlng.grpc.pb.cc
42+
)
43+
set(GOOGLEAPIS_RPC_CCS
44+
)
45+
set(GOOGLEAPIS_ASSISTANT_PATH google/assistant/embedded/v1alpha2)
46+
set(GOOGLEAPIS_ASSISTANT_CCS
47+
${GOOGLEAPIS_GENS_PATH}/${GOOGLEAPIS_ASSISTANT_PATH}/embedded_assistant.pb.cc
48+
${GOOGLEAPIS_GENS_PATH}/${GOOGLEAPIS_ASSISTANT_PATH}/embedded_assistant.grpc.pb.cc
49+
)
50+
set(GOOGLEAPIS_CCS
51+
${GOOGLEAPIS_ASSISTANT_CCS} ${GOOGLEAPIS_API_CCS}
52+
${GOOGLEAPIS_RPC_CCS} ${GOOGLEAPIS_TYPE_CCS}
53+
)
54+
set_source_files_properties(${GOOGLEAPIS_CCS} PROPERTIES GENERATED TRUE)
55+
56+
set(CORE_SRCS src/base64_encode.cc src/json_util.cc)
57+
set(AUDIO_INPUT_FILE_SRCS src/audio_input_file.cc)
58+
set(ASSISTANT_AUDIO_SRCS src/run_assistant_audio.cc src/audio_pa.cc)
59+
set(ASSISTANT_FILE_SRCS src/run_assistant_file.cc)
60+
set(ASSISTANT_TEXT_SRCS src/run_assistant_text.cc)
61+
62+
63+
include_directories(src)
64+
65+
66+
set(EXE_DEPS googleapis_ccs portaudio_ext)
67+
68+
if(WIN32 AND MSVC)
69+
add_definitions(-D_WIN32_WINNT=0x600)
70+
set(_ALLTARGETS_LIBRARIES ${_GPERF_LIBRARY})
71+
list(APPEND EXE_DEPS gperf_ext portaudio_ext)
72+
elseif(APPLE)
73+
set(_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} m ${CMAKE_THREAD_LIBS_INIT})
74+
elseif(ANDROID)
75+
set(_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} m log)
76+
else()
77+
set(_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} rt m ${CMAKE_THREAD_LIBS_INIT})
78+
endif()
79+
80+
81+
set(LDFLAGS
82+
grpc++ grpc gpr grpc_cronet address_sorting
83+
${_PROTOBUF_LIBRARIES} ${_CARES_LIBRARIES}
84+
${_ZLIB_LIBRARIES} ${_SSL_LIBRARIES}
85+
${_ALLTARGETS_LIBRARIES}
86+
)
87+
88+
89+
add_library(googleapis_ccs STATIC ${GOOGLEAPIS_CCS})
90+
add_dependencies(googleapis_ccs googleapis)
91+
92+
add_executable(run_assistant_text ${CORE_SRCS} ${ASSISTANT_TEXT_SRCS})
93+
target_link_libraries(run_assistant_text googleapis_ccs ${LDFLAGS})
94+
add_dependencies(run_assistant_text ${EXE_DEPS})
95+
96+
add_executable(run_assistant_file ${CORE_SRCS} ${AUDIO_INPUT_FILE_SRCS} ${ASSISTANT_FILE_SRCS})
97+
target_link_libraries(run_assistant_file googleapis_ccs ${LDFLAGS})
98+
add_dependencies(run_assistant_file ${EXE_DEPS})
99+
100+
add_executable(run_assistant_audio ${CORE_SRCS} ${AUDIO_SRCS} ${ASSISTANT_AUDIO_SRCS})
101+
target_link_libraries(run_assistant_audio googleapis_ccs ${LDFLAGS} ${_PORTAUDIO_LIB})
102+
add_dependencies(run_assistant_audio ${EXE_DEPS})
103+
104+
105+
install (TARGETS run_assistant_audio run_assistant_text run_assistant_file
106+
RUNTIME DESTINATION bin
107+
)
108+
109+
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake")

appveyor.yml

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
version: 0.1.0.{build}
2+
3+
shallow_clone: true
4+
clone_depth: 1
5+
6+
configuration:
7+
- MinSizeRel
8+
- Release
9+
- Debug
10+
11+
environment:
12+
DIST_DIR: '%APPVEYOR_BUILD_FOLDER%\dist'
13+
GOPATH: c:\go
14+
15+
matrix:
16+
17+
- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
18+
VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
19+
ARCHITECTURE: amd64_x86
20+
ARCHIVE: VS2015_%CONFIGURATION%_x86_%APPVEYOR_BUILD_NUMBER%
21+
GENERATOR: 'NMake Makefiles'
22+
CMAKE_ARGS:
23+
24+
- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
25+
VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
26+
ARCHITECTURE: amd64
27+
ARCHIVE: VS2015_%CONFIGURATION%_x64_%APPVEYOR_BUILD_NUMBER%
28+
GENERATOR: 'NMake Makefiles'
29+
CMAKE_ARGS:
30+
31+
# - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
32+
# VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
33+
# ARCHITECTURE: amd64_arm
34+
# ARCHIVE: VS2015_%CONFIGURATION%_ARM_%APPVEYOR_BUILD_NUMBER%
35+
# GENERATOR: 'NMake Makefiles'
36+
# CMAKE_ARGS:
37+
38+
39+
# - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
40+
# VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
41+
# ARCHITECTURE: amd64_arm
42+
# ARCHIVE: VS2017_%CONFIGURATION%_ARM_%APPVEYOR_BUILD_NUMBER%
43+
# GENERATOR: 'NMake Makefiles'
44+
# CMAKE_ARGS:
45+
46+
# - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
47+
# VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
48+
# ARCHITECTURE: amd64_arm64
49+
# ARCHIVE: VS2017_%CONFIGURATION%_ARM64_%APPVEYOR_BUILD_NUMBER%
50+
# GENERATOR: 'NMake Makefiles'
51+
# CMAKE_ARGS:
52+
53+
- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
54+
VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
55+
ARCHITECTURE: amd64_x86
56+
ARCHIVE: VS2017_%CONFIGURATION%_x86_%APPVEYOR_BUILD_NUMBER%
57+
GENERATOR: 'NMake Makefiles'
58+
CMAKE_ARGS:
59+
60+
- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
61+
VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
62+
ARCHITECTURE: amd64
63+
ARCHIVE: VS2017_%CONFIGURATION%_x86_%APPVEYOR_BUILD_NUMBER%
64+
GENERATOR: 'NMake Makefiles'
65+
CMAKE_ARGS:
66+
67+
init:
68+
- echo BUILD_NUMBER=%APPVEYOR_BUILD_NUMBER%
69+
70+
stack:
71+
- go 1.11
72+
73+
install:
74+
- cmake --version
75+
- go version
76+
77+
build:
78+
parallel: true
79+
80+
build_script:
81+
82+
- if exist "%VCVARSALL%" ( call "%VCVARSALL%" %ARCHITECTURE% )
83+
84+
- cd %APPVEYOR_BUILD_FOLDER%
85+
- mkdir build
86+
- cd build
87+
88+
- cmake %CMAKE_TOOLCHAIN_ARGS% -G"%GENERATOR%" -DCMAKE_VERBOSE_MAKEFILE=TRUE
89+
-DCMAKE_BUILD_TYPE=%CONFIGURATION%
90+
"-DCMAKE_INSTALL_PREFIX=%DIST_DIR%\%APPVEYOR_BUILD_WORKER_IMAGE%"
91+
-DBUILD_NUMBER=%APPVEYOR_BUILD_NUMBER% %CMAKE_ARGS%
92+
..
93+
94+
- cmake --build . --config %CONFIGURATION% --target all
95+
96+
after_build:
97+
- cd %DIST_DIR%
98+
- 7z a -tzip %ARCHIVE%.zip "%APPVEYOR_BUILD_WORKER_IMAGE%"
99+
- certutil -hashfile %ARCHIVE%.zip MD5 > %ARCHIVE%.md5
100+
101+
artifacts:
102+
- path: dist\$(ARCHIVE).zip
103+
- path: dist\$(ARCHIVE).md5

0 commit comments

Comments
 (0)