Jordi Gutiérrez Hermoso wrote > > On Fri, Sep 14, 2012 at 3:44 PM, Jordi Gutiérrez Hermoso wrote: > Nitzan, can you please publish the sources you've used to build MinGW? > It's a little worrisom that we're in effect distributing GPL-violating > MinGW binaries. >
Attached are the patches I have used for octaveforge packages in order to build them on mingw. Be aware that most of them are simply workarounds to overcome mingw environment failures to identify libs. I hope that I will be able to fix some of these on next mingw octave build. Nitzan ************************************************************************** ad-1.0.6 ************************************************************************** --- ad-1.0.6.tar.gz\ad-1.0.6\src\ov-grad.cc Sun Jun 07 13:44:44 2009 +++ ad-1.0.6_patched.tar.gz\ad-1.0.6\src\ov-grad.cc Sat Jan 28 09:11:17 2012 @@ -71,10 +71,12 @@ void octave_gradient::print (std::ostream& os, bool pr_as_read_syntax) const { - x ().print_with_name (os, "value", true); +//patched for ov.h in 0ctave-3.6.0 x ().print_with_name (os, "value", true); + x ().print_with_name (os, "value"); // print (partial) derivative(s), // following convention i-th row = nabla(x_i)T - jacobian ().print_with_name (os, "(partial) derivative(s)", true); +//patched for ov.h in 0ctave-3.6.0 jacobian ().print_with_name (os, "(partial) derivative(s)", true); + jacobian ().print_with_name (os, "(partial) derivative(s)"); } octave_value_list octave_gradient::dotref (const octave_value_list& idx) ************************************************************************** communications-1.1.1 ************************************************************************** --- communications-1.1.1.tar.gz\communications\src\Makefile Tue May 08 15:06:50 2012 +++ communications-1.1.1_patched.tar.gz\communications\src\Makefile Tue Jun 12 23:00:56 2012 @@ -1,6 +1,7 @@ sinclude Makeconf HDF5_LIBS := $(shell grep "\#define OCTAVE_CONF_HDF5_LIBS" $(shell $(MKOCTFILE) -p OCTINCLUDEDIR)/oct-conf.h | sed 's/^.*LIBS //;s/"//g' ) +MY_HDF5_LIBS = libhdf5 GALOISTARGET = gf.oct GALOISSOURCES = galois.cc galois-def.cc galoisfield.cc gf.cc \ @@ -25,7 +26,7 @@ @$(INSTALL) -d $(DESTDIR)$(MPATH)/comm $(GALOISTARGET) : $(GALOISOBJECTS) - $(MKOCTFILE) $(MOFLAGS) $(GALOISOBJECTS) -o $@ $(HDF5_LIBS) + $(MKOCTFILE) -l$(MY_HDF5_LIBS) $(MOFLAGS) $(GALOISOBJECTS) -o $@ $(HDF5_LIBS) $(GALOISOBJECTS): $(GALOISHEADERS) ************************************************************************** java-1.2.9 (thanks to Michael Goffioul for that patch) ************************************************************************** --- java-1.2.9.tar\java-1.2.9.tar\java\src\Makefile Sat Apr 28 20:52:02 2012 +++ java-1.2.9_patched.tar\java-1.2.9.tar\java\src\Makefile Sat Aug 04 09:43:41 2012 @@ -15,6 +15,7 @@ JAVA_CLASSES = $(patsubst %.java, %.class, $(JAVA_SOURCES)) JAVA_RSC = $(addprefix $(RSCDIR)/, $(IMAGES)) +HAVE_JAVA = yes ifeq ($(HAVE_JAVA),yes) all: $(PROGS) @if test -f" FILES"; then \ @@ -36,9 +37,9 @@ __java__.oct: __java__.cc __java__.h if [ "X$(JAVA_ARCH)X" = "XX" ]; then \ - $(MKOCTFILE) -DJAVAPKG_BUILD $(JAVA_INCS) -o $@ __java__.cc $(JAVA_LIBS); \ + $(MKOCTFILE) -Wl,--kill-at -DJAVAPKG_BUILD $(JAVA_INCS) -o $@ __java__.cc $(JAVA_LIBS); \ else \ - $(MKOCTFILE) -DJAVAPKG_BUILD -DJAVA_ARCH=\\\"$(JAVA_ARCH)\\\" -DJAVA_HOME=\\\"$(JAVA_HOME)\\\" $(JAVA_INCS) -o $@ __java__.cc $(JAVA_LIBS); \ + $(MKOCTFILE) -Wl,--kill-at -DJAVAPKG_BUILD -DJAVA_ARCH=\\\"$(JAVA_ARCH)\\\" -DJAVA_HOME=\\\"$(JAVA_HOME)\\\" $(JAVA_INCS) -o $@ __java__.cc $(JAVA_LIBS); \ fi octave.jar: $(JAVA_CLASSES) ************************************************************************** linear-algebra-2.2.0 ************************************************************************** --- linear-algebra-2.2.0.tar\linear-algebra-2.2.0.tar\linear-algebra\src\Makefile Tue Jan 10 21:00:16 2012 +++ linear-algebra-2.2.0_patched.tar\linear-algebra-2.2.0.tar\linear-algebra\src\Makefile Tue Jun 12 22:45:52 2012 @@ -4,7 +4,8 @@ MKOCTFILE = mkoctfile endif -LAPACK_LIBS := $(shell mkoctfile -p LAPACK_LIBS) +#LAPACK_LIBS := $(shell mkoctfile -p LAPACK_LIBS) +LAPACK_LIBS := -llapack DEFINES = -DHAVE_CONFIG_H -Wall GSVD_OBJECTS = gsvd.o dbleGSVD.o CmplxGSVD.o ************************************************************************** ocs-0.1.3 ************************************************************************** --- ocs-0.1.3_svn20120128.tar.gz\ocs\PKG_ADD Sat Aug 06 15:32:14 2011 +++ ocs-0.1.3_svn20120128_patched.tar.gz\ocs\PKG_ADD Sat Jan 28 18:24:23 2012 @@ -1,10 +1,12 @@ dirlist = {"utl", "asm", "tst", "nls", "prs", "sbn"}; -dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +% dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +dirname = fileparts (mfilename ("fullpath")); if (! exist (fullfile (dirname, "inst"), "dir")) ## Run this if the package is installed for ii=1:length (dirlist) - addpath ( [ dirname "/../" dirlist{ii}],"-end") +% addpath ( [ dirname "/../" dirlist{ii}],"-end") + addpath (fullfile(dirname,dirlist{ii}),"-end") endfor else ## Run this if we are testing the package without installation --- ocs-0.1.3_svn20120128.tar.gz\ocs\PKG_DEL Sat Aug 06 15:32:14 2011 +++ ocs-0.1.3_svn20120128_patched.tar.gz\ocs\PKG_DEL Sat Jan 28 18:02:54 2012 @@ -1,14 +1,18 @@ dirlist = {"utl", "asm", "tst", "nls", "prs", "sbn"}; -dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +% dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +[basename,dirname] = fileparts (canonicalize_file_name (mfilename ("fullpath"))); for ii=1:length (dirlist) if (! exist (fullfile (dirname, "inst"), "dir")) ## Run this if the package is installed - rmpath ( [ dirname "/../" dirlist{ii}]) - else +% rmpath ( [ dirname "/../" dirlist{ii}]) + rmpath ( fullfile(basename,dirlist{ii})) + else ## Run this if we are testing the package without installation - rmpath ([ dirname "/inst/" dirlist{ii}]) - rmpath ([ dirname "/src/"]) +% rmpath ([ dirname "/inst/" dirlist{ii}]) + rmpath ( fullfile(basename,"inst",dirlist{ii}) ) +% rmpath ([ dirname "/src/"]) +% rmpath (fullfile(basename,"src"])) end end ************************************************************************** optim-1.2.0 ************************************************************************** --- optim-1.2.0.tar.gz\optim-1.2.0\src\Makefile Tue Jun 12 16:42:55 2012 +++ optim-1.2.0_patched.tar.gz\optim-1.2.0\src\Makefile Sat Aug 04 11:27:03 2012 @@ -1,9 +1,11 @@ MKOCTFILE ?= mkoctfile ifndef LAPACK_LIBS -LAPACK_LIBS := $(shell $(MKOCTFILE) -p LAPACK_LIBS) +# LAPACK_LIBS := $(shell $(MKOCTFILE) -p LAPACK_LIBS) +LAPACK_LIBS := -lliblapack endif -OCTAVE_LAPACK_LIBS := $(shell $(MKOCTFILE) -p LAPACK_LIBS) +# OCTAVE_LAPACK_LIBS := $(shell $(MKOCTFILE) -p LAPACK_LIBS) +OCTAVE_LAPACK_LIBS := -lliblapack # reported necessary for Apple's VecLib framework by Carlo de Falco # <carlo.defa...@gmail.com> ifndef BLAS_LIBS ************************************************************************** optiminterp-0.3.4_svn20120128 ************************************************************************** added src/configure (taken from an older version) - proper setting of LAPACK_LIBS in the makefile or in mingw environment will solve the problem too ************************************************************************** sockets-1.0.8 ************************************************************************** --- sockets-1.0.8.tar.gz\sockets\src\Makefile Tue Jan 10 21:05:12 2012 +++ sockets-1.0.8_patched.tar.gz\sockets\src\Makefile Sat Aug 04 11:35:39 2012 @@ -14,7 +14,8 @@ all: $(OCT) %.oct: %.cc - mkoctfile $(VFLAGS) -s $< + mkoctfile -L/C/Octave/Octave3.6.0_gcc4.6.2/mingw32/lib $(VFLAGS) -s -lws2_32 $< +# mkoctfile $(VFLAGS) -s $< test: $(OCT) test_octave_sockets ************************************************************************** strings-1.1.0 ************************************************************************** --- strings-1.1.0.tar\strings-1.1.0.tar\strings\src\Makefile Fri Mar 16 21:30:38 2012 +++ strings-1.1.0_patched.tar\strings-1.1.0.tar\strings\src\Makefile Wed Jun 13 00:21:33 2012 @@ -3,7 +3,7 @@ all: pcregexp.oct %.oct: %.cc - $(MKOCTFILE) $< + $(MKOCTFILE) -lpcre $< clean: rm -f *.o octave-core core *.oct *~ ************************************************************************** video-1.0.2 ************************************************************************** note: src/AVHandler.cc has been taken from recent svn --- video-1.0.2.tar\video-1.0.2.tar\video-1.0.2\src\AVHandler.h Fri May 08 16:17:36 2009 +++ octaveforge\video-1.0.2_patched.tar\video-1.0.2.tar\video-1.0.2\src\AVHandler.h Tue Aug 23 14:55:34 2011 @@ -27,8 +27,11 @@ #define VIDEO_OUTBUF_SIZE 200000 +// FIXME: should define -D__STDC_CONSTANT_MACROS instead of the following #define INT64_C +#define UINT64_C #define __STDC_CONSTANT_MACROS + #include <errno.h> extern "C" { #if defined (HAVE_FFMPEG_AVFORMAT_H) --- video-1.0.2.tar\video-1.0.2.tar\video-1.0.2\DESCRIPTION Fri May 08 16:17:36 2009 +++ video-1.0.2_patched.tar\video-1.0.2.tar\video-1.0.2\DESCRIPTION Tue Aug 23 14:30:55 2011 @@ -7,6 +7,6 @@ Description: Implements addframe, avifile, aviinfo, and aviread, using ffmpeg. (and approximately conforms to Matlab interface) Depends: octave (>= 2.9.12) Autoload: yes -SystemRequirements: ffmpeg +SystemRequirements: >=ffmpeg-0.7 License: BSD Url: http://octave.sf.net --- video-1.0.2.tar\video-1.0.2.tar\video-1.0.2\src\AVHandler.cc Fri May 08 16:17:36 2009 +++ video-1.0.2_patched.tar\video-1.0.2.tar\video-1.0.2\src\AVHandler.cc Tue Aug 23 14:53:46 2011 @@ -64,7 +64,7 @@ if (av_output->pb->buf_ptr) { while (write_frame() > 0) {} av_write_trailer(av_output); - if (url_fclose( av_output->pb ) < 0) + if (avio_close( av_output->pb ) < 0) (*out) << "AVHandler: cannot close output file" << std::endl; } av_free(av_output); @@ -94,8 +94,8 @@ AVHandler::setup_write() { av_register_all(); - AVOutputFormat *avifmt; - for (avifmt = first_oformat; avifmt != NULL; avifmt = avifmt->next) { + AVOutputFormat *avifmt = NULL; + while (NULL != (avifmt = av_oformat_next(avifmt))) { if (std::string(avifmt->name) == "avi") { break; } @@ -106,7 +106,7 @@ return -1; } - av_output = av_alloc_format_context(); + av_output = avformat_alloc_context(); if (!av_output) { (*out) << "AVHandler: Memory error allocating format context" << std::endl; return -1; @@ -127,11 +127,11 @@ } snprintf(av_output->filename, sizeof(av_output->filename), "%s", filename.c_str()); - snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str()); - snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str()); - snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str()); + // FIXME: snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str()); + // FIXME: snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str()); + // FIXME: snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str()); - if (url_fopen(&av_output->pb, filename.c_str(), URL_WRONLY) < 0) { + if (avio_open(&av_output->pb, filename.c_str(), URL_WRONLY) < 0) { (*out) << "AVHandler: Could not open \"" << filename << "\" for output" << std::endl; return -1; } @@ -162,7 +162,7 @@ } for (int i=0; i < av_input->nb_streams; i++) { - if (av_input->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) { + if (av_input->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { vstream = av_input->streams[i]; break; } @@ -173,7 +173,7 @@ } for (int i=0; i < av_input->nb_streams; i++) { - if (av_input->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) { + if (av_input->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { astream = av_input->streams[i]; break; } @@ -204,9 +204,9 @@ width = vstream->codec->width; height = vstream->codec->height; - title = av_input->title; - author = av_input->author; - comment = av_input->comment; + // FIXME: title = av_input->title; + // FIXME: author = av_input->author; + // FIXME: comment = av_input->comment; rgbframe = create_frame(PIX_FMT_RGB24); if (!rgbframe) return -1; @@ -258,7 +258,7 @@ if (c->coded_frame) pkt.pts = c->coded_frame->pts; if (c->coded_frame && c->coded_frame->key_frame) - pkt.flags |= PKT_FLAG_KEY; + pkt.flags |= AV_PKT_FLAG_KEY; /// XXX FIXME XXX does this ensure that the first frame is always a key frame? if (av_write_frame(av_output, &pkt) != 0) { @@ -296,7 +296,9 @@ (*out) << "AVHandler: Error seeking to " << target_timestamp << std::endl; return -1; } - cc->hurry_up = 1; + + // http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/035933.html + // FIXME: deprecated: cc->hurry_up = 1; // Flush stream buffers after seek avcodec_flush_buffers(cc); @@ -324,14 +326,14 @@ return -1; } - if (url_feof(av_input->pb)) { + if (av_input->pb->eof_reached) { (*out) << "AVHandler: EOF reached" << std::endl; } } // Decode the packet into a frame int frameFinished; - if (avcodec_decode_video(cc, frame, &frameFinished, packet.data, packet.size) < 0) { + if (avcodec_decode_video2(cc, frame, &frameFinished, &packet) < 0) { (*out) << "AVHandler: Error decoding video stream" << std::endl; av_free_packet(&packet); av_free(frame); frame = NULL; @@ -342,7 +344,9 @@ current_timestamp = (uint64_t)(vstream->cur_dts * AV_TIME_BASE * (long double)stream_time_base); } } - cc->hurry_up = 0; + + // http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/035933.html + // FIXME: deprecated: cc->hurry_up = 0; SwsContext *sc = sws_getContext(cc->width, cc->height, cc->pix_fmt, cc->width, cc->height, PIX_FMT_BGR24, @@ -361,8 +365,8 @@ (*out) << "Supported file formats:" << std::endl; av_register_all(); - AVOutputFormat *ofmt; - for (ofmt = first_oformat; ofmt != NULL; ofmt = ofmt->next) { + AVOutputFormat *ofmt = NULL; + while (NULL != (ofmt = av_oformat_next(ofmt))) { (*out) << ofmt->name << " "; } (*out) << std::endl << std::endl; @@ -375,7 +379,7 @@ AVCodec *codec; for (codec = av_codec_next(0); codec != NULL; codec = av_codec_next(codec)) { - if ((codec->type == CODEC_TYPE_VIDEO) && + if ((codec->type == AVMEDIA_TYPE_VIDEO) && (codec->encode)) { (*out) << codec->name << " "; } @@ -395,7 +399,7 @@ cc = vstream->codec; - cc->codec_type = CODEC_TYPE_VIDEO; + cc->codec_type = AVMEDIA_TYPE_VIDEO; cc->bit_rate = bitrate; cc->width = width; ************************************************************************** vrml-1.0.13 ************************************************************************** --- vrml-1.0.13.tar.gz\vrml\inst\vrml_browse.m Mon Apr 16 12:01:20 2012 +++ vrml-1.0.13_patched.tar.gz\vrml\inst\vrml_browse.m Sat Aug 04 12:02:47 2012 @@ -96,8 +96,11 @@ b_opt = [out_option," ",bop," ",best_option, " ",geo_option] ; -b_temp = "/tmp/octave_vrml_output.wrl" ; -b_log = " &> /tmp/octave_vrml_browser.log"; +if ~exist('tmp','dir') + mkdir('tmp') +end +b_temp = "tmp/octave_vrml_output.wrl" ; +b_log = " &> tmp/octave_vrml_browser.log"; new_browser = 0 ; # #################################### --- vrml-1.0.13.tar.gz\vrml\inst\vrml_thick_surf.m Mon Apr 16 12:01:20 2012 +++ vrml-1.0.13_patched.tar.gz\vrml\inst\vrml_thick_surf.m Sat Aug 04 12:13:42 2012 @@ -50,18 +50,18 @@ tran = 0 ; col = [0.3, 0.4, 0.9] ; smooth = creaseAngle = nan ; -nargin = nargin(); +nargs = nargin(); -if (nargin <= 1) || ischar(y), # Cruft to allow not passing x and y +if (nargs <= 1) || ischar(y), # Cruft to allow not passing x and y zz = x ; [R,C] = size (zz); xx = ones(R,1)*[1:C] ; yy = [1:R]'*ones(1,C) ; - if nargin >=3, + if nargs >=3, s = vrml_surf ( xx, yy, zz, y, z, varargin{:} ); return - elseif nargin >=2, + elseif nargs >=2, s = vrml_surf ( xx, yy, zz, y, varargin{:} ); return @@ -73,12 +73,12 @@ filename = "vrml_thick_surf" ; verbose = 0 ; -if nargin > 3, +if nargs > 3, opt1 = " tran col creaseAngle " ; opt0 = " smooth " ; - nargin -= 3 ; + nargs -= 3 ; read_options_old ; end -- View this message in context: http://octave.1599824.n4.nabble.com/My-patches-for-octaveforge-pkgs-Mingw-build-tp4644174.html Sent from the Octave - Dev mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://ad.doubleclick.net/clk;258768047;13503038;j? http://info.appdynamics.com/FreeJavaPerformanceDownload.html _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev