mirror of https://github.com/libAthena/athena.git
Add cross-compiling support for atdna
This commit is contained in:
parent
da9699a7e2
commit
2c66d56076
|
@ -192,7 +192,7 @@ install(FILES Athena.ico DESTINATION ${INSTALL_LIB_DIR} COMPONENT athena)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
configure_file(libAthena.pc.in libAthena.pc @ONLY)
|
configure_file(libAthena.pc.in libAthena.pc @ONLY)
|
||||||
configure_file(PKGBUILD.in ${CMAKE_CURRENT_SOURCE_DIR}/PKGBUILD @ONLY)
|
configure_file(PKGBUILD.in ${CMAKE_CURRENT_SOURCE_DIR}/PKGBUILD @ONLY)
|
||||||
install(FILES ${PROJECT_BINARY_DIR}/libAthena.pc
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libAthena.pc
|
||||||
DESTINATION ${INSTALL_LIB_DIR}/pkgconfig COMPONENT athena)
|
DESTINATION ${INSTALL_LIB_DIR}/pkgconfig COMPONENT athena)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ endif()
|
||||||
##################
|
##################
|
||||||
|
|
||||||
# Add all targets to the build-tree export set
|
# Add all targets to the build-tree export set
|
||||||
export(TARGETS athena-core FILE "${PROJECT_BINARY_DIR}/AthenaTargets.cmake")
|
export(TARGETS athena-core FILE "${CMAKE_CURRENT_BINARY_DIR}/AthenaTargets.cmake")
|
||||||
|
|
||||||
# Export the package for use from the build-tree
|
# Export the package for use from the build-tree
|
||||||
# (this registers the build-tree with a global CMake-registry)
|
# (this registers the build-tree with a global CMake-registry)
|
||||||
|
@ -211,20 +211,20 @@ export(PACKAGE athena)
|
||||||
# ... for the build tree
|
# ... for the build tree
|
||||||
set(CONF_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include/athena")
|
set(CONF_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include/athena")
|
||||||
set(CONF_ICON_DIR "${PROJECT_SOURCE_DIR}/Athena.ico")
|
set(CONF_ICON_DIR "${PROJECT_SOURCE_DIR}/Athena.ico")
|
||||||
configure_file(AthenaConfig.cmake.in "${PROJECT_BINARY_DIR}/AthenaConfig.cmake" @ONLY)
|
configure_file(AthenaConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/AthenaConfig.cmake" @ONLY)
|
||||||
# ... for the install tree
|
# ... for the install tree
|
||||||
file(RELATIVE_PATH REL_INCLUDE_DIR "${ABS_INSTALL_CMAKE_DIR}" "${ABS_INSTALL_INCLUDE_DIR}")
|
file(RELATIVE_PATH REL_INCLUDE_DIR "${ABS_INSTALL_CMAKE_DIR}" "${ABS_INSTALL_INCLUDE_DIR}")
|
||||||
file(RELATIVE_PATH REL_ICON_DIR "${ABS_INSTALL_CMAKE_DIR}" "${ABS_INSTALL_LIB_DIR}/Athena.ico")
|
file(RELATIVE_PATH REL_ICON_DIR "${ABS_INSTALL_CMAKE_DIR}" "${ABS_INSTALL_LIB_DIR}/Athena.ico")
|
||||||
set(CONF_INCLUDE_DIR "\${ATHENA_CMAKE_DIR}/${REL_INCLUDE_DIR}/athena")
|
set(CONF_INCLUDE_DIR "\${ATHENA_CMAKE_DIR}/${REL_INCLUDE_DIR}/athena")
|
||||||
set(CONF_ICON_DIR "\${ATHENA_CMAKE_DIR}/${REL_ICON_DIR}")
|
set(CONF_ICON_DIR "\${ATHENA_CMAKE_DIR}/${REL_ICON_DIR}")
|
||||||
configure_file(AthenaConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/AthenaConfig.cmake" @ONLY)
|
configure_file(AthenaConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/AthenaConfig.cmake" @ONLY)
|
||||||
# ... for both
|
# ... for both
|
||||||
configure_file(AthenaConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/AthenaConfigVersion.cmake" @ONLY)
|
configure_file(AthenaConfigVersion.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/AthenaConfigVersion.cmake" @ONLY)
|
||||||
|
|
||||||
# Install AthenaConfig.cmake
|
# Install AthenaConfig.cmake
|
||||||
install(FILES
|
install(FILES
|
||||||
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/AthenaConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/AthenaConfig.cmake"
|
||||||
"${PROJECT_BINARY_DIR}/AthenaConfigVersion.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/AthenaConfigVersion.cmake"
|
||||||
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT athena)
|
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT athena)
|
||||||
|
|
||||||
# Install the export set for use with the install-tree
|
# Install the export set for use with the install-tree
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# ATDNA Build #
|
# ATDNA Build #
|
||||||
###############
|
###############
|
||||||
|
|
||||||
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
|
|
||||||
# Force this binary to Release flags (to make MSVC happy)
|
# Force this binary to Release flags (to make MSVC happy)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE}")
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||||
|
@ -113,7 +115,7 @@ install(DIRECTORY ${CLANG_INCLUDE_DIR}/ DESTINATION ${INSTALL_INCLUDE_DIR}/athen
|
||||||
##################
|
##################
|
||||||
|
|
||||||
# Add all targets to the build-tree export set
|
# Add all targets to the build-tree export set
|
||||||
export(TARGETS atdna FILE "${PROJECT_BINARY_DIR}/atdnaTargets.cmake")
|
export(TARGETS atdna FILE "${CMAKE_CURRENT_BINARY_DIR}/atdnaTargets.cmake")
|
||||||
|
|
||||||
# Export the package for use from the build-tree
|
# Export the package for use from the build-tree
|
||||||
# (this registers the build-tree with a global CMake-registry)
|
# (this registers the build-tree with a global CMake-registry)
|
||||||
|
@ -122,17 +124,17 @@ export(PACKAGE atdna)
|
||||||
# Create the atdnaConfig.cmake
|
# Create the atdnaConfig.cmake
|
||||||
# ... for the build tree
|
# ... for the build tree
|
||||||
set(CONF_CLANG_INCLUDE_DIR "${CLANG_INCLUDE_DIR}")
|
set(CONF_CLANG_INCLUDE_DIR "${CLANG_INCLUDE_DIR}")
|
||||||
configure_file(atdnaConfig.cmake.in "${PROJECT_BINARY_DIR}/atdnaConfig.cmake" @ONLY)
|
configure_file(atdnaConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/atdnaConfig.cmake" @ONLY)
|
||||||
# ... for the install tree
|
# ... for the install tree
|
||||||
set(CONF_CLANG_INCLUDE_DIR "\${ATHENA_INCLUDE_DIR}/clang")
|
set(CONF_CLANG_INCLUDE_DIR "\${ATHENA_INCLUDE_DIR}/clang")
|
||||||
configure_file(atdnaConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/atdnaConfig.cmake" @ONLY)
|
configure_file(atdnaConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/atdnaConfig.cmake" @ONLY)
|
||||||
# ... for both
|
# ... for both
|
||||||
configure_file(atdnaConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/atdnaConfigVersion.cmake" @ONLY)
|
configure_file(atdnaConfigVersion.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/atdnaConfigVersion.cmake" @ONLY)
|
||||||
|
|
||||||
# Install atdnaConfig.cmake
|
# Install atdnaConfig.cmake
|
||||||
install(FILES
|
install(FILES
|
||||||
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/atdnaConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/atdnaConfig.cmake"
|
||||||
"${PROJECT_BINARY_DIR}/atdnaConfigVersion.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/atdnaConfigVersion.cmake"
|
||||||
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT atdna)
|
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT atdna)
|
||||||
|
|
||||||
# Install the export set for use with the install-tree
|
# Install the export set for use with the install-tree
|
||||||
|
@ -228,3 +230,5 @@ macro(atdna out)
|
||||||
COMMENT "Generating DNA ${out_rel}")
|
COMMENT "Generating DNA ${out_rel}")
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
# - Config file for the atdna package
|
# - Config file for the atdna package
|
||||||
|
|
||||||
# Compute paths
|
# Compute paths
|
||||||
get_filename_component(ATHENA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
get_filename_component(ATDNA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
|
||||||
# Our library dependencies (contains definitions for IMPORTED targets)
|
# Our library dependencies (contains definitions for IMPORTED targets)
|
||||||
if(NOT TARGET atdna AND NOT atdna_BINARY_DIR)
|
if(NOT TARGET atdna AND NOT atdna_BINARY_DIR)
|
||||||
include("${ATHENA_CMAKE_DIR}/atdnaTargets.cmake")
|
include("${ATDNA_CMAKE_DIR}/atdnaTargets.cmake")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Find Athena
|
|
||||||
find_package(Athena REQUIRED)
|
|
||||||
|
|
||||||
# Super handy macro for adding atdna target
|
# Super handy macro for adding atdna target
|
||||||
macro(atdna out)
|
macro(atdna out)
|
||||||
# Ninja wants invocations in root binary dir for DEPFILE application
|
# Ninja wants invocations in root binary dir for DEPFILE application
|
||||||
|
@ -68,7 +65,7 @@ macro(atdna out)
|
||||||
# Use Ninja's DEPFILE parser in cooperation with atdna
|
# Use Ninja's DEPFILE parser in cooperation with atdna
|
||||||
add_custom_command(OUTPUT ${out} COMMAND $<TARGET_FILE:atdna>
|
add_custom_command(OUTPUT ${out} COMMAND $<TARGET_FILE:atdna>
|
||||||
ARGS ${extraargs} -o ${out_rel} -MD -MT ${out_rel} -MF ${out_rel}.d ${cdefcli} ${inccli}
|
ARGS ${extraargs} -o ${out_rel} -MD -MT ${out_rel} -MF ${out_rel}.d ${cdefcli} ${inccli}
|
||||||
"-I${ATHENA_INCLUDE_DIR}" -isystem "${CLANG_INCLUDE_DIR}" ${ins}
|
"-I${ATHENA_INCLUDE_DIR}" -isystem "@CONF_CLANG_INCLUDE_DIR@" ${ins}
|
||||||
DEPENDS atdna ${ins} IMPLICIT_DEPENDS ${ins_impdeps}
|
DEPENDS atdna ${ins} IMPLICIT_DEPENDS ${ins_impdeps}
|
||||||
DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/${out}.d"
|
DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/${out}.d"
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
@ -77,7 +74,7 @@ macro(atdna out)
|
||||||
# Use CMake's built-in dependency scanner for makefile targets
|
# Use CMake's built-in dependency scanner for makefile targets
|
||||||
add_custom_command(OUTPUT ${out} COMMAND $<TARGET_FILE:atdna>
|
add_custom_command(OUTPUT ${out} COMMAND $<TARGET_FILE:atdna>
|
||||||
ARGS ${extraargs} -o ${out_rel} ${cdefcli} ${inccli}
|
ARGS ${extraargs} -o ${out_rel} ${cdefcli} ${inccli}
|
||||||
"-I${ATHENA_INCLUDE_DIR}" -isystem "${CLANG_INCLUDE_DIR}" ${ins}
|
"-I${ATHENA_INCLUDE_DIR}" -isystem "@CONF_CLANG_INCLUDE_DIR@" ${ins}
|
||||||
DEPENDS atdna ${ins} IMPLICIT_DEPENDS ${ins_impdeps}
|
DEPENDS atdna ${ins} IMPLICIT_DEPENDS ${ins_impdeps}
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMENT "Generating DNA ${out_rel}")
|
COMMENT "Generating DNA ${out_rel}")
|
||||||
|
|
|
@ -226,10 +226,16 @@ static inline utf8proc_ssize_t utf8proc_encode_char(utf8proc_int32_t uc, utf8pro
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class UTF8Iterator : public std::iterator<std::forward_iterator_tag, uint32_t>
|
class UTF8Iterator
|
||||||
{
|
{
|
||||||
std::string_view::const_iterator m_it;
|
std::string_view::const_iterator m_it;
|
||||||
public:
|
public:
|
||||||
|
using iterator_category = std::forward_iterator_tag;
|
||||||
|
using value_type = uint32_t;
|
||||||
|
using difference_type = std::ptrdiff_t;
|
||||||
|
using pointer = uint32_t*;
|
||||||
|
using reference = uint32_t&;
|
||||||
|
|
||||||
UTF8Iterator(const std::string_view::const_iterator& it) : m_it(it) {}
|
UTF8Iterator(const std::string_view::const_iterator& it) : m_it(it) {}
|
||||||
UTF8Iterator& operator+=(size_t v)
|
UTF8Iterator& operator+=(size_t v)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue