diff --git a/.github/workflows/msys2.yml b/.github/workflows/msys2.yml index 9c99d110..f7db0eca 100644 --- a/.github/workflows/msys2.yml +++ b/.github/workflows/msys2.yml @@ -18,7 +18,12 @@ jobs: msystem: MINGW64 update: true path-type: minimal - install: git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake + install: + git + mingw-w64-x86_64-toolchain + mingw-w64-x86_64-cmake + mingw-w64-x86_64-libiconv + mingw-w64-x86_64-libpng - name: Create Build Environment run: | @@ -26,14 +31,18 @@ jobs: pwd ls cd build - cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/mingw64-x86_64.cmake -G 'MSYS Makefiles' -DWITH_TESTS=yes .. + cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G 'MinGW Makefiles' -DWITH_TESTS=yes .. - name: Build - working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE -j 2 + run: | + pwd + cd build + cmake --build . --config $BUILD_TYPE -j 2 - name: Test - working-directory: ${{runner.workspace}}/build shell: bash - run: ctest -C $BUILD_TYPE + run: | + pwd + cd build + ctest -C $BUILD_TYPE diff --git a/cmake/FindIconv.cmake b/cmake/FindIconv.cmake index fede82a0..74daafc0 100644 --- a/cmake/FindIconv.cmake +++ b/cmake/FindIconv.cmake @@ -1,115 +1,115 @@ include(CheckFunctionExists) -set(_ICONV_SEARCHES) +set(_Iconv_SEARCHES) -# Search ICONV_DIR first if it is set. -if(NOT ICONV_DIR AND ENV{ICONV_DIR}) - set(ICONV_DIR $ENV{ICONV_DIR}) +# Search Iconv_DIR first if it is set. +if(NOT Iconv_DIR AND ENV{Iconv_DIR}) + set(Iconv_DIR $ENV{Iconv_DIR}) endif() -if(ICONV_DIR) - set(_ICONV_DIR_SEARCH PATHS ${ICONV_DIR} NO_DEFAULT_PATH) - list(APPEND _ICONV_SEARCHES _ICONV_DIR_SEARCH) +if(Iconv_DIR) + set(_Iconv_DIR_SEARCH PATHS ${Iconv_DIR} NO_DEFAULT_PATH) + list(APPEND _Iconv_SEARCHES _Iconv_DIR_SEARCH) endif() # Normal search. -set(_ICONV_SEARCH_NORMAL +set(_Iconv_SEARCH_NORMAL PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Iconv;InstallPath]" "$ENV{PROGRAMFILES}/iconv" ENV CPATH ENV C_INCLUDE_PATH ENV CPLUS_INCLUDE_PATH ENV LIBRARY_PATH) -list(APPEND _ICONV_SEARCHES _ICONV_SEARCH_NORMAL) +list(APPEND _Iconv_SEARCHES _Iconv_SEARCH_NORMAL) -set(ICONV_NAMES iconv iconv2 libiconv iconv64) -set(ICONV_NAMES_DEBUG iconvd iconv64d) +set(Iconv_NAMES iconv iconv2 libiconv iconv64) +set(Iconv_NAMES_DEBUG iconvd iconv64d) # Try each search configuration. -foreach(search ${_ICONV_SEARCHES}) - find_path(ICONV_INCLUDE_DIR NAMES iconv.h ${${search}} PATH_SUFFIXES include) +foreach(search ${_Iconv_SEARCHES}) + find_path(Iconv_INCLUDE_DIR NAMES iconv.h ${${search}} PATH_SUFFIXES include) endforeach() -# Allow ICONV_LIBRARY to be set manually, as the location of the iconv library -if(NOT ICONV_LIBRARY) - foreach(search ${_ICONV_SEARCHES}) - find_library(ICONV_LIBRARY_RELEASE NAMES ${ICONV_NAMES} ${${search}} PATH_SUFFIXES lib) - find_library(ICONV_LIBRARY_DEBUG NAMES ${ICONV_NAMES_DEBUG} ${${search}} PATH_SUFFIXES lib) +# Allow Iconv_LIBRARY to be set manually, as the location of the iconv library +if(NOT Iconv_LIBRARY) + foreach(search ${_Iconv_SEARCHES}) + find_library(Iconv_LIBRARY_RELEASE NAMES ${Iconv_NAMES} ${${search}} PATH_SUFFIXES lib) + find_library(Iconv_LIBRARY_DEBUG NAMES ${Iconv_NAMES_DEBUG} ${${search}} PATH_SUFFIXES lib) endforeach() include(SelectLibraryConfigurations) - select_library_configurations(ICONV) + select_library_configurations(Iconv) endif() -unset(ICONV_NAMES) -unset(ICONV_NAMES_DEBUG) +unset(Iconv_NAMES) +unset(Iconv_NAMES_DEBUG) -if(ICONV_INCLUDE_DIR AND EXISTS "${ICONV_INCLUDE_DIR}/iconv.h") - file(STRINGS "${ICONV_INCLUDE_DIR}/iconv.h" ICONV_H REGEX "^#define _LIBICONV_VERSION 0x([0-9]+)") - string(REGEX MATCH "q#define _LIBICONV_VERSION 0x([0-9][0-9])([0-9][0-9])?([0-9][0-9])?.*" temp_match "${ICONV_H}") +if(Iconv_INCLUDE_DIR AND EXISTS "${Iconv_INCLUDE_DIR}/iconv.h") + file(STRINGS "${Iconv_INCLUDE_DIR}/iconv.h" Iconv_H REGEX "^#define _LIBIconv_VERSION 0x([0-9]+)") + string(REGEX MATCH "q#define _LIBIconv_VERSION 0x([0-9][0-9])([0-9][0-9])?([0-9][0-9])?.*" temp_match "${Iconv_H}") unset(temp_match) if(CMAKE_MATCH_0) - set(ICONV_VERSION_MAJOR "${CMAKE_MATCH_1}") - set(ICONV_VERSION_MINOR "${CMAKE_MATCH_2}") - set(ICONV_VERSION_PATCH "${CMAKE_MATCH_3}") - string(REGEX REPLACE "0*([1-9][0-9]*).*" "\\1" ICONV_VERSION_MAJOR "${ICONV_VERSION_MAJOR}") - string(REGEX REPLACE "0*([1-9][0-9]*).*" "\\1" ICONV_VERSION_MINOR "${ICONV_VERSION_MINOR}") - string(REGEX REPLACE "0*([1-9][0-9]*).*" "\\1" ICONV_VERSION_PATCH "${ICONV_VERSION_PATCH}") - - set(ICONV_VERSION_STRING "${ICONV_VERSION_MAJOR}.${ICONV_VERSION_MINOR}") - if(ICONV_VERSION_PATCH) - set(ICONV_VERSION_STRING "${ICONV_VERSION_STRING}.${ICONV_VERSION_PATCH}") + set(Iconv_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(Iconv_VERSION_MINOR "${CMAKE_MATCH_2}") + set(Iconv_VERSION_PATCH "${CMAKE_MATCH_3}") + string(REGEX REPLACE "0*([1-9][0-9]*).*" "\\1" Iconv_VERSION_MAJOR "${Iconv_VERSION_MAJOR}") + string(REGEX REPLACE "0*([1-9][0-9]*).*" "\\1" Iconv_VERSION_MINOR "${Iconv_VERSION_MINOR}") + string(REGEX REPLACE "0*([1-9][0-9]*).*" "\\1" Iconv_VERSION_PATCH "${Iconv_VERSION_PATCH}") + + set(Iconv_VERSION_STRING "${Iconv_VERSION_MAJOR}.${Iconv_VERSION_MINOR}") + if(Iconv_VERSION_PATCH) + set(Iconv_VERSION_STRING "${Iconv_VERSION_STRING}.${Iconv_VERSION_PATCH}") endif() endif() endif() -check_function_exists(iconv_open ICONV_IN_GLIBC) +check_function_exists(iconv_open Iconv_IN_GLIBC) -set(ICONV_FOUND_ANY FALSE) -if(ICONV_IN_GLIBC OR ICONV_LIBRARY) - set(ICONV_FOUND_ANY TRUE) +set(Iconv_FOUND_ANY FALSE) +if(Iconv_IN_GLIBC OR Iconv_LIBRARY) + set(Iconv_FOUND_ANY TRUE) endif() -# handle the QUIETLY and REQUIRED arguments and set ICONV_FOUND to TRUE if +# handle the QUIETLY and REQUIRED arguments and set Iconv_FOUND to TRUE if # all listed variables are TRUE include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(ICONV - REQUIRED_VARS ICONV_FOUND_ANY ICONV_INCLUDE_DIR - VERSION_VAR ICONV_VERSION_STRING) +find_package_handle_standard_args(Iconv + REQUIRED_VARS Iconv_FOUND_ANY Iconv_INCLUDE_DIR + VERSION_VAR Iconv_VERSION_STRING) -mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR) +mark_as_advanced(Iconv_LIBRARY Iconv_INCLUDE_DIR) -if(NOT ICONV_FOUND) +if(NOT Iconv_FOUND) return() endif() -set(ICONV_INCLUDE_DIRS ${ICONV_INCLUDE_DIR}) +set(Iconv_INCLUDE_DIRS ${Iconv_INCLUDE_DIR}) -if(NOT ICONV_LIBRARIES) - set(ICONV_LIBRARIES ${ICONV_LIBRARY}) +if(NOT Iconv_LIBRARIES) + set(Iconv_LIBRARIES ${Iconv_LIBRARY}) endif() -if(ICONV_LIBRARY AND NOT TARGET ICONV::ICONV) - add_library(ICONV::ICONV UNKNOWN IMPORTED) - set_target_properties(ICONV::ICONV PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${ICONV_INCLUDE_DIRS}" - IMPORTED_LOCATION "${ICONV_LIBRARY}") +if(Iconv_LIBRARY AND NOT TARGET Iconv::Iconv) + add_library(Iconv::Iconv UNKNOWN IMPORTED) + set_target_properties(Iconv::Iconv PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Iconv_INCLUDE_DIRS}" + IMPORTED_LOCATION "${Iconv_LIBRARY}") - if(ICONV_LIBRARY_RELEASE) - set_property(TARGET ICONV::ICONV APPEND PROPERTY + if(Iconv_LIBRARY_RELEASE) + set_property(TARGET Iconv::Iconv APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties(ICONV::ICONV PROPERTIES - IMPORTED_LOCATION_RELEASE "${ICONV_LIBRARY_RELEASE}") + set_target_properties(Iconv::Iconv PROPERTIES + IMPORTED_LOCATION_RELEASE "${Iconv_LIBRARY_RELEASE}") endif() - if(ICONV_LIBRARY_DEBUG) - set_property(TARGET ICONV::ICONV APPEND PROPERTY + if(Iconv_LIBRARY_DEBUG) + set_property(TARGET Iconv::Iconv APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - set_target_properties(ICONV::ICONV PROPERTIES - IMPORTED_LOCATION_DEBUG "${ICONV_LIBRARY_DEBUG}") + set_target_properties(Iconv::Iconv PROPERTIES + IMPORTED_LOCATION_DEBUG "${Iconv_LIBRARY_DEBUG}") endif() -elseif(NOT TARGET ICONV::ICONV) - add_library(ICONV::ICONV INTERFACE IMPORTED) - set_target_properties(ICONV::ICONV PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${ICONV_INCLUDE_DIRS}") +elseif(NOT TARGET Iconv::Iconv) + add_library(Iconv::Iconv INTERFACE IMPORTED) + set_target_properties(Iconv::Iconv PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Iconv_INCLUDE_DIRS}") endif()