From 8cf2b683be2c2878c2406d463f526524c5856b53 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Dec 2018 22:27:25 +0100 Subject: [PATCH 1/6] CMake: Fix installation include directory --- build/cmake/install.cmake | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake index 734a2af88a..5e30a933f2 100644 --- a/build/cmake/install.cmake +++ b/build/cmake/install.cmake @@ -12,13 +12,19 @@ if(NOT wxBUILD_INSTALL) endif() install(CODE "message(STATUS \"Installing: Headers...\")") -wx_install( - DIRECTORY "${wxSOURCE_DIR}/include/wx" - DESTINATION "include") -if(MSVC) +if(UNIX) wx_install( - DIRECTORY "${wxSOURCE_DIR}/include/msvc" + DIRECTORY "${wxSOURCE_DIR}/include/wx" + DESTINATION "include/wx-${wxMAJOR_VERSION}.${wxMINOR_VERSION}") +else() + wx_install( + DIRECTORY "${wxSOURCE_DIR}/include/wx" DESTINATION "include") + if(MSVC) + wx_install( + DIRECTORY "${wxSOURCE_DIR}/include/msvc" + DESTINATION "include") + endif() endif() # setup header and wx-config From bc4b56bf88bc02b5c196996e436d6f435ac0e135 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Dec 2018 22:32:44 +0100 Subject: [PATCH 2/6] CMake: Reorder items in config.cmake Group similar items together. --- build/cmake/config.cmake | 80 ++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index b89cbac302..9a1b9b855a 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -43,74 +43,82 @@ endfunction() function(wx_write_config) # TODO: set variables + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix $) + wx_string_append(exec_prefix "{prefix}") set(includedir "$") wx_string_append(includedir "{prefix}/include") set(libdir "$") wx_string_append(libdir "{exec_prefix}/lib") set(bindir "$") wx_string_append(bindir "{exec_prefix}/bin") - if(CMAKE_CROSSCOMPILING) - set(cross_compiling yes) - else() - set(cross_compiling no) - endif() - set(prefix ${CMAKE_INSTALL_PREFIX}) - set(exec_prefix $) - wx_string_append(exec_prefix "{prefix}") - set(BUILT_WX_LIBS) - foreach(lib IN LISTS wxLIB_TARGETS) - wx_string_append(BUILT_WX_LIBS " ${lib}") - endforeach() - set(CC ${CMAKE_C_COMPILER}) - set(CXX ${CMAKE_CXX_COMPILER}) - set(DMALLOC_LIBS) + find_program(EGREP egrep) mark_as_advanced(EGREP) - set(EXTRALIBS_GUI) - set(EXTRALIBS_HTML) - set(EXTRALIBS_SDL) - set(EXTRALIBS_STC) - set(EXTRALIBS_WEBVIEW) - set(EXTRALIBS_XML) - set(LDFLAGS_GL) + if(wxBUILD_MONOLITHIC) set(MONOLITHIC 1) else() set(MONOLITHIC 0) endif() - set(OPENGL_LIBS) - set(RESCOMP) if(wxBUILD_SHARED) set(SHARED 1) else() set(SHARED 0) endif() - set(STD_BASE_LIBS) - set(STD_GUI_LIBS) - #TODO: setting TOOLCHAIN_NAME produces change results in config folder -# set(TOOLCHAIN_NAME) - set(TOOLKIT_DIR ${wxBUILD_TOOLKIT}) - set(TOOLKIT_VERSION) - set(WIDGET_SET ${wxBUILD_WIDGETSET}) if(wxUSE_UNICODE) set(WX_CHARTYPE unicode) else() set(WX_CHARTYPE ansi) endif() + if(CMAKE_CROSSCOMPILING) + set(cross_compiling yes) + set(host_alias ${CMAKE_SYSTEM_NAME}) + else() + set(cross_compiling no) + endif() + + set(BUILT_WX_LIBS) + foreach(lib IN LISTS wxLIB_TARGETS) + wx_string_append(BUILT_WX_LIBS " ${lib}") + endforeach() + set(STD_BASE_LIBS) + set(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}) + #TODO: setting TOOLCHAIN_NAME produces change results in config folder +# set(TOOLCHAIN_NAME) set(WX_LIBRARY_BASENAME_GUI) set(WX_LIBRARY_BASENAME_NOGUI) - set(WX_RELEASE ${wxMAJOR_VERSION}.${wxMINOR_VERSION}) - set(WX_SUBVERSION ${wxVERSION}.0) - set(WX_VERSION ${wxVERSION}) + + set(WXCONFIG_LIBS) + set(EXTRALIBS_GUI) + set(EXTRALIBS_SDL) + set(EXTRALIBS_HTML) + set(EXTRALIBS_STC) + set(EXTRALIBS_WEBVIEW) + set(EXTRALIBS_XML) + set(EXTRALIBS_MEDIA) + set(OPENGL_LIBS) + set(DMALLOC_LIBS) + + set(CC ${CMAKE_C_COMPILER}) + set(CXX ${CMAKE_CXX_COMPILER}) set(WXCONFIG_CFLAGS) + set(WXCONFIG_LDFLAGS) set(WXCONFIG_CPPFLAGS) set(WXCONFIG_CXXFLAGS) - set(WXCONFIG_LDFLAGS) set(WXCONFIG_LDFLAGS_GUI) - set(WXCONFIG_LIBS) set(WXCONFIG_RESFLAGS) set(WXCONFIG_RPATH) + set(LDFLAGS_GL) + set(RESCOMP) wx_configure_script( "${CMAKE_CURRENT_SOURCE_DIR}/wx-config.in" From 33a550d97f983c24e58c0a6b420adfed21326deb Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Dec 2018 22:35:31 +0100 Subject: [PATCH 3/6] CMake: Set wx-config base, gui and built libraries Remove unused propagated variables. --- build/cmake/config.cmake | 21 ++++++++++++++++++--- build/cmake/functions.cmake | 3 --- build/cmake/lib/CMakeLists.txt | 5 ----- build/cmake/tests/CMakeLists.txt | 3 --- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index 9a1b9b855a..fe54de54f4 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -79,11 +79,26 @@ function(wx_write_config) endif() set(BUILT_WX_LIBS) - foreach(lib IN LISTS wxLIB_TARGETS) - wx_string_append(BUILT_WX_LIBS " ${lib}") - endforeach() 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) + if(TARGET ${lib}) + 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}) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index b12e60d13c..57c24ea068 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -313,8 +313,6 @@ macro(wx_add_library name) RUNTIME DESTINATION "lib${wxPLATFORM_LIB_DIR}" BUNDLE DESTINATION Applications/wxWidgets ) - - list(APPEND wxLIB_TARGETS ${name}) endif() endmacro() @@ -349,7 +347,6 @@ endmacro() # Enable precompiled headers for wx libraries macro(wx_finalize_lib target_name) - set(wxLIB_TARGETS ${wxLIB_TARGETS} PARENT_SCOPE) if(wxBUILD_PRECOMP) if(TARGET ${target_name}) wx_target_enable_precomp(${target_name} "${wxSOURCE_DIR}/include/wx/wxprec.h") diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 4f8fc884c2..4974d48fea 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -9,7 +9,6 @@ include(../source_groups.cmake) -set(wxLIB_TARGETS) if(wxBUILD_MONOLITHIC) # Initialize variables for monolithic build set(wxMONO_SRC_FILES) @@ -98,7 +97,3 @@ if(wxBUILD_MONOLITHIC) endforeach() wx_finalize_lib(mono) endif() - -# Propagate variable(s) to parent scope -set(wxLIB_TARGETS ${wxLIB_TARGETS} PARENT_SCOPE) -set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} PARENT_SCOPE) diff --git a/build/cmake/tests/CMakeLists.txt b/build/cmake/tests/CMakeLists.txt index e0f449f9b7..8065a14edf 100644 --- a/build/cmake/tests/CMakeLists.txt +++ b/build/cmake/tests/CMakeLists.txt @@ -16,6 +16,3 @@ add_subdirectory(drawing) add_subdirectory(gui) endif() - -# Propagate variable(s) to parent scope -set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} PARENT_SCOPE) From 12ed604cb38c8045979155283e816f38d53dca69 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Dec 2018 22:36:57 +0100 Subject: [PATCH 4/6] CMake: Set wx-config name variables --- build/cmake/config.cmake | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index fe54de54f4..56fc23ce77 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -42,16 +42,11 @@ endfunction() function(wx_write_config) - # TODO: set variables set(prefix ${CMAKE_INSTALL_PREFIX}) - set(exec_prefix $) - wx_string_append(exec_prefix "{prefix}") - set(includedir "$") - wx_string_append(includedir "{prefix}/include") - set(libdir "$") - wx_string_append(libdir "{exec_prefix}/lib") - set(bindir "$") - wx_string_append(bindir "{exec_prefix}/bin") + 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) @@ -68,8 +63,10 @@ function(wx_write_config) 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) @@ -107,10 +104,9 @@ function(wx_write_config) set(TOOLKIT_DIR ${wxBUILD_TOOLKIT}) set(TOOLKIT_VERSION) set(WIDGET_SET ${wxBUILD_WIDGETSET}) - #TODO: setting TOOLCHAIN_NAME produces change results in config folder -# set(TOOLCHAIN_NAME) - set(WX_LIBRARY_BASENAME_GUI) - set(WX_LIBRARY_BASENAME_NOGUI) + 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}") set(WXCONFIG_LIBS) set(EXTRALIBS_GUI) From c28ae123c172e18ce083edb45367c5495673e6c4 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Dec 2018 22:38:33 +0100 Subject: [PATCH 5/6] CMake: Set wx-config extra libraries and flags --- build/cmake/config.cmake | 43 +++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index 56fc23ce77..d397f0dca2 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -27,6 +27,18 @@ macro(wx_configure_script input output) ) endmacro() +macro(wx_get_dependencies var lib) + set(${var}) + if(TARGET ${lib}) + get_target_property(deps ${lib} LINK_LIBRARIES) + foreach(dep IN LISTS deps) + get_filename_component(name ${dep} NAME) + wx_string_append(${var} "${name} ") + endforeach() + string(STRIP ${${var}} ${var}) + endif() +endmacro() + function(wx_write_config_inplace) wx_configure_script( "${CMAKE_CURRENT_SOURCE_DIR}/wx-config-inplace.in" @@ -108,26 +120,33 @@ function(wx_write_config) 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}") - set(WXCONFIG_LIBS) - set(EXTRALIBS_GUI) - set(EXTRALIBS_SDL) - set(EXTRALIBS_HTML) - set(EXTRALIBS_STC) - set(EXTRALIBS_WEBVIEW) - set(EXTRALIBS_XML) - set(EXTRALIBS_MEDIA) - set(OPENGL_LIBS) + 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) set(CC ${CMAKE_C_COMPILER}) set(CXX ${CMAKE_CXX_COMPILER}) set(WXCONFIG_CFLAGS) set(WXCONFIG_LDFLAGS) - set(WXCONFIG_CPPFLAGS) - set(WXCONFIG_CXXFLAGS) + 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) + set(WXCONFIG_RPATH "-Wl,-rpath,\$libdir") set(LDFLAGS_GL) set(RESCOMP) From 28a13209a2c70871db6539e161aebc27e330fa92 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 6 Dec 2018 23:20:48 +0100 Subject: [PATCH 6/6] CMake: Compile and link with -pthread when using pthread --- build/cmake/functions.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 57c24ea068..088d685eb2 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -105,6 +105,10 @@ function(wx_set_common_target_properties target_name) endif() # TODO: add warning flags for other compilers endif() + if(CMAKE_USE_PTHREADS_INIT) + target_compile_options(${target_name} PRIVATE "-pthread") + set_target_properties(${target_name} PROPERTIES LINK_FLAGS "-pthread") + endif() endfunction() # Set common properties on wx library target