RESOLVED FIXED 93842
[Qt] QNX build fails due to missing timegm declaration
https://bugs.webkit.org/show_bug.cgi?id=93842
Summary [Qt] QNX build fails due to missing timegm declaration
Milian Wolff
Reported 2012-08-13 07:16:31 PDT
Trying to build QtWebKit QNX fails with the following error: make -j1 makeobj[0]: Entering directory `/home/milian/projects/qt5/build-playbook/qtwebkit/Release' cd Source/WTF/ && ( test -f Makefile.WTF || /home/milian/projects/qt5/install-playbook/bin/qmake /home/milian/projects/qt5/qtwebkit/Source/WTF/WTF.pro DEFINES+=ENABLE_3D_RENDERING=0 DEFINES+=ENABLE_WEBGL=0 INSTALL_LIBS=/home/milian/projects/qt5/build-playbook/../install-playbook/ CONFIG+=release CONFIG-=debug -o Makefile.WTF ) && /usr/bin/make -f Makefile.WTF make[1]: Entering directory `/home/milian/projects/qt5/build-playbook/qtwebkit/Release/Source/WTF' qcc -Vgcc_ntoarmv7le -lang-c++ -c -fstack-protector -fstack-protector-all -Wno-psabi -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -D_REENTRANT -DQ_OS_BLACKBERRY -DENABLE_3D_RENDERING=0 -DENABLE_WEBGL=0 -DWTF_USE_ICU_UNICODE=1 -DHAVE_QRAWFONT=1 -DHAVE_FONTCONFIG=1 -DENABLE_XSLT=1 -DWTF_USE_ZLIB=1 -DWTF_USE_TILED_BACKING_STORE=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DHAVE_QSTYLE=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_FLEXBOX=1 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILE_SYSTEM=0 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_GESTURE_EVENTS=1 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_WEBKIT_BLOB_BUILDER=1 -DENABLE_LINK_PREFETCH=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=0 -DENABLE_MICRODATA=0 -DENABLE_MUTATION_OBSERVERS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_NOTIFICATIONS=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_QUOTA=0 -DENABLE_REGISTER_PROTOCOL_HANDLER=0 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_SHARED_WORKERS=1 -DENABLE_SQL_DATABASE=1 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG=1 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_SVG_FONTS=1 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_UNDO_MANAGER=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEB_AUDIO=0 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_TOUCH_SLIDER=1 -DWTF_USE_3D_GRAPHICS=0 -DENABLE_3D_RENDERING=0 -DENABLE_WEBGL=0 -DENABLE_3D_RENDERING=0 -DENABLE_WEBGL=0 -DBUILDING_QT__=1 -DNDEBUG -DBUILDING_WTF -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DQT_NO_DEBUG -DQT_CORE_LIB -I/home/milian/projects/qt5/install-playbook/mkspecs/unsupported/blackberry-armv7le-qcc -I/home/milian/projects/qt5/qtwebkit/Source/WTF -I. -I/home/milian/projects/qt5/qtwebkit/Source/WTF -I/home/milian/projects/qt5/qtwebkit/Source/WTF/wtf -I/home/milian/projects/qt5/qtwebkit/Source -I../include -I/home/milian/projects/qt5/install-playbook/include -I/home/milian/projects/qt5/install-playbook/include/QtScript -I/home/milian/projects/qt5/install-playbook/include/QtCore -I/home/milian/bbndk-2.0.1/target/qnx6/usr/include -I/home/milian/bbndk-2.0.1/target/qnx6/usr/include/freetype2 -I. -o obj/release/wtf/DateMath.o /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/DateMath.cpp /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/DateMath.cpp: In function 'std::int32_t WTF::calculateUTCOffset()': /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/DateMath.cpp:402: error: 'timegm' was not declared in this scope cc: /home/milian/bbndk-2.0.1/host/linux/x86/usr/lib/gcc/arm-unknown-nto-qnx6.5.0eabi/4.4.2/cc1plus error 1 make[1]: *** [obj/release/wtf/DateMath.o] Error 1 make[1]: Leaving directory `/home/milian/projects/qt5/build-playbook/qtwebkit/Release/Source/WTF' make: *** [sub-Source-WTF-WTF-pro-make_first-ordered] Error 2 makeobj[0]: Leaving directory `/home/milian/projects/qt5/build-playbook/qtwebkit/Release' I'll provide a patch now.
Attachments
Patch (1.44 KB, patch)
2012-08-13 07:19 PDT, Milian Wolff
no flags
Milian Wolff
Comment 1 2012-08-13 07:19:58 PDT
Simon Hausmann
Comment 2 2012-08-13 12:54:26 PDT
Comment on attachment 157989 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=157989&action=review > Source/WTF/wtf/DateMath.cpp:108 > +#if OS(QNX) > +// qnx6 defines timegm in nbutil.h > +#include <nbutil.h> > +#endif Out of curiousity: Why doesn't the blackberry port need this?
Simon Hausmann
Comment 3 2012-08-14 03:55:49 PDT
Rim folks, any idea? I keep on forgetting OS(QNX) vs. PLATFORM(BLACKBERRY) - is there a way to simplify the #ifdef usage here? :)
Simon Hausmann
Comment 4 2012-08-14 03:57:42 PDT
Sorry, wrong bug ;). But my question to the RIM folks just changes slightly ;-): Any idea why the include isn't needed for PLATFORM(BLACKBERRY)?
Yong Li
Comment 5 2012-08-14 07:05:37 PDT
(In reply to comment #4) > Sorry, wrong bug ;). But my question to the RIM folks just changes slightly ;-): Any idea why the include isn't needed for PLATFORM(BLACKBERRY)? Isn't timegm defined in time.h? Can you check the time.h you are using?
Milian Wolff
Comment 6 2012-08-14 08:06:11 PDT
No, in the BBNDK 2.0.1, it's only defined in nbutil.h: ~/bbndk-2.0.1$ grep -R timegm target/qnx6/usr/include/ target/qnx6/usr/include/nbutil.h:time_t timegm(struct tm *);
Yong Li
Comment 7 2012-08-14 08:10:00 PDT
(In reply to comment #6) > No, in the BBNDK 2.0.1, it's only defined in nbutil.h: > > ~/bbndk-2.0.1$ grep -R timegm target/qnx6/usr/include/ > target/qnx6/usr/include/nbutil.h:time_t timegm(struct tm *); OK. We also have nbutil.h. So it shouldn't break BB build. Patch looks good to me.
Laszlo Gombos
Comment 8 2012-08-14 19:26:24 PDT
(In reply to comment #3) > Rim folks, any idea? I keep on forgetting OS(QNX) vs. PLATFORM(BLACKBERRY) - is there a way to simplify the #ifdef usage here? :) The patch looks good to me as well as I do not think DateMath.cpp should have a dependency on any PLATFORM() macro. I agree with Simon that we should clarify the macro usage. I think it would be useful to: a./ List the currently maintained or targeted OS() macros when PLATFORM(BLACKBERRY) is set (in addition to OS(QNX)) b./ List the currently maintained or targeted PLATFORM() macros when OS(QNX) is set (in addition to PLATFORM(BLACKBERRY)). If OS(QNX) is equivalent to PLATFORM(BLACKBERRY) than we should look into eliminate one of the 2 macros.
Yong Li
Comment 9 2012-08-15 07:41:02 PDT
(In reply to comment #8) > (In reply to comment #3) > > Rim folks, any idea? I keep on forgetting OS(QNX) vs. PLATFORM(BLACKBERRY) - is there a way to simplify the #ifdef usage here? :) > > The patch looks good to me as well as I do not think DateMath.cpp should have a dependency on any PLATFORM() macro. > > I agree with Simon that we should clarify the macro usage. > > I think it would be useful to: > > a./ List the currently maintained or targeted OS() macros when PLATFORM(BLACKBERRY) is set (in addition to OS(QNX)) > > b./ List the currently maintained or targeted PLATFORM() macros when OS(QNX) is set (in addition to PLATFORM(BLACKBERRY)). > > If OS(QNX) is equivalent to PLATFORM(BLACKBERRY) than we should look into eliminate one of the 2 macros. They are definitely not equivalent. PLATFORM(BLACKBERRY) is a subset of OS(QNX). OS(QNX) is always true in PLATFORM(BLACKBERRY) a./ None (OS(QNX) only) b./ PLATFORM(QT) and probably others. Also OS(QNX) can be used without any PLATFORM() macros.
Yong Li
Comment 10 2012-08-15 07:41:46 PDT
I can r+ the patch if no objection. Simon?
Simon Hausmann
Comment 11 2012-08-16 07:59:49 PDT
Millian, please set commit-queue? if you'd like to land it via the commit queue.
WebKit Review Bot
Comment 12 2012-08-17 03:23:24 PDT
Comment on attachment 157989 [details] Patch Clearing flags on attachment: 157989 Committed r125877: <http://trac.webkit.org/changeset/125877>
WebKit Review Bot
Comment 13 2012-08-17 03:23:28 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.