diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 38e6859d8..2beb05dd2 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -1,92 +1,94 @@ project (kmymoney-and-all-its-deps) # # Build all dependencies for KMyMoney and finally KMyMoney itself. # Parameters: EXTERNALS_DOWNLOAD_DIR place to download all packages # INSTALL_ROOT place to install everything to # # Example usage: cmake ..\kmymoneydep -DEXTERNALS_DOWNLOAD_DIR=/dev2/d -DINSTALL_ROOT=/dev2/i cmake_minimum_required(VERSION 2.8.6) if(NOT SUBMAKE_JOBS) set(SUBMAKE_JOBS 1) endif() if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) message(FATAL_ERROR "Compiling in the source directory is not supported. Use for example 'mkdir build; cd build; cmake ..'.") endif (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) # Tools must be obtained to work with: include (ExternalProject) # allow specification of a directory with pre-downloaded # requirements if(NOT IS_DIRECTORY ${EXTERNALS_DOWNLOAD_DIR}) message(FATAL_ERROR "No externals download dir set. Use -DEXTERNALS_DOWNLOAD_DIR") endif() if(NOT IS_DIRECTORY ${INSTALL_ROOT}) message(FATAL_ERROR "No install dir set. Use -DINSTALL_ROOT") endif() set(TOP_INST_DIR ${INSTALL_ROOT}) set(EXTPREFIX "${TOP_INST_DIR}") set(CMAKE_PREFIX_PATH "${EXTPREFIX}") message( STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}") set(GLOBAL_BUILD_TYPE RelWithDebInfo) set(GLOBAL_PROFILE ${GLOBAL_PROFILE} -DBUILD_TESTING=false) # without --host=x86_64 gmp builds with optimizations for skylake and that prevents running KMyMoney on pre-skylake CPUs set(GLOBAL_AUTOMAKE_PROFILE --host=x86_64-linux-gnu --disable-static --enable-shared) set(SECURITY_EXE_LINKER_FLAGS "") set(SECURITY_SHARED_LINKER_FLAGS "") set(SECURITY_MODULE_LINKER_FLAGS "") if (DEFINED EP_PREFIX) set_directory_properties(PROPERTIES EP_PREFIX ${EP_PREFIX}) endif () if (UNIX AND NOT APPLE) set(LINUX true) set(PATCH_COMMAND patch) endif () # this list must be dependency-ordered add_subdirectory( ext_iconv ) add_subdirectory( ext_lzma ) add_subdirectory( ext_icu ) add_subdirectory( ext_xml ) add_subdirectory( ext_gettext ) add_subdirectory( ext_png ) +add_subdirectory( ext_nasm ) +add_subdirectory( ext_jpeg ) add_subdirectory( ext_boost ) add_subdirectory( ext_xslt ) add_subdirectory( ext_fontconfig) add_subdirectory( ext_freetype) add_subdirectory( ext_qt ) add_subdirectory( ext_phonon ) add_subdirectory( ext_frameworks ) add_subdirectory( ext_sqlite ) add_subdirectory( ext_ncurses ) add_subdirectory( ext_mysql ) add_subdirectory( ext_grantlee ) add_subdirectory( ext_applications ) add_subdirectory( ext_gmp ) add_subdirectory( ext_alkimia ) add_subdirectory( ext_kdiagram ) add_subdirectory( ext_ktoblzcheck ) add_subdirectory( ext_gwenhywfar ) add_subdirectory( ext_xmlsec1 ) add_subdirectory( ext_aqbanking ) add_subdirectory( ext_gpgerror ) add_subdirectory( ext_assuan2 ) add_subdirectory( ext_gpgme ) add_subdirectory( ext_tcl ) add_subdirectory( ext_sqlcipher ) add_subdirectory( ext_opensp ) add_subdirectory( ext_ofx ) add_subdirectory( ext_ical ) diff --git a/3rdparty/ext_jpeg/CMakeLists.txt b/3rdparty/ext_jpeg/CMakeLists.txt new file mode 100644 index 000000000..0134a0852 --- /dev/null +++ b/3rdparty/ext_jpeg/CMakeLists.txt @@ -0,0 +1,13 @@ +set(PREFIX_ext_jpeg "${EXTPREFIX}") + +ExternalProject_Add( ext_jpeg + DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} + URL https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-2.0.0.tar.gz + URL_MD5 b12a3fcf1d078db38410f27718a91b83 + + INSTALL_DIR ${PREFIX_ext_jpeg} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_jpeg} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} + + UPDATE_COMMAND "" + DEPENDS ext_nasm +) diff --git a/3rdparty/ext_nasm/CMakeLists.txt b/3rdparty/ext_nasm/CMakeLists.txt new file mode 100644 index 000000000..392926073 --- /dev/null +++ b/3rdparty/ext_nasm/CMakeLists.txt @@ -0,0 +1,16 @@ +set(PREFIX_ext_nasm "${EXTPREFIX}") + +ExternalProject_Add( + ext_nasm + DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} + URL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.xz + URL_MD5 d5ca2ad7121ccbae69dd606b1038532c + + INSTALL_DIR ${PREFIX_ext_nasm} + CONFIGURE_COMMAND ./configure --prefix=${PREFIX_ext_nasm} ${GLOBAL_AUTOMAKE_PROFILE} + BUILD_COMMAND make + INSTALL_COMMAND make install + + UPDATE_COMMAND "" + BUILD_IN_SOURCE 1 +) diff --git a/packaging/linux/appimage/build-deps.sh b/packaging/linux/appimage/build-deps.sh index 6980a29fc..4dcf362b5 100755 --- a/packaging/linux/appimage/build-deps.sh +++ b/packaging/linux/appimage/build-deps.sh @@ -1,90 +1,91 @@ #!/bin/bash # # Build all KMyMoney's dependencies on Ubuntu 14.04. # # Prerequisites: cmake git build-essential libxcb-keysyms1-dev plus all deps for Qt5 # # Halt on errors and be verbose about what we are doing set -e set -x # Read in our parameters export BUILD_PREFIX=$1 export KMYMONEY_SOURCES=$2 # qjsonparser, used to add metadata to the plugins needs to work in a en_US.UTF-8 environment. # That's not always the case, so make sure it is export LC_ALL=en_US.UTF-8 export LANG=en_us.UTF-8 # We want to use $prefix/deps/usr/ for all our dependencies export DEPS_INSTALL_PREFIX=$BUILD_PREFIX/deps/usr export DOWNLOADS_DIR=$BUILD_PREFIX/downloads # Setup variables needed to help everything find what we build export LD_LIBRARY_PATH=$DEPS_INSTALL_PREFIX/lib:$LD_LIBRARY_PATH export PATH=$DEPS_INSTALL_PREFIX/bin:$PATH export PKG_CONFIG_PATH=$DEPS_INSTALL_PREFIX/share/pkgconfig:$DEPS_INSTALL_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig:$PKG_CONFIG_PATH export CMAKE_PREFIX_PATH=$DEPS_INSTALL_PREFIX:$CMAKE_PREFIX_PATH # A kmymoney build layout looks like this: # kmymoney/ -- the source directory # downloads/ -- downloads of the dependencies from files.kde.org # deps-build/ -- build directory for the dependencies # deps/ -- the location for the built dependencies # build/ -- build directory for kmymoney itself # kmymoney.appdir/ -- install directory for kmymoney and the dependencies # Make sure our downloads directory exists if [ ! -d $DOWNLOADS_DIR ] ; then mkdir -p $DOWNLOADS_DIR fi # Make sure our build directory exists if [ ! -d $BUILD_PREFIX/deps-build/ ] ; then mkdir -p $BUILD_PREFIX/deps-build/ fi # The 3rdparty dependency handling in KMyMoney also requires the install directory to be pre-created if [ ! -d $DEPS_INSTALL_PREFIX ] ; then mkdir -p $DEPS_INSTALL_PREFIX fi # Switch to our build directory as we're basically ready to start building... cd $BUILD_PREFIX/deps-build/ # Configure the dependencies for building cmake $KMYMONEY_SOURCES/3rdparty -DCMAKE_INSTALL_PREFIX=$DEPS_INSTALL_PREFIX -DINSTALL_ROOT=$DEPS_INSTALL_PREFIX -DEXTERNALS_DOWNLOAD_DIR=$DOWNLOADS_DIR # Now start building everything we need, in the appropriate order cmake --build . --config RelWithDebInfo --target ext_iconv # cmake --build . --config RelWithDebInfo --target ext_lzma # cmake --build . --config RelWithDebInfo --target ext_icu cmake --build . --config RelWithDebInfo --target ext_xml # must be before gettext cmake --build . --config RelWithDebInfo --target ext_gettext -# cmake --build . --config RelWithDebInfo --target ext_png +cmake --build . --config RelWithDebInfo --target ext_jpeg +cmake --build . --config RelWithDebInfo --target ext_png cmake --build . --config RelWithDebInfo --target ext_boost cmake --build . --config RelWithDebInfo --target ext_xslt # for ext_xmlsec1 # cmake --build . --config RelWithDebInfo --target ext_fontconfig # cmake --build . --config RelWithDebInfo --target ext_freetype cmake --build . --config RelWithDebInfo --target ext_sqlite # cmake --build . --config RelWithDebInfo --target ext_mysql cmake --build . --config RelWithDebInfo --target ext_qt cmake --build . --config RelWithDebInfo --target ext_knotifications cmake --build . --config RelWithDebInfo --target ext_kio cmake --build . --config RelWithDebInfo --target ext_kcmutils cmake --build . --config RelWithDebInfo --target ext_kwallet cmake --build . --config RelWithDebInfo --target ext_kactivities cmake --build . --config RelWithDebInfo --target ext_kitemmodels cmake --build . --config RelWithDebInfo --target ext_kholidays cmake --build . --config RelWithDebInfo --target ext_kidentitymanagement cmake --build . --config RelWithDebInfo --target ext_kcontacts cmake --build . --config RelWithDebInfo --target ext_akonadi cmake --build . --config RelWithDebInfo --target ext_alkimia cmake --build . --config RelWithDebInfo --target ext_kdiagram cmake --build . --config RelWithDebInfo --target ext_aqbanking cmake --build . --config RelWithDebInfo --target ext_gpgme cmake --build . --config RelWithDebInfo --target ext_sqlcipher cmake --build . --config RelWithDebInfo --target ext_ofx cmake --build . --config RelWithDebInfo --target ext_ical