-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmake: add submodule for utf8proc at v2.2.0
adds utf8proc submodule, needed by the arrow submodule in centos. add a WITH_SYSTEM_UTF8PROC option that controls whether or not utf8proc is built from submodule non-system utf8proc is built as a static library to avoid conflicts with system-provided libraries ceph.spec.in sets WITH_SYSTEM_UTF8PROC=OFF until it's available in centos Signed-off-by: Casey Bodley <cbodley@redhat.com>
- Loading branch information
Showing
8 changed files
with
195 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# utf8proc is a dependency of the arrow submodule | ||
|
||
function(build_utf8proc) | ||
# only build static version | ||
list(APPEND utf8proc_CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF) | ||
|
||
# cmake doesn't properly handle arguments containing ";", such as | ||
# CMAKE_PREFIX_PATH, for which reason we'll have to use some other separator. | ||
string(REPLACE ";" "!" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}") | ||
list(APPEND utf8proc_CMAKE_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}) | ||
if(CMAKE_TOOLCHAIN_FILE) | ||
list(APPEND utf8proc_CMAKE_ARGS | ||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) | ||
endif() | ||
|
||
list(APPEND utf8proc_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}) | ||
list(APPEND utf8proc_CMAKE_ARGS -DCMAKE_AR=${CMAKE_AR}) | ||
list(APPEND utf8proc_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) | ||
|
||
set(utf8proc_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/utf8proc") | ||
set(utf8proc_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/utf8proc") | ||
|
||
set(utf8proc_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/utf8proc/install") | ||
list(APPEND utf8proc_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${utf8proc_INSTALL_PREFIX}) | ||
|
||
# expose the install path as utf8proc_ROOT for find_package() | ||
set(utf8proc_ROOT "${utf8proc_INSTALL_PREFIX}" PARENT_SCOPE) | ||
|
||
set(utf8proc_INSTALL_LIBDIR "lib") # force lib so we don't have to guess between lib/lib64 | ||
list(APPEND utf8proc_CMAKE_ARGS -DCMAKE_INSTALL_LIBDIR=${utf8proc_INSTALL_LIBDIR}) | ||
set(utf8proc_LIBRARY_DIR "${utf8proc_INSTALL_PREFIX}/${utf8proc_INSTALL_LIBDIR}") | ||
|
||
set(utf8proc_LIBRARY "${utf8proc_LIBRARY_DIR}/libutf8proc.a") | ||
|
||
set(utf8proc_INCLUDE_DIR "${utf8proc_INSTALL_PREFIX}/include") | ||
# this include directory won't exist until the install step, but the | ||
# imported target needs it early for INTERFACE_INCLUDE_DIRECTORIES | ||
file(MAKE_DIRECTORY "${utf8proc_INCLUDE_DIR}") | ||
|
||
set(utf8proc_BYPRODUCTS ${utf8proc_LIBRARY}) | ||
|
||
if(CMAKE_MAKE_PROGRAM MATCHES "make") | ||
# try to inherit command line arguments passed by parent "make" job | ||
set(make_cmd $(MAKE)) | ||
else() | ||
set(make_cmd ${CMAKE_COMMAND} --build <BINARY_DIR>) | ||
endif() | ||
|
||
# we use an external project and copy the sources to bin directory to ensure | ||
# that object files are built outside of the source tree. | ||
include(ExternalProject) | ||
ExternalProject_Add(utf8proc_ext | ||
SOURCE_DIR "${utf8proc_SOURCE_DIR}" | ||
CMAKE_ARGS ${utf8proc_CMAKE_ARGS} | ||
BINARY_DIR "${utf8proc_BINARY_DIR}" | ||
BUILD_COMMAND "${make_cmd}" | ||
BUILD_BYPRODUCTS "${utf8proc_BYPRODUCTS}" | ||
INSTALL_DIR "${utf8proc_INSTALL_PREFIX}" | ||
DEPENDS "${utf8proc_DEPENDS}" | ||
LIST_SEPARATOR !) | ||
|
||
add_library(utf8proc::utf8proc STATIC IMPORTED) | ||
add_dependencies(utf8proc::utf8proc utf8proc_ext) | ||
set_target_properties(utf8proc::utf8proc PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES "${utf8proc_INCLUDE_DIR}" | ||
INTERFACE_LINK_LIBRARIES "${utf8proc_INTERFACE_LINK_LIBRARIES}" | ||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" | ||
IMPORTED_LOCATION "${utf8proc_LIBRARY}") | ||
endfunction() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# Licensed to the Apache Software Foundation (ASF) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The ASF licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
|
||
# note: cbodley copied this from the Arrow repo and removed ARROW variables | ||
|
||
function(extract_utf8proc_version) | ||
if(utf8proc_INCLUDE_DIR) | ||
file(READ "${utf8proc_INCLUDE_DIR}/utf8proc.h" UTF8PROC_H_CONTENT) | ||
|
||
string(REGEX MATCH "#define UTF8PROC_VERSION_MAJOR [0-9]+" | ||
UTF8PROC_MAJOR_VERSION_DEFINITION "${UTF8PROC_H_CONTENT}") | ||
string(REGEX MATCH "#define UTF8PROC_VERSION_MINOR [0-9]+" | ||
UTF8PROC_MINOR_VERSION_DEFINITION "${UTF8PROC_H_CONTENT}") | ||
string(REGEX MATCH "#define UTF8PROC_VERSION_PATCH [0-9]+" | ||
UTF8PROC_PATCH_VERSION_DEFINITION "${UTF8PROC_H_CONTENT}") | ||
|
||
string(REGEX MATCH "[0-9]+$" UTF8PROC_MAJOR_VERSION | ||
"${UTF8PROC_MAJOR_VERSION_DEFINITION}") | ||
string(REGEX MATCH "[0-9]+$" UTF8PROC_MINOR_VERSION | ||
"${UTF8PROC_MINOR_VERSION_DEFINITION}") | ||
string(REGEX MATCH "[0-9]+$" UTF8PROC_PATCH_VERSION | ||
"${UTF8PROC_PATCH_VERSION_DEFINITION}") | ||
set(utf8proc_VERSION | ||
"${UTF8PROC_MAJOR_VERSION}.${UTF8PROC_MINOR_VERSION}.${UTF8PROC_PATCH_VERSION}" | ||
PARENT_SCOPE) | ||
else() | ||
set(utf8proc_VERSION | ||
"" | ||
PARENT_SCOPE) | ||
endif() | ||
endfunction(extract_utf8proc_version) | ||
|
||
if(BUILD_SHARED_LIBS) | ||
set(utf8proc_LIB_NAMES) | ||
if(CMAKE_IMPORT_LIBRARY_SUFFIX) | ||
list(APPEND utf8proc_LIB_NAMES | ||
"${CMAKE_IMPORT_LIBRARY_PREFIX}utf8proc${CMAKE_IMPORT_LIBRARY_SUFFIX}") | ||
endif() | ||
list(APPEND utf8proc_LIB_NAMES | ||
"${CMAKE_SHARED_LIBRARY_PREFIX}utf8proc${CMAKE_SHARED_LIBRARY_SUFFIX}") | ||
else() | ||
if(MSVC AND NOT DEFINED utf8proc_MSVC_STATIC_LIB_SUFFIX) | ||
set(utf8proc_MSVC_STATIC_LIB_SUFFIX "_static") | ||
endif() | ||
set(utf8proc_STATIC_LIB_SUFFIX | ||
"${utf8proc_MSVC_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}") | ||
set(utf8proc_LIB_NAMES | ||
"${CMAKE_STATIC_LIBRARY_PREFIX}utf8proc${utf8proc_STATIC_LIB_SUFFIX}") | ||
endif() | ||
|
||
if(utf8proc_ROOT) | ||
find_library(utf8proc_LIB | ||
NAMES ${utf8proc_LIB_NAMES} | ||
PATHS ${utf8proc_ROOT} | ||
PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} | ||
NO_DEFAULT_PATH) | ||
find_path(utf8proc_INCLUDE_DIR | ||
NAMES utf8proc.h | ||
PATHS ${utf8proc_ROOT} | ||
NO_DEFAULT_PATH | ||
PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) | ||
extract_utf8proc_version() | ||
else() | ||
find_library(utf8proc_LIB | ||
NAMES ${utf8proc_LIB_NAMES} | ||
PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) | ||
find_path(utf8proc_INCLUDE_DIR | ||
NAMES utf8proc.h | ||
PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) | ||
extract_utf8proc_version() | ||
endif() | ||
|
||
find_package_handle_standard_args( | ||
utf8proc | ||
REQUIRED_VARS utf8proc_LIB utf8proc_INCLUDE_DIR | ||
VERSION_VAR utf8proc_VERSION) | ||
|
||
if(utf8proc_FOUND) | ||
set(utf8proc_FOUND TRUE) | ||
add_library(utf8proc::utf8proc UNKNOWN IMPORTED) | ||
set_target_properties(utf8proc::utf8proc | ||
PROPERTIES IMPORTED_LOCATION "${utf8proc_LIB}" | ||
INTERFACE_INCLUDE_DIRECTORIES | ||
"${utf8proc_INCLUDE_DIR}") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters