File indexing completed on 2024-05-12 04:17:32

0001 #!/bin/bash
0002 
0003 # SPDX-FileCopyrightText: 2008-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com>
0004 #
0005 # SPDX-License-Identifier: BSD-3-Clause
0006 #
0007 # Arguments : $1 : MXE build root path to MXE bundle dir (default ./project/mxe/build.win32).
0008 #             $2 : build type : 'debugfull' to hack (default), 'release' for production, relwithdebinfo for packaging.
0009 
0010 # Halt and catch errors
0011 set -eE
0012 trap 'PREVIOUS_COMMAND=$THIS_COMMAND; THIS_COMMAND=$BASH_COMMAND' DEBUG
0013 trap 'echo "FAILED COMMAND: $PREVIOUS_COMMAND"' ERR
0014 
0015 ORIG_WD="`pwd`"
0016 
0017 MXE_BUILDROOT=$1
0018 
0019 if [[ $MXE_BUILDROOT == "" ]]; then
0020 
0021         echo "MXE target build directory is missing!"
0022         exit -1
0023 
0024 fi
0025 
0026 if [[ $MXE_BUILDROOT == *.win32 ]]; then
0027 
0028     echo "MXE target : 32 bits shared"
0029     MXE_BUILD_TARGETS="i686-w64-mingw32.shared"
0030 
0031 elif [[ $MXE_BUILDROOT == *.win64 ]]; then
0032 
0033     echo "MXE target : 64 bits shared"
0034     MXE_BUILD_TARGETS="x86_64-w64-mingw32.shared"
0035 
0036 else
0037 
0038     echo "Invalid MXE target!"
0039     exit -1
0040 
0041 fi
0042 
0043 BUILD_TYPE=$2
0044 
0045 if [ "$BUILD_TYPE" = "" ]; then
0046     BUILD_TYPE=RelWithDebInfo
0047 fi
0048 
0049 MXE_INSTALL_PREFIX=${MXE_BUILDROOT}/usr/${MXE_BUILD_TARGETS}/
0050 MXE_TOOLCHAIN=${MXE_INSTALL_PREFIX}/share/cmake/mxe-conf.cmake
0051 
0052 # Exiv2 configuration options for cmake.
0053 OPTIONS='-DBUILD_SHARED_LIBS=ON \
0054          -DEXIV2_ENABLE_XMP=ON \
0055          -DEXIV2_ENABLE_EXTERNAL_XMP=OFF \
0056          -DEXIV2_ENABLE_PNG=ON \
0057          -DEXIV2_ENABLE_NLS=ON \
0058          -DEXIV2_ENABLE_BMFF=ON \
0059          -DEXIV2_ENABLE_PRINTUCS2=ON \
0060          -DEXIV2_ENABLE_LENSDATA=ON \
0061          -DEXIV2_ENABLE_VIDEO=OFF \
0062          -DEXIV2_ENABLE_WEBREADY=OFF \
0063          -DEXIV2_ENABLE_DYNAMIC_RUNTIME=OFF \
0064          -DEXIV2_ENABLE_CURL=OFF \
0065          -DEXIV2_ENABLE_SSH=OFF \
0066          -DEXIV2_BUILD_SAMPLES=OFF \
0067          -DEXIV2_BUILD_PO=OFF \
0068          -DEXIV2_BUILD_EXIV2_COMMAND=ON \
0069          -DEXIV2_BUILD_UNIT_TESTS=OFF \
0070          -DEXIV2_BUILD_DOC=OFF \
0071          -DEXIV2_TEAM_EXTRA_WARNINGS=OFF \
0072          -DEXIV2_TEAM_WARNINGS_AS_ERRORS=OFF \
0073          -DEXIV2_TEAM_USE_SANITIZERS=OFF \
0074          -DEXIV2_ENABLE_WIN_UNICODE=OFF'
0075 
0076 echo "Installing to $MXE_BUILDROOT for target $MXE_BUILD_TARGETS with build mode $BUILD_TYPE and configure options $OPTIONS"
0077 
0078 # Paths rules
0079 ORIG_PATH="$PATH"
0080 export PATH=$MXE_BUILDROOT/usr/bin:$PATH
0081 
0082 if [ ! -d "build" ]; then
0083     mkdir $ORIG_WD/build
0084 fi
0085 
0086 cd $ORIG_WD/build
0087 
0088 ${MXE_BUILD_TARGETS}-cmake -G "Unix Makefiles" . \
0089                            -DMXE_TOOLCHAIN=${MXE_TOOLCHAIN} \
0090                            -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
0091                            -DCMAKE_COLOR_MAKEFILE=ON \
0092                            -DCMAKE_INSTALL_PREFIX=${MXE_INSTALL_PREFIX} \
0093                            -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
0094                            -DCMAKE_TOOLCHAIN_FILE=${MXE_TOOLCHAIN} \
0095                            -DCMAKE_FIND_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
0096                            -DCMAKE_SYSTEM_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include \
0097                            -DCMAKE_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include \
0098                            -DCMAKE_LIBRARY_PATH=${CMAKE_PREFIX_PATH}/lib \
0099                            -DZLIB_ROOT=${CMAKE_PREFIX_PATH} \
0100                            ${OPTIONS} \
0101                            -Wno-dev \
0102                            ..
0103 
0104 CMAKE_VAL_RET=$?
0105 
0106 export PATH=$ORIG_PATH
0107 
0108 exit $CMAKE_VAL_RET