]>
git.proxmox.com Git - ceph.git/blob - ceph/mingw_conf.sh
2 # Due to inconsistencies between distributions, mingw versions, binaries,
3 # and directories must be determined (or defined) prior to building.
5 # This script expects the following variables:
6 # * OS - currently ubuntu or suse. In the future we may attempt to detect the
8 # * MINGW_CMAKE_FILE - if set, a cmake toolchain file will be created
9 # * MINGW_POSIX_FLAGS - if set, Mingw Posix compatibility mode will be
10 # enabled by defining the according flags.
12 # -Common mingw settings-
13 MINGW_PREFIX
="x86_64-w64-mingw32-"
14 MINGW_BASE
="x86_64-w64-mingw32"
15 MINGW_CPP
="${MINGW_BASE}-c++"
16 MINGW_DLLTOOL
="${MINGW_BASE}-dlltool"
17 MINGW_WINDRES
="${MINGW_BASE}-windres"
18 MINGW_STRIP
="${MINGW_BASE}-strip"
19 MINGW_OBJCOPY
="${MINGW_BASE}-objcopy"
20 # -Distribution specific mingw settings-
24 mingwLibDir
="/usr/lib/gcc"
25 mingwVersion
="$(${MINGW_CPP}${mingwPosix} -dumpversion)"
26 mingwTargetLibDir
="${mingwLibDir}/${MINGW_BASE}/${mingwVersion}"
27 mingwLibpthreadDir
="/usr/${MINGW_BASE}/lib"
28 PTW32Include
=/usr
/share
/mingw-w64
/include
29 PTW32Lib
=/usr
/x86_64-w64-mingw32
/lib
33 mingwLibDir
="/usr/lib64/gcc"
34 mingwVersion
="$(${MINGW_CPP}${mingwPosix} -dumpversion)"
35 mingwTargetLibDir
="/usr/${MINGW_BASE}/sys-root/mingw/bin"
36 mingwLibpthreadDir
="$mingwTargetLibDir"
37 PTW32Include
=/usr
/x86_64-w64-mingw32
/sys-root
/mingw
/include
38 PTW32Lib
=/usr
/x86_64-w64-mingw32
/sys-root
/mingw
/lib
41 echo "$ID is unknown, automatic mingw configuration is not possible."
45 # -Common mingw settings, dependent upon distribution specific settings-
46 MINGW_FIND_ROOT_LIB_PATH
="${mingwLibDir}/\${TOOLCHAIN_PREFIX}/${mingwVersion}"
47 MINGW_CC
="${MINGW_BASE}-gcc${mingwPosix}"
48 MINGW_CXX
="${MINGW_BASE}-g++${mingwPosix}"
49 # End MINGW configuration
52 if [[ -n $MINGW_CMAKE_FILE ]]; then
53 cat > $MINGW_CMAKE_FILE <<EOL
54 set(CMAKE_SYSTEM_NAME Windows)
55 set(TOOLCHAIN_PREFIX ${MINGW_BASE})
56 set(CMAKE_SYSTEM_PROCESSOR x86_64)
58 # We'll need to use posix threads in order to use
59 # C++11 features, such as std::thread.
60 set(CMAKE_C_COMPILER \${TOOLCHAIN_PREFIX}-gcc${mingwPosix})
61 set(CMAKE_CXX_COMPILER \${TOOLCHAIN_PREFIX}-g++${mingwPosix})
62 set(CMAKE_RC_COMPILER \${TOOLCHAIN_PREFIX}-windres)
64 set(CMAKE_FIND_ROOT_PATH /usr/\${TOOLCHAIN_PREFIX} ${MINGW_FIND_ROOT_LIB_PATH})
65 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
66 # TODO: consider switching this to "ONLY". The issue with
67 # that is that all our libs should then be under
68 # CMAKE_FIND_ROOT_PATH and CMAKE_PREFIX_PATH would be ignored.
69 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
70 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
72 if [[ -n $MINGW_POSIX_FLAGS ]]; then
73 cat >> $MINGW_CMAKE_FILE <<EOL
74 # Some functions (e.g. localtime_r) will not be available unless we set
76 add_definitions(-D_POSIX=1)
77 add_definitions(-D_POSIX_C_SOURCE=1)
78 add_definitions(-D_POSIX_=1)
79 add_definitions(-D_POSIX_THREADS=1)