kde-core-devel@kde.org
[Top] [All Lists]

Re: Strigi / CLuence on win32

Subject: Re: Strigi / CLuence on win32
From: "Jos van den Oever"
Date: Fri, 2 Mar 2007 21:33:04 +0100
2007/3/2, Ralf Habacker <ralf.habacker@xxxxxxxxxx>:
Jos van den Oever schrieb:
> 2007/3/2, Christian Ehrlicher <Ch.Ehrlicher@xxxxxx>:
>> Jos van den Oever schrieb:
>> > 2007/3/2, Christian Ehrlicher <Ch.Ehrlicher@xxxxxx>:
>> >> Stephan Kulow schrieb:
>> >> > Am Freitag, 2. MÃrz 2007 18:45 schrieb Christian Ehrlicher:
>> >> >> Ralf Habacker schrieb:
>> >> >>> Christian Ehrlicher schrieb:
>> >> >>>> Stromek schrieb:
>> >> >> <snip>
>> >> >>
>> >> >>>> I've commented the specific subdirs out -> svn up
>> >> >>>> Sad that they introduced a new win32-incompatible lib :(
>> >> >>> a similar problem is with strigi, which is only compilable static
>> >> >>> because of missing decoration and it requires additional
>> libraries
>> >> >>> (clusence), for which no prebuild binary packages are
>> available. :-(
>> >> >> As soon as it's mandatory for kdelibs, I'll fix the decoration
>> - no
>> >> >> matter what others say about :)
>> >> >>
>> >> >> Do we really need also CLucence? Is it, at least, compilable on
>> win32
>> >> > Clucene is the framwork strigi is implemented in. Strictly speaking
>> >> is strigi
>> >> > part of the workspace and might not be interesting for most KDE
>> apps
>> >> running
>> >> > on their own on windows.
>> >> >
>> >> > But it might be interesting in itself, but not necessary if it
>> makes
>> >> problems.
>> >> > Then we should rather concentrate on some way to compile KDE
>> without
>> >> it.
>> >> >
>> >> What do you want to hear? It just makes the whole process of
>> compiling
>> >> kdelibs more complicated than it's already on win32.
>> >>
>> >> CLuence is compilable on win32 with msvc, but only as static version
>> >> which is not acceptable due to various reasons.
>> >>
>> >> Strigi from current svn is not compilable (and it looks like it's
>> also
>> >> broken on linux). There seem to be some pieces of code which try to
>> >> handle win32 but it simply can't work. We need at least kdewin32
>> to get
>> >> some needed posix functions.
>> >> Strigi is also only compilable as static version ...
>> >>
>> >> -> so either the maintainers of those two libs are accepting a lot of
>> >> patches to get it work on win32 (in assumption that there are some
>> >> people who try to get it work on win32 - currently I don't see
>> someone)
>> >> and / or kdelibs/win32 must be compilable without strigi.
>> >>
>> >> Apart from this I don't know how the maintainers of strigi/CLuence
>> think
>> >> about this...
>> >>
>> >>
>> >> ---> moving this thread to k-c-d because we need a solution *before*
>> >> strigi becomes a requirement for kdelibs
>> >
>> > Thanks for bringing this to my attention, Christian. Strigi and
>> > CLucene should both be compilable on windows. I've not done this for
>> > quite a while. Ben van Klinken (clucene maintainer) develops CLucene
>> > mainly on a windows machine, so I'd be surprised if there are
>> > insurmountable problems.
>> >
>> I could compile it with msvc without any problems - but only as static
>> lib which is not a good idea :)
>> > Saying that, Strigi as it is will be used for the moment, does not yet
>> > require an index. Initially, the strigi libraries will be used to
>> > extract data and metadata. Once the KFilePlugin classes have been
>> > successfully ported to the Strigi analyzers, we will shift attention
>> > to searching and then CLucene will be required because it is at the
>> > moment clearly the best index. Also it has only a few depencies.
>> >
>> > I hope to finish most of KFileMetaInfo over the weekend and send it to
>> > the list for approval. This process is probably best done over the
>> > next week. Nevertheless, I'd like to add "find_package(Strigi
>> > REQUIRED)" to kdelibs/CMakeLists.txt this Monday, without actually
>> > adding any code that requires it. This way, the number of issues
>> > popping up at once would be smaller.
>> >
>> Please mask this with an NOT WIN32 because it's impossible to get strigi
>> working on win32 until then.
>
>> Do you know someone who is interested in the win32 port of strigi? We
>> can help, but I don't think we are able to port this lib too...
>
> Is it really that hard? Can you explain what the problems are? I dont
> see how the libs can be static when I define them as SHARED. You can
> leave out CLucene for now, which means the # of deps is really small.
>
The following error happens:

C:\Daten\kde4\strigi-build>mingw32-make
[  1%] Building CXX object
src/streams/CMakeFiles/decodebase64.dir/base64inputstream.obj
In file included from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32/bits/c++locale.h:43,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/iosfwd:46,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_algobase.h:70,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/char_traits.h:46,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/string:47,
                 from C:\Daten\kde4\strigi\src\streams\streambase.h:23,
                 from C:\Daten\kde4\strigi\src\streams\bufferedstream.h:23,
                 from
C:\Daten\kde4\strigi\src\streams\base64inputstream.h:23,
                 from
C:\Daten\kde4\strigi\src\streams\base64inputstream.cpp:21:
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/cstdio:167:
error: `::snprintf' has not been declared
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/cstdio:177:
error: `__gnu_cxx::snprintf' has not been declared
In file included from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/iosfwd:46,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_algobase.h:70,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/char_traits.h:46,
                 from
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/string:47,
                 from C:\Daten\kde4\strigi\src\streams\streambase.h:23,
                 from C:\Daten\kde4\strigi\src\streams\bufferedstream.h:23,
                 from
C:\Daten\kde4\strigi\src\streams\base64inputstream.h:23,
                 from
C:\Daten\kde4\strigi\src\streams\base64inputstream.cpp:21:
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32/bits/c++locale.h:
In function `int std::__convert_from_v(char*,
int, const char*, _Tv, int* const&, int)':
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32/bits/c++locale.h:72:
error: `snprintf' is not a member of `std'
mingw32-make[2]: ***
[src/streams/CMakeFiles/decodebase64.dir/base64inputstream.obj] Error 1
mingw32-make[1]: *** [src/streams/CMakeFiles/decodebase64.dir/all] Error 2
mingw32-make: *** [all] Error 2

Regards
 Ralf


Index: config.h.cmake
===================================================================
--- config.h.cmake      (revision 638486)
+++ config.h.cmake      (working copy)
@@ -3,3 +3,5 @@
 #define KDELIBSUFF "${KDELIBSUFF}"

 #define LIBINSTALLDIR "${LIBINSTALLDIR}"
+
+#cmakedefine HAVE_SSIZE_T
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt      (revision 638486)
+++ CMakeLists.txt      (working copy)
@@ -33,10 +33,16 @@
 set( KDELIBSUFF ${LIB_SUFFIX} )
 set( LIBINSTALLDIR ${LIB_DESTINATION})

+IF(MINGW)
+set (HAVE_SSIZE_T 1)
+ENDIF(MINGW)
+
 IF(MSVC)
     ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
 ELSE(MSVC)
-    add_definitions (-fPIC)
+    IF (NOT WIN32)
+      add_definitions (-fPIC)
+    ENDIF(NOT WIN32)
     set(CMAKE_CXX_FLAGS "-Wall -g3 -O0 -ansi")
 ENDIF(MSVC)

@@ -62,6 +68,9 @@
 SUBDIRS (src)
 ENABLE_TESTING()

+if (WIN32)
+    find_package(GNUWIN32 REQUIRED)
+endif(WIN32)
 find_package(ZLIB REQUIRED)
 find_package(BZip2 REQUIRED)
 find_package(Sha REQUIRED)
@@ -85,11 +94,22 @@
 endif (NOT QT4_FOUND)

 IF(ENABLE_DBUS)
-  include(UsePkgConfig)
-  PKGCONFIG(dbus-1 DBUS_INCLUDE_DIR DBUS_LIBRARY_DIR DBUS_LDFLAGS DBUS_CFLAGS)
-  if (NOT DBUS_INCLUDE_DIR)
-    MESSAGE(FATAL_ERROR "Could not find DBus")
-  endif (NOT DBUS_INCLUDE_DIR)
+  IF(WIN32)
+    file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _program_FILES_DIR)
+    find_path(DBUS_INCLUDE_DIR dbus/dbus.h
+        ${_program_FILES_DIR}/dbus/include ${CMAKE_INSTALL_PREFIX}/include
+    )
+    set(DBUS_LIBRARY_DIR ${_program_FILES_DIR}/dbus/lib)
+    find_library(DBUS_LIBRARYS NAMES dbus
+        PATHS ${DBUS_LIBRARY_DIR} ${CMAKE_INSTALL_PREFIX}/lib
+    )
+  ELSE(WIN32)
+    include(UsePkgConfig)
+    PKGCONFIG(dbus-1 DBUS_INCLUDE_DIR DBUS_LIBRARY_DIR DBUS_LDFLAGS 
DBUS_CFLAGS)
+    if (NOT DBUS_INCLUDE_DIR)
+      MESSAGE(FATAL_ERROR "Could not find DBus")
+    endif (NOT DBUS_INCLUDE_DIR)
+  ENDIF(WIN32)
 ENDIF(ENABLE_DBUS)

 if (ENABLE_LOG4CXX)


Ok applied.
<Prev in Thread] Current Thread [Next in Thread>