Building modular-boost on windows with masm32?
Dear all,
I have tried to build modular-boost on windows (win7 64bit) using the mingw
toolset.
The steps that I followed (after some trial & error) are:
1. clone boost-modular from into
%home%\usr\local\boost
2. in that boost directory; type
bootstrap mingw
===========output===============
Building Boost.Build engine
Bootstrapping is done. To build, run:
.\b2
To adjust configuration, edit 'project-config.jam'.
Further information:
- Command line help:
.\b2 --help
- Getting started guide:
http://boost.org/more/getting_started/windows.html
- Boost.Build documentation:
http://www.boost.org/boost-build2/doc/html/index.html
================================
3. after apparently successful bootstrap, type
b2 -a -d+2 -q --prefix=c:\users\amwink\usr\local --build-type=complete
--build-dir=build toolset=gcc link=shared runtime-link=shared
The output is below. So the commands cl.exe and ml.exe, which are not in
mingw but can be used from the masm32 package are found, but their output
is not recognised (as I understand)
Is that correct? Would there be a way around this other than installing
VC++?
Many thanks
Alle Meije
===========output===============
Building the Boost C++ Libraries.
Performing configuration checks
- symlinks supported : yes (cached)
- 32-bit : yes (cached)
- arm : no (cached)
- mips1 : no (cached)
- power : no (cached)
- sparc : no (cached)
- x86 : yes (cached)
- has_icu builds : no (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
- zlib : no (cached)
- iconv (libc) : no (cached)
- iconv (separate) : yes (cached)
- icu : no (cached)
- icu (lib64) : no (cached)
- g++ -shared-* supported : no (cached)
- message-compiler : no (cached)
- compiler-supports-ssse3 : yes (cached)
- compiler-supports-avx2 : yes (cached)
- gcc visibility : yes (cached)
- long double support : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
warning: No python installation configured and autoconfiguration
note: failed. See http://www.boost.org/libs/python/doc/building.html
note: for configuration instructions or pass --without-python to
note: suppress this message and silently skip all Boost.Python targets
- zlib : no (cached)
- zlib : no (cached)
warning: Skipping Boost.Locale library with threading=single.
warning: Skipping Boost.Thread library with threading=single.
warning: Skipping Boost.Wave library with threading=single.
- zlib : no (cached)
Component configuration:
- atomic : building
- chrono : building
- container : building
- context : building
- coroutine : building
- date_time : building
- exception : building
- filesystem : building
- graph : building
- graph_parallel : building
- iostreams : building
- locale : building
- log : building
- math : building
- mpi : building
- program_options : building
- python : building
- random : building
- regex : building
- serialization : building
- signals : building
- sync : building
- system : building
- test : building
- thread : building
- timer : building
- wave : building
gcc.compile.c++
build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\lockpool.o
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-mthreads -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1
-DBOOST_ATOMIC_SOURCE -DBOOST_USE_WINDOWS_H -DNDEBUG -D_WIN32_WINNT=0x0500
-I"." -c -o
"build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\lockpool.o"
"libs\atomic\src\lockpool.cpp"
gcc.link.dll
build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll.a
"g++"
"-Wl,--out-implib,build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll.a"
-o
"build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll"
-shared -Wl,--start-group
"build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\lockpool.o"
-Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -mthreads -lkernel32
common.copy stage\lib\libboost_atomic-mgw48-mt-1_56.dll.a
copy /b
"build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll.a"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_atomic-mgw48-mt-1_56.dll.a"
build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll.a
1 file(s) copied.
common.copy stage\lib\libboost_atomic-mgw48-mt-1_56.dll
copy /b
"build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_atomic-mgw48-mt-1_56.dll"
build\boost\bin.v2\libs\atomic\build\gcc-mingw-4.8.1\release\threading-multi\libboost_atomic-mgw48-mt-1_56.dll
1 file(s) copied.
gcc.compile.c++
build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\error_code.o
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-pedantic -mthreads -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_DYN_LINK=1
-DNDEBUG -I"." -c -o
"build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\error_code.o"
"libs\system\src\error_code.cpp"
gcc.link.dll
build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll.a
"g++"
"-Wl,--out-implib,build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll.a"
-o
"build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll"
-shared -Wl,--start-group
"build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\error_code.o"
-Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -mthreads
common.copy stage\lib\libboost_system-mgw48-mt-1_56.dll.a
copy /b
"build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll.a"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_system-mgw48-mt-1_56.dll.a"
build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll.a
1 file(s) copied.
common.copy stage\lib\libboost_system-mgw48-mt-1_56.dll
copy /b
"build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_system-mgw48-mt-1_56.dll"
build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll
1 file(s) copied.
gcc.compile.c++
build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\chrono.o
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-pedantic -mthreads -Wextra -Wno-long-long -Wno-variadic-macros -pedantic
-DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_DYN_LINK=1
-DBOOST_SYSTEM_NO_DEPRE
CATED -DNDEBUG -I"." -c -o
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\chrono.o"
"lib
s\chrono\src\chrono.cpp"
gcc.compile.c++
build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\thread_clock.o
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-pedantic -mthreads -Wextra -Wno-long-long -Wno
-variadic-macros -pedantic -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1
-DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DNDEBUG -I"." -c
-o
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\thread_clock.o
" "libs\chrono\src\thread_clock.cpp"
gcc.compile.c++
build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\process_cpu_clocks.o
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-pedantic -mthreads -Wextra -Wno-long-long -Wno-variadic-macros -pedantic
-DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_DYN_LINK=1
-DBOOST_SYSTEM_NO_DEPRE
CATED -DNDEBUG -I"." -c -o
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\process_cpu_clocks.o"
"libs\chrono\src\process_cpu_clocks.cpp"
gcc.link.dll
build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll.a
"g++"
"-Wl,--out-implib,build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll.a"
-o
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll"
-shared -Wl,--start-group
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-m
ulti\chrono.o"
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\thread_clock.o"
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\process_cpu_clocks.o"
"build\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\threading-multi\libboost_system-mgw48-mt-1_56.dll.a"
-Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -mthreads
common.copy stage\lib\libboost_chrono-mgw48-mt-1_56.dll.a
copy /b
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll.a"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_chrono-mgw48-mt-1_56.dll.a"
build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll.a
1 file(s) copied.
common.copy stage\lib\libboost_chrono-mgw48-mt-1_56.dll
copy /b
"build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_chrono-mgw48-mt-1_56.dll"
build\boost\bin.v2\libs\chrono\build\gcc-mingw-4.8.1\release\threading-multi\libboost_chrono-mgw48-mt-1_56.dll
1 file(s) copied.
gcc.compile.c
build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\alloc_lib.o
"g++" -x c -O3 -finline-functions -Wno-inline -Wall -mthreads
-DBOOST_ALL_NO_LIB=1 -DBOOST_CONTAINER_DYN_LINK=1 -DN
DEBUG -I"." -c -o
"build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\alloc_lib.o"
"libs\container\src\alloc_lib.c"
gcc.link.dll
build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll.a
"g++"
"-Wl,--out-implib,build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll.a"
-o
"build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll"
-shared -Wl,--start-group
"build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\alloc_lib.o"
-Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -mthreads
common.copy stage\lib\libboost_container-mgw48-mt-1_56.dll.a
copy /b
"build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll.a"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_container-mgw48-mt-1_56.dll.a"
build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll.a
1 file(s) copied.
common.copy stage\lib\libboost_container-mgw48-mt-1_56.dll
copy /b
"build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll"
+ this-file-does-not-exist-A698EE7806899E69
"stage\lib\libboost_container-mgw48-mt-1_56.dll"
build\boost\bin.v2\libs\container\build\gcc-mingw-4.8.1\release\threading-multi\libboost_container-mgw48-mt-1_56.dll
1 file(s) copied.
Jamfile
2014-07-01 9:29 GMT+02:00 Alle Meije Wink
gcc.link.dll build\boost\bin.v2\libs\context\build\gcc-mingw-4.8.1\release\threading-multi\libboost_context-mgw48-mt-1_56.dll.a
"g++" "-Wl,--out-implib,build\boost\bin.v2\libs\context\build\gcc-mingw-4.8.1\release\threading-multi\libboost_context-mgw48-mt-1_56.dll.a" -o "build\boost\bin.v2\libs\context\build\gcc-mingw-4.8.1\release\threading-multi\libboost_context-mgw48-mt-1_56.dll" -shared -Wl,--start-group "build\boost\bin.v2\libs\context\build\gcc-mingw-4.8.1\release\address-model-32\architecture-x86\threading-multi\asm\make_i386_ms_pe_masm.o" "build\boost\bin.v2\libs\context\build\gcc-mingw-4.8.1\release\address-model-32\architecture-x86\threading-multi\asm\jump_i386_ms_pe_masm.o" "build\boost\bin.v2\libs\co ntext\build\gcc-mingw-4.8.1\release\threading-multi\dummy.o" -Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -mthreads
build\boost\bin.v2\libs\context\build\gcc-mingw-4.8.1\release\address-model-32\architecture-x86\threading-multi\asm\make_i386_ms_pe_masm.o: file not recognized: File format not recognized
strange - the make_i386_ms_pe_masm.o is in MS PE binary format but mingw (g++) does not recognize it. The regression tests at http://www.boost.org/development/tests/master/developer/coroutine.html pass with mingw-4.8.2. Do you use the code from branch master? Maybe it is an issue of mingw-4.8.1?
On 1 July 2014 09:29, Alle Meije Wink
3. after apparently successful bootstrap, type b2 -a -d+2 -q --prefix=c:\users\amwink\usr\local --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared
The output is below. So the commands cl.exe and ml.exe, which are not in mingw but can be used from the masm32 package are found, but their output is not recognised (as I understand)
Is that correct? Would there be a way around this other than installing VC++?
Many thanks Alle Meije
*Subject:* Re: [Boost-users] Building modular-boost on windows with masm32? *From:* Oliver Kowalke (*oliver.kowalke_at_[hidden]*) *Date:* 2014-07-02 02:38:22
strange - the make_i386_ms_pe_masm.o is in MS PE binary format but mingw (g++) does not recognize it. The regression tests at http://www.boost.org/development/tests/master/developer/coroutine.html pass with mingw-4.8.2. Do you use the code from branch master? Maybe it is an issue of mingw-4.8.1?
Either that or of masm32? The test you mention uses the assembler of VC 8. Would there be any way to tell? Or better even, a way around it? Thanks!
2014-07-02 10:48 GMT+02:00 Alle Meije Wink
Either that or of masm32?
because masm is made by Microsoft I would assume that the masm generates valid object files (correct binary format) The test you mention uses the assembler of VC 8.
I assumed that MS VC uses masm - is this assumption not correct?
Would there be any way to tell? Or better even, a way around it?
around what? not to use masm? if yes you would have to provide the assembler code in the syntax your assembler tool understands and you still have to provide object files in MS PE binary format.
3. after apparently successful bootstrap, type
b2 -a -d+2 -q --prefix=c:\users\amwink\usr\local --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared
The output is below. So the commands cl.exe and ml.exe, which are not in mingw but can be used from the masm32 package are found, but their output is not recognised (as I understand)
Is that correct? Would there be a way around this other than installing VC++?
Many thanks Alle Meije
*From:* Oliver Kowalke (*oliver.kowalke_at_[hidden]*) *Date:* 2014-07-02 02:38:22
strange - the make_i386_ms_pe_masm.o is in MS PE binary format but mingw (g++) does not recognize it. The regression tests at http://www.boost.org/development/tests/master/developer/coroutine.html pass with mingw-4.8.2. Do you use the code from branch master? Maybe it is an issue of mingw-4.8.1?
Either that or of masm32? The test you mention uses the assembler of VC 8.
Would there be any way to tell? Or better even, a way around it?
Oliver Kowalke-3 http://boost.2283326.n4.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=368875 Reply http://boost.2283326.n4.nabble.com/template/NamlServlet.jtp?macro=reply&node=4664638 | Threaded | More Jul 02, 2014; 11:45am
Either that or of masm32?
because masm is made by Microsoft I would assume that the masm generates valid object files (correct binary format)
The test you mention uses the assembler of VC 8.
I assumed that MS VC uses masm - is this assumption not correct?
Would there be any way to tell? Or better even, a way around it?
around what? not to use masm? if yes you would have to provide the assembler code in the syntax your assembler tool understands and you still have to provide object files in MS PE binary format
MS VC may use masm, but I am not using VC. I installed masm from here http://www.masm32.com With 'around' in this case I mean compile boost without installing VC. Now installing WDK which provides an x64-compatible masm. That seems to be the only alternative? Thanks for your helpful comments, I will let you know how I get on. bw Alle Meije
because masm is made by Microsoft I would assume that the masm generates valid object files (correct binary format)
The test you mention uses the assembler of VC 8.
I think the issue here is why should users need to install MASM when they're using GCC and have a perfectly good assembler already (as)? Besides I'm not sure that the assumption that a MASM produced assembly is always compatible with GCC-Mingw is a valid one - it may well be sometimes, but I think it depends how Mingw is built and configured - I'm not completely sure about though. John.
2014-07-02 20:11 GMT+02:00 John Maddock
I think the issue here is why should users need to install MASM when they're using GCC and have a perfectly good assembler already (as)?
because it is to much work to provide an assembler file for each assembler tool avaialble - but you is welcome to port the code from masm syntax to GNU as syntax.
Besides I'm not sure that the assumption that a MASM produced assembly is always compatible with GCC-Mingw is a valid one - it may well be sometimes, but I think it depends how Mingw is built and configured - I'm not completely sure about though.
the binary format is defined by the underlying ABI
Oliver Kowalke-3
http://boost.2283326.n4.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=368875 Reply http://boost.2283326.n4.nabble.com/template/NamlServlet.jtp?macro=reply&node=4664638 | Threaded | More Jul 02, 2014; 11:45am
Either that or of masm32?
because masm is made by Microsoft I would assume that the masm generates valid object files (correct binary format)
The test you mention uses the assembler of VC 8.
I assumed that MS VC uses masm - is this assumption not correct?
Would there be any way to tell? Or better even, a way around it?
around what? not to use masm? if yes you would have to provide the assembler code in the syntax your assembler tool understands and you still have to provide object files in MS PE binary format
MS VC may use masm, but I am not using VC. I installed masm from here http://www.masm32.com
With 'around' in this case I mean compile boost without installing VC. Now installing WDK which provides an x64-compatible masm. That seems to be the only alternative?
Thanks for your helpful comments, I will let you know how I get on.
bw Alle Meije
I followed a slightly different recipe this time, first using 'cmd.exe' (in administrator mode) and MSYS bash: cd %HOMEPATH%\usr\local bash git config --global core.autocrlf true git clone --recursive https://github.com/boostorg/boost.git boost > clone.log exit bootstrap gcc b2 -a --prefix=c:\users\amwink\usr\local –build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi which completes without errors. If I then re-enter my original build command b2 -a -d+2 -q --prefix=c:\users\amwink\usr\local –build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi it stops again at the point where the assembler is needed (see previous messages). Does this mean that the build with the first call of b2 is actually successful? Or does the call without the " -d+2 -q " options compile/check parts of the building process that the first call skips? As always, many thanks for your help Alle Meije
Hi Alle Meije, Am Dienstag, 22. Juli 2014, 14:59:19 schrieb Alle Meije Wink:
I followed a slightly different recipe this time, first using 'cmd.exe' (in administrator mode) and MSYS bash:
cd %HOMEPATH%\usr\local bash git config --global core.autocrlf true git clone --recursive https://github.com/boostorg/boost.git boost > clone.log exit bootstrap gcc b2 -a --prefix=c:\users\amwink\usr\local –build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi
which completes without errors.
You should see: ...update XXX targets ...failed YYY targets at the end of the build output. If you don't see "failed", everything build fine.
If I then re-enter my original build command
b2 -a -d+2 -q --prefix=c:\users\amwink\usr\local –build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi
it stops again at the point where the assembler is needed (see previous messages).
Yes, as "-d+2" just enables command line output, whereas -q activates "quit on first error". In this case you have make-like behaviour.
Does this mean that the build with the first call of b2 is actually successful?
No, the first build just ignores the build errors and happily builds the rest of the libraries. It just the same as running "make -k".
Or does the call without the " -d+2 -q " options compile/check parts of the building process that the first call skips?
No. Note that the offending commandline will be printed in the error anyway, so there is normally no need to add "-d +2". Hope this helps. Yours, Jürgen -- * Dipl.-Math. Jürgen Hunold ! * voice: ++49 4257 300 ! Fährstraße 1 * fax : ++49 4257 300 ! 31609 Balge/Sebbenhausen * jhunold@gmx.eu ! Germany
participants (4)
-
Alle Meije Wink
-
John Maddock
-
Jürgen Hunold
-
Oliver Kowalke