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
4a120f80
Commit
4a120f80
authored
Jan 05, 2018
by
Max Kellermann
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v0.20.x'
parents
79b0f97a
c2cbb7b8
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
149 additions
and
47 deletions
+149
-47
Makefile.am
Makefile.am
+54
-27
NEWS
NEWS
+5
-0
build.py
android/build.py
+2
-0
autotools.py
python/build/autotools.py
+19
-11
libs.py
python/build/libs.py
+23
-7
makeproject.py
python/build/makeproject.py
+28
-0
Observer.cxx
src/filter/Observer.cxx
+4
-0
HaikuOutputPlugin.cxx
src/output/plugins/HaikuOutputPlugin.cxx
+0
-1
SoxrResampler.cxx
src/pcm/SoxrResampler.cxx
+8
-0
SoxrResampler.hxx
src/pcm/SoxrResampler.hxx
+1
-0
Util.cxx
src/thread/Util.cxx
+5
-1
No files found.
Makefile.am
View file @
4a120f80
...
...
@@ -291,30 +291,62 @@ libmain_a_CPPFLAGS = $(AM_CPPFLAGS) -Iandroid/build/include
src_mpd_LDADD
+=
libandroid.a libjava.a
all-local
:
android/build/
bin/
$(APK_NAME)-debug.apk
all-local
:
android/build/$(APK_NAME)-debug.apk
clean-local
:
rm
-rf
android/build
libmpd.so
:
$(filter %.a
,
$(src_mpd_LDADD)) libmain.a
$(AM_V_CXXLD)$(CXXLD)
-shared
-Wl
,--no-undefined,-shared,-Bsymbolic
-llog
-lz
-o
$@
$(AM_CXXFLAGS)
$(CXXFLAGS)
$(LDFLAGS)
src/libmain_a-Main.o
$(src_mpd_LDADD)
$(LIBS)
android/build/build.xml
:
android/AndroidManifest.xml
rm
-rf
android/build
mkdir
-p
android/build/include android/build/res android/build/src/org
ln
-s
$(abs_srcdir)
/android/AndroidManifest.xml
$(abs_srcdir)
/android/custom_rules.xml android/build
ln
-s
$(abs_srcdir)
/android/src android/build/src/org/musicpd
ln
-s
$(abs_srcdir)
/android/res/values
$(abs_srcdir)
/android/res/layout android/build/res
$(ANDROID_SDK)
/tools/android update project
--path
android/build
--target
android-17
--name
$(APK_NAME)
ANDROID_SDK_BUILD_TOOLS_VERSION
=
20.0.0
ANDROID_SDK_PLATFORM
=
android-17
ANDROID_BUILD_TOOLS_DIR
=
$(ANDROID_SDK)
/build-tools/
$(ANDROID_SDK_BUILD_TOOLS_VERSION)
ANDROID_SDK_PLATFORM_DIR
=
$(ANDROID_SDK)
/platforms/
$(ANDROID_SDK_PLATFORM)
JAVAC
=
javac
AAPT
=
$(ANDROID_BUILD_TOOLS_DIR)
/aapt
DX
=
$(ANDROID_BUILD_TOOLS_DIR)
/dx
ZIPALIGN
=
$(ANDROID_BUILD_TOOLS_DIR)
/zipalign
ANDROID_XML_RES
:=
$
(
wildcard
$(srcdir)
/android/res/
*
/
*
.xml
)
ANDROID_XML_RES_COPIES
:=
$
(
patsubst
$(srcdir)
/android/%,android/build/%,
$(ANDROID_XML_RES)
)
JAVA_SOURCE_NAMES
=
Bridge.java Loader.java Main.java
JAVA_SOURCES
=
$
(
addprefix
$(srcdir)
/android/src/,
$(JAVA_SOURCE_NAMES)
)
JAVA_CLASSFILES_DIR
=
android/build/classes
android/build/bin/classes/org/musicpd/Bridge.class
:
android/src/Bridge.java android/build/build.xml android/build/res/drawable/icon.png
cd
android/build
&&
ant compile-jni-classes
$(ANDROID_XML_RES_COPIES)
:
$(ANDROID_XML_RES)
@
$(MKDIR_P)
$
(
dir
$@
)
cp
$
(
patsubst android/build/%,
$(srcdir)
/android/%,
$@
)
$@
android/build/include/org_musicpd_Bridge.h
:
android/build/bin/classes/org/musicpd/Bridge.class
javah
-classpath
$(ANDROID_SDK)
/platforms/android-17/android.jar:android/build/bin/classes
-d
$
(
@D
)
org.musicpd.Bridge
android/build/resources.apk
:
$(ANDROID_XML_RES_COPIES) android/build/res/drawable/icon.png
@
$(MKDIR_P)
android/build/gen
$(AAPT)
package
-f
-m
--auto-add-overlay
\
--custom-package
org.musicpd
\
-M
$(srcdir)
/android/AndroidManifest.xml
\
-S
android/build/res
\
-J
android/build/gen
\
-I
$(ANDROID_SDK_PLATFORM_DIR)
/android.jar
\
-F
android/build/resources.apk
# R.java is generated by aapt, when resources.apk is generated
android/build/gen/org/musicpd/R.java
:
android/build/resources.apk
android/build/classes.dex
:
$(JAVA_SOURCES) android/build/gen/org/musicpd/R.java
@
$(MKDIR_P)
$(JAVA_CLASSFILES_DIR)
$(JAVAC)
-source
1.5
-target
1.5
-Xlint
:-options
\
-cp
$(ANDROID_SDK_PLATFORM_DIR)
/android.jar:
$(JAVA_CLASSFILES_DIR)
\
-d
$(JAVA_CLASSFILES_DIR)
$^
$(DX)
--dex
--output
$@
$(JAVA_CLASSFILES_DIR)
android/build/include/org_musicpd_Bridge.h
:
android/build/classes.dex
javah
-classpath
$(ANDROID_SDK_PLATFORM_DIR)
/android.jar:
$(JAVA_CLASSFILES_DIR)
-d
$
(
@D
)
org.musicpd.Bridge
BUILT_SOURCES
=
android/build/include/org_musicpd_Bridge.h
android/build/lib
s/armeabi-v7a/libmpd.so
:
libmpd.so android/build/build.xml
android/build/lib
/armeabi-v7a/libmpd.so
:
libmpd.so
mkdir
-p
$
(
@D
)
rm
-f
$@
$(STRIP)
-o
$@
$<
...
...
@@ -323,24 +355,19 @@ android/build/res/drawable/icon.png: mpd.svg
mkdir
-p
$
(
@D
)
rsvg-convert
--width
=
48
--height
=
48
$<
-o
$@
APK_DEPS
=
android/build/res/drawable/icon.png
\
android/build/libs/armeabi-v7a/libmpd.so
\
$
(
wildcard
$(srcdir)
/android/src/
*
.java
)
\
android/build/build.xml
.DELETE_ON_ERROR
:
android/build/unsigned.apk
android/build/unsigned.apk
:
android/build/classes.dex android/build/resources.apk android/build/lib/armeabi-v7a/libmpd.so
cp
android/build/resources.apk
$@
cd
$
(
dir
$@
)
&&
zip
-q
-r
$
(
notdir
$@
)
classes.dex lib
android/build/
bin/$(APK_NAME)-debug.apk
:
$(APK_DEPS)
cd
android/build
&&
ant nodeps debug
android/build/
$(APK_NAME)-debug.apk
:
android/build/unsigned.apk
jarsigner
-keystore
$(HOME)
/.android/debug.keystore
-storepass
android
-signedjar
$@
$<
androiddebugkey
android/build/bin/$(APK_NAME)-release-unsigned.apk
:
$(APK_DEPS)
cd
android/build
&&
ant nodeps release
android/build/bin/$(APK_NAME)-release-unaligned.apk
:
android/build/bin/$(APK_NAME)-release-unsigned.apk
android/build/$(APK_NAME)-release-unaligned.apk
:
android/build/unsigned.apk
jarsigner
-digestalg
SHA1
-sigalg
MD5withRSA
-storepass
:env ANDROID_KEYSTORE_PASS
-keystore
$(ANDROID_KEYSTORE)
-signedjar
$@
$<
$(ANDROID_KEY_ALIAS)
ANDROID_SDK_BUILD_TOOLS_VERSION
=
20.0.0
android/build/bin/$(APK_NAME).apk
:
android/build/bin/$(APK_NAME)-release-unaligned.apk
$(ANDROID_SDK)
/build-tools/
$(ANDROID_SDK_BUILD_TOOLS_VERSION)
/zipalign
-f
4
$<
$@
android/build/$(APK_NAME).apk
:
android/build/$(APK_NAME)-release-unaligned.apk
$(ZIPALIGN)
-f
4
$<
$@
endif
...
...
NEWS
View file @
4a120f80
...
...
@@ -23,9 +23,14 @@ ver 0.21 (not yet released)
* require GCC 5.0
ver 0.20.15 (not yet released)
* resampler
- soxr: clear internal state after manual song change
* state file
- make mount point restore errors non-fatal
- fix crash when restoring mounts with incompatible database plugin
* Android
- build without Ant
- fix for SIGSYS crash
ver 0.20.14 (2018/01/01)
* database
...
...
android/build.py
View file @
4a120f80
...
...
@@ -73,6 +73,8 @@ class AndroidNdkToolchain:
self
.
cxx
=
os
.
path
.
join
(
llvm_bin
,
'clang++'
)
common_flags
+=
' -target '
+
llvm_triple
+
' -integrated-as -gcc-toolchain '
+
toolchain_path
common_flags
+=
' -fvisibility=hidden -fdata-sections -ffunction-sections'
self
.
ar
=
os
.
path
.
join
(
toolchain_bin
,
arch
+
'-ar'
)
self
.
ranlib
=
os
.
path
.
join
(
toolchain_bin
,
arch
+
'-ranlib'
)
self
.
nm
=
os
.
path
.
join
(
toolchain_bin
,
arch
+
'-nm'
)
...
...
python/build/autotools.py
View file @
4a120f80
import
os.path
,
subprocess
import
os.path
,
subprocess
,
sys
from
build.
project
import
Project
from
build.
makeproject
import
Make
Project
class
AutotoolsProject
(
Project
):
class
AutotoolsProject
(
Make
Project
):
def
__init__
(
self
,
url
,
md5
,
installed
,
configure_args
=
[],
autogen
=
False
,
cppflags
=
''
,
ldflags
=
''
,
libs
=
''
,
**
kwargs
):
Project
.
__init__
(
self
,
url
,
md5
,
installed
,
**
kwargs
)
Make
Project
.
__init__
(
self
,
url
,
md5
,
installed
,
**
kwargs
)
self
.
configure_args
=
configure_args
self
.
autogen
=
autogen
self
.
cppflags
=
cppflags
self
.
ldflags
=
ldflags
self
.
libs
=
libs
def
build
(
self
,
toolchain
):
def
configure
(
self
,
toolchain
):
src
=
self
.
unpack
(
toolchain
)
if
self
.
autogen
:
if
sys
.
platform
==
'darwin'
:
subprocess
.
check_call
([
'glibtoolize'
,
'--force'
],
cwd
=
src
)
else
:
subprocess
.
check_call
([
'libtoolize'
,
'--force'
],
cwd
=
src
)
subprocess
.
check_call
([
'aclocal'
],
cwd
=
src
)
subprocess
.
check_call
([
'automake'
,
'--add-missing'
,
'--force-missing'
,
'--foreign'
],
cwd
=
src
)
...
...
@@ -29,8 +36,8 @@ class AutotoolsProject(Project):
'CFLAGS='
+
toolchain
.
cflags
,
'CXXFLAGS='
+
toolchain
.
cxxflags
,
'CPPFLAGS='
+
toolchain
.
cppflags
+
' '
+
self
.
cppflags
,
'LDFLAGS='
+
toolchain
.
ldflags
,
'LIBS='
+
toolchain
.
libs
,
'LDFLAGS='
+
toolchain
.
ldflags
+
' '
+
self
.
ldflags
,
'LIBS='
+
toolchain
.
libs
+
' '
+
self
.
libs
,
'AR='
+
toolchain
.
ar
,
'RANLIB='
+
toolchain
.
ranlib
,
'STRIP='
+
toolchain
.
strip
,
...
...
@@ -40,7 +47,8 @@ class AutotoolsProject(Project):
]
+
self
.
configure_args
subprocess
.
check_call
(
configure
,
cwd
=
build
,
env
=
toolchain
.
env
)
subprocess
.
check_call
([
'/usr/bin/make'
,
'--quiet'
,
'-j12'
],
cwd
=
build
,
env
=
toolchain
.
env
)
subprocess
.
check_call
([
'/usr/bin/make'
,
'--quiet'
,
'install'
],
cwd
=
build
,
env
=
toolchain
.
env
)
return
build
def
build
(
self
,
toolchain
):
build
=
self
.
configure
(
toolchain
)
MakeProject
.
build
(
self
,
toolchain
,
build
)
python/build/libs.py
View file @
4a120f80
...
...
@@ -8,21 +8,27 @@ libogg = AutotoolsProject(
'http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.xz'
,
'5c3a34309d8b98640827e5d0991a4015'
,
'lib/libogg.a'
,
[
'--disable-shared'
,
'--enable-static'
],
[
'--disable-shared'
,
'--enable-static'
,
],
)
libvorbis
=
AutotoolsProject
(
'http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz'
,
'28cb28097c07a735d6af56e598e1c90f'
,
'lib/libvorbis.a'
,
[
'--disable-shared'
,
'--enable-static'
],
[
'--disable-shared'
,
'--enable-static'
,
],
)
opus
=
AutotoolsProject
(
'https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz'
,
'cfafd339ccd9c5ef8d6ab15d7e1a412c054bf4cb4ecbbbcc78c12ef2def70732'
,
'lib/libopus.a'
,
[
'--disable-shared'
,
'--enable-static'
],
[
'--disable-shared'
,
'--enable-static'
,
],
)
flac
=
AutotoolsProject
(
...
...
@@ -45,7 +51,12 @@ libid3tag = AutotoolsProject(
'ftp://ftp.mars.org/pub/mpeg/libid3tag-0.15.1b.tar.gz'
,
'e5808ad997ba32c498803822078748c3'
,
'lib/libid3tag.a'
,
[
'--disable-shared'
,
'--enable-static'
],
[
'--disable-shared'
,
'--enable-static'
,
# without this, libid3tag's configure.ac ignores -O* and -f*
'--disable-debugging'
,
],
autogen
=
True
,
)
...
...
@@ -53,7 +64,12 @@ libmad = AutotoolsProject(
'ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz'
,
'1be543bc30c56fb6bea1d7bf6a64e66c'
,
'lib/libmad.a'
,
[
'--disable-shared'
,
'--enable-static'
],
[
'--disable-shared'
,
'--enable-static'
,
# without this, libmad's configure.ac ignores -O* and -f*
'--disable-debugging'
,
],
autogen
=
True
,
)
...
...
@@ -123,7 +139,7 @@ curl = AutotoolsProject(
)
boost
=
BoostProject
(
'http://downloads.sourceforge.net/project/boost/boost/1.6
5.1/boost_1_65_1
.tar.bz2'
,
'
9807a5d16566c57fd74fb522764e0b134a8bbe6b6e8967b83afefd30dcd3be81
'
,
'http://downloads.sourceforge.net/project/boost/boost/1.6
6.0/boost_1_66_0
.tar.bz2'
,
'
5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9
'
,
'include/boost/version.hpp'
,
)
python/build/makeproject.py
0 → 100644
View file @
4a120f80
import
subprocess
from
build.project
import
Project
class
MakeProject
(
Project
):
def
__init__
(
self
,
url
,
md5
,
installed
,
install_target
=
'install'
,
**
kwargs
):
Project
.
__init__
(
self
,
url
,
md5
,
installed
,
**
kwargs
)
self
.
install_target
=
install_target
def
get_simultaneous_jobs
(
self
):
return
12
def
get_make_args
(
self
,
toolchain
):
return
[
'--quiet'
,
'-j'
+
str
(
self
.
get_simultaneous_jobs
())]
def
get_make_install_args
(
self
,
toolchain
):
return
[
'--quiet'
,
self
.
install_target
]
def
make
(
self
,
toolchain
,
wd
,
args
):
subprocess
.
check_call
([
'/usr/bin/make'
]
+
args
,
cwd
=
wd
,
env
=
toolchain
.
env
)
def
build
(
self
,
toolchain
,
wd
,
install
=
True
):
self
.
make
(
toolchain
,
wd
,
self
.
get_make_args
(
toolchain
))
if
install
:
self
.
make
(
toolchain
,
wd
,
self
.
get_make_install_args
(
toolchain
))
src/filter/Observer.cxx
View file @
4a120f80
...
...
@@ -72,6 +72,10 @@ public:
return
filter
.
get
();
}
void
Reset
()
noexcept
override
{
filter
->
Reset
();
}
ConstBuffer
<
void
>
FilterPCM
(
ConstBuffer
<
void
>
src
)
override
{
return
filter
->
FilterPCM
(
src
);
}
...
...
src/output/plugins/HaikuOutputPlugin.cxx
View file @
4a120f80
...
...
@@ -76,7 +76,6 @@ private:
void
Close
()
noexcept
override
;
size_t
Play
(
const
void
*
chunk
,
size_t
size
)
override
;
void
Cancel
()
noexcept
override
;
std
::
chrono
::
steady_clock
::
duration
Delay
()
const
noexcept
override
;
...
...
src/pcm/SoxrResampler.cxx
View file @
4a120f80
...
...
@@ -139,6 +139,14 @@ SoxrPcmResampler::Close() noexcept
soxr_delete
(
soxr
);
}
void
SoxrPcmResampler
::
Reset
()
noexcept
{
#if SOXR_THIS_VERSION >= SOXR_VERSION(0,1,2)
soxr_clear
(
soxr
);
#endif
}
ConstBuffer
<
void
>
SoxrPcmResampler
::
Resample
(
ConstBuffer
<
void
>
src
)
{
...
...
src/pcm/SoxrResampler.hxx
View file @
4a120f80
...
...
@@ -41,6 +41,7 @@ class SoxrPcmResampler final : public PcmResampler {
public
:
AudioFormat
Open
(
AudioFormat
&
af
,
unsigned
new_sample_rate
)
override
;
void
Close
()
noexcept
override
;
void
Reset
()
noexcept
override
;
ConstBuffer
<
void
>
Resample
(
ConstBuffer
<
void
>
src
)
override
;
ConstBuffer
<
void
>
Flush
()
override
;
};
...
...
src/thread/Util.cxx
View file @
4a120f80
...
...
@@ -38,7 +38,7 @@
#include <windows.h>
#endif
#if
def __linux__
#if
defined(__linux__) && !defined(ANDROID)
static
int
ioprio_set
(
int
which
,
int
who
,
int
ioprio
)
noexcept
...
...
@@ -69,7 +69,11 @@ SetThreadIdlePriority() noexcept
sched_setscheduler
(
0
,
SCHED_IDLE
,
&
sched_param
);
#endif
#ifndef ANDROID
/* this system call is forbidden via seccomp on Android 8 and
leads to crash (SIGSYS) */
ioprio_set_idle
();
#endif
#elif defined(_WIN32)
SetThreadPriority
(
GetCurrentThread
(),
THREAD_PRIORITY_IDLE
);
...
...
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