Files
wxWidgets/build/cmake/config.cmake
Maarten Bent 0f806ad96d CMake: use wx prefix in library names
Rename all library targets to start with wx. This way it does not use generic
names like base or core that could interfere with other libraries that add
include the wxWidgets project.
2020-05-17 20:01:02 +02:00

170 lines
5.4 KiB
CMake

#############################################################################
# Name: build/cmake/config.cmake
# Purpose: Build wx-config script in build folder
# Author: Tobias Taschner
# Created: 2016-10-13
# Copyright: (c) 2016 wxWidgets development team
# Licence: wxWindows licence
#############################################################################
set(wxCONFIG_DIR ${wxOUTPUT_DIR}/wx/config)
file(MAKE_DIRECTORY ${wxCONFIG_DIR})
set(TOOLCHAIN_FULLNAME ${wxBUILD_FILE_ID})
macro(wx_configure_script input output)
set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR})
set(abs_top_builddir ${CMAKE_CURRENT_BINARY_DIR})
configure_file(
${input}
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${output}
ESCAPE_QUOTES @ONLY NEWLINE_STYLE UNIX)
file(COPY
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${output}
DESTINATION ${wxCONFIG_DIR}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
endmacro()
macro(wx_get_dependencies var lib)
set(${var})
if(TARGET wx${lib})
get_target_property(deps wx${lib} LINK_LIBRARIES)
foreach(dep IN LISTS deps)
if(TARGET ${dep})
get_target_property(dep_name ${dep} OUTPUT_NAME)
set(dep_name "-l${dep_name}")
else()
get_filename_component(dep_name ${dep} NAME)
endif()
wx_string_append(${var} "${dep_name} ")
endforeach()
string(STRIP ${${var}} ${var})
endif()
endmacro()
function(wx_write_config_inplace)
wx_configure_script(
"${CMAKE_CURRENT_SOURCE_DIR}/wx-config-inplace.in"
"inplace-${TOOLCHAIN_FULLNAME}"
)
execute_process(
COMMAND
${CMAKE_COMMAND} -E create_symlink
"lib/wx/config/inplace-${TOOLCHAIN_FULLNAME}"
"${CMAKE_CURRENT_BINARY_DIR}/wx-config"
)
endfunction()
function(wx_write_config)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}")
set(includedir "\${prefix}/include")
set(libdir "\${exec_prefix}/lib")
set(bindir "\${exec_prefix}/bin")
find_program(EGREP egrep)
mark_as_advanced(EGREP)
if(wxBUILD_MONOLITHIC)
set(MONOLITHIC 1)
else()
set(MONOLITHIC 0)
endif()
if(wxBUILD_SHARED)
set(SHARED 1)
else()
set(SHARED 0)
endif()
if(wxUSE_UNICODE)
set(WX_CHARTYPE unicode)
set(lib_unicode_suffix u)
else()
set(WX_CHARTYPE ansi)
set(lib_unicode_suffix)
endif()
if(CMAKE_CROSSCOMPILING)
set(cross_compiling yes)
set(host_alias ${CMAKE_SYSTEM_NAME})
else()
set(cross_compiling no)
endif()
set(BUILT_WX_LIBS)
set(STD_BASE_LIBS)
set(STD_GUI_LIBS)
set(STD_BASE_LIBS_ALL xml net base)
set(STD_GUI_LIBS_ALL xrc html qa adv core)
foreach(lib IN ITEMS xrc webview stc richtext ribbon propgrid aui gl media html qa adv core xml net base)
list(FIND wxLIB_TARGETS wx${lib} hasLib)
if (hasLib GREATER -1)
wx_string_append(BUILT_WX_LIBS "${lib} ")
list(FIND STD_BASE_LIBS_ALL ${lib} index)
if (index GREATER -1)
wx_string_append(STD_BASE_LIBS "${lib} ")
endif()
list(FIND STD_GUI_LIBS_ALL ${lib} index)
if (index GREATER -1)
wx_string_append(STD_GUI_LIBS "${lib} ")
endif()
endif()
endforeach()
string(STRIP "${BUILT_WX_LIBS}" BUILT_WX_LIBS)
string(STRIP "${STD_BASE_LIBS}" STD_BASE_LIBS)
string(STRIP "${STD_GUI_LIBS}" STD_GUI_LIBS)
set(WX_RELEASE ${wxMAJOR_VERSION}.${wxMINOR_VERSION})
set(WX_VERSION ${wxVERSION})
set(WX_SUBVERSION ${wxVERSION}.0)
set(WX_FLAVOUR)
set(TOOLKIT_DIR ${wxBUILD_TOOLKIT})
set(TOOLKIT_VERSION)
set(WIDGET_SET ${wxBUILD_WIDGETSET})
set(TOOLCHAIN_NAME "${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}-${WX_RELEASE}")
set(WX_LIBRARY_BASENAME_GUI "wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}")
set(WX_LIBRARY_BASENAME_NOGUI "wx_base${lib_unicode_suffix}")
wx_get_dependencies(WXCONFIG_LIBS base)
wx_get_dependencies(EXTRALIBS_GUI core)
set(EXTRALIBS_SDL) # included in core libs when SDL is enabled
wx_get_dependencies(EXTRALIBS_HTML html)
wx_get_dependencies(EXTRALIBS_STC stc)
wx_get_dependencies(EXTRALIBS_WEBVIEW webview)
wx_get_dependencies(EXTRALIBS_XML xml)
wx_get_dependencies(EXTRALIBS_MEDIA media)
wx_get_dependencies(OPENGL_LIBS gl)
set(DMALLOC_LIBS)
if(wxBUILD_MONOLITHIC)
wx_get_dependencies(WXCONFIG_LIBS mono)
endif()
set(CC ${CMAKE_C_COMPILER})
set(CXX ${CMAKE_CXX_COMPILER})
set(WXCONFIG_CFLAGS)
set(WXCONFIG_LDFLAGS)
if(CMAKE_USE_PTHREADS_INIT)
set(WXCONFIG_CFLAGS "-pthread")
set(WXCONFIG_LDFLAGS "-pthread")
endif()
set(WXCONFIG_CPPFLAGS "-DWXUSINGDLL")
foreach(flag IN LISTS wxTOOLKIT_DEFINITIONS)
wx_string_append(WXCONFIG_CPPFLAGS " -D${flag}")
endforeach()
set(WXCONFIG_CXXFLAGS ${WXCONFIG_CFLAGS})
set(WXCONFIG_LDFLAGS_GUI)
set(WXCONFIG_RESFLAGS)
set(WXCONFIG_RPATH "-Wl,-rpath,\$libdir")
set(LDFLAGS_GL)
set(RESCOMP)
wx_configure_script(
"${CMAKE_CURRENT_SOURCE_DIR}/wx-config.in"
"${TOOLCHAIN_FULLNAME}"
)
endfunction()
wx_write_config_inplace()
wx_write_config()