That crazy cmake line certain did work to configure a cross-compile.
Someone needs to write that one down somewhere.
So, I've included <wchar.h> in filemgr.cpp and this seems to resolve
this for mingw. I get a bunch of .EXEs in utilities, so I think it worked.
I'll commit, and then go back and be sure I haven't broken the build on
BCB. I trust Microsoft VC++ has wchar.h available so it shouldn't break
with the new change.
And now I think we have 3 Microsoft compilers building (I hesitate to
say "working" until we get confirmation that app using pristine SWORD
can indeed work in paths above UTF-8 single byte on Windows.
Thanks for your help Greg and Tobias. It was great to have support
through this long dreaded task.
Happy Monday!
Troy
On 7/27/20 7:57 AM, Greg Hellings wrote:
If you're missing dependencies you should be able to do, "dnf builddep
mingw-sword".
--Greg
On Mon, Jul 27, 2020 at 1:33 AM Greg Hellings <greg.helli...@gmail.com
<mailto:greg.helli...@gmail.com>> wrote:
On Sun, Jul 26, 2020 at 4:56 PM Tobias Klein <cont...@tklein.info
<mailto:cont...@tklein.info>> wrote:
Hi Troy,
The latest version builds successfully.
I created a new intermediate release of sword-build-win32 for
further testing on Windows:
It's still failing for me trying to do a cross-compile with MinGW:
[ 6%] Building CXX object
CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
/usr/bin/i686-w64-mingw32-g++ -DCLUCENE2 -DCURLAVAILABLE
-DCURLSFTPAVAILABLE -DEXCLUDEBZIP2 -DEXCLUDEXZ
-DGLOBCONFPATH=\"/usr/i686-w64-mingw32/sys-root/mingw/etc/sword.conf\"
-DUSEICUREGEX -DUSELUCENE -DU_USING_ICU_NAMESPACE
-D_FTPLIB_NO_COMPAT -D_ICU_ -Dsword_EXPORTS
@CMakeFiles/sword.dir/includes_CXX.rsp -D_ICUSWORD_ -g3 -Wall -O0
-D_ICUSWORD_ -o CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj -c
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static
member function 'static int sword::FileMgr::createParent(const
char*)':
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:439:5:
error: '_wmkdir' was not declared in this scope; did you mean 'mkdir'?
439 | _wmkdir((const wchar_t *)utf8ToWChar(buf).getRawData());
| ^~~~~~~
| mkdir
make[2]: *** [CMakeFiles/sword.dir/build.make:282:
CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj] Error 1
make[2]: Leaving directory
'/builddir/build/BUILD/sword-1.8.900/build_win32'
make[1]: Leaving directory
'/builddir/build/BUILD/sword-1.8.900/build_win32'
make[1]: *** [CMakeFiles/Makefile2:277: CMakeFiles/sword.dir/all]
Error 2
make: *** [Makefile:152: all] Error 2
make: Leaving directory
'/builddir/build/BUILD/sword-1.8.900/build_win32'
Commands to do the build, from Fedora 32, include this lovely
invocation of CMake from within a subfolder of the source
(build_win32 for the above):
/usr/bin/cmake
-DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw32.cmake
-DBUILD_SHARED_LIBS:BOOL=ON
-DSYSCONF_INSTALL_DIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/etc
-DSHARE_INSTALL_PREFIX:PATH=/usr/i686-w64-mingw32/sys-root/mingw/share
-DCMAKE_INSTALL_PREFIX:PATH=/usr/i686-w64-mingw32/sys-root/mingw
-DCMAKE_INSTALL_LIBDIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/lib
-DICU_CONFIG_BIN_PATH=/usr/i686-w64-mingw32/sys-root/mingw/bin
-DINCLUDE_INSTALL_DIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/include
-DCMAKE_VERBOSE_MAKEFILE=ON -DLIBSWORD_LIBRARY_TYPE=Shared
-DSWORD_BUILD_EXAMPLES=Yes -DCMAKE_BUILD_TYPE=Debug
-DICU_CONFIG_OPTS=--noverify -DCROSS_COMPILE_MINGW32=TRUE ..
Followed by
make
--Greg
https://github.com/tobias-klein/sword-build-win32/releases/tag/v1.8.900-2020-07-26
Best regards,
Tobias
On 7/26/20 8:37 PM, Troy A. Griffitts wrote:
Thanks Tobias,
I've made these updates and should have fixed the error in
filemgr.cpp on line 410. I appreciate the feedback. Please
update and try this out and let me know. Thanks for testing
your compiler.
Troy
On 7/26/20 8:25 PM, Tobias Klein wrote:
To address the errors below I had to add the include for
<windows.h> both in *src/mgr/filemgr.cpp* and in
*src/modules/commons/zipmgr.cpp*.
After that I'm getting the next error:
1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410):
error C2664: 'BOOL
FindNextFileA(HANDLE,LPWIN32_FIND_DATAA)': cannot convert
argument 2 from 'WIN32_FIND_DATAW *' to 'LPWIN32_FIND_DATAA'
1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410):
note: Types pointed to are unrelated; conversion requires
reinterpret_cast, C-style cast or function-style cast
Best regards,
Tobias
On 7/26/20 4:44 PM, Troy A. Griffitts wrote:
Can one of you guys try simply including <windows.h> at the
top of filemgr.cpp and see if this fixes it for you?
On 7/26/20 4:01 PM, Tobias Klein wrote:
I'm getting similar error messages with Visual Studio
2019. Note that I'm also generating the make files via CMake.
First couple of error messages:
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,2):
error C2065: 'WIN32_FIND_DATAW': undeclared identifier
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19):
error C2146: syntax error: missing ';' before identifier
'fileData'
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19):
error C2065: 'fileData': undeclared identifier
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,2):
error C2065: 'HANDLE': undeclared identifier
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9):
error C2146: syntax error: missing ';' before identifier
'findIterator'
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9):
error C2065: 'findIterator': undeclared identifier
2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,51):
error C2065: 'fileData': undeclared identifier
Best regards,
Tobias
On 7/26/20 3:00 PM, Greg Hellings wrote:
On Sun, Jul 26, 2020 at 6:42 AM Troy A. Griffitts
<scr...@crosswire.org <mailto:scr...@crosswire.org>> wrote:
I've just committed the last bit for fixing the WIN32
Unicode issues. If anyone can try compiling and
running Xiphos without the Xiphos patch or any other
projects for Windows, and let me know if things work
for them in folders which include Unicode character,
I would appreciate it. I've tested BibleCS and it
now works with a SWORD_PATH defined to /books/χαρις.
I've tested using and installing modules in this
configuration and believe all the bugs are squashed,
but I would love confirmation from other projects.
Thanks for any feedback,
Troy
During cross-compile I'm getting the following errors:
[ 6%] Building CXX object
CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
/usr/bin/i686-w64-mingw32-g++ -DCLUCENE2 -DCURLAVAILABLE
-DCURLSFTPAVAILABLE -DEXCLUDEBZIP2 -DEXCLUDEXZ
-DGLOBCONFPATH=\"/usr/i686-w64-mingw32/sys-root/mingw/etc/sword.conf\"
-DUSEICUREGEX -DUSELUCENE -DU_USING_ICU_NAMESPACE
-D_FTPLIB_NO_COMPAT -D_ICU_ -Dsword_EXPORTS
@CMakeFiles/sword.dir/includes_CXX.rsp -D_ICUSWORD_ -g3
-Wall -O0 -D_ICUSWORD_ -o
CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj -c
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:
In static member function 'static
std::vector<sword::DirEntry>
sword::FileMgr::getDirList(const char*, bool, bool)':
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:395:2:
error: 'WIN32_FIND_DATAW' was not declared in this scope
395 | WIN32_FIND_DATAW fileData;
| ^~~~~~~~~~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:398:2:
error: 'HANDLE' was not declared in this scope
398 | HANDLE findIterator = FindFirstFileW(wcharPath,
&fileData);
| ^~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:6:
error: 'findIterator' was not declared in this scope
399 | if (findIterator != INVALID_HANDLE_VALUE) {
| ^~~~~~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:22:
error: 'INVALID_HANDLE_VALUE' was not declared in this scope
399 | if (findIterator != INVALID_HANDLE_VALUE) {
| ^~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:401:35:
error: 'fileData' was not declared in this scope
401 | SWBuf dirEntName =
wcharToUTF8(fileData.cFileName);
| ^~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:405:49:
error: 'FILE_ATTRIBUTE_DIRECTORY' was not declared in
this scope
405 | i.isDirectory = fileData.dwFileAttributes &
FILE_ATTRIBUTE_DIRECTORY;
| ^~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:40:
error: 'fileData' was not declared in this scope
409 | } while (FindNextFile(findIterator, &fileData)
!= 0);
| ^~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:12:
error: 'FindNextFile' was not declared in this scope
409 | } while (FindNextFile(findIterator, &fileData)
!= 0);
| ^~~~~~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:410:3:
error: 'FindClose' was not declared in this scope; did
you mean '_findclose'?
410 | FindClose(findIterator);
| ^~~~~~~~~
| _findclose
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:397:17:
warning: unused variable 'wcharPath' [-Wunused-variable]
397 | const wchar_t *wcharPath = (const wchar_t
*)wcharBuf.getRawData();
| ^~~~~~~~~
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:
In static member function 'static int
sword::FileMgr::createParent(const char*)':
/builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:436:5:
error: '_wmkdir' was not declared in this scope; did you
mean 'mkdir'?
436 | _wmkdir((const wchar_t
*)utf8ToWChar(buf).getRawData());
| ^~~~~~~
| mkdir
make[2]: *** [CMakeFiles/sword.dir/build.make:283:
CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj] Error 1
I'm assuming there's a new package or macro I need to
define? On my system the WIN32_FIND_DATAW struct is
defined in both minwinbase.h and shtypes.h. I'm building
with MinGW which might have a different header structure
than your compilers, if you're using Borland?
--Greg
On 7/20/20 7:18 PM, Greg Hellings wrote:
Sorry for the previous blank email - user error when
I tried to reply:
On Sun, Jul 19, 2020 at 2:40 PM Tobias Klein
<cont...@tklein.info <mailto:cont...@tklein.info>>
wrote:
Thanks for giving me the background on this,
Karl! I appreciate it!
Is Xiphos the only frontend that has been
patching Sword for this purpose? Then I suppose
all other frontends suffer from this issue, huh?
When I first encountered this patch in Xiphos I
tested with BibleTime and The Sword Project for
Windows and both of them do crash under these
circumstances.
Yes, other toolkits such as Qt do have wrappers for
this shortcoming already, but none of the other
front ends I've worked with have bothered to put in
the effort to produce a patched version of Sword to
fix the crash.
--Greg
_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at
above page
_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
<mailto:sword-devel@crosswire.org>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page