Merge branch 'cmake-output-name' of https://github.com/MaartenBent/wxWidgets

CMake: Improve output filenames, add flavour option.

See https://github.com/wxWidgets/wxWidgets/pull/1735
This commit is contained in:
Vadim Zeitlin
2020-02-17 15:58:38 +01:00
6 changed files with 65 additions and 51 deletions

View File

@@ -122,13 +122,13 @@ endfunction()
# Set common properties on wx library target # Set common properties on wx library target
function(wx_set_target_properties target_name is_base) function(wx_set_target_properties target_name is_base)
# Set library name according to: # Set library name according to:
# docs/contrib/about-platform-toolkit-and-library-names.md # docs/contributing/about-platform-toolkit-and-library-names.md
if(is_base) if(is_base)
set(lib_toolkit base) set(lib_toolkit base)
else() else()
set(lib_toolkit ${wxBUILD_TOOLKIT}${wxBUILD_WIDGETSET}) set(lib_toolkit ${wxBUILD_TOOLKIT}${wxBUILD_WIDGETSET})
endif() endif()
if(WIN32) if(MSVC)
set(lib_version ${wxMAJOR_VERSION}${wxMINOR_VERSION}) set(lib_version ${wxMAJOR_VERSION}${wxMINOR_VERSION})
else() else()
set(lib_version ${wxMAJOR_VERSION}.${wxMINOR_VERSION}) set(lib_version ${wxMAJOR_VERSION}.${wxMINOR_VERSION})
@@ -144,47 +144,58 @@ function(wx_set_target_properties target_name is_base)
else() else()
set(lib_suffix) set(lib_suffix)
endif() endif()
set(lib_flavour "")
if(wxBUILD_FLAVOUR)
set(lib_flavour "_${wxBUILD_FLAVOUR}")
string(REPLACE "-" "_" lib_flavour ${lib_flavour})
endif()
if(WIN32) if(WIN32)
if(MSVC)
# match visual studio name
set_target_properties(${target_name}
PROPERTIES
OUTPUT_NAME "wx${lib_toolkit}${lib_version}${lib_unicode}${lib_flavour}${lib_suffix}"
OUTPUT_NAME_DEBUG "wx${lib_toolkit}${lib_version}${lib_unicode}d${lib_flavour}${lib_suffix}"
PREFIX ""
)
else()
# match configure name (mingw, cygwin)
set_target_properties(${target_name}
PROPERTIES
OUTPUT_NAME "wx_${lib_toolkit}${lib_unicode}${lib_flavour}${lib_suffix}-${lib_version}"
OUTPUT_NAME_DEBUG "wx_${lib_toolkit}${lib_unicode}d${lib_flavour}${lib_suffix}-${lib_version}"
PREFIX "lib"
)
endif()
if(wxBUILD_SHARED) if(wxBUILD_SHARED)
# Add compiler type and or vendor # Add compiler type and or vendor
set(dll_suffix "_${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}") set(dll_suffix "${lib_flavour}${lib_suffix}_${wxCOMPILER_PREFIX}")
if(wxBUILD_VENDOR) if(wxBUILD_VENDOR)
wx_string_append(dll_suffix "_${wxBUILD_VENDOR}") wx_string_append(dll_suffix "_${wxBUILD_VENDOR}")
endif() endif()
set(dll_version ${lib_version}) set(dll_version ${wxMAJOR_VERSION}${wxMINOR_VERSION})
if(wxVERSION_IS_DEV) if(wxVERSION_IS_DEV)
wx_string_append(dll_version ${wxRELEASE_NUMBER}) wx_string_append(dll_version ${wxRELEASE_NUMBER})
endif() endif()
set_target_properties(${target_name} set_target_properties(${target_name}
PROPERTIES PROPERTIES
RUNTIME_OUTPUT_NAME wx${lib_toolkit}${dll_version}${lib_unicode}${lib_suffix}${dll_suffix} RUNTIME_OUTPUT_NAME "wx${lib_toolkit}${dll_version}${lib_unicode}${dll_suffix}"
RUNTIME_OUTPUT_NAME_DEBUG wx${lib_toolkit}${dll_version}${lib_unicode}d${lib_suffix}${dll_suffix}) RUNTIME_OUTPUT_NAME_DEBUG "wx${lib_toolkit}${dll_version}${lib_unicode}d${dll_suffix}"
if(MINGW) PREFIX ""
# Modify MinGW output to match other build systems )
set_target_properties(${target_name}
PROPERTIES
PREFIX ""
IMPORT_SUFFIX .a
)
endif()
target_compile_definitions(${target_name} PRIVATE target_compile_definitions(${target_name} PRIVATE
"-DWXDLLNAME=wx${lib_toolkit}${dll_version}${lib_unicode}$<$<CONFIG:Debug>:d>${lib_suffix}${dll_suffix}") "-DWXDLLNAME=wx${lib_toolkit}${dll_version}${lib_unicode}$<$<CONFIG:Debug>:d>${dll_suffix}")
endif() endif()
set_target_properties(${target_name}
PROPERTIES
OUTPUT_NAME wx${lib_toolkit}${lib_version}${lib_unicode}${lib_suffix}
OUTPUT_NAME_DEBUG wx${lib_toolkit}${lib_version}${lib_unicode}d${lib_suffix}
PREFIX ""
)
else() else()
set_target_properties(${target_name} set_target_properties(${target_name}
PROPERTIES PROPERTIES
OUTPUT_NAME wx_${lib_toolkit}${lib_unicode}${lib_suffix}-${lib_version} OUTPUT_NAME wx_${lib_toolkit}${lib_unicode}${lib_flavour}${lib_suffix}-${lib_version}
# NOTE: wx-config can not be used to connect the libraries with the debug suffix. # NOTE: wx-config can not be used to connect the libraries with the debug suffix.
#OUTPUT_NAME_DEBUG wx_${lib_toolkit}${lib_unicode}d${lib_suffix}-${lib_version} #OUTPUT_NAME_DEBUG wx_${lib_toolkit}${lib_unicode}d${lib_flavour}${lib_suffix}-${lib_version}
OUTPUT_NAME_DEBUG wx_${lib_toolkit}${lib_unicode}${lib_suffix}-${lib_version} OUTPUT_NAME_DEBUG wx_${lib_toolkit}${lib_unicode}${lib_flavour}${lib_suffix}-${lib_version}
) )
endif() endif()
if(CYGWIN) if(CYGWIN)

View File

@@ -118,6 +118,11 @@ if(NOT wxBUILD_SHARED)
wx_string_append(wxBUILD_FILE_ID "-static") wx_string_append(wxBUILD_FILE_ID "-static")
endif() endif()
wx_string_append(wxBUILD_FILE_ID "-${wxMAJOR_VERSION}.${wxMINOR_VERSION}") wx_string_append(wxBUILD_FILE_ID "-${wxMAJOR_VERSION}.${wxMINOR_VERSION}")
if(wxBUILD_FLAVOUR)
set(lib_flavour ${wxBUILD_FLAVOUR})
string(REPLACE "-" "_" lib_flavour ${lib_flavour})
wx_string_append(wxBUILD_FILE_ID "-${lib_flavour}")
endif()
set(wxARCH_SUFFIX) set(wxARCH_SUFFIX)
@@ -140,19 +145,15 @@ else()
set(wxCOMPILER_PREFIX) set(wxCOMPILER_PREFIX)
endif() endif()
if(MSVC OR MINGW) if(MSVC)
if(wxBUILD_SHARED) if(wxBUILD_SHARED)
set(lib_suffix "dll") set(lib_suffix "dll")
else() else()
set(lib_suffix "lib") set(lib_suffix "lib")
endif() endif()
if(MSVC) # Include generator expression to suppress default Debug/Release pair
# Include generator expression to suppress default Debug/Release pair set(wxPLATFORM_LIB_DIR "$<1:/>${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}")
set(wxPLATFORM_LIB_DIR "$<1:/>${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}")
else()
set(wxPLATFORM_LIB_DIR "/${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}")
endif()
else() else()
set(wxPLATFORM_LIB_DIR) set(wxPLATFORM_LIB_DIR)
endif() endif()
@@ -164,7 +165,7 @@ if(wxBUILD_CUSTOM_SETUP_HEADER_PATH)
set(wxSETUP_HEADER_PATH ${wxBUILD_CUSTOM_SETUP_HEADER_PATH}) set(wxSETUP_HEADER_PATH ${wxBUILD_CUSTOM_SETUP_HEADER_PATH})
else() else()
# Set path where setup.h will be created # Set path where setup.h will be created
if(MSVC OR MINGW) if(MSVC)
if(wxUSE_UNICODE) if(wxUSE_UNICODE)
set(lib_unicode u) set(lib_unicode u)
else() else()

View File

@@ -12,27 +12,25 @@ if(NOT wxBUILD_INSTALL)
endif() endif()
install(CODE "message(STATUS \"Installing: Headers...\")") install(CODE "message(STATUS \"Installing: Headers...\")")
if(UNIX) if(MSVC)
wx_install(
DIRECTORY "${wxSOURCE_DIR}/include/wx"
DESTINATION "include/wx-${wxMAJOR_VERSION}.${wxMINOR_VERSION}")
else()
wx_install( wx_install(
DIRECTORY "${wxSOURCE_DIR}/include/wx" DIRECTORY "${wxSOURCE_DIR}/include/wx"
DESTINATION "include") DESTINATION "include")
if(MSVC) wx_install(
wx_install( DIRECTORY "${wxSOURCE_DIR}/include/msvc"
DIRECTORY "${wxSOURCE_DIR}/include/msvc" DESTINATION "include")
DESTINATION "include") else()
endif() wx_install(
DIRECTORY "${wxSOURCE_DIR}/include/wx"
DESTINATION "include/wx-${wxMAJOR_VERSION}.${wxMINOR_VERSION}")
endif() endif()
# setup header and wx-config # setup header and wx-config
if(MSVC OR MINGW) if(MSVC)
wx_install( wx_install(
DIRECTORY "${wxSETUP_HEADER_PATH}" DIRECTORY "${wxSETUP_HEADER_PATH}"
DESTINATION "lib${wxPLATFORM_LIB_DIR}") DESTINATION "lib${wxPLATFORM_LIB_DIR}")
elseif(UNIX) else()
wx_install( wx_install(
DIRECTORY "${wxSETUP_HEADER_PATH}" DIRECTORY "${wxSETUP_HEADER_PATH}"
DESTINATION "lib/wx/include") DESTINATION "lib/wx/include")

View File

@@ -37,7 +37,7 @@ if(NOT wxBUILD_CUSTOM_SETUP_HEADER_PATH)
include(build/cmake/setup.cmake) include(build/cmake/setup.cmake)
endif() endif()
if(UNIX) if(NOT MSVC)
# Write wx-config # Write wx-config
include(build/cmake/config.cmake) include(build/cmake/config.cmake)
endif() endif()

View File

@@ -50,14 +50,18 @@ endif()
if(WIN32) if(WIN32)
set(wxBUILD_VENDOR "custom" CACHE STRING "Short string identifying your company (used in DLL name)") set(wxBUILD_VENDOR "custom" CACHE STRING "Short string identifying your company (used in DLL name)")
endif() endif()
set(wxBUILD_FLAVOUR "" CACHE STRING "Specify a name to identify the build")
mark_as_advanced(wxBUILD_FLAVOUR)
wx_option(wxBUILD_OPTIMISE "use speed-optimised C/C++ compiler flags for release build" OFF) wx_option(wxBUILD_OPTIMISE "use speed-optimised C/C++ compiler flags for release build" OFF)
mark_as_advanced(wxBUILD_OPTIMISE)
if(MSVC) if(MSVC)
set(wxBUILD_STRIPPED_RELEASE_DEFAULT OFF) set(wxBUILD_STRIPPED_RELEASE_DEFAULT OFF)
else() else()
set(wxBUILD_STRIPPED_RELEASE_DEFAULT ON) set(wxBUILD_STRIPPED_RELEASE_DEFAULT ON)
endif() endif()
wx_option(wxBUILD_STRIPPED_RELEASE "remove debug symbols in release build" ${wxBUILD_STRIPPED_RELEASE_DEFAULT}) wx_option(wxBUILD_STRIPPED_RELEASE "remove debug symbols in release build" ${wxBUILD_STRIPPED_RELEASE_DEFAULT})
mark_as_advanced(wxBUILD_STRIPPED_RELEASE)
wx_option(wxUSE_NO_RTTI "disable RTTI support" OFF) wx_option(wxUSE_NO_RTTI "disable RTTI support" OFF)
# STL options # STL options

View File

@@ -21,17 +21,17 @@ if(wxUSE_XRC)
set_target_properties(wxrc PROPERTIES FOLDER "Utilities") set_target_properties(wxrc PROPERTIES FOLDER "Utilities")
wx_install(TARGETS wxrc RUNTIME DESTINATION "bin") wx_install(TARGETS wxrc RUNTIME DESTINATION "bin")
if(UNIX) if(NOT MSVC)
install(CODE "execute_process( \ install(CODE "execute_process( \
COMMAND ${CMAKE_COMMAND} -E rename \ COMMAND ${CMAKE_COMMAND} -E rename \
${CMAKE_INSTALL_PREFIX}/bin/wxrc \ ${CMAKE_INSTALL_PREFIX}/bin/wxrc${CMAKE_EXECUTABLE_SUFFIX} \
${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION} \ ${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${CMAKE_EXECUTABLE_SUFFIX} \
)" )"
) )
install(CODE "execute_process( \ install(CODE "execute_process( \
COMMAND ${CMAKE_COMMAND} -E create_symlink \ COMMAND ${CMAKE_COMMAND} -E create_symlink \
${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION} \ ${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${CMAKE_EXECUTABLE_SUFFIX} \
${CMAKE_INSTALL_PREFIX}/bin/wxrc \ ${CMAKE_INSTALL_PREFIX}/bin/wxrc${CMAKE_EXECUTABLE_SUFFIX} \
)" )"
) )
endif() endif()