[opensource-dev] Experience with autobuilding 3p-libs on windows with VC Express

Ima Mechanique ima.mechanique at blueyonder.co.uk
Fri Mar 11 16:24:40 PST 2011


Hi all

After my disastrous foray into using autobuild with the 3p-* libs on
Sunday and Monday, I have spent the last few days since Tuesday trying
to build and package them using a command prompt and not the cygwin
shell.

Here are my observations

General
Some configurations (fmod, llqtwebkit) require curl (not standard in
cygwin) to download files. Wouldn't it be better to use the same
mechanism as the "installables" entries in autobuild.xml does?

Autobuild does not appear to have a 'clean' command. Does this mean that
cleaning is not necessary in order to rebuild?

Packaging
It would be useful to have the option of writing an *.md5sum file
instead of copy/pasting the md5 manually.

Building
autobuild_tool_source_environment.py creates functions for building on
windows. However these function rely on devenv which is not available on
VC Express 2010 (and previous versions as far a I know).
I modified the file to use msbuild.exe, which I believe is now the
standard method for VCE and VS, at least this is what we have been using
for autobuilding the viewer.

These modifications will require changes to the build-cmd.sh files that
use these functions. Specifically, the use of
"<configuration>|<platform>" is invalid for msbuild options and need to
be separated into individual options. I've noted below where such
changes were needed.

The modifications are mostly strait forward. I've not done more than was
needed for a quick fix, if the general idea is acceptable it would
probably be good to further abstract parts of this configuring. i.e. the
platform and toolset parameters should be configurable from the
autobuild.xml in order to be compatible with any changes that will be
needed in the future. This will also allow OS devs to be able to use
platforms/architectures/toolsets that they want/have available without
having to modify autobuild.

I cloned all of the 3p-* repositories I could find on bitbucket. If I
missed any let me know.  Below is my quick notes on getting them to
build and package. 
Commands used were:
autobuild build --all
autobuild package

These configure, build, and package
ares
boost
freeglut
had to change "|Win32" in build-cmd.sh lines 31 + 32

freetype
had to change "|Win32" in build-cmd.sh lines 31 + 32

libndofdev
had to change "|Win32" in build-cmd.sh lines 32 + 33

oggvorbis
had to change "|Win32" in build-cmd.sh lines 35, 36, 50-55
errors:
several d:\dev\c++\libs\ll-3p\oggvorbis\libvorbis-1.2.0\lib\os.h(25): fatal error C1083: Cannot open include file: 'ogg/os_types.h': No such file or directory [D:\Dev\C++\libs\ll-3p\oggvorbis\libvorbis-1.2.0\win32\vorbis_dynamic.vcxproj]

openjpeg
had to change "|Win32" in build-cmd.sh lines 34 + 35

qt
quicktime
tut
zlib
had to change "|Win32" in build-cmd.sh lines 36 + 37

-----------------
The following repos fail to build
apr

expat
had to change "|Win32" in build-cmd.sh lines 34 + 35
After that it would build but with fatal errors concerning missing external symbols

fmod
Has a dependency on curl.
Even with curl added to cygwin produces 'ERROR: building default configuration returned 127'

glui
had to change "|Win32" in build-cmd.sh lines 37 + 38
Numerous fatal errors
d:\dev\c++\libs\ll-3p\glui\glui-2.36\src\include\gl\glui.h(60): fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or directory [D:\Dev\C++\libs\ll-3p\glui\glui-2.36\src\msvc\gluidll.vcxproj]

google-breakpad
gyp.input.CircularException: Some files not reachable, cycle in .gyp file dependency graph detected involving some or all of: unittests\client_tests.gyp crash_generation\crash_generation.gyp sender\crash_report_sender.gyp handler\exception_handler.gyp breakpad_client.gyp

google-mock
had to change "|Win32" in build-cmd.sh lines 33 + 34
2 errors
D:\Dev\C++\libs\ll-3p\google-mock\gmock-1.5.0\msvc\Debug\gmock_test\gmock_test_manifest.rc(1): error RC2135: file not found: D:\Dev\C++\!libs\ll-3p\google-mock\gmock-1.5.0\msvc\Debug\gmock_test\gmock_test.exe.embed.manifest [D:\Dev\C++\libs\ll-3p\google-mock\gmock-1.5.0\msvc\gmock_test.vcxproj]
D:\Dev\C++\libs\ll-3p\google-mock\gmock-1.5.0\msvc\Debug\gmock_link_test\gmock_link_test_manifest.rc(1): error RC2135: file not found: D:\Dev\C++\!libs\ll-3p\google-mock\gmock-1.5.0\msvc\Debug\gmock_link_test\gmock_link_test.exe.embed.manifest [D:\Dev\C++\libs\ll-3p\google-mock\gmock-1.5.0\msvc\gmock_link_test.vcxproj]

jpeglib
had to change "|Win32" in build-cmd.sh line 34
error:
ren jconfig.vc jconfig.h The system cannot find the file specified.

jsoncpp
executing configure command ""%VS100COMNTOOLS%vsvars32.bat""
'""C:\Program' is not recognized as an internal or external command,

libpng
had to change "|Win32" in build-cmd.sh lines 32 - 34
d:\dev\c++\libs\ll-3p\libpng\libpng-1.5.1\pngstruct.h(27): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [D:\Dev\C++\libs\ll-3p\libpng\libpng-1.5.1\projects\vstudio\libpng\libpng.vcxproj]
  Using the URL installable url it doesn't appear that zlib is downloaded/unarchived.

llqtwebkit
Has a dependency on curl.
../build-cmd.sh: line 62: pushd: qt-everywhere-opensource-src-4.7.1: No such file or directory
  Appears that the extraction has been commented out at build-cmd.sh line 57. Even with this line restored there are errors for the -platform switch during configuration.

openal
 The OpenAL.sln is not created

xmlrpc-epi
had to change "|Win32" in build-cmd.sh lines 44 + 45
The expat installable is not installed, so includes fail

-----------------
These fail to configure
glh_linear
google-perftools configure fails?
had to change "|Win32" in build-cmd.sh lines 32 + 33
autobuild configure does nothing, leading to errors looking for project files when building.

-----------------
These repoes fail to package
dbus-glib

-----------------
These repoes are currently empty,  so not tried.
fontconfig
gstreamer
gtk-atk-pango-glib
libmono
libstrophe
libuuid (not applicable to windows, I think)
libxml
mysql
mysqlclient
smartheap
unistd
-----------------

These do not apply to windows builds. i.e. they do not have windows
configurations:
elfio
mesa

--
Ima Mechanique
ima.mechanique(at)blueyonder.co.uk




More information about the opensource-dev mailing list