blob: 89b77d0f25745ee37bba49a81195ef22f1b3f8f8 [file] [log] [blame]
diff -Naur vlfeat-0.9.20.orig/make/bin.mak vlfeat-0.9.20/make/bin.mak
--- vlfeat-0.9.20.orig/make/bin.mak 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/make/bin.mak 2017-11-07 18:40:36.454700600 +0800
@@ -44,6 +44,16 @@
BIN_LDFLAGS += -Wl,--rpath,\$$ORIGIN/
endif
+# MingW-32
+ifeq ($(ARCH),mingw32)
+BIN_LDFLAGS += -Wl,--rpath,\$$ORIGIN/
+endif
+
+# MingW-64
+ifeq ($(ARCH),mingw64)
+BIN_LDFLAGS += -Wl,--rpath,\$$ORIGIN/
+endif
+
# --------------------------------------------------------------------
# Build
# --------------------------------------------------------------------
diff -Naur vlfeat-0.9.20.orig/make/dll.mak vlfeat-0.9.20/make/dll.mak
--- vlfeat-0.9.20.orig/make/dll.mak 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/make/dll.mak 2017-11-07 18:40:36.469701500 +0800
@@ -76,6 +76,18 @@
DLL_LDFLAGS += -m64
endif
+# MingW-32
+ifeq ($(ARCH),mingw32)
+DLL_SUFFIX := dll
+DLL_LDFLAGS += -m32
+endif
+
+# MingW-64
+ifeq ($(ARCH),mingw64)
+DLL_SUFFIX := dll
+DLL_LDFLAGS += -m64
+endif
+
# --------------------------------------------------------------------
# Build
# --------------------------------------------------------------------
@@ -137,6 +149,13 @@
$(^) \
$(DLL_LDFLAGS) \
-o "$(@)"
+
+$(BINDIR)/lib$(DLL_NAME).dll : $(dll_obj)
+ $(call C,CC) -shared \
+ -Wl,--output-def,$(BINDIR)/lib$(DLL_NAME).def,--out-implib,$(BINDIR)/lib$(DLL_NAME).dll.a \
+ $(^) \
+ $(DLL_LDFLAGS) \
+ -o "$(@)"
dll-clean:
rm -f $(dll_dep) $(dll_obj)
diff -Naur vlfeat-0.9.20.orig/Makefile vlfeat-0.9.20/Makefile
--- vlfeat-0.9.20.orig/Makefile 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/Makefile 2017-11-07 18:43:26.283414300 +0800
@@ -92,6 +92,13 @@
SHELL = /bin/bash
+prefix = /usr/local
+vlfeatprefix = ${prefix}
+bindir = ${vlfeatprefix}/bin
+libdir = ${vlfeatprefix}/lib
+includedir = ${vlfeatprefix}/include
+
+
.PHONY : all
all:
@@ -100,6 +107,7 @@
# DISABLE_AVX=yes
# DISABLE_THREADS=yes
# DISABLE_OPENMP=yes
+DISABLE_MATLAB=yes
# --------------------------------------------------------------------
# Error Messages
@@ -121,7 +129,10 @@
# --------------------------------------------------------------------
# Auto-detect architecture
# --------------------------------------------------------------------
-
+MINGW32_NT-6.1_i386_ARCH := mingw32
+MINGW32_NT-6.1_x86_64_ARCH := mingw32
+MINGW64_NT-6.1_i386_ARCH := mingw64
+MINGW64_NT-6.1_x86_64_ARCH := mingw64
Darwin_PPC_ARCH := mac
Darwin_Power_Macintosh_ARCH := mac
Darwin_i386_ARCH := maci64
@@ -326,11 +335,30 @@
include make/dll.mak
include make/bin.mak
+ifeq "$(DISABLE_MATLAB)" "no"
include make/matlab.mak
+endif
include make/octave.mak
include make/doc.mak
include make/dist.mak
+install:
+ @rm -rf $(DESTDIR)$(vlfeatprefix)
+ @if [ ! -d $(DESTDIR)$(vlfeatprefix) ]; then mkdir -p $(DESTDIR)$(vlfeatprefix); fi
+ @if [ ! -d $(DESTDIR)$(bindir) ]; then mkdir -p $(DESTDIR)$(bindir); fi
+ @if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi
+ @if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi
+ @if [ ! -d $(DESTDIR)$(includedir)/vl ]; then mkdir -p $(DESTDIR)$(includedir)/vl; fi
+ cp vl/*.h $(DESTDIR)$(includedir)/vl
+ cp bin/$(ARCH)/libvl.dll $(DESTDIR)$(bindir)
+ cp bin/$(ARCH)/*.exe $(DESTDIR)$(bindir)
+ cp bin/$(ARCH)/*.a $(DESTDIR)$(libdir)
+
+uninstall:
+ @rm -rf $(DESTDIR)$(vlfeatprefix)
+
+
+
clean:
rm -f `find . -name '*~'`
rm -f `find . -name '.DS_Store'`
diff -Naur vlfeat-0.9.20.orig/src/mser.c vlfeat-0.9.20/src/mser.c
--- vlfeat-0.9.20.orig/src/mser.c 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/src/mser.c 2017-11-07 18:40:36.513704000 +0800
@@ -20,8 +20,12 @@
#include <vl/stringop.h>
#include <vl/pgm.h>
#include <vl/mser.h>
-#include <vl/getopt_long.h>
+#if defined(__MINGW64__) || defined(__MINGW32__)
+#include <getopt.h>
+#else
+#include <vl/getopt_long.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
diff -Naur vlfeat-0.9.20.orig/src/sift.c vlfeat-0.9.20/src/sift.c
--- vlfeat-0.9.20.orig/src/sift.c 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/src/sift.c 2017-11-07 18:40:36.534705200 +0800
@@ -20,7 +20,11 @@
#include <vl/stringop.h>
#include <vl/pgm.h>
#include <vl/sift.h>
+#if defined(__MINGW64__) || defined(__MINGW32__)
+#include <getopt.h>
+#else
#include <vl/getopt_long.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
diff -Naur vlfeat-0.9.20.orig/src/test_getopt_long.c vlfeat-0.9.20/src/test_getopt_long.c
--- vlfeat-0.9.20.orig/src/test_getopt_long.c 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/src/test_getopt_long.c 1970-01-01 08:00:00.000000000 +0800
@@ -1,85 +0,0 @@
-/*
-Copyright (C) 2007-12 Andrea Vedaldi and Brian Fulkerson.
-All rights reserved.
-
-This file is part of the VLFeat library and is made available under
-the terms of the BSD license (see the COPYING file).
-*/
-
-#include <stdio.h>
-#include <assert.h>
-
-#include <vl/getopt_long.h>
-
-int daggerset;
-
-/* options descriptor */
-static struct option longopts[] = {
- { "help", no_argument, 0, 'h' },
- { "buffy", no_argument, 0, 'b' },
- { "fluoride", required_argument, 0, 'f' },
- { "daggerset", no_argument, &daggerset, 1000 },
- { "daggerunset", no_argument, &daggerset, 1001 },
- { "spike", optional_argument, 0, 1002 },
- { NULL, 0, 0, 0 }
-};
-
-int
-main (int argc, char *argv[])
-{
- int ch ;
-
- printf("*** parsing options: start\n") ;
-
- while ((ch = getopt_long(argc, argv, "hbf:", longopts, 0)) != -1) {
-
- switch (ch) {
-
- case 'h':
- printf("test_getopt_long: test VLFeat implementation of this function.\n"
- " --help -h this message\n"
- " --buffy -b option with no arguments\n"
- " --fluoride -f option with required argument\n"
- " --daggerset auto option with no arguments\n"
- " --daggerrunset auto option with no argument\n"
- " --spike long option with optional argument\n") ;
- break;
-
- case 'b':
- printf("option `b' or `buffy'\n") ;
- break;
-
- case 'f':
- printf("option `f' or `flouride' with arg `%s'\n", optarg) ;
- break ;
-
- case 1002 :
- printf("option `spike' with arg `%s'\n", optarg) ;
- break ;
-
- case 0:
- printf("automatic longoption (daggerset=%d)\n", daggerset) ;
- break ;
-
- case '?' :
- printf("illegal option or missing argument\n") ;
- break ;
-
- case ':' :
- printf("illegal option\n") ;
- break ;
-
- default:
- abort() ;
- }
- }
-
- printf("*** parsing options: end\n");
- {
- int i ;
- for(i = optind ; i < argc ; ++i)
- printf("non-option: '%s'\n", argv[i]) ;
- }
-
- return 0 ;
-}
diff -Naur vlfeat-0.9.20.orig/vl/getopt_long.c vlfeat-0.9.20/vl/getopt_long.c
--- vlfeat-0.9.20.orig/vl/getopt_long.c 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/vl/getopt_long.c 1970-01-01 08:00:00.000000000 +0800
@@ -1,326 +0,0 @@
-/** @file getopt_long.c
- ** @brief getopt_long - Definition
- ** @author Andrea Vedaldi
- **/
-
-/*
-Copyright (C) 2007-12 Andrea Vedaldi and Brian Fulkerson.
-All rights reserved.
-
-This file is part of the VLFeat library and is made available under
-the terms of the BSD license (see the COPYING file).
-*/
-
-/**
-@file getopt_long.h
-@brief getopt_long
-@author Andrea Vedaldi
-
-This is a drop-in replacament of GNU getopt_long meant to be used
-on platforms that do not support such functionality.
-**/
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "generic.h"
-#include "getopt_long.h"
-
-int opterr = 1 ;
-int optind = 1 ;
-int optopt ;
-char * optarg ;
-int optreset ;
-
-#define BADCH '?'
-#define BADARG ':'
-#define EEND -1
-#define EMSG ""
-
-/** @brief Parse long options (BSD style)
- ** @param argc number of arguments.
- ** @param argv pointer to the vector of arguments.
- ** @param optstring list of abbreviated options
- ** @param longopts list of long options.
- ** @param longindex index of current option in @a longopts.
- ** @return the code of the next option.
- **
- ** This function extract long and short options from the argument
- ** list @a argv of @a argc entries.
- **
- ** A short options sequence is introduced by a single dash character
- ** @c -. Each short option is described by a single character in the
- ** string @a optstring, possibly followed by a @c : character to
- ** denote a (mandatory) argument of the short option. A short option
- ** with an argument cannot appear in the middle of a short option
- ** sequence, but only at the end.
- **
- ** A long option is introduced by a double dash @c --. Each long
- ** option is described by an instance of the ::option structure in
- ** the @a longopts table (the last entry must be filled with zeroes
- ** to denote the end).
- **
- ** Illegal options and missing arguments cause the function to skip
- ** the option and return '?'. If ::opterr is @c true (default), the
- ** function prints an error message to @a stderr. Finally, if @a
- ** optstring has a leading @c :, then error messages are suppressed
- ** and a missing argument causes @a : to be returned.
- **
- ** @remark The function is currently <em>not</em> thread safe.
- **/
-
-VL_EXPORT int
-getopt_long(int argc, char *const argv[],
- const char *optstring,
- const struct option * longopts,
- int *longindex)
-{
- static char *place = EMSG; /* option letter processing */
- static int optbegin = 0 ;
- static int optend = 0 ;
- char *oli; /* option letter list index */
- int has_colon = 0 ;
- int ret_val = 0 ;
-
- /*
- A semicolon at the beginning of optstring has a special meaning.
- If we find one, we annote and remove it.
- */
- has_colon = optstring && optstring[0] == ':' ;
- if (has_colon) ++ optstring ;
-
- /*
- Here we are either processing a short option sequence or
- we start processing a new option. This is indicated by optreset.
- */
-
- if (optreset || *place == '\0') {
-
- /* ---------------------------------------------------------------
- * Look for next short/long option
- * ------------------------------------------------------------ */
- optreset = 0 ;
-
- /* no more arguments ? */
- if (optind >= argc) {
- place = EMSG ;
- return -1 ;
- }
-
- /* next argument that may hold an option */
- optbegin = optind ;
-
- /* ---------------------------------------------------------------
- * Look for an option to parse
- * ------------------------------------------------------------ */
-
- parse_option_at_optbegin :
-
- /* place points to the candidate option */
- place = argv [optbegin] ;
-
- /* an option is introduced by '-' */
- if (place [0] != '-') {
- /* this argument is not an option: try next argument */
- ++ optbegin ;
- if (optbegin >= argc) {
- /* no more arguments to look for options */
- place = EMSG ;
- return -1 ;
- }
- goto parse_option_at_optbegin ;
- }
-
- /* consume leading `-' */
- ++ place ;
-
- /* assume the option is composed of one argument only */
- optend = optbegin + 1 ;
-
- /* assume no argument */
- optarg = 0 ;
-
- /* ---------------------------------------------------------------
- * option `--'
- * ------------------------------------------------------------ */
-
- /* this special option (void long option) ends the option processing */
- if (place[0] &&
- place[0] == '-' &&
- place[1] == '\0') {
-
- optind = optend ;
- place = EMSG ;
- ret_val = -1 ;
- goto done_option ;
- }
-
- /* ---------------------------------------------------------------
- * long option
- * ------------------------------------------------------------ */
-
- if (place[0] &&
- place[0] == '-' &&
- place[1] ) {
-
- size_t namelen ;
- int i ;
-
- /* consume second `-' */
- ++ place ;
-
- /* count characters before `=' */
- namelen = strcspn(place, "=") ;
-
- /* scan longopts for this option */
- for (i = 0 ; longopts[i].name != NULL ; ++ i) {
-
- if (strlen ( longopts[i].name) == namelen &&
- strncmp (place, longopts[i].name, namelen) == 0 ) {
-
- /* save back long option index */
- if (longindex) *longindex = i ;
-
- /* process long option argument */
- if (longopts[i].has_arg == required_argument ||
- longopts[i].has_arg == optional_argument) {
-
- /* --option=value style */
- if (place[namelen] == '=') {
- optarg = place + namelen + 1 ;
- }
-
- /* --option value style (only required_argument) */
- else if (longopts[i].has_arg == required_argument) {
- /* missing argument ? */
- if (optbegin >= argc - 1) {
- if (! has_colon && opterr)
- fprintf(stderr,
- "%s: option requires an argument -- %s\n",
- argv[0], place);
- place = EMSG ;
- ret_val = has_colon ? BADARG : BADCH ;
- goto done_option ;
- }
- optarg = argv [optend] ;
- ++ optend ;
- }
- }
-
- /* determine return value */
- if (longopts[i].flag == NULL) {
- ret_val = longopts[i].val ;
- }
- else {
- *longopts[i].flag = longopts[i].val;
- ret_val = 0 ;
- }
-
- /* mark sequence closed */
- place = EMSG ;
- goto done_option ;
- } /* if match */
-
- } /* scan longoptions */
-
- /* no matching option found */
- if (! has_colon && opterr)
- fprintf(stderr,
- "%s: illegal option -- %s\n", argv[0], place) ;
- place = EMSG ;
- ret_val = BADCH ;
- goto done_option ;
- }
- } /* end new option */
-
- /* -----------------------------------------------------------------
- * Finish short option sequence
- * -------------------------------------------------------------- */
- optopt = (int) *place++ ;
-
- /* search charcater in option list */
- oli = strchr(optstring, optopt);
-
- /* short option not found */
- if (!oli) {
-
- if (! has_colon && opterr)
- fprintf(stderr,
- "%s: illegal option -- %c\n",
- argv[0], optopt);
-
- if (*place) {
- /* more short options in the list */
- return BADCH ;
- }
-
- else {
- /* error occured as last option in the list */
- place = EMSG ;
- ret_val = BADCH ;
- goto done_option ;
- }
- } /* end short option not found */
-
- if (oli[1] != ':') {
- /* short option with no argument */
-
- if (*place) {
- /* more short options in the list */
- return optopt ;
- }
- else {
- /* last option in the list */
- place = EMSG ;
- ret_val = optopt ;
- goto done_option ;
- }
-
- } else {
- /* short option with argument */
-
- /* -ovalue style */
- if (*place) {
- optarg = place ;
- place = EMSG ;
- ret_val = optopt ;
- goto done_option ;
- }
- /* -o value style: missing argument */
- else if (optbegin >= argc - 1) {
- if (! has_colon && opterr)
- fprintf(stderr,
- "%s: option requires an argument -- %c\n",
- argv[0], optopt);
- place = EMSG ;
- ret_val = has_colon ? BADARG : BADCH ;
- goto done_option ;
- }
-
- /* -o value style: process argument */
- optarg = argv [optend] ;
- ++ optend ;
- place = EMSG ;
- ret_val = optopt ;
- goto done_option ;
- } /* short with argument */
-
- done_option :
- {
- int pos = optend - optbegin ; /* n of circular shifts */
- int c = pos ;
-
- while (c --) {
- int i ;
- char *tmp = argv [optend - 1] ;
- for (i = optend - 1 ; i > optind ; -- i) {
- ((char**)argv) [i] = argv [i-1] ;
- }
- ((char**)argv) [optind] = tmp ;
- }
- optind += pos ;
- }
-
- return ret_val ;
-}
diff -Naur vlfeat-0.9.20.orig/vl/getopt_long.h vlfeat-0.9.20/vl/getopt_long.h
--- vlfeat-0.9.20.orig/vl/getopt_long.h 2015-01-16 02:30:34.000000000 +0800
+++ vlfeat-0.9.20/vl/getopt_long.h 1970-01-01 08:00:00.000000000 +0800
@@ -1,43 +0,0 @@
-/** @file getopt_long.h
- ** @brief getopt_long
- ** @author Andrea Vedaldi
- **/
-
-/*
-Copyright (C) 2007-12 Andrea Vedaldi and Brian Fulkerson.
-All rights reserved.
-
-This file is part of the VLFeat library and is made available under
-the terms of the BSD license (see the COPYING file).
-*/
-
-#ifndef VL_GETOPT_LONG_H
-#define VL_GETOPT_LONG_H
-
-#include "generic.h"
-
-VL_EXPORT int opterr ; /**< code of the last error occured while parsing an option */
-VL_EXPORT int optind ; /**< index of the next option to process in @c argv */
-VL_EXPORT int optopt ; /**< current option */
-VL_EXPORT char * optarg ; /**< argument of the current option */
-VL_EXPORT int optreset ; /**< reset flag */
-
-/** @brief ::getopt_long option */
-struct option
-{
- const char *name ; /**< option long name */
- int has_arg ; /**< flag indicating whether the option has no, required or optional argument */
- int *flag ; /**< pointer to a variable to set (if @c NULL, the value is returned instead) */
- int val ; /**< value to set or to return */
-} ;
-
-#define no_argument 0 /**< ::option with no argument */
-#define required_argument 1 /**< ::option with required argument */
-#define optional_argument 2 /**< ::option with optional argument */
-
-VL_EXPORT int getopt_long(int argc, char * const argv[],
- const char * optstring,
- const struct option * longopts, int * longindex);
-
-/* VL_GETOPT_LONG_H */
-#endif