diff options
-rw-r--r-- | index.html | 5 | ||||
-rw-r--r-- | src/ocaml-lablgtk2-1-fixes.patch | 864 | ||||
-rw-r--r-- | src/ocaml-lablgtk2-test.ml | 10 | ||||
-rw-r--r-- | src/ocaml-lablgtk2.mk | 31 |
4 files changed, 910 insertions, 0 deletions
@@ -1704,6 +1704,11 @@ USE_OSGPLUGIN(<plugin2>) <td id="ocaml-lablgl-website"><a href="http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgl.html">lablgl</a></td> </tr> <tr> + <td id="ocaml-lablgtk2-package">ocaml-lablgtk2</td> + <td id="ocaml-lablgtk2-version">2.16.0</td> + <td id="ocaml-lablgtk2-website"><a href="http://forge.ocamlcore.org/">lablgtk2</a></td> + </tr> + <tr> <td id="ogg-package">ogg</td> <td id="ogg-version">1.3.0</td> <td id="ogg-website"><a href="http://www.xiph.org/ogg/">OGG</a></td> diff --git a/src/ocaml-lablgtk2-1-fixes.patch b/src/ocaml-lablgtk2-1-fixes.patch new file mode 100644 index 0000000..a99eed5 --- /dev/null +++ b/src/ocaml-lablgtk2-1-fixes.patch @@ -0,0 +1,864 @@ +This file is part of MXE. +See index.html for further information. + +Contains ad hoc patches for cross building. + +From 7a45f91cc0f2b0c1744b2ee725ca1999ad24a72b Mon Sep 17 00:00:00 2001 +From: MXE +Date: Thu, 13 Sep 2012 23:21:18 +0200 +Subject: [PATCH 1/6] split configure.in in configure.ac and ocaml.m4. + Makefile.am links to src/Makefile + + +diff --git a/Makefile.am b/Makefile.am +new file mode 100644 +index 0000000..af437a6 +--- /dev/null ++++ b/Makefile.am +@@ -0,0 +1 @@ ++SUBDIRS = src +diff --git a/configure.ac b/configure.ac +new file mode 100644 +index 0000000..3b27786 +--- /dev/null ++++ b/configure.ac +@@ -0,0 +1,406 @@ ++# ++# autoconf input for Objective Caml programs ++# Modified by the lablgtk2 development team ++# Original copyright (C) 2001 Jean-Christophe Filliâtre ++# from a first script by Georges Mariano ++# ++# This library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Library General Public ++# License version 2, as published by the Free Software Foundation. ++# ++# This library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# ++# See the GNU Library General Public License version 2 for more details ++# (enclosed in the file LGPL). ++ ++AC_PREREQ([2.59]) ++AC_INIT(lablgtk2, 2.14.2) ++AM_INIT_AUTOMAKE([foreign -Wall]) ++ ++m4_include([ocaml.m4]) ++ ++# Check for Ocaml compilers ++ ++# we first look for ocamlc in the path; if not present, we fail ++dnl AC_CHECK_PROG(CAMLC,ocamlc,ocamlc,no) ++dnl if test "$CAMLC" = no ; then ++dnl AC_MSG_ERROR(Cannot find ocamlc.) ++dnl fi ++AC_PROG_OCAML([3.08]) ++AC_PROG_FINDLIB ++ ++dnl # we extract Ocaml version number and library path ++dnl OCAMLVERSION=`$CAMLC -version` ++dnl echo "ocaml version is $OCAMLVERSION" ++dnl OCAMLLIB=`$CAMLC -where | tr -d '\\r'` ++dnl echo "ocaml library path is $OCAMLLIB" ++LIBDIR=$OCAMLLIB ++ ++AC_ARG_WITH(libdir, ++ [ --with-libdir=/path install libs in /path/lablgtk2 and /path/stublibs], ++ LIBDIR=$withval) ++ ++# then we look for ocamlopt; if not present, we issue a warning ++# if the version is not the same, we also discard it ++# we set OCAMLBEST to "opt" or "byte", whether ocamlopt is available or not ++dnl AC_CHECK_PROG(CAMLOPT,ocamlopt,ocamlopt,no) ++dnl OCAMLBEST=byte ++dnl if test "$CAMLOPT" = no ; then ++dnl AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.) ++dnl else ++dnl AC_MSG_CHECKING(ocamlopt version) ++dnl TMPVERSION=`$CAMLOPT -version` ++dnl if test "$TMPVERSION" != "$OCAMLVERSION" ; then ++dnl AC_MSG_RESULT(differs from ocamlc; ocamlopt discarded.) ++dnl CAMLOPT=no ++dnl else ++dnl AC_MSG_RESULT(ok) ++dnl OCAMLBEST=opt ++dnl fi ++dnl fi ++ ++dnl # checking for ocamlc.opt ++dnl AC_CHECK_PROG(OCAMLCDOTOPT,ocamlc.opt,ocamlc.opt,no) ++dnl if test "$OCAMLCDOTOPT" != no ; then ++dnl AC_MSG_CHECKING(ocamlc.opt version) ++dnl TMPVERSION=`$OCAMLCDOTOPT -version` ++dnl if test "$TMPVERSION" != "$OCAMLVERSION" ; then ++dnl AC_MSG_RESULT(differs from ocamlc; ocamlc.opt discarded.) ++dnl else ++dnl AC_MSG_RESULT(ok) ++dnl CAMLC=$OCAMLCDOTOPT ++dnl fi ++dnl fi ++ ++dnl # checking for ocamlopt.opt ++dnl if test "$CAMLOPT" != no ; then ++dnl AC_CHECK_PROG(OCAMLOPTDOTOPT,ocamlopt.opt,ocamlopt.opt,no) ++dnl if test "$OCAMLOPTDOTOPT" != no ; then ++dnl AC_MSG_CHECKING(ocamlc.opt version) ++dnl TMPVER=`$OCAMLOPTDOTOPT -version` ++dnl if test "$TMPVER" != "$OCAMLVERSION" ; then ++dnl AC_MSG_RESULT(differs from ocamlc; ocamlopt.opt discarded.) ++dnl else ++dnl AC_MSG_RESULT(ok) ++dnl CAMLOPT=$OCAMLOPTDOTOPT ++dnl fi ++dnl fi ++dnl fi ++ ++# ocamlrun, ocamldep, ocamllex and ocamlyacc should also be present in the path ++AC_CHECK_TOOL([OCAMLRUN],[ocamlrun],[no]) ++if test "$OCAMLRUN" = no ; then ++ AC_MSG_ERROR(Cannot find ocamlrun.) ++fi ++ ++dnl AC_CHECK_PROG(OCAMLDEP,ocamldep,ocamldep,no) ++dnl if test "$OCAMLDEP" = no ; then ++dnl AC_MSG_ERROR(Cannot find ocamldep.) ++dnl fi ++ ++dnl AC_CHECK_PROG(OCAMLDOC,ocamldoc,ocamldoc,no) ++dnl if test "$OCAMLDOC" = no ; then ++dnl AC_MSG_RESULT(Cannot find ocamldoc.) ++dnl fi ++ ++dnl AC_CHECK_PROG(OCAMLLEX,ocamllex,ocamllex,no) ++dnl if test "$OCAMLLEX" = no ; then ++dnl AC_MSG_ERROR(Cannot find ocamllex.) ++dnl #else ++dnl # AC_CHECK_PROG(OCAMLLEXDOTOPT,ocamllex.opt,ocamllex.opt,no) ++dnl # if test "$OCAMLLEXDOTOPT" != no ; then ++dnl # OCAMLLEX=$OCAMLLEXDOTOPT ++dnl # fi ++dnl fi ++AC_PROG_OCAMLLEX ++ ++dnl AC_CHECK_PROG(OCAMLYACC,ocamlyacc,ocamlyacc,no) ++dnl if test "$OCAMLYACC" = no ; then ++dnl AC_MSG_ERROR(Cannot find ocamlyacc.) ++dnl fi ++AC_PROG_OCAMLYACC ++ ++dnl AC_CHECK_PROG(CAMLMKTOP,ocamlmktop,ocamlmktop,no) ++dnl if test "$CAMLMKTOP" = no ; then ++dnl AC_MSG_ERROR(Cannot find ocamlmktop.) ++dnl fi ++ ++dnl AC_CHECK_PROG(CAMLMKLIB,ocamlmklib,ocamlmklib,no) ++dnl if test "$CAMLMKLIB" = no ; then ++dnl AC_MSG_ERROR(Cannot find ocamlmklib.) ++dnl fi ++ ++dnl AC_CHECK_PROG(CAMLP4O,camlp4o,camlp4o,no) ++dnl if test "$CAMLP4O" = no ; then ++dnl AC_MSG_ERROR(Cannot find camlp4o.) ++dnl fi ++AC_PROG_CAMLP4 ++ ++if expr "$OCAMLVERSION" '>=' '3.08' > /dev/null ; then ++ ODOC_DEF="-D OCAML_308" ++fi ++AC_SUBST(ODOC_DEF) ++ ++if expr "$OCAMLVERSION" '>=' '3.11' > /dev/null ; then ++ HAS_PRINTEXC_BACKTRACE="-D HAS_PRINTEXC_BACKTRACE" ++fi ++AC_SUBST(HAS_PRINTEXC_BACKTRACE) ++ ++# Check for which kind of threads is used ++AC_MSG_CHECKING(for ocaml threads) ++AC_ARG_WITH(threads, ++ [AC_HELP_STRING([--with-threads=(yes|system|vm|no)], ++ [specify a thread implementation to use])], ++ [], ++ [with_threads=yes]) ++THREADS_LIB="$with_threads" ++if (test "$THREADS_LIB" = yes || test "$THREADS_LIB" = system) && \ ++ test -r "$OCAMLLIB/threads/threads.cma"; then ++ THREADS_LIB="system" ++elif (test "$THREADS_LIB" = yes || test "$THREADS_LIB" = vm) && \ ++ test -r "$OCAMLLIB/vmthreads/stdlib.cma"; then ++ THREADS_LIB="vm" ++elif test "$THREADS_LIB" = yes; then ++ echo; AC_MSG_ERROR(Cannot use threads) ++elif test "$THREADS_LIB" != no; then ++ echo; AC_MSG_ERROR(Cannot use $THREADS_LIB threads) ++fi ++AC_MSG_RESULT(use $THREADS_LIB threads) ++ ++# Check for dll support ++HAS_DLL_SUPPORT="no" ++AC_MSG_CHECKING(for ocaml dll support) ++if test -r "$OCAMLLIB/stublibs/dllunix.so" || ++ test -r "$OCAMLLIB/stublibs/dllunix.dll" ++then HAS_DLL_SUPPORT="yes" ++fi ++AC_MSG_RESULT($HAS_DLL_SUPPORT) ++ ++AC_PROG_RANLIB ++ ++dnl # get the C compiler used by ocamlc ++dnl if test -z "$CC" ; then ++dnl touch conftest.c ++dnl CC=$($CAMLC -verbose -c conftest.c 2>&1 | head -1 | sed ['s/^+ \([^ ]*\) .*$/\1/']) ++dnl echo [OCaml uses $CC to compile C files] ++dnl fi ++AC_PROG_CC ++ ++# platform ++dnl AC_MSG_CHECKING(platform) ++dnl echo "print_endline Sys.os_type ;;" > conftest.ml ++dnl ac_ocaml_platform=$(ocaml conftest.ml | tr -d '\r') ++dnl AC_MSG_RESULT($ac_ocaml_platform) ++dnl if test $ac_ocaml_platform = Win32 ; then ++dnl OCAMLWIN32=yes ++dnl EXE=.exe ++dnl XS=.dll ++dnl else ++dnl OCAMLWIN32=no ++dnl EXE= ++dnl XS=.so ++dnl fi ++AC_CHECK_OCAML_OS_TYPE ++if test x$OCAML_OS_TYPE = xWin32 ; then ++ OCAMLWIN32=yes ++ EXE=.exe ++ XS=.dll ++else ++ OCAMLWIN32=no ++ EXE= ++ XS=.so ++fi ++ ++# Working native Dynlink ++AC_MSG_CHECKING(native dynlink) ++echo "Dynlink.loadfile \"foo\";;" > test_dynlink.ml ++if ($OCAMLOPT -shared -o test_dynlink.cmxs test_dynlink.ml) 2> /dev/null ; then ++ HAS_NATIVE_DYNLINK=yes ++else ++ HAS_NATIVE_DYNLINK=no ++fi ++ ++# GTK 2 auto configuration ++ ++dnl LABLGTK_PKG(variable, autoconf package, help string, pkgconfig package) ++dnl creates USE_variable ("yes" if used, "" if not) ++dnl creates FORCE_variable ("yes" if required by user, "no" if not) ++dnl creates variablePKG = pkgconfig if used ++AC_DEFUN([LABLGTK_PKG], [ ++AC_ARG_WITH($2, ++ [$3], ++ USE_$1=$withval; FORCE_$1=yes, ++ USE_$1=yes; FORCE_$1=no ++) ++AS_IF([test $USE_$1 = yes], ++ [PKG_CHECK_MODULES($1,$4,,[ ++ if test $FORCE_$1 = yes ; then ++ AC_MSG_ERROR($2 enforced but no support found) ++ else ++ USE_$1=no ++ fi])] ++) ++if test $USE_$1 = yes ; then ++ USE_$1=1 ++ $1[]PKG=$4 ++else ++ unset USE_$1 ++fi ++AC_SUBST(USE_$1)] ++) ++ ++GTKPKG=gtk+-2.0 ++ ++LABLGTK_PKG(GTKGL,gl, ++ [AS_HELP_STRING([--without-gl], ++ [override autodetected GtkGLArea support. Requires LablGL])], ++ gtkgl-2.0) ++ ++# Check for LablGL, if gtkgl detected. will use both or none ++# Either adds LABLGLDIR, or clears USE_GTKGL,GTKGLDIR and GTKGLPKG ++if test -n "$USE_GTKGL" ; then ++ AC_MSG_CHECKING(lablGL directory) ++ cat > conftest.ml << EOF ++ open Raw ++EOF ++ if $OCAMLC -c -I "${LABLGLDIR:=+lablGL}" conftest.ml > /dev/null 2>&1 ; then ++ AC_MSG_RESULT($LABLGLDIR) ++ else ++ if test $FORCE_GTKGL = yes ; then ++ AC_MSG_ERROR(gtkgl enforced but lablGL not found) ++ else ++ AC_MSG_RESULT(no) ++ unset USE_GTKGL ++ unset GTKGLPKG ++ unset LABLGLDIR ++ fi ++ fi ++fi ++ ++# put after PKG_CHECK_MODULES, otherwise cross pkg-config is not detected ++AM_PATH_GTK_2_0(2.0.0, :, AC_MSG_ERROR(GTK+ is required)) ++ ++LABLGTK_PKG(GLADE, glade, ++ [ --without-glade override autodetected libglade support], ++ libglade-2.0) ++ ++LABLGTK_PKG(RSVG, rsvg, ++ [ --without-rsvg override autodetected librsvg support], ++ librsvg-2.0) ++# Check for SVGZ support ++if test -n "$USE_RSVG" ; then ++ ac_ocaml_libs="$LIBS" ++ LIBS="$LIBS $RSVG_LIBS" ++ AC_CHECK_FUNC(rsvg_handle_new_gz, [HAVE_SVGZ=-DHAVE_SVGZ], [unset HAVE_SVGZ]) ++ # this tests seems broken on my ubuntu FF ++ unset HAVE_SVGZ ++ LIBS="$ac_ocaml_libs" ++else ++ unset HAVE_SVGZ ++fi ++ ++LABLGTK_PKG(GNOMECANVAS, gnomecanvas, ++ [ --without-gnomecanvas override autodetected libgnomecanvas support], ++ libgnomecanvas-2.0) ++ ++LABLGTK_PKG(GNOMEUI, gnomeui, ++ [ --without-gnomeui override autodetected libgnomeui support], ++ libgnomeui-2.0) ++ ++LABLGTK_PKG(PANEL, panel, ++ [ --without-panel override autodetected libpanelapplet support], ++ libpanelapplet-2.0) ++ ++LABLGTK_PKG(GTKSPELL, gtkspell, ++ [ --without-gtkspell override autodetected gtkspell support], ++ gtkspell-2.0) ++ ++LABLGTK_PKG(GTKSOURCEVIEW, gtksourceview, ++ [ --without-gtksourceview override autodetected gtksourceview support], ++ gtksourceview-1.0) ++ ++LABLGTK_PKG(GTKSOURCEVIEW2, gtksourceview2, ++ [ --without-gtksourceview2 override autodetected gtksourceview 2 support], ++ gtksourceview-2.0) ++ ++LABLGTK_PKG(GTKQUARTZ, quartz, ++ [ --without-quartz override autodetected quartz support], ++ gtk+-quartz-2.0) ++ ++PKG_CHECK_MODULES(GTKALL,$GTKPKG $GTKGLPKG $GLADEPKG $RSVGPKG $GNOMECANVASPKG $GNOMEUIPKG $PANELPKG $GTKSPELLPKG $GTKSOURCEVIEW2PKG $GTKQUARTZPKG) ++ ++AC_ARG_ENABLE(debug, ++ [ --enable-debug enable debug mode], ++ AC_MSG_RESULT(Debug mode enabled) ; DEBUG=1, ++ DEBUG=) ++ ++# substitutions to perform ++ ++AC_SUBST(EXE) ++AC_SUBST(XS) ++AC_SUBST(LIBDIR) ++dnl AC_SUBST(OCAMLBEST) ++AC_SUBST(OCAMLWIN32) ++dnl AC_SUBST(OCAMLDEP) ++AC_SUBST(OCAMLRUN) ++dnl AC_SUBST(OCAMLLEX) ++dnl AC_SUBST(OCAMLYACC) ++AC_SUBST(THREADS_LIB) ++AC_SUBST(HAS_DLL_SUPPORT) ++AC_SUBST(HAS_NATIVE_DYNLINK) ++ ++AC_SUBST(CAMLC,$OCAMLC) ++AC_SUBST(CAMLOPT,$OCAMLOPT) ++dnl AC_SUBST(OCAMLDOC) ++AC_SUBST(CAMLMKTOP,$OCAMLMKTOP) ++AC_SUBST(CAMLMKLIB,$OCAMLMKLIB) ++dnl AC_SUBST(CAMLP4O) ++AC_SUBST(LABLGLDIR) ++AC_SUBST(HAVE_SVGZ) ++AC_SUBST(USE_CC) ++AC_SUBST(DEBUG) ++ ++# Finally create the config.make from config.make.in ++dnl AC_OUTPUT(config.make) ++dnl chmod a-w config.make ++AC_CONFIG_FILES(Makefile config.make) ++AC_OUTPUT ++ ++AC_DEFUN([CONF_SUMMARY], [ ++echo $ECHO_N " $1 $ECHO_C" ++if test -n "$USE_$2" ++then echo " yes" ++else if test "$FORCE_$2" = "yes" ++ then echo " disabled" ++ else echo " not found" ++ fi ++fi]) ++ ++echo ++if test $LIBDIR=$OCAMLLIB ; then ++ echo "Default install dirs are : $LIBDIR/lablgtk2 and $LIBDIR/stublibs" ++ echo "Compile with $OCAMLC -I +lablgtk2" ++else ++ echo "Install dirs are : $LIBDIR/lablgtk2 and $LIBDIR/stublibs" ++ echo "Compile with $OCAMLC -I $LIBDIR/lablgtk2 and add $LIBDIR/stublibs either to OCAMLLIB/ld.conf or to CAML_LD_LIBRARY_PATH" ++fi ++ ++echo ; echo "LablGTK configuration:" ++echo " threads $THREADS_LIB" ++echo " native dynlink $HAS_NATIVE_DYNLINK" ++CONF_SUMMARY(GtkGLArea, GTKGL) ++CONF_SUMMARY(libglade, GLADE) ++CONF_SUMMARY(librsvg , RSVG) ++CONF_SUMMARY(libgnomecanvas, GNOMECANVAS) ++CONF_SUMMARY(libgnomeui, GNOMEUI) ++CONF_SUMMARY(libpanelapplet, PANEL) ++CONF_SUMMARY(gtkspell, GTKSPELL) ++CONF_SUMMARY(gtksourceview 1, GTKSOURCEVIEW) ++CONF_SUMMARY(gtksourceview 2, GTKSOURCEVIEW2) ++CONF_SUMMARY(quartz , GTKQUARTZ) ++echo ++echo $ECHO_N " debug $ECHO_C" ++if test -n "$DEBUG" ; then echo " yes" ; else echo " no" ; fi ++echo -e " C compiler $CC" +diff --git a/ocaml.m4 b/ocaml.m4 +new file mode 100644 +index 0000000..6431281 +--- /dev/null ++++ b/ocaml.m4 +@@ -0,0 +1,197 @@ ++dnl autoconf macros for OCaml ++dnl ++dnl Copyright © 2009 Richard W.M. Jones ++dnl Copyright © 2009 Stefano Zacchiroli ++dnl Copyright © 2000-2005 Olivier Andrieu ++dnl Copyright © 2000-2005 Jean-Christophe Filliâtre ++dnl Copyright © 2000-2005 Georges Mariano ++dnl ++dnl For documentation, please read the ocaml.m4 man page. ++ ++AC_DEFUN([AC_PROG_OCAML], ++[dnl ++ # checking for ocamlc ++ AC_CHECK_TOOLS([OCAMLC],[ocamlc.opt ocamlc],[no]) ++ ++ if test "$OCAMLC" != "no"; then ++ OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p'` ++ AC_MSG_RESULT([OCaml version is $OCAMLVERSION]) ++ # If OCAMLLIB is set, use it ++ if test "$OCAMLLIB" = ""; then ++ OCAMLLIB=`$OCAMLC -where 2>/dev/null || $OCAMLC -v|tail -1|cut -d ' ' -f 4` ++ else ++ AC_MSG_RESULT([OCAMLLIB previously set; preserving it.]) ++ fi ++ AC_MSG_RESULT([OCaml library path is $OCAMLLIB]) ++ ++ AC_SUBST([OCAMLVERSION]) ++ AC_SUBST([OCAMLLIB]) ++ ++ # checking for ocamlopt ++ AC_CHECK_TOOLS([OCAMLOPT],[ocamlopt.opt ocamlopt],[no]) ++ OCAMLBEST=byte ++ if test "$OCAMLOPT" = "no"; then ++ AC_MSG_WARN([Cannot find ocamlopt; bytecode compilation only.]) ++ else ++ TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' ` ++ if test "$TMPVERSION" != "$OCAMLVERSION" ; then ++ AC_MSG_RESULT([versions differs from $OCAMLC; $OCAMLOPT discarded.]) ++ OCAMLOPT=no ++ else ++ OCAMLBEST=opt ++ fi ++ fi ++ ++ AC_SUBST([OCAMLBEST]) ++ ++ AC_SUBST([OCAMLOPT]) ++ fi ++ ++ # checking for ocaml toplevel ++ AC_CHECK_PROG([OCAML],[ocaml],[ocaml],[no]) ++ ++ # checking for ocamldep ++ AC_CHECK_TOOL([OCAMLDEP],[ocamldep],[no]) ++ ++ # checking for ocamlmktop ++ AC_CHECK_TOOL([OCAMLMKTOP],[ocamlmktop],[no]) ++ ++ # checking for ocamlmklib ++ AC_CHECK_TOOL([OCAMLMKLIB],[ocamlmklib],[no]) ++ ++ # checking for ocamldoc ++ AC_CHECK_PROG([OCAMLDOC],[ocamldoc],[ocamldoc],[no]) ++ ++ # checking for ocamlbuild ++ AC_CHECK_TOOL([OCAMLBUILD],[ocamlbuild],[no]) ++]) ++ ++ ++AC_DEFUN([AC_PROG_OCAMLLEX], ++[dnl ++ # checking for ocamllex ++ AC_CHECK_PROGS([OCAMLLEX],[ocamllex.opt ocamllex],[no]) ++]) ++ ++AC_DEFUN([AC_PROG_OCAMLYACC], ++[dnl ++ AC_CHECK_PROG([OCAMLYACC],[ocamlyacc],[ocamlyacc],[no]) ++]) ++ ++ ++AC_DEFUN([AC_PROG_CAMLP4], ++[dnl ++ AC_REQUIRE([AC_PROG_OCAML])dnl ++ ++ # checking for camlp4 ++ AC_CHECK_PROG([CAMLP4],[camlp4],[camlp4],[no]) ++ if test "$CAMLP4" != "no"; then ++ TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'` ++ if test "$TMPVERSION" != "$OCAMLVERSION" ; then ++ AC_MSG_RESULT([versions differs from ocamlc]) ++ CAMLP4=no ++ fi ++ fi ++ AC_SUBST([CAMLP4]) ++ ++ # checking for companion tools ++ AC_CHECK_PROG([CAMLP4BOOT],[camlp4boot],[camlp4boot],[no]) ++ AC_CHECK_PROG([CAMLP4O],[camlp4o],[camlp4o],[no]) ++ AC_CHECK_PROG([CAMLP4OF],[camlp4of],[camlp4of],[no]) ++ AC_CHECK_PROG([CAMLP4OOF],[camlp4oof],[camlp4oof],[no]) ++ AC_CHECK_PROG([CAMLP4ORF],[camlp4orf],[camlp4orf],[no]) ++ AC_CHECK_PROG([CAMLP4PROF],[camlp4prof],[camlp4prof],[no]) ++ AC_CHECK_PROG([CAMLP4R],[camlp4r],[camlp4r],[no]) ++ AC_CHECK_PROG([CAMLP4RF],[camlp4rf],[camlp4rf],[no]) ++]) ++ ++ ++AC_DEFUN([AC_PROG_FINDLIB], ++[dnl ++ AC_REQUIRE([AC_PROG_OCAML])dnl ++ ++ # checking for ocamlfind ++ AC_CHECK_TOOL([OCAMLFIND],[ocamlfind],[no]) ++]) ++ ++ ++dnl Thanks to Jim Meyering for working this next bit out for us. ++dnl XXX We should define AS_TR_SH if it's not defined already ++dnl (eg. for old autoconf). ++AC_DEFUN([AC_CHECK_OCAML_PKG], ++[dnl ++ AC_REQUIRE([AC_PROG_FINDLIB])dnl ++ ++ AC_MSG_CHECKING([for OCaml findlib package $1]) ++ ++ unset found ++ unset pkg ++ found=no ++ for pkg in $1 $2 ; do ++ if $OCAMLFIND query $pkg >/dev/null 2>/dev/null; then ++ AC_MSG_RESULT([found]) ++ AS_TR_SH([OCAML_PKG_$1])=$pkg ++ found=yes ++ break ++ fi ++ done ++ if test "$found" = "no" ; then ++ AC_MSG_RESULT([not found]) ++ AS_TR_SH([OCAML_PKG_$1])=no ++ fi ++ ++ AC_SUBST(AS_TR_SH([OCAML_PKG_$1])) ++]) ++ ++ ++AC_DEFUN([AC_CHECK_OCAML_MODULE], ++[dnl ++ AC_MSG_CHECKING([for OCaml module $2]) ++ ++ cat > conftest.ml <<EOF ++open $3 ++EOF ++ unset found ++ for $1 in $$1 $4 ; do ++ if $OCAMLC -c -I "$$1" conftest.ml >&5 2>&5 ; then ++ found=yes ++ break ++ fi ++ done ++ ++ if test "$found" ; then ++ AC_MSG_RESULT([$$1]) ++ else ++ AC_MSG_RESULT([not found]) ++ $1=no ++ fi ++ AC_SUBST([$1]) ++]) ++ ++ ++dnl XXX Cross-compiling ++AC_DEFUN([AC_CHECK_OCAML_WORD_SIZE], ++[dnl ++ AC_REQUIRE([AC_PROG_OCAML])dnl ++ AC_MSG_CHECKING([for OCaml compiler word size]) ++ cat > conftest.ml <<EOF ++ print_endline (string_of_int Sys.word_size) ++ EOF ++ OCAML_WORD_SIZE=`$OCAML conftest.ml` ++ AC_MSG_RESULT([$OCAML_WORD_SIZE]) ++ AC_SUBST([OCAML_WORD_SIZE]) ++]) ++ ++AC_DEFUN([AC_CHECK_OCAML_OS_TYPE], ++[dnl ++ AC_REQUIRE([AC_PROG_OCAML])dnl ++ AC_MSG_CHECKING([OCaml Sys.os_type]) ++ ++ cat > conftest.ml <<EOF ++ print_string(Sys.os_type);; ++EOF ++ ++ OCAML_OS_TYPE=`$OCAML conftest.ml` ++ AC_MSG_RESULT([$OCAML_OS_TYPE]) ++ AC_SUBST([OCAML_OS_TYPE]) ++]) +-- +1.7.9.5 + + +From 412fb361bc02b4d1d4e5e3d3f6481595fcbf83b9 Mon Sep 17 00:00:00 2001 +From: MXE +Date: Thu, 13 Sep 2012 23:29:39 +0200 +Subject: [PATCH 2/6] install = findlib-uninstall + findlib-install to remove + error if 'make install' is called a second time + + +diff --git a/src/Makefile b/src/Makefile +index c498882..fda935e 100755 +--- a/src/Makefile ++++ b/src/Makefile +@@ -23,7 +23,7 @@ TARGETS = varcc$(XE) lablgtktop$(XE) lablgtk2$(XB) gdk_pixbuf_mlsource$(XE) \ + + all: byte + world: byte $(CAMLBEST) +-install: findlib-install ++install: findlib-uninstall findlib-install + uninstall: findlib-uninstall + + MLLIBS = lablgtk.cma +-- +1.7.9.5 + + +From c17556b4d42274c4190a6b29aa10eef730aa4e21 Mon Sep 17 00:00:00 2001 +From: MXE +Date: Thu, 13 Sep 2012 23:33:57 +0200 +Subject: [PATCH 3/6] allows install with 'make lablgtkopt' only + + +diff --git a/src/Makefile b/src/Makefile +index fda935e..54ae4b4 100755 +--- a/src/Makefile ++++ b/src/Makefile +@@ -391,42 +391,7 @@ old-uninstall: + # Install using ocamlfind + findlib-install: + mkdir -p "$(BINDIR)" +- ocamlfind install lablgtk2 ../META \ +- build.ml \ +- $(CLIBS) \ +- $(ALLOBJS:.cmo=.cmi) $(EXTRA_OBJS:.cmo=.cmi) \ +- *.mli \ +- $(ALLOBJS:.cmo=.ml) $(ALLTHOBJS:.cmo=.ml) $(EXTRA_OBJS:.cmo=.ml) \ +- $(EXTRA_MLLIBS) $(MLLIBS) $(INITOBJS) \ +- varcc$(XE) propcc$(XE) \ +- `if test $(THREADS_LIB) != no; \ +- then echo $(ALLTHOBJS) $(ALLTHOBJS:.cmo=.cmi) ; \ +- fi` \ +- `if test $(THREADS_LIB) = vm || test $(HAS_DLL_SUPPORT) != yes; \ +- then echo lablgtktop$(XE) ; \ +- fi` \ +- *.h \ +- `if test -f lablgtk.cmxa; \ +- then \ +- echo $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=$(XA)) \ +- $(EXTRA_MLLIBS:.cma=.cmxa) $(EXTRA_MLLIBS:.cma=$(XA)) ; \ +- if test "$(HAS_NATIVE_DYNLINK)" = "yes" ; \ +- then echo $(MLLIBS:.cma=.cmxs) $(EXTRA_MLLIBS:.cma=.cmxs) ; \ +- fi; \ +- echo $(ALLOBJS:.cmo=.cmx) $(EXTRA_OBJS:.cmo=.cmx) ; \ +- echo $(INITOBJS:.cmo=$(XO)) ; \ +- if test -f gtkThread.cmx; then \ +- echo $(THOBJS:.cmo=.cmx) $(THOBJS:.cmo=$(XO)) ; \ +- fi ; \ +- fi` \ +- `if test -f dlllablgtk2$(XS); \ +- then \ +- echo "-dll $(CLIBS:lib%$(XA)=dll%$(XS)) -nodll" ; \ +- fi` \ +- `if test -f dlllablgtk2$(XA); \ +- then \ +- echo $(CLIBS:lib%$(XA)=dll%$(XA)) ; \ +- fi` ++ ocamlfind install lablgtk2 ../META `find -type f` + $(RANLIB) $(CLIBS:%="`ocamlfind query lablgtk2 | tr -d '\r'`"/%) + @if test -f lablgtk.cmxa; \ + then ($(RANLIB) $(MLLIBS:%.cma="`ocamlfind query lablgtk2 | tr -d '\r'`"/%$(XA)) $(EXTRA_MLLIBS:%.cma="`ocamlfind query lablgtk2 | tr -d '\r'`"/%$(XA)) ); fi +@@ -436,7 +401,9 @@ findlib-install: + if test -f lablgladecc$(XE); then \ + cp lablgladecc$(XE) "$(BINDIR)/lablgladecc2$(XE)"; \ + fi +- cp gdk_pixbuf_mlsource$(XE) "$(BINDIR)" ++ if test -f gdk_pixbuf_mlsource$(XE); then \ ++ cp gdk_pixbuf_mlsource$(XE) "$(BINDIR)"; \ ++ fi + + findlib-uninstall: + ocamlfind remove lablgtk2 +-- +1.7.9.5 + + +From 19debade0cd5de6f3ea1d5771ecc627906e3c22f Mon Sep 17 00:00:00 2001 +From: MXE +Date: Thu, 13 Sep 2012 23:36:37 +0200 +Subject: [PATCH 4/6] add prefixed ocamlfind support + + +diff --git a/config.make.in b/config.make.in +index e689bda..0edb14a 100644 +--- a/config.make.in ++++ b/config.make.in +@@ -3,6 +3,7 @@ + datarootdir = @datarootdir@ + CAMLC=@CAMLC@ + CAMLOPT=@CAMLOPT@ ++OCAMLFIND=@OCAMLFIND@ + CAMLRUN=@OCAMLRUN@ + CAMLDEP=@OCAMLDEP@ + OCAMLDOC=@OCAMLDOC@ +diff --git a/src/Makefile b/src/Makefile +index 54ae4b4..aa09593 100755 +--- a/src/Makefile ++++ b/src/Makefile +@@ -391,12 +391,12 @@ old-uninstall: + # Install using ocamlfind + findlib-install: + mkdir -p "$(BINDIR)" +- ocamlfind install lablgtk2 ../META `find -type f` +- $(RANLIB) $(CLIBS:%="`ocamlfind query lablgtk2 | tr -d '\r'`"/%) ++ $(OCAMLFIND) install lablgtk2 ../META `find -type f` ++ $(RANLIB) $(CLIBS:%="`$(OCAMLFIND) query lablgtk2 | tr -d '\r'`"/%) + @if test -f lablgtk.cmxa; \ +- then ($(RANLIB) $(MLLIBS:%.cma="`ocamlfind query lablgtk2 | tr -d '\r'`"/%$(XA)) $(EXTRA_MLLIBS:%.cma="`ocamlfind query lablgtk2 | tr -d '\r'`"/%$(XA)) ); fi ++ then ($(RANLIB) $(MLLIBS:%.cma="`$(OCAMLFIND) query lablgtk2 | tr -d '\r'`"/%$(XA)) $(EXTRA_MLLIBS:%.cma="`$(OCAMLFIND) query lablgtk2 | tr -d '\r'`"/%$(XA)) ); fi + rm lablgtk2$(XB) +- $(MAKE) INSTALLDIR=`ocamlfind query lablgtk2 | tr -d '\r'` lablgtk2$(XB) ++ $(MAKE) INSTALLDIR=`$(OCAMLFIND) query lablgtk2 | tr -d '\r'` lablgtk2$(XB) + cp lablgtk2$(XB) "$(BINDIR)" + if test -f lablgladecc$(XE); then \ + cp lablgladecc$(XE) "$(BINDIR)/lablgladecc2$(XE)"; \ +@@ -406,7 +406,7 @@ findlib-install: + fi + + findlib-uninstall: +- ocamlfind remove lablgtk2 ++ $(OCAMLFIND) remove lablgtk2 + for f in lablgladecc2$(XE) lablgtk2$(XB) gdk_pixbuf_mlsource$(XE); \ + do rm -f "$(BINDIR)"/$$f; done + +-- +1.7.9.5 + + +From 8c5204c3b7db4449f66092f3bb58277bf3c4c777 Mon Sep 17 00:00:00 2001 +From: MXE +Date: Thu, 13 Sep 2012 23:39:01 +0200 +Subject: [PATCH 5/6] remove a command that is already called in uninstall, + and which fails if used as is + + +diff --git a/src/Makefile b/src/Makefile +index aa09593..e1f1c88 100755 +--- a/src/Makefile ++++ b/src/Makefile +@@ -395,7 +395,6 @@ findlib-install: + $(RANLIB) $(CLIBS:%="`$(OCAMLFIND) query lablgtk2 | tr -d '\r'`"/%) + @if test -f lablgtk.cmxa; \ + then ($(RANLIB) $(MLLIBS:%.cma="`$(OCAMLFIND) query lablgtk2 | tr -d '\r'`"/%$(XA)) $(EXTRA_MLLIBS:%.cma="`$(OCAMLFIND) query lablgtk2 | tr -d '\r'`"/%$(XA)) ); fi +- rm lablgtk2$(XB) + $(MAKE) INSTALLDIR=`$(OCAMLFIND) query lablgtk2 | tr -d '\r'` lablgtk2$(XB) + cp lablgtk2$(XB) "$(BINDIR)" + if test -f lablgladecc$(XE); then \ +-- +1.7.9.5 + + +From d7972344ade17f341ef658c6561943bc87f2fc00 Mon Sep 17 00:00:00 2001 +From: MXE +Date: Sun, 30 Sep 2012 17:44:48 +0200 +Subject: [PATCH 6/6] use prefixed ocamlp4 tools if available + + +diff --git a/configure.ac b/configure.ac +index 3b27786..205186a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -356,7 +356,7 @@ AC_SUBST(CAMLOPT,$OCAMLOPT) + dnl AC_SUBST(OCAMLDOC) + AC_SUBST(CAMLMKTOP,$OCAMLMKTOP) + AC_SUBST(CAMLMKLIB,$OCAMLMKLIB) +-dnl AC_SUBST(CAMLP4O) ++AC_SUBST(CAMLP4O) + AC_SUBST(LABLGLDIR) + AC_SUBST(HAVE_SVGZ) + AC_SUBST(USE_CC) +diff --git a/ocaml.m4 b/ocaml.m4 +index 6431281..8dd2101 100644 +--- a/ocaml.m4 ++++ b/ocaml.m4 +@@ -84,7 +84,7 @@ AC_DEFUN([AC_PROG_CAMLP4], + AC_REQUIRE([AC_PROG_OCAML])dnl + + # checking for camlp4 +- AC_CHECK_PROG([CAMLP4],[camlp4],[camlp4],[no]) ++ AC_CHECK_TOOL([CAMLP4],[camlp4],[no]) + if test "$CAMLP4" != "no"; then + TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'` + if test "$TMPVERSION" != "$OCAMLVERSION" ; then +@@ -95,14 +95,14 @@ AC_DEFUN([AC_PROG_CAMLP4], + AC_SUBST([CAMLP4]) + + # checking for companion tools +- AC_CHECK_PROG([CAMLP4BOOT],[camlp4boot],[camlp4boot],[no]) +- AC_CHECK_PROG([CAMLP4O],[camlp4o],[camlp4o],[no]) +- AC_CHECK_PROG([CAMLP4OF],[camlp4of],[camlp4of],[no]) +- AC_CHECK_PROG([CAMLP4OOF],[camlp4oof],[camlp4oof],[no]) +- AC_CHECK_PROG([CAMLP4ORF],[camlp4orf],[camlp4orf],[no]) +- AC_CHECK_PROG([CAMLP4PROF],[camlp4prof],[camlp4prof],[no]) +- AC_CHECK_PROG([CAMLP4R],[camlp4r],[camlp4r],[no]) +- AC_CHECK_PROG([CAMLP4RF],[camlp4rf],[camlp4rf],[no]) ++ AC_CHECK_TOOL([CAMLP4BOOT],[camlp4boot],[no]) ++ AC_CHECK_TOOL([CAMLP4O],[camlp4o],[no]) ++ AC_CHECK_TOOL([CAMLP4OF],[camlp4of],[no]) ++ AC_CHECK_TOOL([CAMLP4OOF],[camlp4oof],[no]) ++ AC_CHECK_TOOL([CAMLP4ORF],[camlp4orf],[no]) ++ AC_CHECK_TOOL([CAMLP4PROF],[camlp4prof],[no]) ++ AC_CHECK_TOOL([CAMLP4R],[camlp4r],[no]) ++ AC_CHECK_TOOL([CAMLP4RF],[camlp4rf],[no]) + ]) + + +-- +1.7.9.5 + diff --git a/src/ocaml-lablgtk2-test.ml b/src/ocaml-lablgtk2-test.ml new file mode 100644 index 0000000..7639ac8 --- /dev/null +++ b/src/ocaml-lablgtk2-test.ml @@ -0,0 +1,10 @@ +open GlGtk + +let destroy () = GMain.Main.quit () + +let _ = + let _ = GtkMain.Main.init () in + let window = GWindow.window () in + let _ = window#connect#destroy ~callback:destroy in + window#show (); + GMain.Main.main () diff --git a/src/ocaml-lablgtk2.mk b/src/ocaml-lablgtk2.mk new file mode 100644 index 0000000..9cc7785 --- /dev/null +++ b/src/ocaml-lablgtk2.mk @@ -0,0 +1,31 @@ +# This file is part of mingw-cross-env. +# See doc/index.html for further information. + +PKG := ocaml-lablgtk2 +$(PKG)_IGNORE := +$(PKG)_CHECKSUM := 3dec411a410fbb38d6e2e5a43a4ebfb2e407e7e6 +$(PKG)_SUBDIR := lablgtk-$($(PKG)_VERSION) +$(PKG)_FILE := lablgtk-$($(PKG)_VERSION).tar.gz +$(PKG)_URL := https://forge.ocamlcore.org/frs/download.php/979/$($(PKG)_FILE) +$(PKG)_DEPS := ocaml-findlib libglade gtkglarea ocaml-lablgl gtk2 + +define $(PKG)_UPDATE + wget -q -O- 'http://forge.ocamlcore.org/frs/?group_id=220' | \ + sed -n 's,.*lablgtk-\(2[^>]*\)\.tar.*,\1,ip' | \ + sort | \ + tail -1 +endef + +define $(PKG)_BUILD + cd '$(1)' && autoreconf -fi + cd '$(1)' && ./configure \ + --host $(TARGET) \ + --build "`config.guess`" \ + --prefix $(PREFIX)/$(TARGET) + $(MAKE) -C '$(1)/src' -j '$(JOBS)' lablgtkopt + $(MAKE) -C '$(1)/src' -j 1 install + + # test + cp '$(2).ml' '$(1)/test.ml' + cd '$(1)' && '$(TARGET)-ocamlfind' opt -package lablgtk2.gl -linkpkg test.ml +endef |