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)
|
||||
configure_file(libAthena.pc.in libAthena.pc @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)
|
||||
endif()
|
||||
|
||||
|
@ -201,7 +201,7 @@ endif()
|
|||
##################
|
||||
|
||||
# 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
|
||||
# (this registers the build-tree with a global CMake-registry)
|
||||
|
@ -211,20 +211,20 @@ export(PACKAGE athena)
|
|||
# ... for the build tree
|
||||
set(CONF_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include/athena")
|
||||
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
|
||||
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")
|
||||
set(CONF_INCLUDE_DIR "\${ATHENA_CMAKE_DIR}/${REL_INCLUDE_DIR}/athena")
|
||||
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
|
||||
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(FILES
|
||||
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/AthenaConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/AthenaConfigVersion.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/AthenaConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/AthenaConfigVersion.cmake"
|
||||
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT athena)
|
||||
|
||||
# Install the export set for use with the install-tree
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
# ATDNA Build #
|
||||
###############
|
||||
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
|
||||
# Force this binary to Release flags (to make MSVC happy)
|
||||
if(MSVC)
|
||||
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
|
||||
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
|
||||
# (this registers the build-tree with a global CMake-registry)
|
||||
|
@ -122,17 +124,17 @@ export(PACKAGE atdna)
|
|||
# Create the atdnaConfig.cmake
|
||||
# ... for the build tree
|
||||
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
|
||||
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
|
||||
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(FILES
|
||||
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/atdnaConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/atdnaConfigVersion.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/atdnaConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/atdnaConfigVersion.cmake"
|
||||
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT atdna)
|
||||
|
||||
# Install the export set for use with the install-tree
|
||||
|
@ -228,3 +230,5 @@ macro(atdna out)
|
|||
COMMENT "Generating DNA ${out_rel}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
endif()
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
# - Config file for the atdna package
|
||||
|
||||
# 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)
|
||||
if(NOT TARGET atdna AND NOT atdna_BINARY_DIR)
|
||||
include("${ATHENA_CMAKE_DIR}/atdnaTargets.cmake")
|
||||
include("${ATDNA_CMAKE_DIR}/atdnaTargets.cmake")
|
||||
endif()
|
||||
|
||||
# Find Athena
|
||||
find_package(Athena REQUIRED)
|
||||
|
||||
# Super handy macro for adding atdna target
|
||||
macro(atdna out)
|
||||
# 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
|
||||
add_custom_command(OUTPUT ${out} COMMAND $<TARGET_FILE:atdna>
|
||||
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}
|
||||
DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/${out}.d"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
|
@ -77,7 +74,7 @@ macro(atdna out)
|
|||
# Use CMake's built-in dependency scanner for makefile targets
|
||||
add_custom_command(OUTPUT ${out} COMMAND $<TARGET_FILE:atdna>
|
||||
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}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
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 <string>
|
||||
|
||||
class UTF8Iterator : public std::iterator<std::forward_iterator_tag, uint32_t>
|
||||
class UTF8Iterator
|
||||
{
|
||||
std::string_view::const_iterator m_it;
|
||||
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& operator+=(size_t v)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue