It is no use adding it to the generated setup.h because this section is commented out, so add it as compiler option instead. The default option is 'Default' in which case no compiler option is added.
226 lines
6.8 KiB
CMake
226 lines
6.8 KiB
CMake
#############################################################################
|
|
# Name: build/cmake/init.cmake
|
|
# Purpose: Initialize variables based on user selection and system
|
|
# information before creating build targets
|
|
# Author: Tobias Taschner
|
|
# Created: 2016-09-24
|
|
# Copyright: (c) 2016 wxWidgets development team
|
|
# Licence: wxWindows licence
|
|
#############################################################################
|
|
|
|
if(DEFINED wxBUILD_USE_STATIC_RUNTIME AND wxBUILD_USE_STATIC_RUNTIME)
|
|
# Set MSVC runtime flags for all configurations
|
|
foreach(cfg "" ${CMAKE_CONFIGURATION_TYPES})
|
|
set(flag_var CMAKE_CXX_FLAGS)
|
|
if(cfg)
|
|
string(TOUPPER ${cfg} cfg_upper)
|
|
wx_string_append(flag_var "_${cfg_upper}")
|
|
endif()
|
|
if(${flag_var} MATCHES "/MD")
|
|
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
if(wxBUILD_MSVC_MULTIPROC)
|
|
wx_string_append(CMAKE_C_FLAGS " /MP")
|
|
wx_string_append(CMAKE_CXX_FLAGS " /MP")
|
|
endif()
|
|
|
|
if(wxBUILD_COMPATIBILITY VERSION_LESS 3.0)
|
|
set(WXWIN_COMPATIBILITY_2_8 ON)
|
|
endif()
|
|
if(wxBUILD_COMPATIBILITY VERSION_LESS 3.1)
|
|
set(WXWIN_COMPATIBILITY_3_0 ON)
|
|
endif()
|
|
|
|
# Build wxBUILD_FILE_ID used for config and setup path
|
|
#TODO: build different id for WIN32
|
|
set(wxBUILD_FILE_ID "${wxBUILD_TOOLKIT}${wxBUILD_WIDGETSET}-")
|
|
if(wxUSE_UNICODE)
|
|
wx_string_append(wxBUILD_FILE_ID "unicode")
|
|
else()
|
|
wx_string_append(wxBUILD_FILE_ID "ansi")
|
|
endif()
|
|
if(NOT wxBUILD_SHARED)
|
|
wx_string_append(wxBUILD_FILE_ID "-static")
|
|
endif()
|
|
wx_string_append(wxBUILD_FILE_ID "-${wxMAJOR_VERSION}.${wxMINOR_VERSION}")
|
|
|
|
set(wxARCH_SUFFIX)
|
|
|
|
# TODO: include compiler version in wxCOMPILER_PREFIX ?
|
|
if(WIN32)
|
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
set(wxCOMPILER_PREFIX "vc")
|
|
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
set(wxCOMPILER_PREFIX "gcc")
|
|
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
set(wxCOMPILER_PREFIX "clang")
|
|
else()
|
|
message(FATAL_ERROR "Unknown WIN32 compiler type")
|
|
endif()
|
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(wxARCH_SUFFIX "_x64")
|
|
endif()
|
|
else()
|
|
set(wxCOMPILER_PREFIX)
|
|
endif()
|
|
|
|
if(MSVC OR MINGW)
|
|
if(wxBUILD_SHARED)
|
|
set(lib_suffix "dll")
|
|
else()
|
|
set(lib_suffix "lib")
|
|
endif()
|
|
|
|
if(MSVC)
|
|
# Include generator expression to suppress default Debug/Release pair
|
|
set(wxPLATFORM_LIB_DIR "$<1:/>${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}")
|
|
else()
|
|
set(wxPLATFORM_LIB_DIR "/${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}")
|
|
endif()
|
|
else()
|
|
set(wxPLATFORM_LIB_DIR)
|
|
endif()
|
|
|
|
if(wxBUILD_CUSTOM_SETUP_HEADER_PATH)
|
|
if(NOT EXISTS "${wxBUILD_CUSTOM_SETUP_HEADER_PATH}/wx/setup.h")
|
|
message(FATAL_ERROR "wxBUILD_CUSTOM_SETUP_HEADER_PATH needs to contain a wx/setup.h file")
|
|
endif()
|
|
set(wxSETUP_HEADER_PATH ${wxBUILD_CUSTOM_SETUP_HEADER_PATH})
|
|
else()
|
|
# Set path where setup.h will be created
|
|
if(MSVC OR MINGW)
|
|
if(wxUSE_UNICODE)
|
|
set(lib_unicode u)
|
|
else()
|
|
set(lib_unicode)
|
|
endif()
|
|
set(wxSETUP_HEADER_PATH
|
|
${wxOUTPUT_DIR}/${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}/${wxBUILD_TOOLKIT}${lib_unicode})
|
|
file(MAKE_DIRECTORY ${wxSETUP_HEADER_PATH}/wx)
|
|
file(MAKE_DIRECTORY ${wxSETUP_HEADER_PATH}d/wx)
|
|
set(wxSETUP_HEADER_FILE_DEBUG ${wxSETUP_HEADER_PATH}d/wx/setup.h)
|
|
else()
|
|
set(wxSETUP_HEADER_PATH
|
|
${wxOUTPUT_DIR}/wx/include/${wxBUILD_FILE_ID})
|
|
file(MAKE_DIRECTORY ${wxSETUP_HEADER_PATH}/wx)
|
|
endif()
|
|
endif()
|
|
set(wxSETUP_HEADER_FILE ${wxSETUP_HEADER_PATH}/wx/setup.h)
|
|
|
|
if(DEFINED wxSETUP_HEADER_FILE_DEBUG)
|
|
# Append configuration specific suffix to setup header path
|
|
wx_string_append(wxSETUP_HEADER_PATH "$<$<CONFIG:Debug>:d>")
|
|
endif()
|
|
|
|
if(wxUSE_ON_FATAL_EXCEPTION AND MSVC AND (MSVC_VERSION GREATER 1800) )
|
|
# see include/wx/msw/seh.h for more details
|
|
add_compile_options("/EHa")
|
|
endif()
|
|
|
|
if(NOT wxBUILD_DEBUG_LEVEL STREQUAL "Default")
|
|
add_compile_options("-DwxDEBUG_LEVEL=${wxBUILD_DEBUG_LEVEL}")
|
|
endif()
|
|
|
|
# Constants for setup.h creation
|
|
set(wxUSE_STD_DEFAULT ON)
|
|
if(wxUSE_UNICODE)
|
|
set(wxUSE_WCHAR_T ON)
|
|
endif()
|
|
if(NOT wxUSE_EXPAT)
|
|
set(wxUSE_XRC OFF)
|
|
endif()
|
|
set(wxUSE_XML ${wxUSE_XRC})
|
|
if(wxUSE_CONFIG)
|
|
set(wxUSE_CONFIG_NATIVE ON)
|
|
endif()
|
|
|
|
if(DEFINED wxUSE_OLE AND wxUSE_OLE)
|
|
set(wxUSE_OLE_AUTOMATION ON)
|
|
endif()
|
|
|
|
if(DEFINED wxUSE_GRAPHICS_DIRECT2D AND NOT wxUSE_GRAPHICS_CONTEXT)
|
|
set(wxUSE_GRAPHICS_DIRECT2D OFF)
|
|
endif()
|
|
|
|
if(wxUSE_OPENGL)
|
|
set(wxUSE_GLCANVAS ON)
|
|
endif()
|
|
|
|
if(wxUSE_THREADS)
|
|
find_package(Threads REQUIRED)
|
|
endif()
|
|
|
|
if(wxUSE_GUI)
|
|
if(WXMSW AND wxUSE_METAFILE)
|
|
# this one should probably be made separately configurable
|
|
set(wxUSE_ENH_METAFILE ON)
|
|
endif()
|
|
|
|
# WXQT checks
|
|
if(WXQT)
|
|
wx_option_force_value(wxUSE_WEBVIEW OFF)
|
|
wx_option_force_value(wxUSE_METAFILE OFF)
|
|
if(WIN32)
|
|
wx_option_force_value(wxUSE_ACCESSIBILITY OFF)
|
|
wx_option_force_value(wxUSE_OWNER_DRAWN OFF)
|
|
endif()
|
|
endif()
|
|
|
|
# WXGTK checks, match include/wx/gtk/chkconf.h
|
|
if(WXGTK)
|
|
wx_option_force_value(wxUSE_METAFILE OFF)
|
|
|
|
if(WIN32)
|
|
wx_option_force_value(wxUSE_CAIRO ON)
|
|
wx_option_force_value(wxUSE_ACCESSIBILITY OFF)
|
|
wx_option_force_value(wxUSE_OWNER_DRAWN OFF)
|
|
endif()
|
|
|
|
if(NOT UNIX)
|
|
wx_option_force_value(wxUSE_WEBVIEW OFF)
|
|
wx_option_force_value(wxUSE_MEDIACTRL OFF)
|
|
wx_option_force_value(wxUSE_UIACTIONSIMULATOR OFF)
|
|
wx_option_force_value(wxUSE_OPENGL OFF)
|
|
set(wxUSE_GLCANVAS OFF)
|
|
endif()
|
|
endif()
|
|
|
|
# extra dependencies
|
|
if(wxUSE_OPENGL)
|
|
find_package(OpenGL)
|
|
if(NOT OPENGL_FOUND)
|
|
message(WARNING "opengl not found, wxGLCanvas won't be available")
|
|
wx_option_force_value(wxUSE_OPENGL OFF)
|
|
endif()
|
|
endif()
|
|
|
|
if(wxUSE_WEBVIEW AND WXGTK)
|
|
find_package(LibSoup)
|
|
find_package(Webkit)
|
|
if(NOT WEBKIT_FOUND OR NOT LIBSOUP_FOUND)
|
|
message(WARNING "webkit not found, wxWebview won't be available")
|
|
wx_option_force_value(wxUSE_WEBVIEW OFF)
|
|
endif()
|
|
endif()
|
|
|
|
if(wxUSE_PRIVATE_FONTS AND WXGTK)
|
|
find_package(Fontconfig)
|
|
if(NOT FONTCONFIG_FOUND)
|
|
message(WARNING "Fontconfig not found, Private fonts won't be available")
|
|
wx_option_force_value(wxUSE_PRIVATE_FONTS OFF)
|
|
endif()
|
|
endif()
|
|
|
|
if(wxUSE_MEDIACTRL AND UNIX AND NOT APPLE AND NOT WIN32)
|
|
find_package(GStreamer)
|
|
if(NOT GSTREAMER_FOUND)
|
|
message(WARNING "GStreamer not found, wxMediaCtrl won't be available")
|
|
wx_option_force_value(wxUSE_MEDIACTRL OFF)
|
|
endif()
|
|
endif()
|
|
endif()
|