Skip to content

Instantly share code, notes, and snippets.

@ygrek
Created June 22, 2015 00:48
Show Gist options
  • Save ygrek/e08356b73269367632b2 to your computer and use it in GitHub Desktop.
Save ygrek/e08356b73269367632b2 to your computer and use it in GitHub Desktop.
diff --git a/Makefile.in b/Makefile.in
index 5a8eefd..370689a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -4,7 +4,7 @@
.PHONY: all targets examples install clean distclean depend release doc
-.SUFFIXES: .ml .mli .cmx .cmi .cmo .cmxa .cma .c .o
+.SUFFIXES: .ml .mli .cmx .cmi .cmo .cmxa .cma .c @EXT_OBJ@
INSTALLDIR = @INSTALLDIR@
INSTALL = @INSTALL@
@@ -16,18 +16,22 @@ OCAMLOPT = @OCAMLOPT@
OCAMLDEP = @OCAMLDEP@
OCAMLMKLIB = @OCAMLMKLIB@
+EXT_LIB = @EXT_LIB@
+EXT_OBJ = @EXT_OBJ@
+EXT_DLL = @EXT_DLL@
+
FLAGS = -g
LIBS =
CFLAGS = @CFLAGS@ @DEFS@ -Wall
-CURLHELPEROBJS = curl-helper.o
+CURLHELPEROBJS = curl-helper$(EXT_OBJ)
CURLOBJS = curl.cmx
CURLBCOBJS = $(CURLOBJS:.cmx=.cmo)
CLIBS = @CURLLIBS@
-TARGETS := curl.cma libcurl-helper.a dllcurl-helper.so
+TARGETS := curl.cma libcurl-helper$(EXT_LIB) dllcurl-helper$(EXT_DLL)
ifneq (@OCAML_PKG_lwt@,no)
TARGETS += curl_lwt.cmo
endif
@@ -38,9 +42,9 @@ TARGETS += curl_lwt.cmx
endif
endif
-INSTALL_TARGETS = curl.a curl.cmi curl.mli $(TARGETS)
+INSTALL_TARGETS = curl$(EXT_LIB) curl.cmi curl.mli $(TARGETS)
ifneq (@OCAML_PKG_lwt@,no)
-INSTALL_TARGETS += curl_lwt.cmi curl_lwt.mli curl_lwt.o
+INSTALL_TARGETS += curl_lwt.cmi curl_lwt.mli curl_lwt$(EXT_OBJ)
endif
all:
@@ -60,10 +64,10 @@ targets: $(TARGETS) examples
examples:
(cd examples; $(MAKE))
-curl.cma: $(CURLBCOBJS) dllcurl-helper.so
+curl.cma: $(CURLBCOBJS) dllcurl-helper$(EXT_DLL)
$(OCAMLMKLIB) -o curl $(CURLBCOBJS) -oc curl-helper $(CLIBS)
-curl.cmxa: $(CURLOBJS) dllcurl-helper.so
+curl.cmxa: $(CURLOBJS) dllcurl-helper$(EXT_DLL)
$(OCAMLMKLIB) -o curl $(CURLOBJS) -oc curl-helper $(CLIBS)
curl_lwt.cmo: curl_lwt.ml
@@ -84,10 +88,10 @@ curl_lwt.cmi: curl_lwt.mli
.ml.cmo:
$(OCAMLC) -c $(FLAGS) $< -o $@
-libcurl-helper.a dllcurl-helper.so: $(CURLHELPEROBJS)
+libcurl-helper$(EXT_LIB) dllcurl-helper$(EXT_DLL): $(CURLHELPEROBJS)
$(OCAMLMKLIB) -oc curl-helper $(CURLHELPEROBJS) $(CLIBS)
-.c.o:
+.c$(EXT_OBJ):
$(OCAMLC) -c -ccopt "$(CFLAGS)" $<
install:
@@ -100,14 +104,14 @@ ifeq (@OCAMLBEST@,opt)
$(INSTALLDATA) curl.cmxa $(INSTALLDIR)
endif
$(INSTALLDATA) curl.mli curl.cmi $(INSTALLDIR)
- $(INSTALLDATA) curl.a libcurl-helper.a $(INSTALLDIR)
+ $(INSTALLDATA) curl$(EXT_LIB) libcurl-helper$(EXT_LIB) $(INSTALLDIR)
endif
uninstall:
ifneq (@OCAMLFIND@,no)
$(FINDLIB) remove curl
else
- (cd $(INSTALLDIR) && rm -f curl.cma curl.cmxa curl.mli curl.cmi curl.a libcurl-helper.a)
+ (cd $(INSTALLDIR) && rm -f curl.cma curl.cmxa curl.mli curl.cmi curl$(EXT_LIB) libcurl-helper$(EXT_LIB))
rmdir $(INSTALLDIR)
endif
@@ -119,7 +123,7 @@ release:
gpg -a -b $(NAME).tar.gz
clean:
- @rm -f $(TARGETS) *~ *.cm* *.o *.a *.so .depend core
+ @rm -f $(TARGETS) *~ *.cm* *$(EXT_OBJ) *$(EXT_LIB) *$(EXT_DLL) .depend core
@(cd examples; $(MAKE) clean)
distclean: clean
diff --git a/configure.in b/configure.in
index 43b00a4..188d3f3 100644
--- a/configure.in
+++ b/configure.in
@@ -32,6 +32,25 @@ AC_SUBST(INSTALLDIR)
AC_SUBST(OCAMLFIND)
AC_SUBST(OCAML_PKG_lwt)
+AC_MSG_CHECKING([for ext_dll])
+EXT_DLL=`$OCAML print_ext.ml dll || $OCAMLC -config | fgrep ext_dll | sed -e "s/.*: //"`
+AS_IF([ test "$?" -eq 0 ],,[AC_MSG_ERROR([failed])] )
+AC_MSG_RESULT([$EXT_DLL])
+
+AC_MSG_CHECKING([for ext_lib])
+EXT_LIB=`$OCAML print_ext.ml lib || $OCAMLC -config | fgrep ext_lib | sed -e "s/.*: //"`
+AS_IF([ test "$?" -eq 0 ],,[AC_MSG_ERROR([failed])] )
+AC_MSG_RESULT([$EXT_LIB])
+
+AC_MSG_CHECKING([for ext_obj])
+EXT_OBJ=`$OCAML print_ext.ml obj || $OCAMLC -config | fgrep ext_obj | sed -e "s/.*: //"`
+AS_IF([ test "$?" -eq 0 ],,[AC_MSG_ERROR([failed])] )
+AC_MSG_RESULT([$EXT_OBJ])
+
+AC_SUBST(EXT_DLL)
+AC_SUBST(EXT_LIB)
+AC_SUBST(EXT_OBJ)
+
# set CFLAGS for tests below
CFLAGS="$CFLAGS $CURLCFLAGS"
diff --git a/print_ext.ml b/print_ext.ml
new file mode 100644
index 0000000..ad21dea
--- /dev/null
+++ b/print_ext.ml
@@ -0,0 +1,7 @@
+#use "topfind";;
+#require "compiler-libs.common";;
+match List.tl (Array.to_list Sys.argv) with
+| ["dll"] -> print_endline Config.ext_dll
+| ["obj"] -> print_endline Config.ext_obj
+| ["lib"] -> print_endline Config.ext_lib
+| _ -> prerr_endline "print_ext.ml: wrong usage"; exit 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment