Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
5b0e8c6d
Commit
5b0e8c6d
authored
Mar 05, 2018
by
Max Kellermann
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v0.20.x'
parents
67274c01
8266ab55
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
98 additions
and
29 deletions
+98
-29
NEWS
NEWS
+5
-0
build.py
android/build.py
+30
-11
user.xml
doc/user.xml
+53
-0
libs.py
python/build/libs.py
+5
-0
Main.cxx
src/Main.cxx
+1
-18
ArgParser.cxx
src/protocol/ArgParser.cxx
+4
-0
No files found.
NEWS
View file @
5b0e8c6d
...
...
@@ -31,6 +31,11 @@ ver 0.21 (not yet released)
- opus: support for sending metadata using ogg stream chaining
* require GCC 5.0
ver 0.20.19 (not yet released)
* protocol
- validate absolute seek time, reject negative values
* macOS: fix crash bug
ver 0.20.18 (2018/02/24)
* input
- curl: allow authentication methods other than "Basic"
...
...
android/build.py
View file @
5b0e8c6d
...
...
@@ -3,13 +3,14 @@
import
os
,
os
.
path
import
sys
,
subprocess
if
len
(
sys
.
argv
)
<
3
:
print
(
"Usage: build.py SDK_PATH NDK_PATH [configure_args...]"
,
file
=
sys
.
stderr
)
if
len
(
sys
.
argv
)
<
4
:
print
(
"Usage: build.py SDK_PATH NDK_PATH
ABI
[configure_args...]"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
sdk_path
=
sys
.
argv
[
1
]
ndk_path
=
sys
.
argv
[
2
]
configure_args
=
sys
.
argv
[
3
:]
android_abi
=
sys
.
argv
[
3
]
configure_args
=
sys
.
argv
[
4
:]
if
not
os
.
path
.
isfile
(
os
.
path
.
join
(
sdk_path
,
'tools'
,
'android'
)):
print
(
"SDK not found in"
,
ndk_path
,
file
=
sys
.
stderr
)
...
...
@@ -19,8 +20,27 @@ if not os.path.isdir(ndk_path):
print
(
"NDK not found in"
,
ndk_path
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
android_abis
=
{
'armeabi-v7a'
:
{
'arch'
:
'arm-linux-androideabi'
,
'ndk_arch'
:
'arm'
,
'toolchain_arch'
:
'arm-linux-androideabi'
,
'llvm_triple'
:
'armv7-none-linux-androideabi'
,
'cflags'
:
'-march=armv7-a -mfpu=vfp -mfloat-abi=softfp'
,
},
'x86'
:
{
'arch'
:
'i686-linux-android'
,
'ndk_arch'
:
'x86'
,
'toolchain_arch'
:
'x86'
,
'llvm_triple'
:
'i686-none-linux-android'
,
'cflags'
:
'-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32'
,
},
}
# select the NDK target
arch
=
'arm-linux-androideabi'
abi_info
=
android_abis
[
android_abi
]
arch
=
abi_info
[
'arch'
]
# the path to the MPD sources
mpd_path
=
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
sys
.
argv
[
0
])
or
'.'
,
'..'
))
...
...
@@ -44,8 +64,7 @@ class AndroidNdkToolchain:
self
.
src_path
=
src_path
self
.
build_path
=
build_path
self
.
ndk_arch
=
'arm'
android_abi
=
'armeabi-v7a'
ndk_arch
=
abi_info
[
'ndk_arch'
]
ndk_platform
=
'android-14'
# select the NDK compiler
...
...
@@ -53,7 +72,7 @@ class AndroidNdkToolchain:
ndk_platform_path
=
os
.
path
.
join
(
ndk_path
,
'platforms'
,
ndk_platform
)
sysroot
=
os
.
path
.
join
(
ndk_path
,
'sysroot'
)
target_root
=
os
.
path
.
join
(
ndk_platform_path
,
'arch-'
+
self
.
ndk_arch
)
target_root
=
os
.
path
.
join
(
ndk_platform_path
,
'arch-'
+
ndk_arch
)
install_prefix
=
os
.
path
.
join
(
arch_path
,
'root'
)
...
...
@@ -61,13 +80,13 @@ class AndroidNdkToolchain:
self
.
install_prefix
=
install_prefix
self
.
sysroot
=
sysroot
toolchain_path
=
os
.
path
.
join
(
ndk_path
,
'toolchains'
,
a
rch
+
'-'
+
gcc_version
,
'prebuilt'
,
build_arch
)
toolchain_path
=
os
.
path
.
join
(
ndk_path
,
'toolchains'
,
a
bi_info
[
'toolchain_arch'
]
+
'-'
+
gcc_version
,
'prebuilt'
,
build_arch
)
llvm_path
=
os
.
path
.
join
(
ndk_path
,
'toolchains'
,
'llvm'
,
'prebuilt'
,
build_arch
)
llvm_triple
=
'armv7-none-linux-androideabi'
llvm_triple
=
abi_info
[
'llvm_triple'
]
common_flags
=
'-Os -g'
common_flags
+=
' -fPIC'
common_flags
+=
'
-march=armv7-a -mfpu=vfp -mfloat-abi=softfp'
common_flags
+=
'
'
+
abi_info
[
'cflags'
]
toolchain_bin
=
os
.
path
.
join
(
toolchain_path
,
'bin'
)
llvm_bin
=
os
.
path
.
join
(
llvm_path
,
'bin'
)
...
...
@@ -95,7 +114,7 @@ class AndroidNdkToolchain:
' '
+
common_flags
self
.
libs
=
''
self
.
is_arm
=
self
.
ndk_arch
==
'arm'
self
.
is_arm
=
ndk_arch
==
'arm'
self
.
is_armv7
=
self
.
is_arm
and
'armv7'
in
self
.
cflags
self
.
is_windows
=
False
...
...
doc/user.xml
View file @
5b0e8c6d
...
...
@@ -265,6 +265,59 @@ apt-get install g++ \
script.
</para>
</section>
<section
id=
"android_build"
>
<title>
Compiling for Android
</title>
<para>
MPD can be compiled as an Android app. It can be installed
easily with
<link
linkend=
"install_android"
>
Google
Play
</link>
, but if you want to build it from source, follow
this section.
</para>
<para>
You need:
</para>
<itemizedlist>
<listitem>
<para>
Android SDK
</para>
</listitem>
<listitem>
<para>
<ulink
url=
"https://developer.android.com/ndk/downloads/index.html"
>
Android
NDK
</ulink>
</para>
</listitem>
</itemizedlist>
<para>
Just like with the native build, unpack the
<application>
MPD
</application>
source tarball and change
into the directory. Then, instead of
<command>
./configure
</command>
, type:
</para>
<programlisting>
./android/build.py SDK_PATH NDK_PATH ABI
make android/build/mpd-debug.apk
</programlisting>
<para>
<varname>
SDK_PATH
</varname>
is the absolute path where you
installed the Android SDK;
<varname>
NDK_PATH
</varname>
is
the Android NDK installation path;
<varname>
ABI
</varname>
is
the Android ABI to be built, e.g. "armeabi-v7a".
</para>
<para>
This downloads various library sources, and then configures
and builds
<application>
MPD
</application>
.
</para>
</section>
</section>
<section
id=
"systemd_socket"
>
...
...
python/build/libs.py
View file @
5b0e8c6d
...
...
@@ -23,6 +23,11 @@ libvorbis = AutotoolsProject(
[
'--disable-shared'
,
'--enable-static'
,
],
edits
=
{
# this option is not understood by clang
'configure'
:
lambda
data
:
data
.
replace
(
'-mno-ieee-fp'
,
' '
),
}
)
opus
=
AutotoolsProject
(
...
...
src/Main.cxx
View file @
5b0e8c6d
...
...
@@ -107,10 +107,6 @@
#include <locale.h>
#endif
#ifdef __BLOCKS__
#include <dispatch/dispatch.h>
#endif
#include <limits.h>
static
constexpr
size_t
KILOBYTE
=
1024
;
...
...
@@ -536,21 +532,8 @@ try {
daemonize_begin
(
options
.
daemon
);
#endif
#ifdef __BLOCKS__
/* Runs the OS X native event loop in the main thread, and runs
the rest of mpd_main on a new thread. This lets CoreAudio receive
route change notifications (e.g. plugging or unplugging headphones).
All hardware output on OS X ultimately uses CoreAudio internally.
This must be run after forking; if dispatch is called before forking,
the child process will have a broken internal dispatch state. */
dispatch_async
(
dispatch_get_global_queue
(
DISPATCH_QUEUE_PRIORITY_DEFAULT
,
0
),
^
{
exit
(
mpd_main_after_fork
(
config
));
});
dispatch_main
();
return
EXIT_FAILURE
;
// unreachable, because dispatch_main never returns
#else
return
mpd_main_after_fork
(
config
);
#endif
}
catch
(
const
std
::
exception
&
e
)
{
LogError
(
e
);
return
EXIT_FAILURE
;
...
...
src/protocol/ArgParser.cxx
View file @
5b0e8c6d
...
...
@@ -164,6 +164,10 @@ SongTime
ParseCommandArgSongTime
(
const
char
*
s
)
{
auto
value
=
ParseCommandArgFloat
(
s
);
if
(
value
<
0
)
throw
FormatProtocolError
(
ACK_ERROR_ARG
,
"Negative value not allowed: %s"
,
s
);
return
SongTime
::
FromS
(
value
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment