wxWidgets/build/bakefiles/config.bkl
Vadim Zeitlin f69dbaa1ae Introduce MSW ARM64 support
This is a preliminary ARM64 platform support for wxWidgets at "it
compiles" stage. This will allow building and testing wxWidgets based
apps for oncoming Windows 10 ARM64.

Requirements:
- Visual Studio 2017 Update 4 or later with Visual C++ compilers and
  libraries for ARM64 component installed

Building:
1. Open command prompt.
2. Change directory to build\msw subfolder.
3. Run "C:\Program Files (x86)\Microsoft Visual
   Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" once.
4. Use `nmake TARGET_CPU=ARM64 ...` to build required flavor of wxWidget
   libraries.

Notes:
1. Building of *.sln/*.vcxproj files does not support ARM64 yet. This
   requires to hardcode Windows SDK to 10.0.15063.0 or later in
   *.vcxproj files, which would render them non-compilable in older
   Visual Studio versions. Microsoft is aware of this issue and is
   planning a fix in the next version of Visual Studio.
2. wxmsw31ud_gl.dll does not build yet. Awaiting Microsoft to deliver
   missing opengl32.lib for ARM64. Please, specify USE_OPENGL=0.

Closes https://github.com/wxWidgets/wxWidgets/pull/923
2018-09-17 22:34:32 +02:00

549 lines
18 KiB
XML

<?xml version="1.0" ?>
<makefile>
<set var="IS_MSVC_PRJ">
$(FORMAT in ['msvc6prj','msvs2003prj','msvs2005prj','msvs2008prj'])
</set>
<set var="IS_MSVC">
$(IS_MSVC_PRJ=='1' or FORMAT=='msvc')
</set>
<set var="BUILDING_LIB" overwrite="0">0</set>
<set var="CPP_DEFAULT_VALUE">
<if cond="FORMAT=='borland'">
cpp32 -Sr -oCON
</if>
<if cond="FORMAT=='mingw'">
$(DOLLAR)(CC) -E
</if>
<if cond="FORMAT=='msvc'">
$(DOLLAR)(CC) /EP /nologo
</if>
<if cond="FORMAT=='watcom'">
$(DOLLAR)(CC) -p
</if>
</set>
<option name="CPP">
<default-value>
$(CPP_DEFAULT_VALUE)
</default-value>
<description>
The C preprocessor
</description>
</option>
<option name="SHARED">
<values>0,1</values>
<values-description>,DLL</values-description>
<default-value>0</default-value>
<description>
What type of library to build?
</description>
</option>
<if cond="FORMAT!='autoconf'">
<option name="TOOLKIT">
<values>MSW,GTK</values>
<values-description>,GTK+</values-description>
<default-value>MSW</default-value>
<description>
Used toolkit
</description>
</option>
<if cond="FORMAT not in ['autoconf','msvc6prj','msvs2003prj','msvs2005prj','msvs2008prj']">
<option name="TOOLKIT_VERSION">
<values>,2</values>
<values-description>,2</values-description>
<default-value></default-value>
<description>
GTK+ toolkit version
</description>
</option>
</if>
<!-- We must make TOOLKIT a constant under Windows -->
<if cond="FORMAT in ['borland','mingw','msvc','watcom', 'msvc6prj', 'msvs2003prj', 'msvs2005prj', 'msvs2008prj']">
<set var="TOOLKIT">MSW</set>
</if>
</if>
<!--
Don't include wxUniversal configurations in project files, they
confuse people who don't know what "Universal" means and double the
number of configurations. If you do need to build wxUniversal, either
use the make files or comment out the 3 lines below and rerun
bakefile_gen to regenerate the projects with them.
-->
<if cond="IS_MSVC_PRJ=='1'">
<set var="WXUNIV">0</set>
</if>
<if cond="IS_MSVC_PRJ=='0'">
<option name="WXUNIV">
<values>0,1</values>
<values-description>,Universal</values-description>
<default-value>0</default-value>
<description>
Build wxUniversal instead of native port?
</description>
</option>
</if>
<!-- don't include ANSI configuration in project files, it's going to be
eventually removed anyway and it only doubles the number of build
configs in projects: -->
<if cond="IS_MSVC_PRJ=='1'">
<set var="UNICODE">1</set>
</if>
<if cond="IS_MSVC_PRJ=='0'">
<option name="UNICODE">
<values>0,1</values>
<values-description>,Unicode</values-description>
<default-value>1</default-value>
<description>
Compile Unicode build of wxWidgets?
</description>
</option>
</if>
<option name="BUILD">
<values>debug,release</values>
<values-description>Debug,Release</values-description>
<default-value>debug</default-value>
<description>
Type of compiled binaries
</description>
</option>
<if cond="FORMAT=='msvc'">
<option name="TARGET_CPU">
<default-value>$(DOLLAR)(CPU)</default-value>
<description>
The target processor architecture must be specified when it is not X86.
This does not affect the compiler output, so you still need to make sure
your environment is set up appropriately with the correct compiler in the
PATH. Rather it affects some options passed to some of the common build
utilities such as the resource compiler and the linker.
Accepted values: IA64, X64, ARM64
(AMD64 accepted as synonym for X64 but should not be used any more).
</description>
</option>
</if>
<if cond="FORMAT!='msvc'">
<set var="TARGET_CPU"/>
</if>
<!--
For MSVC enable debug information in all builds: it is needed to be
able to debug the crash dumps produced by wxDebugReport and as it
generates it in separate PDB files it doesn't cost us much to enable it
(except for disk space...).
-->
<set var="DEBUG_INFO_DEFAULT">
<if cond="IS_MSVC=='1'">1</if>
<if cond="IS_MSVC=='0'">default</if>
</set>
<option name="DEBUG_INFO">
<values>0,1,default</values>
<default-value>$(DEBUG_INFO_DEFAULT)</default-value>
<description>
Should debugging info be included in the executables? The default value
"default" means that debug info will be included if BUILD=debug
and not included if BUILD=release.
</description>
</option>
<option name="DEBUG_FLAG">
<values>0,1,default</values>
<default-value>1</default-value>
<description>
Value of wxDEBUG_LEVEL. The default value is the same as 1 and means that all
but expensive assert checks are enabled, use 0 to completely remove debugging
code.
</description>
</option>
<if cond="FORMAT=='msvc'">
<option name="DEBUG_RUNTIME_LIBS">
<values>0,1,default</values>
<default-value>default</default-value>
<description>
Link against debug (e.g. msvcrtd.dll) or release (msvcrt.dll) RTL?
Default is to use debug CRT if and only if BUILD==debug.
</description>
</option>
</if>
<if cond="FORMAT!='msvc'">
<set var="DEBUG_RUNTIME_LIBS">default</set>
</if>
<set var="MONOLITHIC_DEFAULT">
<if cond="FORMAT=='watcom'">1</if>
<if cond="FORMAT!='watcom'">0</if>
</set>
<option name="MONOLITHIC">
<values>0,1</values>
<values-description>Multilib,Monolithic</values-description>
<default-value>$(MONOLITHIC_DEFAULT)</default-value>
<description>
Multiple libraries or single huge monolithic one?
</description>
</option>
<if cond="FORMAT=='autoconf'"> <!-- FIXME - temporary -->
<option name="USE_PLUGINS">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build parts of the library as dynamically loadable plugins
(only supported in multilib build)?
</description>
</option>
</if>
<if cond="FORMAT!='autoconf'">
<set var="USE_PLUGINS">0</set> <!-- FIXME - temporary -->
</if>
<option name="USE_GUI">
<values>0,1</values>
<values-description>Base,GUI</values-description>
<default-value>1</default-value>
<description>
Build GUI libraries?
</description>
</option>
<option name="USE_HTML">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxHTML library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_WEBVIEW">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxWebView library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_MEDIA">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build multimedia library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_XRC">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxXRC library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_AUI">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxAUI library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_RIBBON">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxRibbon library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_PROPGRID">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxPropertyGrid library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_RICHTEXT">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxRichTextCtrl library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_STC">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build wxStyledTextCtrl library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_OPENGL">
<values>0,1</values>
<default-value>1</default-value>
<description>
Build OpenGL canvas library (USE_GUI must be 1)?
</description>
</option>
<!-- currently only VC++ can compile wxDebugReport which is in QA lib -->
<set var="USE_QA_DEFAULT">
<if cond="FORMAT in ['msvc','msvc6prj','msvs2003prj','msvs2005prj','msvs2008prj']">1</if>
<if cond="FORMAT not in ['msvc','msvc6prj','msvs2003prj','msvs2005prj','msvs2008prj']">0</if>
</set>
<option name="USE_QA">
<values>0,1</values>
<default-value>$(USE_QA_DEFAULT)</default-value>
<description>
Build quality assurance classes library (USE_GUI must be 1)?
</description>
</option>
<option name="USE_EXCEPTIONS">
<values>0,1</values>
<default-value>1</default-value>
<description>
Enable exceptions in compiled code.
</description>
</option>
<option name="USE_RTTI">
<values>0,1</values>
<default-value>1</default-value>
<description>
Enable run-time type information (RTTI) in compiled code.
</description>
</option>
<option name="USE_THREADS">
<values>0,1</values>
<default-value>1</default-value>
<description>
Enable threading in compiled code.
</description>
</option>
<option name="USE_CAIRO">
<values>0,1</values>
<default-value>0</default-value>
<description>
Enable wxCairoContext for platforms other than Linux/GTK.
</description>
</option>
<option name="OFFICIAL_BUILD">
<values>0,1</values>
<default-value>0</default-value>
<description>
Is this official build by wxWidgets developers?
</description>
</option>
<option name="VENDOR">
<default-value>custom</default-value>
<description>
Use this to name your customized DLLs differently
</description>
</option>
<!-- These basically do what vendor does in the places it didn't. -->
<!-- They should all be unified under some suitable descriptor -->
<option name="WX_FLAVOUR">
<default-value></default-value>
</option>
<option name="WX_LIB_FLAVOUR">
<default-value></default-value>
</option>
<option name="CFG">
<default-value></default-value>
<description>
Name of your custom configuration. This affects directory
where object files are stored as well as the location of
compiled .lib files and setup.h under the lib/ toplevel directory.
</description>
</option>
<!-- ================================================================== -->
<!-- Autoconf -->
<!-- ================================================================== -->
<if cond="FORMAT=='autoconf'">
<option name="TOOLKIT"/>
<option name="TOOLKIT_LOWERCASE"/>
<option name="TOOLKIT_VERSION"/>
<option name="TOOLCHAIN_NAME"/>
<option name="TOOLCHAIN_FULLNAME"/>
<option name="EXTRALIBS"/>
<option name="EXTRALIBS_XML"/>
<option name="EXTRALIBS_HTML"/>
<option name="EXTRALIBS_MEDIA"/>
<option name="EXTRALIBS_GUI"/>
<option name="EXTRALIBS_OPENGL"/>
<option name="EXTRALIBS_SDL"/>
<option name="EXTRALIBS_WEBVIEW"/>
<option name="CXXWARNINGS"/>
<option name="HOST_SUFFIX"/>
<option name="DYLIB_RPATH_INSTALL"/>
<option name="DYLIB_RPATH_POSTLINK"/>
<option name="SAMPLES_RPATH_FLAG"/>
<option name="SAMPLES_CXXFLAGS"/>
<option name="USE_WEBVIEW_WEBKIT2"/>
<!-- see configure.in; it's required by some samples on Mac OS X -->
<option name="HEADER_PAD_OPTION"/>
<set var="TOP_SRCDIR">$(top_srcdir)/</set>
<set var="RUNTIME_LIBS">dynamic</set>
<set var="WXTOPDIR"/> <!-- to be overridden on bakefile cmd line -->
<option name="WITH_PLUGIN_SDL">
<values>0,1</values>
</option>
<option name="wx_top_builddir"/>
</if>
<!-- ================================================================== -->
<!-- windows/dos compilers -->
<!-- ================================================================== -->
<if cond="FORMAT!='autoconf'">
<option name="RUNTIME_LIBS">
<values>dynamic,static</values>
<default-value>dynamic</default-value>
<description>
Version of C runtime library to use. You can change this to
static if SHARED=0, but it is highly recommended to not do
it if SHARED=1 unless you know what you are doing.
</description>
</option>
<set var="WXTOPDIR"/> <!-- to be overridden on bakefile cmd line -->
<set var="WIN32_TOOLKIT">
<if cond="TOOLKIT=='MSW'">MSW</if>
<if cond="TOOLKIT=='GTK'">GTK</if>
</set>
<set var="WIN32_TOOLKIT_LOWERCASE">
<if cond="TOOLKIT=='MSW'">msw</if>
<if cond="TOOLKIT=='GTK'">gtk</if>
</set>
<set var="TOOLKIT" overwrite="0">
<if cond="FORMAT=='msvs2005prj' and MSVS_PLATFORMS=='win32,win64'">$(WIN32_TOOLKIT)</if>
<if cond="FORMAT=='msvs2008prj' and MSVS_PLATFORMS=='win32,win64'">$(WIN32_TOOLKIT)</if>
<if cond="FORMAT not in ['msvs2005prj','msvs2008prj'] and PLATFORM_WIN32=='1'">$(WIN32_TOOLKIT)</if>
</set>
<set var="TOOLKIT_LOWERCASE">
<if cond="FORMAT=='msvs2005prj' and MSVS_PLATFORMS=='win32,win64'">$(WIN32_TOOLKIT_LOWERCASE)</if>
<if cond="FORMAT=='msvs2008prj' and MSVS_PLATFORMS=='win32,win64'">$(WIN32_TOOLKIT_LOWERCASE)</if>
<if cond="FORMAT not in ['msvs2005prj','msvs2008prj'] and PLATFORM_WIN32=='1'">$(WIN32_TOOLKIT_LOWERCASE)</if>
</set>
<if cond="FORMAT in ['msvc6prj','msvs2003prj','msvs2005prj','msvs2008prj']">
<set var="TOOLKIT_VERSION">
<if cond="PLATFORM_WIN32=='1' and TOOLKIT=='GTK'">2</if>
</set>
</if>
<set var="HOST_SUFFIX"/>
<set var="EXTRACFLAGS"/>
<set var="EXTRALIBS"/>
<set var="EXTRALIBS_XML"/>
<set var="EXTRALIBS_HTML"/>
<set var="EXTRALIBS_MEDIA"/>
<set var="EXTRALIBS_GUI"/>
<set var="EXTRALIBS_OPENGL">
<if cond="COMPILER=='wat' and TOOLKIT=='MSW'">opengl32.lib glu32.lib</if>
<if cond="COMPILER in ['vc','evc']">opengl32.lib glu32.lib</if>
<if cond="COMPILER=='gcc'">-lopengl32 -lglu32</if>
</set>
<set var="EXTRALIBS_SDL"/>
<set var="EXTRALIBS_WEBVIEW"/>
<set var="WITH_PLUGIN_SDL">0</set>
<if cond="BUILDING_LIB=='1'">
<set-srcdir>../..</set-srcdir>
</if>
<set var="TOP_SRCDIR">$(SRCDIR)/$(WXTOPDIR)</set>
</if>
<if cond="FORMAT=='mingw'">
<option name="GCC_VERSION">
<values>3,2.95</values>
<default-value>3</default-value>
<description>
Set the version of your Mingw installation here.
"3" ...... this is for Mingw 2.0 or newer (comes with gcc3)
"2.95" ... for Mingw 1.1 or any of the older versions
</description>
</option>
<option name="WINDRES">
<default-value>windres --use-temp-file</default-value>
<description>
Windows resource compiler to use, possibly including extra options.
For example, add "-F pe-i386" here if using 64 bit windres for 32 bit build.
</description>
</option>
<set var="GCCFLAGS">
<if cond="GCC_VERSION=='2.95'">-fvtable-thunks</if>
</set>
<set var="EXTRACFLAGS">$(GCCFLAGS) -DHAVE_W32API_H</set>
</if>
<!-- ================================================================== -->
<!-- Project files - hardcode some defaults -->
<!-- ================================================================== -->
<if cond="FORMAT_SUPPORTS_CONDITIONS=='0'">
<set var="RUNTIME_LIBS">dynamic</set>
<set var="OFFICIAL_BUILD">0</set>
<set var="USE_AUI">1</set>
<set var="USE_RIBBON">1</set>
<set var="USE_PROPGRID">1</set>
<set var="USE_RICHTEXT">1</set>
<set var="USE_STC">1</set>
<set var="USE_HTML">1</set>
<set var="USE_WEBVIEW">1</set>
<set var="USE_MEDIA">1</set>
<set var="USE_XRC">1</set>
<set var="USE_OPENGL">1</set>
<set var="USE_QA">1</set>
<set var="MONOLITHIC">0</set>
<set var="USE_GUI">1</set>
<set var="USE_EXCEPTIONS">1</set>
<set var="USE_RTTI">1</set>
<set var="USE_THREADS">1</set>
<set var="USE_CAIRO">0</set>
<set var="DEBUG_INFO">$(DEBUG_INFO_DEFAULT)</set>
<set var="DEBUG_FLAG">default</set>
</if>
<!-- DigitalMars make is braindead, it doesn't have conditional
processing: -->
<if cond="FORMAT=='dmars'">
<set var="RUNTIME_LIBS">static</set>
<set var="BUILD">debug</set>
<set var="SHARED">0</set>
<set var="WXUNIV">0</set>
<set var="UNICODE">1</set>
<!-- Free version does not distribute OpenGL,
in commercial distribution better use dmars_smake format -->
<set var="USE_OPENGL">0</set>
</if>
</makefile>