Platform/Platform-specific build defines: Difference between revisions
< Platform
Jump to navigation
Jump to search
(Add a very incomplete mochitest condition table) |
(Added XP_SOLARIS) |
||
(21 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
In the Gecko code we have a bunch of preprocessor conditions that help us conditionally compile code for specific platforms. These can get confusing so here is a handy-dandy table to help you keep them straight. | In the Gecko code we have a bunch of preprocessor conditions that help us conditionally compile code for specific platforms. These can get confusing so here is a handy-dandy table to help you keep them straight. | ||
{|border="1" style="text-align: center;" | {|border="1" style="text-align: center; width: 100%" | ||
!OS | !OS | ||
!colspan=" | !colspan="1"|Windows | ||
!colspan=" | !colspan="1"|OS X | ||
!colspan=" | !colspan="1"|Linux-gtk | ||
!colspan="2"|Android | !colspan="2"|Android | ||
!colspan="1"|*BSD | |||
!colspan="1"|Solaris | |||
!iOS | !iOS | ||
|- | |- | ||
!Product | !Product | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Fennec | !Fennec | ||
! | !GeckoView | ||
!Desktop | |||
!Desktop | |||
!iOS | !iOS | ||
|- | |- | ||
!XP_WIN | !XP_WIN | ||
|style="background: green; color: white"|✓ | <!-- Windows: Desktop --> | ||
| style="background: green; color: white"|✓ | |||
| | | <!-- OS X: Desktop --> | ||
| | | | | ||
| | <!-- Linux-gtk: Desktop --> | ||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!XP_DARWIN | !XP_DARWIN | ||
| | <!-- Windows: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
<!-- OS X: Desktop --> | |||
| | | | style="background: green; color: white"|✓ | ||
| | <!-- Linux-gtk: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| style="background: green; color: white"|✓ | |||
|- | |- | ||
!XP_MACOSX | !XP_MACOSX | ||
| | <!-- Windows: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
<!-- OS X: Desktop --> | |||
| | | | style="background: green; color: white"|✓ | ||
| | <!-- Linux-gtk: Desktop --> | ||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!XP_IOS | !XP_IOS | ||
| | | <!-- Windows: Desktop --> | ||
| | | | | ||
| | <!-- OS X: Desktop --> | ||
| | |||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
| | |||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| style="background: green; color: white"|✓ | |||
|- | |- | ||
!XP_UNIX | !XP_UNIX | ||
| | <!-- Windows: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
|style="background: green; color: white"|✓ | <!-- OS X: Desktop --> | ||
| style="background: green; color: white"|✓ | |||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
|style="background: green; color: white"|✓ | <!-- Android: Fennec, GeckoView --> | ||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
<!-- BSD, Solaris --> | |||
| style="background: green; color: white"|✓ | |||
| style="background: green; color: white"|✓ | |||
<!-- iOS --> | |||
| style="background: green; color: white"|✓ | |||
|- | |- | ||
!XP_LINUX | !XP_LINUX | ||
| | | <!-- Windows: Desktop --> | ||
| | |||
|style="background: green; color: white"|✓ | <!-- OS X: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
| | | style="background: green; color: white"|✓ | ||
|style="background: green; color: white"|✓ | <!-- Android: Fennec, GeckoView --> | ||
| | | style="background: green; color: white"|✓ | ||
| style="background: green; color: white"|✓ | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| | |||
|- | |||
!XP_SOLARIS | |||
<!-- Windows: Desktop --> | |||
| | |||
<!-- OS X: Desktop --> | |||
| | |||
<!-- Linux-gtk: Desktop --> | |||
| | |||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| | |||
| style="background: green; color: white"|✓ | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!ANDROID | !ANDROID | ||
<!-- Windows: Desktop --> | |||
| | |||
<!-- OS X: Desktop --> | |||
| | |||
<!-- Linux-gtk: Desktop --> | |||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| style="background: green; color: white"|✓ | |||
| style="background: green; color: white"|✓ | |||
<!-- BSD, Solaris --> | |||
| | | | ||
| | |||
| | <!-- iOS --> | ||
| | |||
|style="background: green; color: white"|✓ | |||
| | |||
| | |||
|- | |- | ||
!MOZ_WIDGET_GTK | !MOZ_WIDGET_GTK | ||
| | | <!-- Windows: Desktop --> | ||
| | |||
|style="background: green; color: white"|✓ | <!-- OS X: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
| style="background: green; color: white"|✓ | |||
| | <!-- Android: Fennec, GeckoView --> | ||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| style="background: green; color: white"|✓ | |||
| style="background: green; color: white"|✓ | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!MOZ_WIDGET_ANDROID | !MOZ_WIDGET_ANDROID | ||
| | | <!-- Windows: Desktop --> | ||
| | | | ||
<!-- OS X: Desktop --> | |||
|style="background: green; color: white"|✓ | | | ||
| | <!-- Linux-gtk: Desktop --> | ||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| style="background: green; color: white"|✓ | |||
| style="background: green; color: white"|✓ | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| | | | ||
|- | |- | ||
!MOZ_WIDGET_UIKIT | !MOZ_WIDGET_UIKIT | ||
| | | <!-- Windows: Desktop --> | ||
| | | | | ||
| | <!-- OS X: Desktop --> | ||
| | |||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
| | |||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- BSD, Solaris --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| style="background: green; color: white"|✓ | |||
|} | |} | ||
Line 138: | Line 202: | ||
Here is a similar table, but to see which prefs get used in which product: | Here is a similar table, but to see which prefs get used in which product: | ||
{|border="1" style="text-align: center;" | {|border="1" style="text-align: center; width: 100%" | ||
!OS | !OS | ||
!colspan=" | !colspan="1"|Windows | ||
!colspan=" | !colspan="1"|OS X | ||
!colspan=" | !colspan="1"|Linux-gtk | ||
!colspan="2"|Android | !colspan="2"|Android | ||
!iOS | !iOS | ||
Line 148: | Line 212: | ||
!Product | !Product | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Fennec | !Fennec | ||
! | !GeckoView | ||
!iOS | !iOS | ||
|- | |- | ||
|[https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/all.js all.js] | |[https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/all.js all.js] | ||
<!-- Windows: Desktop --> | |||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
<!-- OS X: Desktop --> | |||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
<!-- Linux-gtk: Desktop --> | |||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
<!-- Android: Fennec, GeckoView --> | |||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
|style="background: green; color: white"|✓ | <!-- iOS --> | ||
| style="background: green; color: white"|✓ | |||
|- | |- | ||
|[https://hg.mozilla.org/mozilla-central/file/tip/browser/app/profile/firefox.js firefox.js] | |[https://hg.mozilla.org/mozilla-central/file/tip/browser/app/profile/firefox.js firefox.js] | ||
|style="background: green; color: white"|✓ | <!-- Windows: Desktop --> | ||
| style="background: green; color: white"|✓ | |||
|style="background: green; color: white"|✓ | <!-- OS X: Desktop --> | ||
| style="background: green; color: white"|✓ | |||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
| style="background: green; color: white"|✓ | |||
<!-- Android: Fennec, GeckoView --> | |||
| | | | ||
| | | | ||
| | <!-- iOS --> | ||
| | |||
|- | |- | ||
|[https://hg.mozilla.org/mozilla-central/file/tip/mobile/android/app/mobile.js mobile.js] | |[https://hg.mozilla.org/mozilla-central/file/tip/mobile/android/app/mobile.js mobile.js] | ||
<!-- Windows: Desktop --> | |||
| | |||
<!-- OS X: Desktop --> | |||
| | |||
| | <!-- Linux-gtk: Desktop --> | ||
| | |||
<!-- Android: Fennec, GeckoView --> | |||
| style="background: green; color: white"|✓ | |||
| | | ?? | ||
<!-- iOS --> | |||
| | | | ||
|style="background: green; color: white"|✓ | |||
| | |||
| | |||
|- | |- | ||
|[https://hg.mozilla.org/mozilla-central/file/tip/ | |[https://hg.mozilla.org/mozilla-central/file/tip/mobile/android/app/geckoview-prefs.js geckoview-prefs.js] | ||
| | | <!-- Windows: Desktop --> | ||
| | | | ||
<!-- OS X: Desktop --> | |||
| | | | ||
|style="background: green; color: white"|✓ | <!-- Linux-gtk: Desktop --> | ||
| | |||
| | <!-- Android: Fennec, GeckoView --> | ||
| | |||
| style="background: green; color: white"|✓ | |||
<!-- iOS --> | |||
| | |||
|} | |} | ||
== Reftest conditions == | == Reftest conditions == | ||
Line 218: | Line 275: | ||
Here is another table that tells you what conditions are true on various platforms for use in reftest.list conditions. | Here is another table that tells you what conditions are true on various platforms for use in reftest.list conditions. | ||
{|border="1" style="text-align: center;" | {|border="1" style="text-align: center; width: 100%" | ||
!OS | !OS | ||
!colspan=" | !colspan="1"|Windows | ||
!colspan=" | !colspan="1"|OS X | ||
!colspan=" | !colspan="1"|Linux-gtk | ||
!colspan="2"|Android | !colspan="2"|Android | ||
!iOS | !iOS | ||
Line 228: | Line 285: | ||
!Product | !Product | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Fennec | !Fennec | ||
! | !GeckoView | ||
!iOS | !iOS | ||
|- | |- | ||
! | !Android | ||
<!-- Windows: Desktop --> | |||
| | | | ||
<!-- OS X: Desktop --> | |||
| | | | ||
<!-- Linux-gtk: Desktop --> | |||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| style="background: green; color: white"|✓ | |||
| style="background: green; color: white"|✓ | |||
<!-- iOS --> | |||
| | |||
|style="background: green; color: white"|✓ | |||
| | |||
| | |||
|- | |- | ||
! | !geckoview | ||
| | | <!-- Windows: Desktop --> | ||
| | | | ||
| | <!-- OS X: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
<!-- Linux-gtk: Desktop --> | |||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| style="background: green; color: white"|✓ | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!cocoaWidget | !cocoaWidget | ||
| | <!-- Windows: Desktop --> | ||
|style="background: green; color: white"|✓ | | | ||
<!-- OS X: Desktop --> | |||
| | | | style="background: green; color: white"|✓ | ||
<!-- Linux-gtk: Desktop --> | |||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!gtkWidget | !gtkWidget | ||
| | <!-- Windows: Desktop --> | ||
| | | | ||
<!-- OS X: Desktop --> | |||
|style="background: green; color: white"|✓ | | | ||
<!-- Linux-gtk: Desktop --> | |||
| | | | style="background: green; color: white"|✓ | ||
| | <!-- Android: Fennec, GeckoView --> | ||
| | |||
| | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!qtWidget | !qtWidget | ||
| | | <!-- Windows: Desktop --> | ||
| | | | | ||
| | <!-- OS X: Desktop --> | ||
| | |||
| | <!-- Linux-gtk: Desktop --> | ||
| | |||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | |||
<!-- iOS --> | |||
| | |||
|- | |- | ||
!winWidget | !winWidget | ||
<!-- Windows: Desktop --> | |||
|style="background: green; color: white"|✓ | | style="background: green; color: white"|✓ | ||
<!-- OS X: Desktop --> | |||
| | | | ||
<!-- Linux-gtk: Desktop --> | |||
| | | | ||
<!-- Android: Fennec, GeckoView --> | |||
| | |||
| | | | ||
| | <!-- iOS --> | ||
| | |||
| | |||
|} | |} | ||
Line 310: | Line 374: | ||
Here is another table that tells you what different condition values are on various platforms for use in mochitest.ini/a11y.ini/chrome.ini/browser.ini conditions. | Here is another table that tells you what different condition values are on various platforms for use in mochitest.ini/a11y.ini/chrome.ini/browser.ini conditions. | ||
{|border="1" style="text-align: center;" | {|border="1" style="text-align: center; width: 100%" | ||
!OS | !OS | ||
!colspan=" | !colspan="1"|Windows | ||
!colspan=" | !colspan="1"|OS X | ||
!colspan=" | !colspan="1"|Linux-gtk | ||
!colspan="2"|Android | !colspan="2"|Android | ||
!iOS | !iOS | ||
Line 320: | Line 384: | ||
!Product | !Product | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Desktop | !Desktop | ||
!Fennec | !Fennec | ||
! | !GeckoView | ||
!iOS | !iOS | ||
|- | |- | ||
!os | !os | ||
|win | <!-- Windows: Desktop --> | ||
|mac | | win | ||
|linux| | <!-- OS X: Desktop --> | ||
|android | | mac | ||
|?? | <!-- Linux-gtk: Desktop --> | ||
| linux | |||
<!-- Android: Fennec, GeckoView --> | |||
| android | |||
| android | |||
<!-- iOS --> | |||
| ?? | |||
|- | |- | ||
!toolkit | !toolkit | ||
|windows | <!-- Windows: Desktop --> | ||
|cocoa | | windows | ||
|gtk2 or gtk3| | <!-- OS X: Desktop --> | ||
|android | | cocoa | ||
|?? | <!-- Linux-gtk: Desktop --> | ||
| gtk2 or gtk3 | |||
<!-- Android: Fennec, GeckoView --> | |||
| android | |||
| android | |||
<!-- iOS --> | |||
| ?? | |||
|- | |- | ||
!buildapp | !buildapp | ||
|??| | <!-- Windows: Desktop --> | ||
|??| | | ?? | ||
|?? | <!-- OS X: Desktop --> | ||
| ?? | |||
|?? | <!-- Linux-gtk: Desktop --> | ||
| ?? | |||
<!-- Android: Fennec, GeckoView --> | |||
| mobile/android | |||
| ?? | |||
<!-- iOS --> | |||
| ?? | |||
|} | |} | ||
You may also be interested in [[Platform/Channel-specific_build_defines]] | You may also be interested in [[Platform/Channel-specific_build_defines]] |
Latest revision as of 10:51, 15 July 2019
In the Gecko code we have a bunch of preprocessor conditions that help us conditionally compile code for specific platforms. These can get confusing so here is a handy-dandy table to help you keep them straight.
OS | Windows | OS X | Linux-gtk | Android | *BSD | Solaris | iOS | |
---|---|---|---|---|---|---|---|---|
Product | Desktop | Desktop | Desktop | Fennec | GeckoView | Desktop | Desktop | iOS |
XP_WIN | ✓ | |||||||
XP_DARWIN | ✓ | ✓ | ||||||
XP_MACOSX | ✓ | |||||||
XP_IOS | ✓ | |||||||
XP_UNIX | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
XP_LINUX | ✓ | ✓ | ✓ | |||||
XP_SOLARIS | ✓ | |||||||
ANDROID | ✓ | ✓ | ||||||
MOZ_WIDGET_GTK | ✓ | ✓ | ✓ | |||||
MOZ_WIDGET_ANDROID | ✓ | ✓ | ||||||
MOZ_WIDGET_UIKIT | ✓ |
Prefs files
Here is a similar table, but to see which prefs get used in which product:
OS | Windows | OS X | Linux-gtk | Android | iOS | |
---|---|---|---|---|---|---|
Product | Desktop | Desktop | Desktop | Fennec | GeckoView | iOS |
all.js | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
firefox.js | ✓ | ✓ | ✓ | |||
mobile.js | ✓ | ?? | ||||
geckoview-prefs.js | ✓ |
Reftest conditions
Here is another table that tells you what conditions are true on various platforms for use in reftest.list conditions.
OS | Windows | OS X | Linux-gtk | Android | iOS | |
---|---|---|---|---|---|---|
Product | Desktop | Desktop | Desktop | Fennec | GeckoView | iOS |
Android | ✓ | ✓ | ||||
geckoview | ✓ | |||||
cocoaWidget | ✓ | |||||
gtkWidget | ✓ | |||||
qtWidget | ||||||
winWidget | ✓ |
Mochitest conditions
Here is another table that tells you what different condition values are on various platforms for use in mochitest.ini/a11y.ini/chrome.ini/browser.ini conditions.
OS | Windows | OS X | Linux-gtk | Android | iOS | |
---|---|---|---|---|---|---|
Product | Desktop | Desktop | Desktop | Fennec | GeckoView | iOS |
os | win | mac | linux | android | android | ?? |
toolkit | windows | cocoa | gtk2 or gtk3 | android | android | ?? |
buildapp | ?? | ?? | ?? | mobile/android | ?? | ?? |
You may also be interested in Platform/Channel-specific_build_defines