# HG changeset patch # User William # Date 1349354889 -7200 # Node ID 72427f6418467ada3c4e7af3ff2ad656b6d6edff # Parent fe0a6e45513f74bf6595cf1190a7d511a07749a7 add package ocaml-flexdll diff -r fe0a6e45513f -r 72427f641846 index.html --- a/index.html Thu Oct 04 14:47:35 2012 +0200 +++ b/index.html Thu Oct 04 14:48:09 2012 +0200 @@ -1649,6 +1649,11 @@ ocaml + ocaml-flexdll + 0.30 + flexdll + + ogg 1.3.0 OGG diff -r fe0a6e45513f -r 72427f641846 src/ocaml-flexdll-1-fixes.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ocaml-flexdll-1-fixes.patch Thu Oct 04 14:48:09 2012 +0200 @@ -0,0 +1,57 @@ +This file is part of MXE. +See index.html for further information. + +Contains ad hoc patches for cross building. + +From 78c4c5447fb711713ac56774f0751485b25df4bd Mon Sep 17 00:00:00 2001 +From: MXE +Date: Sat, 23 Jun 2012 22:25:50 +0200 +Subject: [PATCH] modifications for cross-compilation + +part of this patch is taken from +http://code.google.com/p/flexdll/issues/detail?id=2 + +diff --git a/Makefile b/Makefile +index 81b2214..7a15574 100644 +--- a/Makefile ++++ b/Makefile +@@ -43,12 +43,12 @@ MSVCC64 = $(MSVCC_ROOT)/amd64/cl.exe /nologo /MD -D_CRT_SECURE_NO_DEPRECATE /GS- + CYGCC = gcc + OCAMLOPT = ocamlopt + #OCAMLOPT = FLEXLINKFLAGS=-real-manifest ocamlopt +-#LINKFLAGS = unix.cmxa ++LINKFLAGS = unix.cmxa + + #ifeq ($(SYSTEM), win64) + #LINKFLAGS= + #else +-LINKFLAGS = -ccopt "-link version_res.o" ++#LINKFLAGS = -ccopt "-link version_res.o" + #endif + + support: +@@ -62,7 +62,7 @@ build_mingw64: flexdll_mingw64.o flexdll_initer_mingw64.o + + OBJS = version.ml coff.ml cmdline.ml create_dll.ml reloc.ml + +-flexlink.exe: $(OBJS) version_res.o ++flexlink.exe: $(OBJS) + @echo Building flexlink.exe with TOOLCHAIN=$(TOOLCHAIN) + rm -f flexlink.exe + $(OCAMLOPT) -w -105 -o flexlink.exe $(LINKFLAGS) $(OBJS) +diff --git a/reloc.ml b/reloc.ml +index 1ac7e38..1187f39 100644 +--- a/reloc.ml ++++ b/reloc.ml +@@ -977,7 +977,7 @@ let setup_toolchain () = + !dirs @ + [ + Filename.dirname (get_output1 (!gcc ^ " -print-libgcc-file-name")); +- get_output1 (!gcc ^ " -print-sysroot") ^ "/mingw/lib"; ++ (*get_output1 (!gcc ^ " -print-sysroot") ^ "/mingw/lib";*) + ]; + default_libs := + ["-lmingw32"; "-lgcc"; "-lmoldname"; "-lmingwex"; "-lmsvcrt"; +-- +1.7.9.5 + diff -r fe0a6e45513f -r 72427f641846 src/ocaml-flexdll-test.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ocaml-flexdll-test.c Thu Oct 04 14:48:09 2012 +0200 @@ -0,0 +1,44 @@ +/***************************************************************** + FlexDLL + Alain Frisch + + Copyright 2007 Institut National de Recherche en Informatique et + en Automatique. + +******************************************************************/ + +/* An example (main program) */ + +#include +#include +#include "flexdll.h" + +typedef void torun(); + +void api(char *msg){ printf("API: %s\n", msg); } + +int main(int argc, char **argv) +{ + void *sym; + void *handle; + int i; + torun *torun; + + printf("INIT\n"); fflush(stdout); + flexdll_dump_exports(NULL); + printf("OK\n"); fflush(stdout); + for (i = 1; i < argc; i++) { + printf("** Loading %s\n", argv[i]); + handle = flexdll_dlopen(argv[i], FLEXDLL_RTLD_GLOBAL); + if (NULL == handle) { printf("error: %s\n", flexdll_dlerror()); exit(2); } + printf("** handle = %p\n", handle); + flexdll_dump_exports(handle); + flexdll_dump_relocations(handle); + + if (NULL == handle) { printf("error: %s\n", flexdll_dlerror()); exit(2); } + + torun = flexdll_dlsym(handle, "torun"); + if (torun) torun(); + } + exit(0); +} diff -r fe0a6e45513f -r 72427f641846 src/ocaml-flexdll.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ocaml-flexdll.mk Thu Oct 04 14:48:09 2012 +0200 @@ -0,0 +1,43 @@ +# This file is part of mingw-cross-env. +# See doc/index.html for further information. + +# zlib +PKG := ocaml-flexdll +$(PKG)_IGNORE := +$(PKG)_CHECKSUM := 585f066f890c7dca95be7541b4647128335f7df9 +$(PKG)_SUBDIR := flexdll +$(PKG)_FILE := flexdll-$($(PKG)_VERSION).tar.gz +$(PKG)_URL := http://alain.frisch.fr/flexdll/$($(PKG)_FILE) +$(PKG)_DEPS := gcc ocaml-native + +define $(PKG)_UPDATE + wget -q -O- 'http://alain.frisch.fr/flexdll/' | \ + $(SED) -n 's,.*flexdll-\([0-9][^>]*\)\.tar.gz.*,\1,ip' | \ + head -1 +endef + +define $(PKG)_BUILD + $(MAKE) -C '$(1)' -j '$(JOBS)' \ + CHAINS=mingw \ + MINGW_PREFIX=$(TARGET) \ + OCAMLOPT=$(PREFIX)/$(TARGET)/bin/ocaml-native/ocamlopt \ + all + mkdir -p '$(PREFIX)/$(TARGET)/lib/ocaml/flexdll' + cd '$(1)' && mv flexlink.exe flexlink + cd '$(1)' && strip --remove-section=.comment --remove-section=.note flexlink + cd '$(1)' && $(INSTALL) -m 0755 flexdll.h '$(PREFIX)/$(TARGET)/include' + cd '$(1)' && $(INSTALL) -m 0755 flexlink flexdll_mingw.o \ + flexdll_initer_mingw.o \ + '$(PREFIX)/$(TARGET)/lib/ocaml/flexdll' + # create flexdll scripts + cd '$(PREFIX)/bin' && ln -sf '$(PREFIX)/$(TARGET)/lib/ocaml/flexdll/flexlink' + (echo '#!/bin/sh'; \ + echo 'exec flexlink -I $(PREFIX)/$(TARGET)/lib -chain mingw -nocygpath "$$@"') \ + > '$(PREFIX)/bin/$(TARGET)-flexlink' + chmod 0755 '$(PREFIX)/bin/$(TARGET)-flexlink' + + echo "testing flexlink..." + $(MAKE) -C '$(1)/test' -j '$(JOBS)' dump.exe plug1.dll plug2.dll CC=$(TARGET)-gcc O=o FLEXLINK=$(TARGET)-flexlink + #works if wine is installed : + #cd '$(1)/test' && ./dump.exe plug1.dll plug2.dll +endef