Merge pull request #782 from lrusak/cmake-ninja

Cmake ninja
This commit is contained in:
MilhouseVH 2017-10-13 23:07:22 +01:00 committed by GitHub
commit e8f95a4c2f
11 changed files with 130 additions and 21 deletions

View File

@ -23,7 +23,7 @@ PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.bzip.org"
PKG_URL="http://www.bzip.org/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_HOST="toolchain"
PKG_DEPENDS_HOST=""
PKG_DEPENDS_TARGET="toolchain"
PKG_SECTION="compress"
PKG_SHORTDESC="bzip2 data compressor"

View File

@ -29,6 +29,7 @@ PKG_SECTION="compress"
PKG_SHORTDESC="zlib: A general purpose (ZIP) data compression library"
PKG_LONGDESC="zlib is a general purpose data compression library. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format)."
PKG_AUTORECONF="no"
PKG_USE_NINJA="no"
post_configure_target() {
## configure minizip

View File

@ -63,9 +63,9 @@ if [ "$DEBUG" = yes -a "$TARGET_ARCH" = aarch64 ]; then
fi
make_host() {
make comp_err
make gen_lex_hash
make comp_sql
ninja comp_err
ninja gen_lex_hash
ninja comp_sql
}
post_make_host() {

View File

@ -29,6 +29,7 @@ PKG_SHORTDESC="cmake: A cross-platform, open-source make system"
PKG_LONGDESC="CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. CMake is quite sophisticated: it is possible to support complex environments requiring system configuration, preprocessor generation, code generation, and template instantiation."
PKG_IS_ADDON="no"
PKG_USE_CMAKE="no"
PKG_AUTORECONF="no"
configure_host() {

View File

@ -55,7 +55,7 @@ PKG_CMAKE_OPTS_HOST="-DLLVM_INCLUDE_TOOLS=ON \
-DLLVM_APPEND_VC_REV=OFF"
make_host() {
make llvm-config llvm-tblgen
ninja llvm-config llvm-tblgen
}
makeinstall_host() {

View File

@ -0,0 +1,58 @@
diff --git a/cmake/scripts/common/GenerateVersionedFiles.cmake b/cmake/scripts/common/GenerateVersionedFiles.cmake
index 90b2173..2819371 100644
--- a/cmake/scripts/common/GenerateVersionedFiles.cmake
+++ b/cmake/scripts/common/GenerateVersionedFiles.cmake
@@ -11,14 +11,12 @@ function(generate_versioned_file _SRC _DEST)
file(WRITE ${CMAKE_BINARY_DIR}/${_DEST} "${file_content}")
endfunction()
+# workaround for xbmc.json
+file(STRINGS ${CORE_SOURCE_DIR}/xbmc/interfaces/json-rpc/schema/version.txt jsonrpc_version)
+
# add-on xml's
file(GLOB ADDON_XML_IN_FILE ${CORE_SOURCE_DIR}/addons/*/addon.xml.in)
foreach(loop_var ${ADDON_XML_IN_FILE})
- # prevent 'xbmc.json'; will be obtained from 'xbmc/interfaces/json-rpc/schema/CMakeLists.txt'.
- if(loop_var MATCHES "xbmc.json")
- continue()
- endif()
-
list(GET loop_var 0 xml_name)
string(REPLACE "/addon.xml.in" "" source_dir ${xml_name})
diff --git a/xbmc/interfaces/json-rpc/schema/CMakeLists.txt b/xbmc/interfaces/json-rpc/schema/CMakeLists.txt
index aa6142b..550c73b 100644
--- a/xbmc/interfaces/json-rpc/schema/CMakeLists.txt
+++ b/xbmc/interfaces/json-rpc/schema/CMakeLists.txt
@@ -10,18 +10,8 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ServiceDescripti
DEPENDS ${JSON_SRCS}
COMMENT "Generating ServiceDescription.h")
-add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/addons/xbmc.json/addon.xml
- COMMAND ${CMAKE_COMMAND}
- -DCMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
- -DCORE_BINARY_DIR=${CMAKE_BINARY_DIR}
- -P ${CMAKE_CURRENT_SOURCE_DIR}/GenerateAddonXml.cmake
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- DEPENDS ${JSON_SRCS} ${CMAKE_SOURCE_DIR}/addons/xbmc.json/addon.xml.in
- COMMENT "Generating xbmc.json/addon.xml")
-
add_custom_target(generate_json_header ALL
- DEPENDS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ServiceDescription.h
- ${CMAKE_BINARY_DIR}/addons/xbmc.json/addon.xml)
+ DEPENDS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ServiceDescription.h)
set_target_properties(generate_json_header PROPERTIES FOLDER "Build Utilities")
if(BOOTSTRAP_IN_TREE)
diff --git a/xbmc/interfaces/json-rpc/schema/GenerateAddonXml.cmake b/xbmc/interfaces/json-rpc/schema/GenerateAddonXml.cmake
deleted file mode 100644
index 53afaf8..0000000
--- a/xbmc/interfaces/json-rpc/schema/GenerateAddonXml.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-file(STRINGS ${CMAKE_SOURCE_DIR}/xbmc/interfaces/json-rpc/schema/version.txt jsonrpc_version)
-
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${CORE_BINARY_DIR}/addons/xbmc.json/addon.xml)
-configure_file(${CMAKE_SOURCE_DIR}/addons/xbmc.json/addon.xml.in
- ${CORE_BINARY_DIR}/addons/xbmc.json/addon.xml @ONLY)

View File

@ -17,18 +17,16 @@
################################################################################
PKG_NAME="ninja"
PKG_VERSION="1.6.0"
PKG_SHA256="b43e88fb068fe4d92a3dfd9eb4d19755dae5c33415db2e9b7b61b4659009cde7"
PKG_VERSION="1.8.2"
PKG_SHA256="86b8700c3d0880c2b44c2ff67ce42774aaf8c28cbf57725cb881569288c1c6f4"
PKG_ARCH="any"
PKG_LICENSE="Apache"
PKG_SITE="http://martine.github.io/ninja/"
PKG_URL="https://github.com/ninja-build/ninja/archive/v$PKG_VERSION.tar.gz"
PKG_DEPENDS_HOST="toolchain Python2:host"
PKG_DEPENDS_HOST="Python2:host"
PKG_SECTION="devel"
PKG_SHORTDESC="Small build system with a focus on speed"
PKG_LONGDESC="Small build system with a focus on speed"
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
configure_host() {

View File

@ -31,9 +31,4 @@ PKG_LONGDESC="Expat is an XML parser library written in C. It is a stream-orient
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_CMAKE_OPTS_TARGET="-DBUILD_tools=OFF -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_shared=ON"
pre_make_target() {
# fix builderror when building in subdirs
cp -r ../doc .
}
PKG_CMAKE_OPTS_TARGET="-DBUILD_docs=OFF -DBUILD_tools=OFF -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_shared=ON"

View File

@ -0,0 +1,23 @@
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2016-06-21 05:58:38.000000000 -0700
+++ b/CMakeLists.txt 2017-10-10 09:39:36.713079492 -0700
@@ -10,6 +10,7 @@
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")
+option(BUILD_docs "build the docs for expat library" ON)
option(BUILD_tools "build the xmlwf tool for expat library" ON)
option(BUILD_examples "build the examples for expat library" ON)
option(BUILD_tests "build the tests for expat library" ON)
@@ -92,8 +93,9 @@
install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
-
-add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
+if(BUILD_docs)
+ add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
+endif()
if(BUILD_tools AND NOT WINCE)
set(xmlwf_SRCS

View File

@ -22,7 +22,7 @@ PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://libreelec.tv"
PKG_URL=""
PKG_DEPENDS_TARGET="configtools:host make:host xz:host sed:host pkg-config:host autoconf:host automake:host libtool:host intltool:host autoconf-archive:host gcc:host bison:host flex:host cmake:host xmlstarlet:host yasm:host p7zip:host"
PKG_DEPENDS_TARGET="configtools:host make:host xz:host sed:host pkg-config:host autoconf:host automake:host libtool:host intltool:host autoconf-archive:host gcc:host bison:host flex:host cmake:host xmlstarlet:host yasm:host p7zip:host ninja:host"
PKG_SECTION="virtual"
PKG_SHORTDESC="toolchain: LibreELEC.tv' toolchain"
PKG_LONGDESC="a crosscompiling toolchain to compile all packages"

View File

@ -133,7 +133,15 @@ if [ ! -f $STAMP ]; then
CMAKE_BUILD_TYPE="MinSizeRel"
fi
TARGET_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
if [ "$PKG_USE_NINJA" = "no" ]; then
CMAKE_GENERATOR=""
else
CMAKE_GENERATOR="-GNinja \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
fi
TARGET_CMAKE_OPTS="$CMAKE_GENERATOR \
-DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE"
@ -149,9 +157,9 @@ if [ ! -f $STAMP ]; then
--disable-static \
--enable-shared"
HOST_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=$TOOLCHAIN \
-DCMAKE_BUILD_TYPE=Release"
HOST_CMAKE_OPTS="$CMAKE_GENERATOR \
-DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=$TOOLCHAIN"
# configure INIT build defaults
INIT_CONFIGURE_OPTS="$TARGET_CONFIGURE_OPTS"
@ -301,6 +309,20 @@ if [ ! -f $STAMP ]; then
fi
if [ "$(type -t make_$TARGET)" = "function" ]; then
make_$TARGET
elif [ -f "$PKG_CMAKE_SCRIPT" -a ! "$PKG_USE_CMAKE" = "no" -a ! "$PKG_USE_NINJA" = "no" ]; then
if [ "$TARGET" = "target" ]; then
echo "Executing (target): ninja $PKG_MAKE_OPTS_TARGET" | tr -s " "
ninja $PKG_MAKE_OPTS_TARGET
elif [ "$TARGET" = "host" ]; then
echo "Executing (host): ninja $PKG_MAKE_OPTS_HOST" | tr -s " "
ninja $PKG_MAKE_OPTS_HOST
elif [ "$TARGET" = "init" ]; then
echo "Executing (init): ninja $PKG_MAKE_OPTS_INIT" | tr -s " "
ninja $PKG_MAKE_OPTS_INIT
elif [ "$TARGET" = "bootstrap" ]; then
echo "Executing (bootstrap): ninja $PKG_MAKE_OPTS_BOOTSTRAP" | tr -s " "
ninja $PKG_MAKE_OPTS_BOOTSTRAP
fi
else
if [ "$TARGET" = "target" ]; then
echo "Executing (target): make $PKG_MAKE_OPTS_TARGET" | tr -s " "
@ -326,6 +348,17 @@ if [ ! -f $STAMP ]; then
fi
if [ "$(type -t makeinstall_$TARGET)" = "function" ]; then
makeinstall_$TARGET
elif [ -f "$PKG_CMAKE_SCRIPT" -a ! "$PKG_USE_CMAKE" = "no" -a ! "$PKG_USE_NINJA" = "no" ]; then
if [ "$TARGET" = "target" ]; then
DESTDIR=$SYSROOT_PREFIX ninja install $PKG_MAKEINSTALL_OPTS_TARGET
DESTDIR=$INSTALL ninja install $PKG_MAKEINSTALL_OPTS_TARGET
elif [ "$TARGET" = "host" ]; then
ninja install $PKG_MAKEINSTALL_OPTS_HOST
elif [ "$TARGET" = "init" ]; then
DESTDIR=$INSTALL ninja install $PKG_MAKEINSTALL_OPTS_INIT
elif [ "$TARGET" = "bootstrap" ]; then
ninja install $PKG_MAKEINSTALL_OPTS_BOOTSTRAP
fi
else
if [ "$TARGET" = "target" ]; then
$MAKEINSTALL $PKG_MAKEINSTALL_OPTS_TARGET