From c0544afcd7b1aca21644d1b5b8d74eb1d5213a26 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sun, 2 Dec 2018 17:34:20 +0100 Subject: [PATCH] CMake: Improve installation on Linux Install setup header, wx-config and wxrc. Make wx-config executable. Add renamed files and symbolic links to uninstall target. --- build/cmake/install.cmake | 28 ++++++++++++++++++++++++++++ build/cmake/uninstall.cmake.in | 1 + build/cmake/utils/CMakeLists.txt | 18 +++++++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake index 3e038c8fcf..734a2af88a 100644 --- a/build/cmake/install.cmake +++ b/build/cmake/install.cmake @@ -20,10 +20,32 @@ if(MSVC) DIRECTORY "${wxSOURCE_DIR}/include/msvc" DESTINATION "include") endif() + +# setup header and wx-config if(MSVC OR MINGW) wx_install( DIRECTORY "${wxSETUP_HEADER_PATH}" DESTINATION "lib${wxPLATFORM_LIB_DIR}") +elseif(UNIX) + wx_install( + DIRECTORY "${wxSETUP_HEADER_PATH}" + DESTINATION "lib/wx/include") + + wx_install( + FILES "${wxOUTPUT_DIR}/wx/config/${wxBUILD_FILE_ID}" + DESTINATION "lib/wx/config" + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_READ + WORLD_EXECUTE WORLD_READ + ) + + install(DIRECTORY DESTINATION "bin") + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E create_symlink \ + ${CMAKE_INSTALL_PREFIX}/lib/wx/config/${wxBUILD_FILE_ID} \ + ${CMAKE_INSTALL_PREFIX}/bin/wx-config \ + )" + ) endif() # uninstall target @@ -34,6 +56,12 @@ else() endif() if(NOT TARGET ${UNINST_NAME}) + # these files are not added to the install manifest + set(WX_EXTRA_UNINSTALL_FILES + "${CMAKE_INSTALL_PREFIX}/bin/wx-config" + "${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}" + ) + configure_file( "${wxSOURCE_DIR}/build/cmake/uninstall.cmake.in" "${wxBINARY_DIR}/uninstall.cmake" diff --git a/build/cmake/uninstall.cmake.in b/build/cmake/uninstall.cmake.in index b03059ad52..7d21a385d9 100644 --- a/build/cmake/uninstall.cmake.in +++ b/build/cmake/uninstall.cmake.in @@ -13,6 +13,7 @@ endif() file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") +list(APPEND files @WX_EXTRA_UNINSTALL_FILES@) foreach(file ${files}) message(STATUS "Uninstalling $ENV{DESTDIR}${file}") if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt index bf29f72156..a242fdec66 100644 --- a/build/cmake/utils/CMakeLists.txt +++ b/build/cmake/utils/CMakeLists.txt @@ -17,8 +17,24 @@ if(wxUSE_XRC) wx_exe_link_libraries(wxrc xml) endif() wx_exe_link_libraries(wxrc base) - # TODO: install + set_target_properties(wxrc PROPERTIES FOLDER "Utilities") + + if(UNIX) + wx_install(TARGETS wxrc RUNTIME DESTINATION "bin") + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E rename \ + ${CMAKE_INSTALL_PREFIX}/bin/wxrc \ + ${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION} \ + )" + ) + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E create_symlink \ + ${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION} \ + ${CMAKE_INSTALL_PREFIX}/bin/wxrc \ + )" + ) + endif() endif() # TODO: build targets for other utils