On Wednesday 09 September 2009 20:21:13 Brendan Duncan wrote:
> I finally got PySide built for the Mac.  It was an effort.  When I get a
> chance, I'll put together a more coherent set of notes.  But for now, here
> are the changes I needed to make to get it built.

Nice, many items are easy to fix in PySide. Can you file a bug report for each 
item?
 
> * Because the generator was picking up the wrong atomic_*.h system-specific
> headers, I had to remove the ones I didn't want picked up from the Qt
> includes directory.  Maybe these should just be ignored by the generator
> alltogether, or figure out how to get the generator to pick up the header
> for the correct architecture....

The parser in APIExtractor is executed without define Q_WS_MAC, so the wrong 
atomic_*.h were found.

The solution is to generate the globa.h file (used by the parser) using cmake 
(configure_file command) and define Q_WS_MAC, Q_WS_WIN, etc, if needed.

We can do this, just file a bug report :-)

About the linker flags, they are specific to GCC, so we really need to when 
compiling in other plataforms/compilers.
 
> * QtCore will build fine, but QtGui complains about not being able to find
> the Qt headers for some reason.  I had to add
> set(QT_INCLUDE_DIR "/usr/local/Trolltech/Qt-4.5.2/include")
> to the top level CMakeLists.txt for it to build.  I can re-look into this,
> because PySide should build using only what's available from the binary
> install of Qt on OSX (which means CMake should find things in the
> /Library/Frameworks directories).
> 
> * QtUiTools doesn't get installed as a Framework on OSX, so I had to add:
> set(QT_QTUITOOLS_INCLUDE_DIR
> "/usr/local/Trolltech/Qt-4.5.2/include/QtUiTools")
> in order for CMake to find those headers.  Like the previous issue, a
>  better solution should be found that rely only on the binary install of
>  Qt.
> 
> * There are some unsupported linker flags being used in
> CMAKE_CXX_FLAGS_RELEASE in the top level CMakeLists.txt, so I had to take
> those out by removing the -Wl,* flags:
> set(CMAKE_CXX_FLAGS_RELEASE "-Wall -fvisibility=hidden
> -fvisibility-inlines-hidden -Os -finline-limit=600 -ffunction-sections
> -fomit-frame-pointer -fno-default-inline -fconserve-space
> -fno-enforce-eh-specs -fno-threadsafe-statics
>  -fno-implicit-inline-templates -DNDEBUG -DBOOST_PYTHON_NO_PY_SIGNATURES")
> 
> * boost::python is having trouble with some class methods that return
> Qt::Handle, because it's an alias for void*, and there is no return policy
> defined for void*.  For now, I just had the scanner ignore those methods by
> adding the following.
> 
> data/typesystem/typesystem_core.xml:
> <rejection class="QThread" function-name="currentThreadId"/>
> 
> data/typesystem/typesystem_gui.xml:
> <rejection class="QFont" function-name="handle"/>
> 
> data/typesystem/typesystem_network.xml:
> <rejection class="QSslCertificate" function-name="handle"/>
> <rejection class="QSslKey" function-name="handle"/>
> 
> data/typesystem/typesystem_opengl.xml
> <rejection class="QGLColormap" function-name="handle"/>
> <rejection class="QGLPixelBuffer" function-name="handle"/>
> 
> 
> * QtGui: qx11_info is not available on OSX or windows:
> PySide/QtGui/CMakeLists.txt
> Comment out the qx11_wrapper lines:
> #${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtGui/qx11info_wrapper.cpp
> #${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtGui/qx11info_wrapper.hpp
> 
> 
> * QtGui: Unknown linker option: --reduce-memory-overheads
> PySide/QtGui/CMakeLists.txt
> Comment out the "LINK_FLAGS" line:
> #set_target_properties(QtGui PROPERTIES PREFIX "" LINK_FLAGS
> "-Wl,--reduce-memory-overheads")
> 
> 
> * QtOpenGL: Missing link to QtGui library (causes undefined QWidget
> symbols).
> PySide/QtOpenGL/CMakeLists.txt
> Add ${QT_QTGUI_LIBRARY} to target_link_libraries.
> target_link_libraries(QtOpenGL
>                       ${Boost_PYTHON_LIBRARY}
>                       ${PYTHON_LIBRARIES}
>                       ${QT_QTCORE_LIBRARY}
>                       ${QT_QTGUI_LIBRARY}
>                       ${QT_QTOPENGL_LIBRARY}
>                       pysidebase)
> 
> 
> * QtHelp: Missing link to QtGUi library.
> PySide/QtHelp/CMakeLists.txt
> Add ${QT_QTGUI_LIBRARY} to target_link_libraries.
> target_link_libraries(QtHelp
>                       ${Boost_PYTHON_LIBRARY}
>                       ${PYTHON_LIBRARIES}
>                       ${QT_QTCORE_LIBRARY}
>                       ${QT_QTGUI_LIBRARY}
>                       ${QT_QTHELP_LIBRARY}
>                       pysidebase)
> 
> 
> * QtScriptTools: The "ugly workaround" in QtScriptTools CMakeLists.txt does
> not work for OSX.
> PySide/QtScriptTools/CMakeLists.txt
> Replace
> set (QT_QTSCRIPTTOOLS_INCLUDE_DIR ${QT_QTSCRIPT_INCLUDE_DIR}Tools)
> set (QT_QTSCRIPTTOOLS_LIBRARY -lQtScriptTools)
> With
> set(QT_QTSCRIPTTOOLS_INCLUDE_DIR
> "/Library/Frameworks/QtScriptTools.framework/Headers")
> set (QT_QTSCRIPTTOOLS_LIBRARY "-framework QtScriptTools")
> 
> 
> * QtScriptTools: Missing link to QtGui and QtScript libraries.
> PySide/QtScriptTools/CMakeLists.txt
> Add ${QT_QTGUI_LIBRARY} and ${QT_QTSCRIPT_LIBRARY} to
>  target_link_libraries. target_link_libraries(QtScriptTools
>                       ${Boost_PYTHON_LIBRARY}
>                       ${PYTHON_LIBRARIES}
>                       ${QT_QTCORE_LIBRARY}
>                       ${QT_QTGUI_LIBRARY}
>                       ${QT_QTSCRIPT_LIBRARY}
>                       ${QT_QTSCRIPTTOOLS_LIBRARY}
>                       pysidebase)
> 
> 
> 
> * QtUiTools: Missing link to QtUiTools library.
> OSX doesn't install QtUiTools as a Framework (because QtUiTools is a static
> library and not a shared library).  This also means that (as far as I know)
> Qt does not include the QtUiTools library with the binary installation of
>  Qt on OSX!
> 
> QtUiTools needs to be manually added to the libraries to link:
> PySide/QtUiTools/CMakeLists.txt
> Add the QtUiTools library.
> set (QT_QTUITOOLS_LIBRARY "-L/usr/local/Trolltech/Qt-4.5.2/lib
>  -lQtUiTools")
> 
> 
> * QtGui creates libQtGui.so, but the install is trying to copy QtGui.so.
> PySide/QtGui/CMakeLists.txt
> Change
> install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtGui.so
> To
> install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libQtGui.so
> 

-- 
Hugo Parente Lima
INdT - Instituto Nokia de Tecnologia

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
PySide mailing list
[email protected]
http://lists.openbossa.org/listinfo/pyside

Reply via email to