aboutsummaryrefslogtreecommitdiff
path: root/dev/build/windows/makecoq_mingw.sh
diff options
context:
space:
mode:
authorMichael Soegtrop2019-06-09 20:07:59 +0200
committerMichael Soegtrop2019-06-11 15:00:25 +0200
commita5c2268a4d2b314990a2148ad5161cc3c2eeb96e (patch)
treee53cc824530ddee6989ae54d797b9c6ab4b345bf /dev/build/windows/makecoq_mingw.sh
parent45306c6c9c433b86406d041f58aafb7cf3a3ff82 (diff)
Resolve #9885 CoqIDE does not work on Windows
- Switch gtksourceview to 3.24.11 - Add appropriate set of icons and some other files GTK3 requires - Add fix for ocamldebug so that this can be debugged
Diffstat (limited to 'dev/build/windows/makecoq_mingw.sh')
-rwxr-xr-xdev/build/windows/makecoq_mingw.sh87
1 files changed, 59 insertions, 28 deletions
diff --git a/dev/build/windows/makecoq_mingw.sh b/dev/build/windows/makecoq_mingw.sh
index 549f70e8fe..0699e2bd44 100755
--- a/dev/build/windows/makecoq_mingw.sh
+++ b/dev/build/windows/makecoq_mingw.sh
@@ -104,7 +104,8 @@ cd /build
mkdir -p "$SOURCE_LOCAL_CACHE_CFMT"
# sysroot prefix for the above /build/host/target combination
-PREFIX=$CYGWIN_INSTALLDIR_MFMT/usr/$TARGET_ARCH/sys-root/mingw
+# This must be in MFMT (C:/.../) because the OCaml library path is based on it and OCaml is a MinGW application.
+PREFIXMINGW=$CYGWIN_INSTALLDIR_MFMT/usr/$TARGET_ARCH/sys-root/mingw
# Install / Prefix folder for COQ
PREFIXCOQ=$RESULT_INSTALLDIR_MFMT
@@ -113,10 +114,10 @@ PREFIXCOQ=$RESULT_INSTALLDIR_MFMT
if [ "$INSTALLOCAML" == "Y" ]; then
PREFIXOCAML=$PREFIXCOQ
else
- PREFIXOCAML=$PREFIX
+ PREFIXOCAML=$PREFIXMINGW
fi
-mkdir -p "$PREFIX/bin"
+mkdir -p "$PREFIXMINGW/bin"
mkdir -p "$PREFIXCOQ/bin"
mkdir -p "$PREFIXOCAML/bin"
@@ -487,7 +488,7 @@ function build_post {
function build_conf_make_inst {
if build_prep "$1" "$2" "$3" ; then
$4
- logn configure ./configure --build="$BUILD" --host="$HOST" --target="$TARGET" --prefix="$PREFIX" "${@:5}"
+ logn configure ./configure --build="$BUILD" --host="$HOST" --target="$TARGET" --prefix="$PREFIXMINGW" "${@:5}"
# shellcheck disable=SC2086
log1 make $MAKE_OPT
log2 make install
@@ -895,9 +896,9 @@ function make_libxml2 {
# Note: latest release version 2.9.2 fails during configuring lzma, so using 2.9.1
# Note: python binding requires <sys/select.h> which doesn't exist on cygwin
if build_prep https://git.gnome.org/browse/libxml2/snapshot libxml2-2.9.1 tar.xz ; then
- # ./autogen.sh --build=$BUILD --host=$HOST --target=$TARGET --prefix="$PREFIX" --disable-shared --without-python
+ # ./autogen.sh --build=$BUILD --host=$HOST --target=$TARGET --prefix="$PREFIXMINGW" --disable-shared --without-python
# shared library required by gtksourceview
- ./autogen.sh --build="$BUILD" --host="$HOST" --target="$TARGET" --prefix="$PREFIX" --without-python
+ ./autogen.sh --build="$BUILD" --host="$HOST" --target="$TARGET" --prefix="$PREFIXMINGW" --without-python
# shellcheck disable=SC2086
log1 make $MAKE_OPT all
log2 make install
@@ -910,14 +911,13 @@ function make_libxml2 {
function make_gtk_sourceview3 {
# Cygwin packet dependencies: intltool
- # gtksourceview-2.11.2 requires GTK2
- # gtksourceview-2.91.9 requires GTK3
- # => We use gtksourceview-2.11.2 which seems to be the newest GTK2 based one
+ # Note: this is always built from sources cause of a bug in the cygwin delivery.
+ # Just dependencies are only built if we build from sources
if [ "$GTK_FROM_SOURCES" == "Y" ]; then
make_gtk3
make_libxml2
- build_conf_make_inst https://download.gnome.org/sources/gtksourceview/3.24 gtksourceview-3.24.9 tar.bz2 true
fi
+ build_conf_make_inst https://download.gnome.org/sources/gtksourceview/3.24 gtksourceview-3.24.11 tar.xz make_arch_pkg_config
}
##### FLEXDLL FLEXLINK #####
@@ -930,7 +930,7 @@ function make_gtk_sourceview3 {
# Install flexdll objects
function install_flexdll {
- cp flexdll.h "/usr/$TARGET_ARCH/sys-root/mingw/include"
+ cp flexdll.h "$PREFIXMINGW/include"
if [ "$TARGET_ARCH" == "i686-w64-mingw32" ]; then
cp flexdll*_mingw.o "/usr/$TARGET_ARCH/bin"
cp flexdll*_mingw.o "$PREFIXOCAML/bin"
@@ -1202,7 +1202,7 @@ function make_lablgtk {
function copy_coq_dll {
if [ "$INSTALLMODE" == "absolute" ] || [ "$INSTALLMODE" == "relocatable" ]; then
- cp "/usr/${ARCH}-w64-mingw32/sys-root/mingw/bin/$1" "$PREFIXCOQ/bin/$1"
+ cp "$PREFIXMINGW/bin/$1" "$PREFIXCOQ/bin/$1"
fi
}
@@ -1282,27 +1282,58 @@ function copy_coq_objects {
}
# Copy required GTK config and support files
+# This must be called from inside the coq build folder!
function copy_coq_gtk {
- echo 'gtk-theme-name = "Default"' > "$PREFIX/etc/gtk-3.0/gtkrc"
- echo 'gtk-fallback-icon-theme = "Tango"' >> "$PREFIX/etc/gtk-3.0/gtkrc"
+
+ glib-compile-schemas $PREFIXMINGW/share/glib-2.0/schemas/
+ echo 'gtk-theme-name = "Default"' > "$PREFIXMINGW/etc/gtk-3.0/gtkrc"
if [ "$INSTALLMODE" == "absolute" ] || [ "$INSTALLMODE" == "relocatable" ]; then
- install_glob "$PREFIX/etc/gtk-3.0" '*' "$PREFIXCOQ/gtk-3.0"
- install_glob "$PREFIX/share/gtksourceview-3.0/language-specs" '*' "$PREFIXCOQ/share/gtksourceview-3.0/language-specs"
- install_glob "$PREFIX/share/gtksourceview-3.0/styles" '*' "$PREFIXCOQ/share/gtksourceview-3.0/styles"
- install_rec "$PREFIX/share/themes" '*' "$PREFIXCOQ/share/themes"
+ install_glob "$PREFIXMINGW/etc/gtk-3.0" '*' "$PREFIXCOQ/gtk-3.0"
+ install -D -T "$PREFIXMINGW/share/glib-2.0/schemas/gschemas.compiled" "$PREFIXCOQ/share/glib-2.0/schemas/gschemas.compiled"
+
+ install_glob "$PREFIXMINGW/share/gtksourceview-3.0/language-specs" '*' "$PREFIXCOQ/share/gtksourceview-3.0/language-specs"
+ install -D -T "ide/coq.lang" "$PREFIXCOQ/share/gtksourceview-3.0/language-specs/coq.lang"
+ install -D -T "ide/coq-ssreflect.lang" "$PREFIXCOQ/share/gtksourceview-3.0/language-specs/coq-ssreflect.lang"
+
+ install_glob "$PREFIXMINGW/share/gtksourceview-3.0/styles" '*' "$PREFIXCOQ/share/gtksourceview-3.0/styles"
+ install -D -T "ide/coq_style.xml" "$PREFIXCOQ/share/gtksourceview-3.0/styles/coq_style.xml"
+
+ install_rec "$PREFIXMINGW/share/themes" '*' "$PREFIXCOQ/share/themes"
+
+ FOLDERS=""
+ # The sizes include all default sizes given in index.theme
+ # The types used haven been recorded with ProcMon in an installation with all icons present
+ for SIZE in 16x16 22x22 32x32 48x48; do
+ for TYPE in \
+ actions/bookmark actions/document devices/drive actions/format-text actions/go actions/list \
+ actions/media actions/pan actions/process actions/system actions/window \
+ mimetypes/text places/folder places/user status/dialog
+ do
+ CLASS=$(dirname $TYPE)
+ ICON=$(basename $TYPE)
+ if [[ ! "$FOLDERS" =~ "$SIZE/$CLASS" ]] ;then
+ FOLDERS="$FOLDERS$SIZE/$CLASS,"
+ fi
+ install_rec "/usr/share/icons/Adwaita/$SIZE/$CLASS" "$ICON*" "$PREFIXCOQ/share/icons/Adwaita/$SIZE/$CLASS"
+ done
+ done
+ echo Folders=$FOLDERS
+ install -D -T "/usr/share/icons/Adwaita/index.theme" "$PREFIXCOQ/share/icons/Adwaita/index.theme"
+ sed -i "s|^Directories=.*|Directories=$FOLDERS|" "$PREFIXCOQ/share/icons/Adwaita/index.theme"
+ gtk-update-icon-cache -f "$PREFIXCOQ/share/icons/Adwaita/"
# This below item look like a bug in make install
- if [ -d "$PREFIXCOQ/share/coq/" ] ; then
- COQSHARE="$PREFIXCOQ/share/coq/"
- else
- COQSHARE="$PREFIXCOQ/share/"
- fi
-
- mkdir -p "$PREFIXCOQ/ide"
- mv "$COQSHARE"*.png "$PREFIXCOQ/ide"
- rmdir "$PREFIXCOQ/share/coq" || true
+ # if [ -d "$PREFIXCOQ/share/coq/" ] ; then
+ # COQSHARE="$PREFIXCOQ/share/coq/"
+ # else
+ # COQSHARE="$PREFIXCOQ/share/"
+ # fi
+
+ # mkdir -p "$PREFIXCOQ/ide"
+ # mv "$COQSHARE"*.png "$PREFIXCOQ/ide"
+ # rmdir "$PREFIXCOQ/share/coq" || true
fi
}
@@ -1454,7 +1485,7 @@ function make_gcc {
--enable-languages=c --disable-nls \
--disable-libsanitizer --disable-libssp --disable-libquadmath --disable-libgomp --disable-libvtv --disable-lto
# --disable-decimal-float seems to be required
- # --with-sysroot="$PREFIX" results in configure error that this is not an absolute path
+ # --with-sysroot="$PREFIXMINGW" results in configure error that this is not an absolute path
# shellcheck disable=SC2086
log1 make $MAKE_OPT
log2 make install