cmake: Fix localization for Visual Studio.

Default to ENABLE_NLS=ON for vcpkg builds too.

Check for libintl under both the names "intl" and "libintl", likewise
for libiconv. The vcpkg versions have the "lib" prefix.

Use the Gettext.Tools package from NuGet for the tools to build the
translation files. vcpkg does not yet have gettext-tools.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
This commit is contained in:
Rafael Kitover 2019-12-12 19:01:58 +00:00
parent 3aefcf64c9
commit b3932e4e3d
No known key found for this signature in database
GPG Key ID: 08AB596679D86240
2 changed files with 30 additions and 12 deletions

View File

@ -380,11 +380,7 @@ if(NOT ENABLE_ASM_CORE)
add_definitions(-DC_CORE) add_definitions(-DC_CORE)
endif() endif()
set(NLS_DEFAULT OFF) set(NLS_DEFAULT ON)
if(NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
set(NLS_DEFAULT ON)
endif()
option(ENABLE_NLS "Enable translations" ${NLS_DEFAULT}) option(ENABLE_NLS "Enable translations" ${NLS_DEFAULT})
@ -402,17 +398,17 @@ if(ENABLE_NLS)
set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};/usr/local/opt/gettext/bin") set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};/usr/local/opt/gettext/bin")
endif() endif()
endif() endif()
if(ENABLE_LINK) if(ENABLE_LINK OR ENABLE_WX)
find_path(LIBINTL_INC libintl.h) find_path(LIBINTL_INC libintl.h)
find_library(LIBINTL_LIB intl) find_library(LIBINTL_LIB NAMES intl libintl)
find_library(LIBICONV_LIB iconv) find_library(LIBICONV_LIB NAMES iconv libiconv)
if(LIBINTL_LIB) if(LIBINTL_LIB)
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBINTL_LIB}) list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBINTL_LIB})
set(VBAMCORE_LIBS ${VBAMCORE_LIBS} ${LIBINTL_LIB}) list(APPEND VBAMCORE_LIBS ${LIBINTL_LIB})
endif() endif()
if(LIBICONV_LIB) if(LIBICONV_LIB)
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBICONV_LIB}) list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBICONV_LIB})
set(VBAMCORE_LIBS ${VBAMCORE_LIBS} ${LIBICONV_LIB}) list(APPEND VBAMCORE_LIBS ${LIBICONV_LIB})
endif() endif()
include(CheckFunctionExists) include(CheckFunctionExists)
check_function_exists(gettext GETTEXT_FN) check_function_exists(gettext GETTEXT_FN)

View File

@ -528,6 +528,28 @@ endif() # wxWidgets checks
if(CMAKE_TOOLCHAIN_FILE MATCHES vcpkg) if(CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
find_package(unofficial-gettext REQUIRED) find_package(unofficial-gettext REQUIRED)
if(MSVC)
# install gettext tools from nuget
# first fetch the nuget binary
if(NOT EXISTS ${CMAKE_BINARY_DIR}/nuget.exe)
file(DOWNLOAD "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" ${CMAKE_BINARY_DIR}/nuget.exe)
endif()
# install the Gettext.Tools package
execute_process(
COMMAND nuget.exe install Gettext.Tools -OutputDirectory ${CMAKE_BINARY_DIR}/nuget
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
# find the path to the binaries in the package and add them to find path
file(GLOB pkg ${CMAKE_BINARY_DIR}/nuget/*)
list(APPEND CMAKE_PROGRAM_PATH ${pkg}/tools/bin)
find_package(Gettext REQUIRED)
endif()
else() else()
find_package(Gettext REQUIRED) find_package(Gettext REQUIRED)