Permalink
Browse files

Initial import

  • Loading branch information...
0 parents commit 363d1de292505881a998a10f3ccf14fe721092de @pjlegato committed Mar 14, 2010
Showing with 1,088 additions and 0 deletions.
  1. +9 −0 CurlWrite.java
  2. +8 −0 MANIFEST
  3. +75 −0 Makefile
  4. +262 −0 Makefile.netware
  5. +17 −0 README
  6. +109 −0 define2java.pl
  7. +218 −0 javacurl.c
  8. +321 −0 nwlib.c
  9. +69 −0 test.java
@@ -0,0 +1,9 @@
+public interface CurlWrite
+{
+ /**
+ * handleString gets called by libcurl on each chunk of data
+ * we receive from the remote server
+ */
+ public int handleString(byte s[]);
+}
+
@@ -0,0 +1,8 @@
+CurlGlue.java
+CurlWrite.java
+define2java.pl
+javacurl.c
+Makefile
+README
+test.java
+MANIFEST
@@ -0,0 +1,75 @@
+# Note: this makefile has been tested with MingW32 gcc
+# under Windows XP using Curl 7.17.1 and OpenSSL 0.9.8g
+
+ifndef LIBCURL_PATH
+LIBCURL_PATH = ../../mingw32/curl-7.17.1
+endif
+ifndef ZLIB_PATH
+ZLIB_PATH = ../../mingw32/zlib-1.2.3
+endif
+ifndef OPENSSL_PATH
+OPENSSL_PATH = ../../sdks/openssl_mingw32-0.9.8g
+endif
+
+TARGET = javacurl.dll
+OBJS = javacurl.o
+CC = gcc
+CFLAGS = -c
+PERL = perl
+
+# Note: with JDK1.3 you might have to replace "__int64" in jni_md.h by "signed long"
+# if you are encountering any compilation problem
+#CPPFLAGS = -ID:/jdk/include -ID:/jdk/include/win32 -I./include
+CPPFLAGS = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/win32
+CPPFLAGS += -I$(LIBCURL_PATH)/include
+
+# Note: the libraries used below are for libcurl with SSL. You will probably need to
+# rebuild OpenSSL under Cygwin and then rebuild libcurl with SSL support. Using
+# the default libcurl.a from the Curl distribution is likely to cause a failure
+# at link time
+#LDFLAGS = -v -shared -Wl,--add-stdcall-alias -L. -lcurl -lssl -lcrypto
+#LDFLAGS = -shared -Wl,--add-stdcall-alias -L$(LIBCURL_PATH)/lib -lcurl -lssl -lcrypto
+LDFLAGS = -shared -Wl,--add-stdcall-alias
+LDFLAGS += -L$(OPENSSL_PATH)/out
+LDFLAGS += -L$(LIBCURL_PATH)/lib
+LDFLAGS += -L$(ZLIB_PATH)
+LDFLAGS += -lwsock32 -lwinmm
+#LDFLAGS += -lcurl -lz
+LDFLAGS += -lcurldll -lzdll
+#LDFLAGS += -lssl -lcrypto
+LDFLAGS += -lssl32 -leay32
+
+all: $(TARGET) test.class
+
+
+# Note: CurlGlue needs to be able to load javacurl.dll from the current directory, or
+# wherever it is stored. Update java.library.path as needed
+test: test.class
+ java -Djava.library.path=./ -classpath ./ test
+
+javacurl.o: javacurl.c CurlGlue.h
+ $(CC) $(CPPFLAGS) $(CFLAGS) $<
+
+CurlGlue.h: CurlGlue.java CurlGlue.class
+ javah CurlGlue
+ touch CurlGlue.h
+
+test.class: test.java CurlGlue.class $(TARGET)
+ javac $<
+
+CurlGlue.class: CurlGlue.java
+ javac $<
+
+CurlGlue.java: $(LIBCURL_PATH)/include/curl/curl.h $(LIBCURL_PATH)/include/curl/curlver.h
+ $(PERL) define2java.pl $^ > $@
+
+$(TARGET): $(OBJS)
+ $(CC) -o $(TARGET) $(OBJS) $(LDFLAGS)
+
+clean:
+ $(RM) javacurl.dll javacurl.o CurlGlue.h CurlGlue.class CurlWrite.class
+
+testclean:
+ $(RM) test.class *.log
+
+
@@ -0,0 +1,262 @@
+###################################################################
+#
+## Makefile for building javacurl.nlm (NetWare version - gnu make)
+## Use: make -f Makefile.netware
+##
+## Comments to: Guenter Knauf <eflash@gmx.net>
+#
+###################################################################
+
+# Edit the path below to point to the base of your Novell NDK.
+ifndef NDKBASE
+NDKBASE = c:/novell
+endif
+
+# Edit the path below to point to the base of your Zlib sources.
+ifndef ZLIB_PATH
+#ZLIB_PATH = ../../zlib-1.2.3
+ZLIB_PATH = ../../cw/zlib-1.2.3
+endif
+
+# Edit the path below to point to the base of your OpenSSL package.
+ifndef OPENSSL_PATH
+OPENSSL_PATH = ../../sdks/openssl_nw-bsd-0.9.8g
+endif
+
+# Edit the path below to point to the base of your cURL source.
+LIBCURL_PATH = ../../gccnlm/curl-7.17.1
+
+# Edit the path below to point to the base of your NetWare Java SDK.
+JDK = ../../sdks/java-nw
+
+INSTDIR = testjavacurl
+
+TARGET = javacurl
+VERMAJ = 0
+VERMIN = 2
+VERREV = 0
+DESCR = $(TARGET) - Java binding to the cURL library
+COPYR = Copyright (c) 1996 - 2008, Daniel Stenberg, <daniel@haxx.se>
+#MTSAFE = NO
+MTSAFE = YES
+#SCREEN = $(TARGET)
+MODULES = libcurl
+
+# Edit the var below to point to your lib architecture.
+ifndef LIBARCH
+# LIBARCH = CLIB
+LIBARCH = LIBC
+endif
+
+# The following line defines your compiler.
+ifdef METROWERKS
+ CC = mwccnlm
+else
+ CC = gcc
+endif
+PERL = perl
+# RM = rm -f
+CP = cp -afv
+# if you want to mark the target as MTSAFE you will need a tool for
+# generating the xdc data for the linker; here's a minimal tool:
+# http://www.gknw.net/development/prgtools/mkxdc.zip
+MPKXDC = mkxdc
+
+# must be equal to DEBUG or NDEBUG
+DB = NDEBUG
+# DB = DEBUG
+# Optimization: -O<n> or debugging: -g
+OPT = -O2
+
+# Global flags for all compilers
+CFLAGS = $(OPT) -D$(DB) -DNETWARE -DN_PLAT_NLM -nostdinc
+
+ifeq ($(CC),mwccnlm)
+LD = mwldnlm
+LDFLAGS = -nostdlib $(PRELUDE) $(OBJS) -o $(TARGET).nlm -commandfile
+CFLAGS += -gccinc -inline off -opt nointrinsics -inst mmx -proc 586
+CFLAGS += -relax_pointers
+#CFLAGS += -w on -ansi strict
+#CFLAGS += -w on,nounused,nounusedexpr -ansi strict
+ifeq ($(LIBARCH),LIBC)
+ CFLAGS += -align 4
+ PRELUDE = $(SDK_LIBC)/imports/libcpre.o
+else
+ CFLAGS += -align 1
+ PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
+ CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
+endif
+else
+LD = nlmconv
+LDFLAGS = -T
+CFLAGS += -fno-builtin -fpack-struct -fpcc-struct-return
+CFLAGS += -Wall # -pedantic
+ifeq ($(LIBARCH),LIBC)
+ PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
+else
+ PRELUDE = $(NDK_ROOT)/pre/prelude.o
+ CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
+endif
+endif
+
+LDLIBS =
+
+ifeq ($(findstring linux,$(OSTYPE)),linux)
+DL = '
+include $(NDKBASE)/nlmconv/ncpfs.inc
+endif
+
+ifeq ($(MTSAFE),YES)
+ XDCOPT = -n
+endif
+ifeq ($(MTSAFE),NO)
+ XDCOPT = -u
+endif
+ifdef XDCOPT
+ XDCDATA = $(TARGET).xdc
+endif
+ifndef COPYR
+ COPYR = Copyright (c) 2008 GNU & The Open Source Community.
+endif
+ifndef DESCR
+ DESCR = $(TARGET) Command Extension - ($(LIBARCH)) - $(CC) build
+endif
+
+NDK_ROOT = $(NDKBASE)/ndk
+SDK_CLIB = $(NDK_ROOT)/nwsdk
+SDK_LIBC = $(NDK_ROOT)/libc
+ifeq ($(LIBARCH),LIBC)
+ INCLUDES = -I$(SDK_LIBC)/include
+ # INCLUDES += -I$(SDK_LIBC)/include/nks
+else
+ INCLUDES = -I$(SDK_CLIB)/include/nlm
+ # INCLUDES += -I$(SDK_CLIB)/include
+endif
+INCLUDES += -I$(JDK)/include -I$(JDK)/include/netware
+INCLUDES += -I$(LIBCURL_PATH)/include
+CFLAGS += $(INCLUDES)
+
+OBJS = $(TARGET).o nwlib.o
+
+# vpath %.c . $(LIBCURL_PATH)/lib
+
+#all: $(TARGET).nlm
+all: test.class
+
+dist: all
+ @-$(RM) -r $(LIBARCH)
+ @mkdir $(LIBARCH)
+ @mv $(TARGET).nlm $(LIBARCH)/.
+ -$(RM) *.o $(TARGET).map $(TARGET).ncv $(TARGET).def $(TARGET).xdc
+
+install: all
+ @[ -d $(INSTDIR) ] || mkdir $(INSTDIR)
+ @$(CP) $(TARGET).nlm $(INSTDIR)
+ @$(CP) *.class $(INSTDIR)
+ @$(CP) *.java $(INSTDIR)
+ @$(CP) *.ncf $(INSTDIR)
+ @$(CP) README $(INSTDIR)
+
+clean:
+ -$(RM) *.o $(TARGET).map $(TARGET).ncv $(TARGET).def $(TARGET).xdc
+ -$(RM) $(TARGET).imp $(TARGET).nlm
+ -$(RM) *.class CurlGlue.h
+ -$(RM) -r $(LIBARCH)
+
+CurlGlue.h: CurlGlue.class CurlGlue.java
+ javah CurlGlue
+ touch CurlGlue.h
+
+test.class: $(TARGET).nlm
+ javac test.java
+
+CurlGlue.class: CurlGlue.java
+ javac $<
+
+CurlGlue.java: $(LIBCURL_PATH)/include/curl/curl.h $(LIBCURL_PATH)/include/curl/curlver.h
+ $(PERL) define2java.pl $^ > $@
+
+$(TARGET).nlm: CurlGlue.h $(OBJS) $(TARGET).def $(TARGET).imp $(XDCDATA)
+ @-$(RM) $@
+ $(LD) $(LDFLAGS) $(TARGET).def
+
+%.xdc: Makefile.netware
+ $(MPKXDC) $(XDCOPT) $@
+
+%.def: Makefile.netware
+ @echo $(DL)# DEF Linker File for use with gcc and nlmconv$(DL) > $@
+ @echo $(DL)# or with Codewarrior command line compiler.$(DL) >> $@
+ @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
+ @echo $(DL)# All your changes will be lost!!$(DL) >> $@
+ @echo $(DL)#$(DL) >> $@
+ @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
+ @echo $(DL)description "$(DESCR)"$(DL) >> $@
+ @echo $(DL)version $(VERMAJ),$(VERMIN),$(VERREV)$(DL) >> $@
+ifdef NLMTYPE
+ @echo $(DL)type $(NLMTYPE)$(DL) >> $@
+else
+ @echo $(DL)type 0$(DL) >> $@
+endif
+ifdef STACK
+ @echo $(DL)stack $(STACK)$(DL) >> $@
+endif
+ @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
+ifdef SCREEN
+ @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
+else
+ @echo $(DL)screenname "DEFAULT"$(DL) >> $@
+endif
+ifeq ($(DB),DEBUG)
+ @echo $(DL)debug$(DL) >> $@
+endif
+ifdef XDCOPT
+ @echo $(DL)xdcdata $(TARGET).xdc$(DL) >> $@
+endif
+ifeq ($(LIBARCH),CLIB)
+ @echo $(DL)start _Prelude$(DL) >> $@
+ @echo $(DL)exit _Stop$(DL) >> $@
+ @echo $(DL)import @$(NDK_ROOT)/nwsdk/imports/clib.imp$(DL) >> $@
+ @echo $(DL)import @$(NDK_ROOT)/nwsdk/imports/threads.imp$(DL) >> $@
+ @echo $(DL)import @$(NDK_ROOT)/nwsdk/imports/nlmlib.imp$(DL) >> $@
+ @echo $(DL)module clib$(DL) >> $@
+else
+ @echo $(DL)flag_on 64$(DL) >> $@
+ @echo $(DL)pseudopreemption$(DL) >> $@
+ @echo $(DL)start _LibCPrelude$(DL) >> $@
+ @echo $(DL)exit _LibCPostlude$(DL) >> $@
+ @echo $(DL)check _LibCCheckUnload$(DL) >> $@
+ @echo $(DL)import @$(NDK_ROOT)/libc/imports/libc.imp$(DL) >> $@
+ @echo $(DL)import @$(NDK_ROOT)/libc/imports/netware.imp$(DL) >> $@
+ @echo $(DL)module libc$(DL) >> $@
+endif
+ifdef MODULES
+ @echo $(DL)module $(MODULES)$(DL) >> $@
+endif
+ @echo $(DL)import @$(LIBCURL_PATH)/lib/libcurl.imp$(DL) >> $@
+ @echo $(DL)export @$(TARGET).imp$(DL) >> $@
+ifeq ($(LD),nlmconv)
+ @echo $(DL)input $(OBJS)$(DL) >> $@
+ @echo $(DL)input $(PRELUDE)$(DL) >> $@
+ @echo $(DL)output $(TARGET).nlm$(DL) >> $@
+endif
+
+%.imp: Makefile.netware
+ @echo $(DL)# $@ - Exports from $(TARGET)$(DL) > $@
+ @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
+ @echo $(DL)# All your changes will be lost!!$(DL) >> $@
+ @echo $(DL)#$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_getinfo,$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_jni_1cleanup,$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_jni_1init,$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_jni_1perform,$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_jni_1setopt__III,$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_jni_1setopt__IILCurlWrite_2,$(DL) >> $@
+ @echo $(DL) Java_CurlGlue_jni_1setopt__IILjava_lang_String_2$(DL) >> $@
+
+%.ncf: Makefile.netware
+ @echo $(DL)# $@ - startfile for $(TARGET)$(DL) > $@
+ @echo $(DL)#$(DL) >> $@
+ @echo $(DL)java -autounload -ns -envCWD=sys:/$(INSTDIR) test$(DL) >> $@
+ @echo $(DL)#$(DL) >> $@
+
+
17 README
@@ -0,0 +1,17 @@
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+ Java Interface
+
+ This is not a complete implementation of a libcurl interface. I've made the
+core work and it needs additional code to be added to get the rest of the
+stuff supported.
+
+ The interface is not set yet, bring your suggestions!
+
+ Feel free to grab the source files in here and help out!
+
+ The 'test.java' is the actual program that uses the curl stuff.
Oops, something went wrong.

0 comments on commit 363d1de

Please sign in to comment.