Hello, I sent attached patches to patches@crosswire.orgbut I got no response. How to suggest improvements to the sword project?
BR, Zdenko ---------- Forwarded message --------- From: ZdPo Ster <zdpos...@gmail.com> Date: Sun, 6 Nov 2022 at 22:22 Subject: cmake patches To: <patc...@crosswire.org> Hello, please find 3 few patches related to cmake build (tested on windows with MSVC 2019): 1. cmake_fix_deprecation.patch - cmake version 3.23.2 produce depreciation warning for old minimum version, co IMO it is time to increase expected cmake version 2. cmake_fix_msvc.patch - there is no "/O3" options in current MSVC[1] 3. cmake_git_svn.patch - I use git svn for accessing code, but cmake produce error because of missing svn executable. He is patch that fixed it + code for detecting svn revision (MYSVN_WC_REVISION) from git [1] https://learn.microsoft.com/en-us/cpp/build/reference/o-options-optimize-code?view=msvc-160 Zdenko
From 1b89a8dc8a61a8a98b47286b305642cd70b35cf5 Mon Sep 17 00:00:00 2001 From: Zdenko <zdposter@gmail.com> Date: Sun, 6 Nov 2022 21:30:51 +0100 Subject: cmake: fix Deprecation Warning - Compatibility with CMake < 2.8.12 will be removed from a future version of diff --git a/CMakeLists.txt b/CMakeLists.txt index a15d7942..69ef1a82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(FindSubversion) Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} MYSVN IGNORE_SVN_FAILURE) PROJECT(libsword CXX C) -CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12) SET(SWORD_VERSION 1.9.0) if(DEFINED MYSVN_WC_REVISION) SET(SWORD_VERSION ${SWORD_VERSION}.${MYSVN_WC_REVISION})
From e39d726a7064511c3969e38400884563aa3a519c Mon Sep 17 00:00:00 2001 From: Zdenko <zdposter@gmail.com> Date: Sun, 6 Nov 2022 22:07:47 +0100 Subject: cmake: fix build with git-svn diff --git a/CMakeLists.txt b/CMakeLists.txt index 69ef1a82..88f5febc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,17 @@ CMAKE_POLICY(SET CMP0010 NEW) include(FindSubversion) -Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} MYSVN IGNORE_SVN_FAILURE) +if(Subversion_FOUND) + Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} MYSVN IGNORE_SVN_FAILURE) +else() + include(FindGit) + if(GIT_FOUND) + INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/VersionFromVCS.cmake") + get_source_info_git(${CMAKE_CURRENT_SOURCE_DIR} MYSVN_WC_REVISION repository) + message("revision is ${MYSVN_WC_REVISION}") + endif(GIT_FOUND) +endif(Subversion_FOUND) + PROJECT(libsword CXX C) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12) diff --git a/cmake/VersionFromVCS.cmake b/cmake/VersionFromVCS.cmake new file mode 100644 index 00000000..c5cdc144 --- /dev/null +++ b/cmake/VersionFromVCS.cmake @@ -0,0 +1,97 @@ +# Source: https://raw.githubusercontent.com/llvm-mirror/llvm/master/cmake/modules/VersionFromVCS.cmake +# Licence: Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ + +# Adds version control information to the variable VERS. For +# determining the Version Control System used (if any) it inspects the +# existence of certain subdirectories under SOURCE_DIR (if provided as an +# extra argument, otherwise uses CMAKE_CURRENT_SOURCE_DIR). + +function(get_source_info_svn path revision repository) + # If svn is a bat file, find_program(Subversion) doesn't find it. + # Explicitly search for that here; Subversion_SVN_EXECUTABLE will override + # the find_program call in FindSubversion.cmake. + find_program(Subversion_SVN_EXECUTABLE NAMES svn svn.bat) + find_package(Subversion) + + # Subversion module does not work with symlinks, see PR8437. + get_filename_component(realpath ${path} REALPATH) + if(Subversion_FOUND) + subversion_wc_info(${realpath} Project) + if(Project_WC_REVISION) + set(${revision} ${Project_WC_REVISION} PARENT_SCOPE) + endif() + if(Project_WC_URL) + set(${repository} ${Project_WC_URL} PARENT_SCOPE) + endif() + endif() +endfunction() + +function(get_source_info_git path revision repository) + find_package(Git) + if(GIT_FOUND) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output + ERROR_QUIET) + if(git_result EQUAL 0) + string(STRIP "${git_output}" git_output) + get_filename_component(git_dir ${git_output} ABSOLUTE BASE_DIR ${path}) + if(EXISTS "${git_dir}/svn/refs") + execute_process(COMMAND ${GIT_EXECUTABLE} svn info + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output) + if(git_result EQUAL 0) + string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*" + "\\2" git_svn_rev "${git_output}") + set(${revision} ${git_svn_rev} PARENT_SCOPE) + string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*" + "\\2" git_url "${git_output}") + set(${repository} ${git_url} PARENT_SCOPE) + endif() + else() + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output) + if(git_result EQUAL 0) + string(STRIP "${git_output}" git_output) + set(${revision} ${git_output} PARENT_SCOPE) + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref --symbolic-full-name @{upstream} + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output + ERROR_QUIET) + if(git_result EQUAL 0) + string(REPLACE "/" ";" branch ${git_output}) + list(GET branch 0 remote) + else() + set(remote "origin") + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote} + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output + ERROR_QUIET) + if(git_result EQUAL 0) + string(STRIP "${git_output}" git_output) + set(${repository} ${git_output} PARENT_SCOPE) + else() + set(${repository} ${path} PARENT_SCOPE) + endif() + endif() + endif() + endif() +endfunction() + +function(get_source_info path revision repository) + if(EXISTS "${path}/.svn") + get_source_info_svn("${path}" revision_info repository_info) + else() + get_source_info_git("${path}" revision_info repository_info) + endif() + set(${repository} "${repository_info}" PARENT_SCOPE) + set(${revision} "${revision_info}" PARENT_SCOPE) +endfunction()
From b2bdd8772f02c3a95119155f058cea1474c61478 Mon Sep 17 00:00:00 2001 From: Zdenko <zdposter@gmail.com> Date: Sun, 6 Nov 2022 21:29:22 +0100 Subject: cmake: fix "cl : command line warning D9002: ignoring unknown option '/O3'" diff --git a/CMakeLists.txt b/CMakeLists.txt index 676353b5..a15d7942 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -174,11 +174,11 @@ ENDIF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes") IF(MSVC) SET(CMAKE_C_FLAGS_DEBUG "/D /O0 /DDEBUG ${CMAKE_C_FLAGS}") - SET(CMAKE_C_FLAGS_RELEASE "/O3 /DNDEBUG ${CMAKE_C_FLAGS}") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/O3 /D /DDEBUG ${CMAKE_C_FLAGS}") + SET(CMAKE_C_FLAGS_RELEASE "/O2 /DNDEBUG ${CMAKE_C_FLAGS}") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /D /DDEBUG ${CMAKE_C_FLAGS}") SET(CMAKE_CXX_FLAGS_DEBUG "/D /O0 /DDEBUG ${CMAKE_CXX_FLAGS}") - SET(CMAKE_CXX_FLAGS_RELEASE "/O3 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O3 /D /DDEBUG ${CMAKE_CXX_FLAGS}") + SET(CMAKE_CXX_FLAGS_RELEASE "/O2 ${CMAKE_CXX_FLAGS}") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /D /DDEBUG ${CMAKE_CXX_FLAGS}") ELSE(MSVC) SET(CMAKE_C_FLAGS_DEBUG "-g3 -Wall -O0 ${CMAKE_C_FLAGS}") SET(CMAKE_C_FLAGS_RELEASE "-O3 ${CMAKE_C_FLAGS}")
_______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page