From ad2193c404a83e020a2408fa59f14e4d34a95990 Mon Sep 17 00:00:00 2001 From: Roman Fomin Date: Sat, 25 Jun 2022 22:17:47 +0700 Subject: [PATCH] little cmake cleanup (#624) * little cmake cleanup * try to fix msys check --- CMakeLists.txt | 15 +++++++++--- cmake/FindFluidSynth.cmake | 2 +- man/WoofInstall.cmake.in | 50 +++++++++++++++++++------------------- src/CMakeLists.txt | 6 ++--- 4 files changed, 40 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ac159b0..a8b57801 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,14 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(FATAL_ERROR "In-tree builds are not supported.") endif() -if(MINGW) +execute_process(COMMAND uname OUTPUT_VARIABLE uname) +if (NOT MSVC AND (uname MATCHES "^MSYS" OR uname MATCHES "^MINGW")) + set(MSYS ON) +else() + set(MSYS OFF) +endif() + +if(MSYS) # 3.16 is needed for GET_RUNTIME_DEPENDENCIES. cmake_minimum_required(VERSION 3.16) endif() @@ -64,7 +71,7 @@ check_symbol_exists(strncasecmp "strings.h" HAVE_DECL_STRNCASECMP) # SDL2. On Windows, we use the official development library. if(NOT SDL2_DIR) - if(WIN32 AND (MSVC OR CMAKE_CROSSCOMPILING)) + if(WIN32 AND NOT MSYS) message(STATUS "Downloading SDL2 Development Library...") if(MSVC) file(DOWNLOAD @@ -90,7 +97,7 @@ find_package(SDL2 2.0.7) # SDL2_mixer. On Windows, we use the official development library. if(NOT SDL2_MIXER_DIR) - if(WIN32 AND (MSVC OR CMAKE_CROSSCOMPILING)) + if(WIN32 AND NOT MSYS) message(STATUS "Downloading SDL2_mixer Development Library...") if(MSVC) file(DOWNLOAD @@ -116,7 +123,7 @@ find_package(SDL2_mixer 2.0.2) # SDL2_net. On Windows, we use the official development library. if(NOT SDL2_NET_DIR) - if(WIN32 AND (MSVC OR CMAKE_CROSSCOMPILING)) + if(WIN32 AND NOT MSYS) message(STATUS "Downloading SDL2_net Development Library...") if(MSVC) file(DOWNLOAD diff --git a/cmake/FindFluidSynth.cmake b/cmake/FindFluidSynth.cmake index 43a50048..b0121abe 100644 --- a/cmake/FindFluidSynth.cmake +++ b/cmake/FindFluidSynth.cmake @@ -103,7 +103,7 @@ if(FluidSynth_FOUND AND NOT TARGET FluidSynth::FluidSynth) IMPORTED_LOCATION "${FluidSynth_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${FluidSynth_INCLUDE_DIRS}" ) - if(WIN32 AND MSVC) + if(WIN32 AND FluidSynth_DIR) # On Windows, we need to figure out the location of our library files # so we can copy and package them. set(FluidSynth_DLL_DIR "${FluidSynth_DIR}/bin" CACHE INTERNAL "") diff --git a/man/WoofInstall.cmake.in b/man/WoofInstall.cmake.in index eeed3878..29b17cbb 100644 --- a/man/WoofInstall.cmake.in +++ b/man/WoofInstall.cmake.in @@ -9,42 +9,42 @@ set(Python3_EXECUTABLE "@Python3_EXECUTABLE@") if(Python3_EXECUTABLE) execute_process(COMMAND - "${Python3_EXECUTABLE}" "docgen" - "-p" "CMDLINE.template" + "${Python3_EXECUTABLE}" docgen -p CMDLINE.template "${PROJECT_SOURCE_DIR}/src" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_FILE "CMDLINE.txt") execute_process(COMMAND - "${Python3_EXECUTABLE}" "docgen" - "-M" "CMDLINE.template.md" + "${Python3_EXECUTABLE}" docgen -M CMDLINE.template.md "${PROJECT_SOURCE_DIR}/src" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_FILE "CMDLINE.md") - execute_process(COMMAND - "${Python3_EXECUTABLE}" "docgen" - "-s" "${PROJECT_NAME}" "-z" "${PROJECT_SHORTNAME}" - "-m" "woof.template" - "${PROJECT_SOURCE_DIR}/src" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - OUTPUT_FILE "${PROJECT_SHORTNAME}.6") + if(UNIX AND NOT APPLE) + execute_process(COMMAND + "${Python3_EXECUTABLE}" docgen + -s "${PROJECT_NAME}" -z "${PROJECT_SHORTNAME}" + -m woof.template + "${PROJECT_SOURCE_DIR}/src" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_FILE "${PROJECT_SHORTNAME}.6") - execute_process(COMMAND - "${Python3_EXECUTABLE}" "docgen" - "-s" "${PROJECT_NAME}" "-z" "${PROJECT_SHORTNAME}" - "-m" "setup.template" - "${PROJECT_SOURCE_DIR}/setup" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - OUTPUT_FILE "${PROJECT_SHORTNAME}-setup.6") + execute_process(COMMAND + "${Python3_EXECUTABLE}" docgen + -s "${PROJECT_NAME}" -z "${PROJECT_SHORTNAME}" + -m setup.template + "${PROJECT_SOURCE_DIR}/setup" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_FILE "${PROJECT_SHORTNAME}-setup.6") - execute_process(COMMAND - "${Python3_EXECUTABLE}" "docgen" - "-s" "${PROJECT_NAME}" "-z" "${PROJECT_SHORTNAME}" - "-b" "bash-completion/woof.template" - "${PROJECT_SOURCE_DIR}/src" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - OUTPUT_FILE "bash-completion/${PROJECT_SHORTNAME}") + execute_process(COMMAND + "${Python3_EXECUTABLE}" docgen + -s "${PROJECT_NAME}" -z "${PROJECT_SHORTNAME}" + -b bash-completion/woof.template + "${PROJECT_SOURCE_DIR}/src" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_FILE "bash-completion/${PROJECT_SHORTNAME}") + endif() else() message("Python 3 not found, can't run install scripts.") endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 619ec790..426c1b3c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -229,7 +229,7 @@ endif() # Assemble library files. set(WOOF_DLLS "") -if(WIN32 AND (MSVC OR CMAKE_CROSSCOMPILING)) +if(WIN32 AND NOT MSYS) # SDL2 list(APPEND WOOF_DLLS "${SDL2_DLL_DIR}/SDL2.dll") @@ -247,7 +247,7 @@ if(WIN32 AND (MSVC OR CMAKE_CROSSCOMPILING)) # SDL2_net list(APPEND WOOF_DLLS "${SDL2_NET_DLL_DIR}/SDL2_net.dll") - if (FluidSynth_FOUND AND MSVC) + if (FluidSynth_DLL_DIR) file(GLOB files "${FluidSynth_DLL_DIR}/*.dll") foreach(file ${files}) list(APPEND WOOF_DLLS ${file}) @@ -279,7 +279,7 @@ add_custom_command(TARGET woof POST_BUILD "${CMAKE_CURRENT_BINARY_DIR}/autoload" VERBATIM) # Try get dependencies in MSYS2 environment. -if(WIN32 AND NOT MSVC AND NOT CMAKE_CROSSCOMPILING) +if(MSYS) find_program(DLLTOOL_EXECUTABLE NAMES dlltool dlltool.exe )