1#############################################################################
2# Name:        build/cmake/options.cmake
3# Purpose:     User selectable build options
4# Author:      Tobias Taschner
5# Created:     2016-09-24
6# Copyright:   (c) 2016 wxWidgets development team
7# Licence:     wxWindows licence
8#############################################################################
9
10# Global build options
11wx_option(wxBUILD_SHARED "Build wx libraries as shared libs" ${BUILD_SHARED_LIBS})
12wx_option(wxBUILD_MONOLITHIC "build wxWidgets as single library" OFF)
13wx_option(wxBUILD_SAMPLES "Build only important samples (SOME) or ALL" OFF
14    STRINGS SOME ALL OFF)
15wx_option(wxBUILD_TESTS "Build console tests (CONSOLE_ONLY) or ALL" OFF
16    STRINGS CONSOLE_ONLY ALL OFF)
17wx_option(wxBUILD_DEMOS "Build demos" OFF)
18wx_option(wxBUILD_BENCHMARKS "Build benchmarks" OFF)
19wx_option(wxBUILD_PRECOMP "Use precompiled headers")
20mark_as_advanced(wxBUILD_PRECOMP)
21wx_option(wxBUILD_INSTALL "Create install/uninstall target for wxWidgets")
22wx_option(wxBUILD_COMPATIBILITY
23    "enable compatibilty with earlier wxWidgets versions" 3.0 STRINGS 2.8 3.0 3.1)
24mark_as_advanced(wxBUILD_COMPATIBILITY)
25# Allow user specified setup.h folder
26set(wxBUILD_CUSTOM_SETUP_HEADER_PATH "" CACHE PATH "Include path containing custom wx/setup.h")
27mark_as_advanced(wxBUILD_CUSTOM_SETUP_HEADER_PATH)
28
29if(WIN32)
30    wx_option(wxUSE_DPI_AWARE_MANIFEST "DPI Awareness" "per-monitor" STRINGS "none" "system" "per-monitor")
31endif()
32
33wx_option(wxBUILD_DEBUG_LEVEL "Debug Level" Default STRINGS Default 0 1 2)
34mark_as_advanced(wxBUILD_DEBUG_LEVEL)
35
36if(NOT APPLE)
37    wx_option(wxBUILD_USE_STATIC_RUNTIME "Link using the static runtime library" OFF)
38    mark_as_advanced(wxBUILD_USE_STATIC_RUNTIME)
39endif()
40
41if(MSVC)
42    wx_option(wxBUILD_MSVC_MULTIPROC "Enable multi-processor compilation for MSVC")
43    mark_as_advanced(wxBUILD_MSVC_MULTIPROC)
44endif()
45
46if(NOT MSVC OR MSVC_VERSION GREATER 1800)
47    # support setting the C++ standard, present it an option to the user
48    if(DEFINED CMAKE_CXX_STANDARD)
49        set(wxCXX_STANDARD_DEFAULT ${CMAKE_CXX_STANDARD})
50    else()
51        set(wxCXX_STANDARD_DEFAULT COMPILER_DEFAULT)
52    endif()
53    wx_option(wxBUILD_CXX_STANDARD "C++ standard used to build wxWidgets targets"
54              ${wxCXX_STANDARD_DEFAULT} STRINGS COMPILER_DEFAULT 98 11 14 17 20)
55endif()
56
57if(WIN32)
58    set(wxBUILD_VENDOR "custom" CACHE STRING "Short string identifying your company (used in DLL name)")
59endif()
60set(wxBUILD_FLAVOUR "" CACHE STRING "Specify a name to identify the build")
61mark_as_advanced(wxBUILD_FLAVOUR)
62
63wx_option(wxBUILD_OPTIMISE "use speed-optimised C/C++ compiler flags for release build" OFF)
64mark_as_advanced(wxBUILD_OPTIMISE)
65if(MSVC)
66    set(wxBUILD_STRIPPED_RELEASE_DEFAULT OFF)
67else()
68    set(wxBUILD_STRIPPED_RELEASE_DEFAULT ON)
69endif()
70wx_option(wxBUILD_STRIPPED_RELEASE "remove debug symbols in release build" ${wxBUILD_STRIPPED_RELEASE_DEFAULT})
71mark_as_advanced(wxBUILD_STRIPPED_RELEASE)
72wx_option(wxBUILD_PIC "Enable position independent code (PIC)." ON)
73mark_as_advanced(wxBUILD_PIC)
74wx_option(wxUSE_NO_RTTI "disable RTTI support" OFF)
75
76# STL options
77wx_option(wxUSE_STL "use standard C++ classes for everything" OFF)
78set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_STL "use C++ STL classes")
79wx_dependent_option(wxUSE_STD_CONTAINERS "use standard C++ container classes" ON "wxUSE_STL" OFF)
80
81wx_option(wxUSE_UNICODE "compile with Unicode support (NOT RECOMMENDED to be turned off)")
82if(NOT WIN32)
83    wx_option(wxUSE_UNICODE_UTF8 "use UTF-8 representation for strings (Unix only)" OFF)
84    wx_dependent_option(wxUSE_UTF8_LOCALE_ONLY "only support UTF-8 locales in UTF-8 build (Unix only)" ON "wxUSE_UNICODE_UTF8" OFF)
85endif()
86
87wx_option(wxUSE_COMPILER_TLS "enable use of compiler TLS support")
88if(NOT WIN32)
89    wx_option(wxUSE_VISIBILITY "use of ELF symbols visibility")
90endif()
91wx_option(wxUSE_UNSAFE_WXSTRING_CONV "provide unsafe implicit conversions in wxString to const char* or std::string")
92wx_option(wxUSE_REPRODUCIBLE_BUILD "enable reproducable build" OFF)
93
94# ---------------------------------------------------------------------------
95# external libraries
96# ---------------------------------------------------------------------------
97
98wx_add_thirdparty_library(wxUSE_REGEX REGEX "enable support for wxRegEx class" DEFAULT builtin)
99wx_add_thirdparty_library(wxUSE_ZLIB ZLIB "use zlib for LZW compression" DEFAULT_APPLE sys)
100wx_add_thirdparty_library(wxUSE_EXPAT EXPAT "use expat for XML parsing" DEFAULT_APPLE sys)
101wx_add_thirdparty_library(wxUSE_LIBJPEG JPEG "use libjpeg (JPEG file format)")
102wx_add_thirdparty_library(wxUSE_LIBPNG PNG "use libpng (PNG image format)")
103wx_add_thirdparty_library(wxUSE_LIBTIFF TIFF "use libtiff (TIFF file format)")
104
105wx_option(wxUSE_LIBLZMA "use LZMA compression" OFF)
106set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_LIBLZMA "use liblzma for LZMA compression")
107
108wx_option(wxUSE_OPENGL "use OpenGL (or Mesa)")
109
110if(UNIX)
111    wx_option(wxUSE_LIBSDL "use SDL for audio on Unix")
112    wx_option(wxUSE_LIBICONV "use libiconv (character conversion)")
113    wx_option(wxUSE_LIBNOTIFY "use libnotify for notifications")
114    wx_option(wxUSE_XTEST "use XTest extension")
115    wx_option(wxUSE_LIBMSPACK "use libmspack (CHM help files loading)")
116    wx_option(wxUSE_LIBGNOMEVFS "use GNOME VFS for associating MIME types")
117    wx_option(wxUSE_GLCANVAS_EGL "use EGL backend for wxGLCanvas")
118
119    set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_LIBSDL "use SDL for audio on Unix")
120    set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_LIBMSPACK "use libmspack (CHM help files loading)")
121endif()
122
123# ---------------------------------------------------------------------------
124# optional non GUI features
125# ---------------------------------------------------------------------------
126wx_option(wxUSE_INTL "use internationalization system")
127wx_option(wxUSE_XLOCALE "use x-locale support (requires wxLocale)")
128wx_option(wxUSE_CONFIG "use wxConfig (and derived) classes")
129
130wx_option(wxUSE_SOCKETS "use socket/network classes")
131wx_option(wxUSE_IPV6 "enable IPv6 support in wxSocket")
132if(WIN32)
133    wx_option(wxUSE_OLE "use OLE classes")
134endif()
135wx_option(wxUSE_DATAOBJ "use data object classes")
136
137wx_option(wxUSE_IPC "use interprocess communication (wxSocket etc.)")
138
139wx_option(wxUSE_CONSOLE_EVENTLOOP "use event loop in console programs too")
140
141# please keep the settings below in alphabetical order
142wx_option(wxUSE_ANY "use wxAny class")
143wx_option(wxUSE_APPLE_IEEE "use the Apple IEEE codec")
144wx_option(wxUSE_ARCHIVE_STREAMS "use wxArchive streams")
145wx_option(wxUSE_BASE64 "use base64 encoding/decoding functions")
146wx_option(wxUSE_STACKWALKER "use wxStackWalker class for getting backtraces")
147wx_option(wxUSE_ON_FATAL_EXCEPTION "catch signals in wxApp::OnFatalException")
148wx_option(wxUSE_CMDLINE_PARSER "use wxCmdLineParser class")
149wx_option(wxUSE_DATETIME "use wxDateTime class")
150wx_option(wxUSE_DEBUGREPORT "use wxDebugReport class")
151if(APPLE)
152    set(wxUSE_DIALUP_MANAGER_DEFAULT OFF)
153else()
154    set(wxUSE_DIALUP_MANAGER_DEFAULT ON)
155endif()
156wx_option(wxUSE_DIALUP_MANAGER "use dialup network classes" ${wxUSE_DIALUP_MANAGER_DEFAULT})
157wx_option(wxUSE_DYNLIB_CLASS "use wxLibrary class for DLL loading")
158wx_option(wxUSE_DYNAMIC_LOADER "use (new) wxDynamicLibrary class")
159wx_option(wxUSE_EXCEPTIONS "build exception-safe library")
160wx_option(wxUSE_EXTENDED_RTTI "use extended RTTI (XTI)" OFF)
161wx_option(wxUSE_FFILE "use wxFFile class")
162wx_option(wxUSE_FILE "use wxFile class")
163wx_option(wxUSE_FILE_HISTORY "use wxFileHistory class")
164wx_option(wxUSE_FILESYSTEM "use virtual file systems classes")
165wx_option(wxUSE_FONTENUM "use wxFontEnumerator class")
166wx_option(wxUSE_FONTMAP "use font encodings conversion classes")
167wx_option(wxUSE_FS_ARCHIVE "use virtual archive filesystems")
168wx_option(wxUSE_FS_INET "use virtual HTTP/FTP filesystems")
169wx_option(wxUSE_FS_ZIP "now replaced by fs_archive")
170wx_option(wxUSE_FSVOLUME "use wxFSVolume class")
171wx_option(wxUSE_FSWATCHER "use wxFileSystemWatcher class")
172wx_option(wxUSE_GEOMETRY "use geometry class")
173wx_option(wxUSE_LOG "use logging system")
174wx_option(wxUSE_LONGLONG "use wxLongLong class")
175wx_option(wxUSE_MIMETYPE "use wxMimeTypesManager")
176wx_option(wxUSE_PRINTF_POS_PARAMS "use wxVsnprintf() which supports positional parameters")
177wx_option(wxUSE_SECRETSTORE "use wxSecretStore class")
178wx_option(wxUSE_SNGLINST_CHECKER "use wxSingleInstanceChecker class")
179wx_option(wxUSE_SOUND "use wxSound class")
180wx_option(wxUSE_STDPATHS "use wxStandardPaths class")
181wx_option(wxUSE_STOPWATCH "use wxStopWatch class")
182wx_option(wxUSE_STREAMS "use wxStream etc classes")
183wx_option(wxUSE_SYSTEM_OPTIONS "use wxSystemOptions")
184wx_option(wxUSE_TARSTREAM "use wxTar streams")
185wx_option(wxUSE_TEXTBUFFER "use wxTextBuffer class")
186wx_option(wxUSE_TEXTFILE "use wxTextFile class")
187wx_option(wxUSE_TIMER "use wxTimer class")
188wx_option(wxUSE_VARIANT "use wxVariant class")
189
190# WebRequest options
191wx_option(wxUSE_WEBREQUEST "use wxWebRequest class")
192if(WIN32)
193    wx_option(wxUSE_WEBREQUEST_WINHTTP "use wxWebRequest WinHTTP backend")
194endif()
195if(APPLE)
196    wx_option(wxUSE_WEBREQUEST_URLSESSION "use wxWebRequest URLSession backend")
197endif()
198if(APPLE OR WIN32)
199    set(wxUSE_WEBREQUEST_CURL_DEFAULT OFF)
200else()
201    set(wxUSE_WEBREQUEST_CURL_DEFAULT ON)
202endif()
203wx_option(wxUSE_WEBREQUEST_CURL "use wxWebRequest libcurl backend" ${wxUSE_WEBREQUEST_CURL_DEFAULT})
204
205wx_option(wxUSE_ZIPSTREAM "use wxZip streams")
206
207# URL-related classes
208wx_option(wxUSE_URL "use wxURL class")
209wx_option(wxUSE_PROTOCOL "use wxProtocol class")
210wx_option(wxUSE_PROTOCOL_HTTP "HTTP support in wxProtocol")
211wx_option(wxUSE_PROTOCOL_FTP "FTP support in wxProtocol")
212wx_option(wxUSE_PROTOCOL_FILE "FILE support in wxProtocol")
213
214wx_option(wxUSE_THREADS "use threads")
215
216if(WIN32)
217    if(MINGW)
218        #TODO: version check, as newer versions have no problem enabling this
219        set(wxUSE_DBGHELP_DEFAULT OFF)
220    else()
221        set(wxUSE_DBGHELP_DEFAULT ON)
222    endif()
223    wx_option(wxUSE_DBGHELP "use dbghelp.dll API" ${wxUSE_DBGHELP_DEFAULT})
224    wx_option(wxUSE_INICONF "use wxIniConfig")
225    wx_option(wxUSE_WINSOCK2 "include <winsock2.h> rather than <winsock.h>" OFF)
226    wx_option(wxUSE_REGKEY "use wxRegKey class")
227endif()
228
229if(wxUSE_GUI)
230
231# ---------------------------------------------------------------------------
232# optional "big" GUI features
233# ---------------------------------------------------------------------------
234
235wx_option(wxUSE_DOC_VIEW_ARCHITECTURE "use document view architecture")
236wx_option(wxUSE_HELP "use help subsystem")
237wx_option(wxUSE_MS_HTML_HELP "use MS HTML Help (win32)")
238wx_option(wxUSE_HTML "use wxHTML sub-library")
239wx_option(wxUSE_WXHTML_HELP "use wxHTML-based help")
240wx_option(wxUSE_XRC "use XRC resources sub-library")
241wx_option(wxUSE_XML "use the xml library (overruled by wxUSE_XRC)")
242wx_option(wxUSE_AUI "use AUI docking library")
243wx_option(wxUSE_PROPGRID "use wxPropertyGrid library")
244wx_option(wxUSE_RIBBON "use wxRibbon library")
245wx_option(wxUSE_STC "use wxStyledTextCtrl library")
246wx_option(wxUSE_CONSTRAINTS "use layout-constraints system")
247wx_option(wxUSE_LOGGUI "use standard GUI logger")
248wx_option(wxUSE_LOGWINDOW "use wxLogWindow")
249wx_option(wxUSE_LOG_DIALOG "use wxLogDialog")
250wx_option(wxUSE_MDI "use multiple document interface architecture")
251wx_option(wxUSE_MDI_ARCHITECTURE "use docview architecture with MDI")
252wx_option(wxUSE_MEDIACTRL "use wxMediaCtrl class")
253wx_option(wxUSE_RICHTEXT "use wxRichTextCtrl")
254wx_option(wxUSE_POSTSCRIPT "use wxPostscriptDC device context (default for gtk+)")
255wx_option(wxUSE_AFM_FOR_POSTSCRIPT "in wxPostScriptDC class use AFM (adobe font metrics) file for character widths")
256wx_option(wxUSE_PRINTING_ARCHITECTURE "use printing architecture")
257wx_option(wxUSE_SVG "use wxSVGFileDC device context")
258wx_option(wxUSE_WEBVIEW "use wxWebView library")
259
260# wxDC is implemented in terms of wxGraphicsContext in wxOSX so the latter
261# can't be disabled, don't even provide an option to do it
262if(APPLE)
263    set(wxUSE_GRAPHICS_CONTEXT ON)
264else()
265    wx_option(wxUSE_GRAPHICS_CONTEXT "use graphics context 2D drawing API")
266    if(WIN32)
267        wx_option(wxUSE_GRAPHICS_DIRECT2D "enable Direct2D graphics context")
268    endif()
269endif()
270
271if(WXGTK)
272    set(wxUSE_CAIRO_DEFAULT ON)
273else()
274    set(wxUSE_CAIRO_DEFAULT OFF)
275endif()
276wx_option(wxUSE_CAIRO "enable Cairo graphics context" ${wxUSE_CAIRO_DEFAULT})
277
278# ---------------------------------------------------------------------------
279# IPC &c
280# ---------------------------------------------------------------------------
281
282wx_option(wxUSE_CLIPBOARD "use wxClipboard class")
283wx_option(wxUSE_DRAG_AND_DROP "use Drag'n'Drop classes")
284
285# ---------------------------------------------------------------------------
286# optional GUI controls (in alphabetical order except the first one)
287# ---------------------------------------------------------------------------
288
289# don't set DEFAULT_wxUSE_XXX below if the option is not specified
290wx_option(wxUSE_CONTROLS "disable compilation of all standard controls")
291
292# features affecting multiple controls
293wx_option(wxUSE_MARKUP "support wxControl::SetLabelMarkup")
294
295# please keep the settings below in alphabetical order
296wx_option(wxUSE_ACCEL "use accelerators")
297wx_option(wxUSE_ACTIVITYINDICATOR "use wxActivityIndicator class")
298wx_option(wxUSE_ADDREMOVECTRL "use wxAddRemoveCtrl")
299wx_option(wxUSE_ANIMATIONCTRL "use wxAnimationCtrl class")
300wx_option(wxUSE_BANNERWINDOW "use wxBannerWindow class")
301wx_option(wxUSE_ARTPROVIDER_STD "use standard XPM icons in wxArtProvider")
302wx_option(wxUSE_ARTPROVIDER_TANGO "use Tango icons in wxArtProvider")
303wx_option(wxUSE_BMPBUTTON "use wxBitmapButton class")
304wx_option(wxUSE_BITMAPCOMBOBOX "use wxBitmapComboBox class")
305wx_option(wxUSE_BUTTON "use wxButton class")
306wx_option(wxUSE_CALENDARCTRL "use wxCalendarCtrl class")
307wx_option(wxUSE_CARET "use wxCaret class")
308wx_option(wxUSE_CHECKBOX "use wxCheckBox class")
309wx_option(wxUSE_CHECKLISTBOX "use wxCheckListBox (listbox with checkboxes) class")
310wx_option(wxUSE_CHOICE "use wxChoice class")
311wx_option(wxUSE_CHOICEBOOK "use wxChoicebook class")
312wx_option(wxUSE_COLLPANE "use wxCollapsiblePane class")
313wx_option(wxUSE_COLOURPICKERCTRL "use wxColourPickerCtrl class")
314wx_option(wxUSE_COMBOBOX "use wxComboBox class")
315wx_option(wxUSE_COMBOCTRL "use wxComboCtrl class")
316wx_option(wxUSE_COMMANDLINKBUTTON "use wxCommmandLinkButton class")
317wx_option(wxUSE_DATAVIEWCTRL "use wxDataViewCtrl class")
318wx_option(wxUSE_NATIVE_DATAVIEWCTRL "use the native wxDataViewCtrl if available")
319wx_option(wxUSE_DATEPICKCTRL "use wxDatePickerCtrl class")
320wx_option(wxUSE_DETECT_SM "use code to detect X11 session manager" OFF)
321wx_option(wxUSE_DIRPICKERCTRL "use wxDirPickerCtrl class")
322wx_option(wxUSE_DISPLAY "use wxDisplay class")
323wx_option(wxUSE_EDITABLELISTBOX "use wxEditableListBox class")
324wx_option(wxUSE_FILECTRL "use wxFileCtrl class")
325wx_option(wxUSE_FILEPICKERCTRL "use wxFilePickerCtrl class")
326wx_option(wxUSE_FONTPICKERCTRL "use wxFontPickerCtrl class")
327wx_option(wxUSE_GAUGE "use wxGauge class")
328wx_option(wxUSE_GRID "use wxGrid class")
329wx_option(wxUSE_HEADERCTRL "use wxHeaderCtrl class")
330wx_option(wxUSE_HYPERLINKCTRL "use wxHyperlinkCtrl class")
331wx_option(wxUSE_IMAGLIST "use wxImageList class")
332wx_option(wxUSE_INFOBAR "use wxInfoBar class")
333wx_option(wxUSE_LISTBOOK "use wxListbook class")
334wx_option(wxUSE_LISTBOX "use wxListBox class")
335wx_option(wxUSE_LISTCTRL "use wxListCtrl class")
336wx_option(wxUSE_NOTEBOOK "use wxNotebook class")
337wx_option(wxUSE_NOTIFICATION_MESSAGE "use wxNotificationMessage class")
338wx_option(wxUSE_ODCOMBOBOX "use wxOwnerDrawnComboBox class")
339wx_option(wxUSE_POPUPWIN "use wxPopUpWindow class")
340wx_option(wxUSE_PREFERENCES_EDITOR "use wxPreferencesEditor class")
341wx_option(wxUSE_RADIOBOX "use wxRadioBox class")
342wx_option(wxUSE_RADIOBTN "use wxRadioButton class")
343wx_option(wxUSE_RICHMSGDLG "use wxRichMessageDialog class")
344wx_option(wxUSE_RICHTOOLTIP "use wxRichToolTip class")
345wx_option(wxUSE_REARRANGECTRL "use wxRearrangeList/Ctrl/Dialog")
346wx_option(wxUSE_SASH "use wxSashWindow class")
347wx_option(wxUSE_SCROLLBAR "use wxScrollBar class and scrollable windows")
348wx_option(wxUSE_SEARCHCTRL "use wxSearchCtrl class")
349wx_option(wxUSE_SLIDER "use wxSlider class")
350wx_option(wxUSE_SPINBTN "use wxSpinButton class")
351wx_option(wxUSE_SPINCTRL "use wxSpinCtrl class")
352wx_option(wxUSE_SPLITTER "use wxSplitterWindow class")
353wx_option(wxUSE_STATBMP "use wxStaticBitmap class")
354wx_option(wxUSE_STATBOX "use wxStaticBox class")
355wx_option(wxUSE_STATLINE "use wxStaticLine class")
356wx_option(wxUSE_STATTEXT "use wxStaticText class")
357wx_option(wxUSE_STATUSBAR "use wxStatusBar class")
358wx_option(wxUSE_TASKBARBUTTON "use wxTaskBarButton class")
359wx_option(wxUSE_TASKBARICON "use wxTaskBarIcon class")
360wx_option(wxUSE_TOOLBAR_NATIVE "use native wxToolBar class")
361wx_option(wxUSE_TEXTCTRL "use wxTextCtrl class")
362if(wxUSE_TEXTCTRL)
363    # we don't have special switches to disable wxUSE_RICHEDIT[2], it doesn't
364    # seem useful to allow disabling them
365    set(wxUSE_RICHEDIT ON)
366    set(wxUSE_RICHEDIT2 ON)
367endif()
368wx_option(wxUSE_TIMEPICKCTRL "use wxTimePickerCtrl class")
369wx_option(wxUSE_TIPWINDOW "use wxTipWindow class")
370wx_option(wxUSE_TOGGLEBTN "use wxToggleButton class")
371wx_option(wxUSE_TOOLBAR "use wxToolBar class")
372wx_option(wxUSE_TOOLBOOK "use wxToolbook class")
373wx_option(wxUSE_TREEBOOK "use wxTreebook class")
374wx_option(wxUSE_TREECTRL "use wxTreeCtrl class")
375wx_option(wxUSE_TREELISTCTRL "use wxTreeListCtrl class")
376
377# ---------------------------------------------------------------------------
378# common dialogs
379# ---------------------------------------------------------------------------
380
381wx_option(wxUSE_COMMON_DIALOGS "use all common dialogs")
382wx_option(wxUSE_ABOUTDLG "use wxAboutBox")
383wx_option(wxUSE_CHOICEDLG "use wxChoiceDialog")
384wx_option(wxUSE_COLOURDLG "use wxColourDialog")
385wx_option(wxUSE_CREDENTIALDLG "use wxCredentialEntryDialog")
386wx_option(wxUSE_FILEDLG "use wxFileDialog")
387wx_option(wxUSE_FINDREPLDLG "use wxFindReplaceDialog")
388wx_option(wxUSE_FONTDLG "use wxFontDialog")
389wx_option(wxUSE_DIRDLG "use wxDirDialog")
390wx_option(wxUSE_MSGDLG "use wxMessageDialog")
391wx_option(wxUSE_NUMBERDLG "use wxNumberEntryDialog")
392wx_option(wxUSE_SPLASH "use wxSplashScreen")
393wx_option(wxUSE_TEXTDLG "use wxTextDialog")
394wx_option(wxUSE_STARTUP_TIPS "use startup tips")
395wx_option(wxUSE_PROGRESSDLG "use wxProgressDialog")
396wx_option(wxUSE_WIZARDDLG "use wxWizard")
397
398# ---------------------------------------------------------------------------
399# misc GUI options
400# ---------------------------------------------------------------------------
401
402wx_option(wxUSE_MENUS "use wxMenu and wxMenuItem classes")
403wx_option(wxUSE_MENUBAR "use wxMenuBar class")
404wx_option(wxUSE_MINIFRAME "use wxMiniFrame class")
405wx_option(wxUSE_TOOLTIPS "use wxToolTip class")
406wx_option(wxUSE_SPLINES "use spline drawing code")
407wx_option(wxUSE_MOUSEWHEEL "use mousewheel")
408wx_option(wxUSE_VALIDATORS "use wxValidator and derived classes")
409wx_option(wxUSE_BUSYINFO "use wxBusyInfo")
410wx_option(wxUSE_HOTKEY "use wxWindow::RegisterHotKey()")
411wx_option(wxUSE_JOYSTICK "use wxJoystick")
412wx_option(wxUSE_METAFILE "use wxMetaFile")
413wx_option(wxUSE_DRAGIMAGE "use wxDragImage")
414wx_option(wxUSE_UIACTIONSIMULATOR "use wxUIActionSimulator (experimental)")
415wx_option(wxUSE_DC_TRANSFORM_MATRIX "use wxDC::SetTransformMatrix and related")
416wx_option(wxUSE_WEBVIEW_WEBKIT "use wxWebView WebKit backend")
417if(WIN32 OR APPLE)
418    set(wxUSE_PRIVATE_FONTS_DEFAULT ON)
419else()
420    set(wxUSE_PRIVATE_FONTS_DEFAULT OFF)
421endif()
422wx_option(wxUSE_PRIVATE_FONTS "use fonts not installed on the system" ${wxUSE_PRIVATE_FONTS_DEFAULT})
423
424# ---------------------------------------------------------------------------
425# support for image formats that do not rely on external library
426# ---------------------------------------------------------------------------
427
428wx_option(wxUSE_PALETTE "use wxPalette class")
429wx_option(wxUSE_IMAGE "use wxImage class")
430wx_option(wxUSE_GIF "use gif images (GIF file format)")
431wx_option(wxUSE_PCX "use pcx images (PCX file format)")
432wx_option(wxUSE_TGA "use tga images (TGA file format)")
433wx_option(wxUSE_IFF "use iff images (IFF file format)")
434wx_option(wxUSE_PNM "use pnm images (PNM file format)")
435wx_option(wxUSE_XPM "use xpm images (XPM file format)")
436wx_option(wxUSE_ICO_CUR "use Windows ICO and CUR formats")
437
438# ---------------------------------------------------------------------------
439# wxMSW-only options
440# ---------------------------------------------------------------------------
441
442if(WIN32)
443    if(MSVC_VERSION GREATER 1600 AND NOT CMAKE_VS_PLATFORM_TOOLSET MATCHES "_xp$")
444        set(wxUSE_WINRT_DEFAULT ON)
445    else()
446        set(wxUSE_WINRT_DEFAULT OFF)
447    endif()
448    if(MSVC_VERSION GREATER 1800 AND NOT CMAKE_VS_PLATFORM_TOOLSET MATCHES "_xp$" AND
449        EXISTS "${wxSOURCE_DIR}/3rdparty/webview2")
450        set(wxUSE_WEBVIEW_EDGE_DEFAULT ON)
451    else()
452        set(wxUSE_WEBVIEW_EDGE_DEFAULT OFF)
453    endif()
454
455    wx_option(wxUSE_ACCESSIBILITY "enable accessibility support")
456    wx_option(wxUSE_ACTIVEX " enable wxActiveXContainer class (Win32 only)")
457    wx_option(wxUSE_CRASHREPORT "enable wxCrashReport::Generate() to create mini dumps (Win32 only)")
458    wx_option(wxUSE_DC_CACHEING "cache temporary wxDC objects (Win32 only)")
459    wx_option(wxUSE_NATIVE_PROGRESSDLG "use native progress dialog implementation")
460    wx_option(wxUSE_NATIVE_STATUSBAR "use native statusbar implementation)")
461    wx_option(wxUSE_OWNER_DRAWN "use owner drawn controls (Win32)")
462    wx_option(wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW "use PS printing in wxMSW (Win32 only)")
463    wx_option(wxUSE_TASKBARICON_BALLOONS "enable wxTaskBarIcon::ShowBalloon() method (Win32 only)")
464    wx_option(wxUSE_UXTHEME "enable support for Windows XP themed look (Win32 only)")
465    wx_option(wxUSE_WEBVIEW_EDGE "use wxWebView Edge (Chromium) backend (Windows 7+ only)" ${wxUSE_WEBVIEW_EDGE_DEFAULT})
466    wx_option(wxUSE_WEBVIEW_IE "use wxWebView IE backend (Win32 only)")
467    wx_option(wxUSE_WINRT "enable WinRT support" ${wxUSE_WINRT_DEFAULT})
468    wx_option(wxUSE_WXDIB "use wxDIB class (Win32 only)")
469endif()
470
471# this one is not really MSW-specific but it exists mainly to be turned off
472# under MSW, it should be off by default on the other platforms
473if(WIN32)
474    set(wxDEFAULT_wxUSE_AUTOID_MANAGEMENT ON)
475else()
476    set(wxDEFAULT_wxUSE_AUTOID_MANAGEMENT OFF)
477endif()
478
479wx_option(wxUSE_AUTOID_MANAGEMENT "use automatic ids management" ${wxDEFAULT_wxUSE_AUTOID_MANAGEMENT})
480
481endif() # wxUSE_GUI
482