Commit 1939043b authored by Ronan Abhamon's avatar Ronan Abhamon

Merge remote-tracking branch 'public/master' into dev_linphone_qt

parents b8c168ac b2f21315
WORK
OUTPUT
Makefile
submodules/tunnel
record_for_lc_*.wav
.bc_tester_utils.tmp
prepare.conf.user
......@@ -16,9 +16,6 @@
[submodule "submodules/msamr"]
path = submodules/msamr
url = git://git.linphone.org/msamr.git
[submodule "submodules/msilbc"]
path = submodules/msilbc
url = git://git.linphone.org/msilbc.git
[submodule "submodules/msopenh264"]
path = submodules/msopenh264
url = git://git.linphone.org/msopenh264.git
......@@ -28,15 +25,67 @@
[submodule "submodules/mswasapi"]
path = submodules/mswasapi
url = git://git.linphone.org/mswasapi.git
[submodule "submodules/libilbc-rfc3951"]
path = submodules/libilbc-rfc3951
url = git://git.linphone.org/libilbc-rfc3951.git
[submodule "submodules/msx264"]
path = submodules/msx264
url = git://git.linphone.org/msx264.git
[submodule "submodules/mswebrtc"]
path = submodules/mswebrtc
url = git://git.linphone.org/mswebrtc.git
[submodule "submodules/belcard"]
path = submodules/belcard
url = git://git.linphone.org/belcard.git
[submodule "submodules/belr"]
path = submodules/belr
url = git://git.linphone.org/belr.git
[submodule "submodules/externals/libmatroska-c"]
path = submodules/externals/libmatroska-c
url = git://git.linphone.org/libmatroska-c.git
[submodule "submodules/bctoolbox"]
path = submodules/bctoolbox
url = git://git.linphone.org/bctoolbox.git
[submodule "submodules/externals/mbedtls"]
path = submodules/externals/mbedtls
url = git://git.linphone.org/mbedtls.git
[submodule "submodules/externals/bv16-floatingpoint"]
path = submodules/externals/bv16-floatingpoint
url = git://git.linphone.org/bv16-floatingpoint.git
[submodule "submodules/externals/speex"]
path = submodules/externals/speex
url = git://git.linphone.org/speex.git
[submodule "submodules/externals/ffmpeg"]
path = submodules/externals/ffmpeg
url = git://git.linphone.org/ffmpeg.git
ignore = dirty
[submodule "submodules/externals/libvpx"]
path = submodules/externals/libvpx
url = git://git.linphone.org/libvpx.git
[submodule "submodules/externals/opus"]
path = submodules/externals/opus
url = git://git.linphone.org/opus.git
ignore = dirty
[submodule "submodules/externals/gsm"]
path = submodules/externals/gsm
url = git://git.linphone.org/gsm.git
[submodule "submodules/externals/srtp"]
path = submodules/externals/srtp
url = git://git.linphone.org/srtp.git
[submodule "submodules/externals/antlr3"]
path = submodules/externals/antlr3
url = git://git.linphone.org/antlr3.git
[submodule "submodules/externals/v4l-utils"]
path = submodules/externals/v4l-utils
url = git://linuxtv.org/v4l-utils.git
[submodule "submodules/externals/libxml2"]
path = submodules/externals/libxml2
url = git://git.linphone.org/libxml2
ignore = dirty
[submodule "submodules/externals/zlib"]
path = submodules/externals/zlib
url = git://git.linphone.org/zlib
ignore = dirty
[submodule "submodules/externals/openh264"]
path = submodules/externals/openh264
url = https://github.com/cisco/openh264
[submodule "submodules/bcunit"]
path = submodules/bcunit
url = git://git.linphone.org/bcunit.git
......@@ -22,106 +22,172 @@
#
############################################################################
import argparse
import os
import platform
import sys
from logging import error, warning, info, INFO, basicConfig
from logging import error, warning, info
from subprocess import Popen
from distutils.spawn import find_executable
sys.dont_write_bytecode = True
sys.path.insert(0, 'submodules/cmake-builder')
try:
import prepare
except Exception as e:
error(
"Could not find prepare module: {}, probably missing submodules/cmake-builder? Try running:\ngit submodule update --init --recursive".format(e))
"Could not find prepare module: {}, probably missing submodules/cmake-builder? Try running:\n"
"git submodule sync && git submodule update --init --recursive".format(e))
exit(1)
class DesktopTarget(prepare.Target):
def __init__(self):
prepare.Target.__init__(self, '')
def __init__(self, group_builders=False):
prepare.Target.__init__(self, 'desktop')
current_path = os.path.dirname(os.path.realpath(__file__))
if platform.system() == 'Windows':
current_path = current_path.replace('\\', '/')
self.config_file = 'configs/config-desktop.cmake'
if platform.system() == 'Windows':
self.generator = 'Visual Studio 12 2013'
self.additional_args = [
'-DCMAKE_INSTALL_MESSAGE=LAZY',
'-DLINPHONE_BUILDER_EXTERNAL_SOURCE_PATH=' +
current_path + '/submodules'
self.output = 'OUTPUT/' + self.name
self.external_source_path = os.path.join(current_path, 'submodules')
self.packaging_args = [
"-DCMAKE_SKIP_INSTALL_RPATH=YES",
"-DENABLE_RELATIVE_PREFIX=YES"
]
class DesktopRaspberryTarget(prepare.Target):
def __init__(self, group_builders=False):
prepare.Target.__init__(self, 'desktop-raspberry')
current_path = os.path.dirname(os.path.realpath(__file__))
self.required_build_platforms = ['Linux']
self.config_file = 'configs/config-desktop-raspberry.cmake'
self.toolchain_file = 'toolchains/toolchain-raspberry.cmake'
self.output = 'OUTPUT/' + self.name
self.external_source_path = os.path.join(current_path, 'submodules')
self.packaging_args = [
"-DCMAKE_INSTALL_RPATH=$ORIGIN/../lib",
"-DENABLE_RELATIVE_PREFIX=YES"
]
class PythonTarget(prepare.Target):
def __init__(self):
prepare.Target.__init__(self, '')
prepare.Target.__init__(self, 'python')
current_path = os.path.dirname(os.path.realpath(__file__))
if platform.system() == 'Windows':
current_path = current_path.replace('\\', '/')
self.config_file = 'configs/config-python.cmake'
if platform.system() == 'Windows':
self.generator = 'Visual Studio 9 2008'
self.additional_args = [
'-DCMAKE_INSTALL_MESSAGE=LAZY',
'-DLINPHONE_BUILDER_EXTERNAL_SOURCE_PATH=' +
current_path + '/submodules'
]
self.output = 'OUTPUT/' + self.name
self.external_source_path = os.path.join(current_path, 'submodules')
class PythonRaspberryTarget(prepare.Target):
def __init__(self):
prepare.Target.__init__(self, '')
prepare.Target.__init__(self, 'python-raspberry')
current_path = os.path.dirname(os.path.realpath(__file__))
self.required_build_platforms = ['Linux']
self.config_file = 'configs/config-python-raspberry.cmake'
self.toolchain_file = 'toolchains/toolchain-raspberry.cmake'
self.additional_args = [
'-DCMAKE_INSTALL_MESSAGE=LAZY',
'-DLINPHONE_BUILDER_EXTERNAL_SOURCE_PATH=' +
current_path + '/submodules'
]
def check_is_installed(binary, prog='it', warn=True):
if not find_executable(binary):
if warn:
error("Could not find {}. Please install {}.".format(binary, prog))
return False
return True
def check_tools():
ret = 0
#at least FFmpeg requires no whitespace in sources path...
if " " in os.path.dirname(os.path.realpath(__file__)):
error("Invalid location: path should not contain any spaces.")
ret = 1
ret |= not check_is_installed('cmake')
if not os.path.isdir("submodules/linphone/mediastreamer2/src") or not os.path.isdir("submodules/linphone/oRTP/src"):
error("Missing some git submodules. Did you run:\n\tgit submodule update --init --recursive")
ret = 1
return ret
self.output = 'OUTPUT/' + self.name
self.external_source_path = os.path.join(current_path, 'submodules')
desktop_targets = {
'desktop': DesktopTarget(),
'python': PythonTarget(),
'desktop-raspberry': DesktopRaspberryTarget(),
'python-raspberry': PythonRaspberryTarget()
}
class DesktopPreparator(prepare.Preparator):
def __init__(self, targets=desktop_targets, default_targets=['desktop']):
prepare.Preparator.__init__(self, targets, default_targets)
self.veryclean = True
self.argparser.add_argument('-ac', '--all-codecs', help="Enable all codecs, including the non-free ones", action='store_true')
self.argparser.add_argument('-sys', '--use-system-dependencies', help="Find dependencies on the system.", action='store_true')
self.argparser.add_argument('-p', '--package', help="Build an installation package (only on Mac OSX and Windows).", action='store_true')
def parse_args(self):
prepare.Preparator.parse_args(self)
if self.args.use_system_dependencies:
self.additional_args += ["-DLINPHONE_BUILDER_USE_SYSTEM_DEPENDENCIES=YES"]
if self.args.all_codecs:
self.additional_args += ["-DENABLE_GPL_THIRD_PARTIES=YES"]
self.additional_args += ["-DENABLE_NON_FREE_CODECS=YES"]
self.additional_args += ["-DENABLE_AMRNB=YES"]
self.additional_args += ["-DENABLE_AMRWB=YES"]
self.additional_args += ["-DENABLE_G729=YES"]
self.additional_args += ["-DENABLE_GSM=YES"]
self.additional_args += ["-DENABLE_ILBC=YES"]
self.additional_args += ["-DENABLE_ISAC=YES"]
self.additional_args += ["-DENABLE_OPUS=YES"]
self.additional_args += ["-DENABLE_SILK=YES"]
self.additional_args += ["-DENABLE_SPEEX=YES"]
self.additional_args += ["-DENABLE_FFMPEG=YES"]
self.additional_args += ["-DENABLE_H263=YES"]
self.additional_args += ["-DENABLE_H263P=YES"]
self.additional_args += ["-DENABLE_MPEG4=YES"]
self.additional_args += ["-DENABLE_OPENH264=YES"]
self.additional_args += ["-DENABLE_VPX=YES"]
self.additional_args += ["-DENABLE_X264=NO"]
def check_environment(self):
ret = prepare.Preparator.check_environment(self)
if platform.system() == 'Windows':
ret |= not self.check_is_installed('mingw-get', 'MinGW (https://sourceforge.net/projects/mingw/files/Installer/)')
if "python" in self.args.target or "python-raspberry" in self.args.target:
if platform.system() == 'Windows':
doxygen_prog = 'doxygen (http://www.stack.nl/~dimitri/doxygen/download.html)'
graphviz_prog = 'graphviz (http://graphviz.org/Download.php)'
else:
doxygen_prog = 'doxygen'
graphviz_prog = 'graphviz'
ret |= not self.check_is_installed('doxygen', doxygen_prog)
ret |= not self.check_is_installed('dot', graphviz_prog)
ret |= not self.check_python_module_is_present('pystache')
ret |= not self.check_python_module_is_present('wheel')
return ret
def show_missing_dependencies(self):
if self.missing_dependencies:
error("The following binaries are missing: {}. Please install these packages:\n\t{}".format(
" ".join(self.missing_dependencies.keys()),
" ".join(self.missing_dependencies.values())))
def clean(self):
prepare.Preparator.clean(self)
if os.path.isfile('Makefile'):
os.remove('Makefile')
if os.path.isdir('WORK') and not os.listdir('WORK'):
os.rmdir('WORK')
if os.path.isdir('OUTPUT') and not os.listdir('OUTPUT'):
os.rmdir('OUTPUT')
def generate_makefile(self, generator, project_file=''):
targets = self.args.target
targets_str = ""
for target in targets:
targets_str += """
{target}: {target}-build
{target}-build:
\t{generator} WORK/{target}/cmake/{project_file}
\t@echo "Done"
""".format(target=target, generator=generator, project_file=project_file)
makefile = """
targets={targets}
def generate_makefile(generator):
makefile = """
.PHONY: all
build:
\t{generator} WORK/cmake
all: build
build: $(addsuffix -build, $(targets))
{targets_str}
pull-transifex:
\t$(MAKE) -C linphone pull-transifex
......@@ -130,137 +196,28 @@ push-transifex:
help-prepare-options:
\t@echo "prepare.py was previously executed with the following options:"
\t@echo " {options}"
\t@echo " ./prepare.py {options}"
help: help-prepare-options
\t@echo ""
\t@echo "(please read the README.md file first)"
\t@echo ""
\t@echo "Available targets:"
\t@echo ""
\t@echo " * all, build : normal build"
\t@echo "Available targets: {targets}"
\t@echo ""
""".format(options=' '.join(sys.argv), generator=generator)
f = open('Makefile', 'w')
f.write(makefile)
f.close()
def main(argv=None):
basicConfig(format="%(levelname)s: %(message)s", level=INFO)
if argv is None:
argv = sys.argv
argparser = argparse.ArgumentParser(
description="Prepare build of Linphone and its dependencies.")
argparser.add_argument(
'-ac', '--all-codecs', help="Enable all codecs, including the non-free ones", action='store_true')
argparser.add_argument(
'-c', '--clean', help="Clean a previous build instead of preparing a build.", action='store_true')
argparser.add_argument(
'-C', '--veryclean', help="Clean a previous build instead of preparing a build (also deleting the install prefix).", action='store_true')
argparser.add_argument(
'-d', '--debug', help="Prepare a debug build, eg. add debug symbols and use no optimizations.", action='store_true')
argparser.add_argument(
'-f', '--force', help="Force preparation, even if working directory already exist.", action='store_true')
argparser.add_argument(
'-G', '--generator', help="CMake build system generator (default: let CMake choose, use cmake -h to get the complete list).", default=None, dest='generator')
argparser.add_argument(
'-L', '--list-cmake-variables', help="List non-advanced CMake cache variables.", action='store_true', dest='list_cmake_variables')
argparser.add_argument(
'-os', '--only-submodules', help="Build only submodules (finding all dependencies on the system.", action='store_true')
argparser.add_argument(
'-p', '--package', help="Build an installation package (only on Mac OSX and Windows).", action='store_true')
argparser.add_argument(
'--python', help="Build Python module instead of desktop application.", action='store_true')
argparser.add_argument(
'--python-raspberry', help="Build Python module for raspberry pi instead of desktop application.", action='store_true')
argparser.add_argument(
'-t', '--tunnel', help="Enable Tunnel.", action='store_true')
args, additional_args = argparser.parse_known_args()
additional_args += ["-DLINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS=YES"]
if args.only_submodules:
additional_args += ["-DLINPHONE_BUILDER_BUILD_ONLY_EXTERNAL_SOURCE_PATH=YES"]
if args.all_codecs:
additional_args += ["-DENABLE_NON_FREE_CODECS=YES",
"-DENABLE_AMRNB=YES",
"-DENABLE_AMRWB=YES",
"-DENABLE_G729=YES",
"-DENABLE_H263=YES",
"-DENABLE_H263P=YES",
"-DENABLE_ILBC=YES",
"-DENABLE_ISAC=YES",
"-DENABLE_MPEG4=YES",
"-DENABLE_OPENH264=YES",
"-DENABLE_SILK=YES"]
if args.package:
additional_args += ["-DENABLE_PACKAGING=YES"]
if platform.system() != 'Windows':
additional_args += ["-DENABLE_RELATIVE_PREFIX=YES"] # Already forced in all cases on Windows platform
if check_tools() != 0:
return 1
""".format(targets=' '.join(targets), targets_str=targets_str, options=' '.join(self.argv), generator=generator)
f = open('Makefile', 'w')
f.write(makefile)
f.close()
if args.tunnel or os.path.isdir("submodules/tunnel"):
if not os.path.isdir("submodules/tunnel"):
info("Tunnel wanted but not found yet, trying to clone it...")
p = Popen("git clone gitosis@git.linphone.org:tunnel.git submodules/tunnel".split(" "))
p.wait()
if p.returncode != 0:
error("Could not clone tunnel. Please see http://www.belledonne-communications.com/voiptunnel.html")
return 1
info("Tunnel enabled.")
additional_args += ["-DENABLE_TUNNEL=YES"]
# install_git_hook()
target = None
if args.python:
target = PythonTarget()
elif args.python_raspberry:
target = PythonRaspberryTarget()
else:
target = DesktopTarget()
if args.generator is not None:
target.generator = args.generator
if target.generator is None:
# Default to "Unix Makefiles" if no target specific generator is set and the user has not defined one
target.generator = "Unix Makefiles"
if args.clean or args.veryclean:
if args.veryclean:
target.veryclean()
else:
target.clean()
if os.path.isfile('Makefile'):
os.remove('Makefile')
else:
retcode = prepare.run(target, args.debug, False, args.list_cmake_variables, args.force, additional_args)
if retcode != 0:
if retcode == 51:
Popen("make help-prepare-options".split(" "))
retcode = 0
return retcode
# only generated makefile if we are using Ninja or Makefile
if target.generator.endswith('Ninja'):
if not check_is_installed("ninja", "it"):
return 1
generate_makefile('ninja -C')
info("You can now run 'make' to build.")
elif target.generator.endswith("Unix Makefiles"):
generate_makefile('$(MAKE) -C')
info("You can now run 'make' to build.")
elif target.generator == "Xcode":
info("You can now open Xcode project with: open WORK/cmake/Project.xcodeproj")
else:
warning("Not generating meta-makefile for generator {}.".format(target.generator))
return 0
def main():
preparator = DesktopPreparator()
preparator.parse_args()
if preparator.check_environment() != 0:
preparator.show_environment_errors()
return 1
return preparator.run()
if __name__ == "__main__":
sys.exit(main())
bcg729 @ 23418135
Subproject commit 91d1206d63e57a78af1d26058052e9d37f0b6f5d
Subproject commit 23418135d21077bf41e71170179e4e3cb9723f8a
bctoolbox @ d0c16665
Subproject commit d0c166650a4a39aaae1d5bc17b5ae64639982930
bcunit @ 29c556fa
Subproject commit 29c556fa8ac1ab21fba1291231ffa8dea43cf32a
belcard @ 633e151d
Subproject commit 633e151d8a1775e8b4f717158d12bc0c0957c4ed
belle-sip @ ac49ba79
Subproject commit c130b4eba162cdcc4c03838e5430867f8b418257
Subproject commit ac49ba799fd9231f1cd7014fe9c061107a832534
belr @ 8a7f0868
Subproject commit 8a7f0868a7d35f86ff5fa422c7333f113d935e0f
bzrtp @ 2b234b08
Subproject commit 19923c26888daf96584cfe6468f9c1bb4a63114b
Subproject commit 2b234b08e6c85babbcd76651ab432b91c76aaff4
cmake-builder @ a0680560
Subproject commit a370ebc2ea924cfad44ab8d017ac5b1ff162faac
Subproject commit a0680560f471c2c1dd488f271a501e7e1617ec89
antlr3 @ ac1069cf
Subproject commit ac1069cf214b15b86272cbc6ded5916d7d2f85ec
bv16-floatingpoint @ 85b27910
Subproject commit 85b27910607b7e8edcf7c4a5dec1298b5877f4e2
ffmpeg @ f7589590
Subproject commit f7589590b37ab772f89d996f6b899d8a4daae684
gsm @ 0f8822b5
Subproject commit 0f8822b5326c76bb9dc4c6b552631f51792c3982
libmatroska-c @ 12efd631
Subproject commit 9837df79acb64f81670e464665985b09c4d0a994
Subproject commit 12efd631fbeebafdeb7a870ad0c1ed7931a2d95f
libvpx @ d2b4742a
Subproject commit d2b4742a04da011adf05a4ea63d041f60e50195a
libxml2 @ c943f708
Subproject commit c943f708f1853de4eb15e5a94cf0b35d108da87a
mbedtls @ 02d64e46
Subproject commit 02d64e46be98442e1f8ca001d6d5c62ff48e36a3
Subproject commit 2610ab183249aee91862d2ad065f61db89107b34
opus @ 1f22ae37
Subproject commit 1f22ae379bbcdfa376775db2b9407529fb1fa781
speex @ fc1dd43c
Subproject commit fc1dd43c3c9d244bca1c300e408ce0373dbd5ed8
############################################################################
# CMakeLists.txt
# Copyright (C) 2014 Belledonne Communications, Grenoble France
#
############################################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
cmake_minimum_required(VERSION 2.6)
project(SQLITE3 C)
option(ENABLE_STATIC "Build static library (default is shared library)." OFF)
set(SOURCE_FILES sqlite3.c)
if(WIN32)
list(APPEND SOURCE_FILES sqlite3.def)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone" OR CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
add_definitions(
-DSQLITE_OS_WINRT=1
-DSQLITE_WIN32_FILEMAPPING_API=1
-DSQLITE_OMIT_LOAD_EXTENSION
)
endif()
if(ENABLE_STATIC)
add_library(sqlite3 STATIC ${SOURCE_FILES})
else()
add_library(sqlite3 SHARED ${SOURCE_FILES})
if(MSVC)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/sqlite3.pdb
DESTINATION bin
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
endif()
endif()
endif()
install(TARGETS sqlite3
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
file(GLOB HEADER_FILES "*.h")
install(FILES ${HEADER_FILES}
DESTINATION include
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
srtp @ d79ae951
Subproject commit d79ae95126baa3cec83097469e97525a1d9e2d50
v4l-utils @ 92995faa
Subproject commit 92995faa431fdd247d55b982898a70aa3a339874
zlib @ 91eb77a7
Subproject commit 91eb77a7c5bfe7b4cc6b722aa96548d7143a9936
libilbc-rfc3951 @ 91b61e39
Subproject commit 91b61e39fb9c5d3dc78691f3d6e4f1d65c8b0d2a
msamr @ 207ab85b
Subproject commit 326e8f035d45ff96c1d0072a52c758730727852a
Subproject commit 207ab85b81fc3d4dda75ee460f4a3107da7e14bc
msilbc @ d8114cbc
Subproject commit d8114cbce20391b1222861a9276255589c4e0bb6
msopenh264 @ 57dfcd9a
Subproject commit d2acb63cca728f1efa4c1ffaf52ee0aee55f731f
Subproject commit 57dfcd9a0d9d0019c780d784682eaaa9763d4a33
mssilk @ 3fbb877e
Subproject commit 0c10e9f890f8e24b12fff430d559de02a213b032
Subproject commit 3fbb877ed683ffb1790d0f4f4c1ffa2543491ffa
mswasapi @ 6ce640d3
Subproject commit cf04af5559222eac11aa4f4a1979ce4ce39cca90
Subproject commit 6ce640d3a27530e841ae9fdf2508b6890fd34fa8
mswebrtc @ 841ba533
Subproject commit 27680f2d99e6f431d8fcc433c4120ddf48263578
Subproject commit 841ba5339da08ebbcb47baf4b17d325d9bedb25f
msx264 @ 0a5c0a89
Subproject commit 0831ca99e4aed1d98c0766d14b206742030cdf6d
Subproject commit 0a5c0a89fa05cab2445073c5ba5546f1511b2a78
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