Warning, /system/qtcurve/cmake/CMakePathMacros.cmake is written in an unsupported language. File is not indexed.

0001 # Copyright (C) 2013~2014 by Yichao Yu
0002 # yyc1992@gmail.com
0003 #
0004 # Redistribution and use in source and binary forms, with or without
0005 # modification, are permitted provided that the following conditions
0006 # are met:
0007 #
0008 # 1. Redistributions of source code must retain the above copyright
0009 #    notice, this list of conditions and the following disclaimer.
0010 # 2. Redistributions in binary form must reproduce the above copyright
0011 #    notice, this list of conditions and the following disclaimer in the
0012 #    documentation and/or other materials provided with the distribution.
0013 #
0014 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
0015 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
0016 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
0017 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
0018 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
0019 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
0020 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
0021 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
0022 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
0023 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0024 
0025 # Public functions and macros provided by this file
0026 # (See comment of each for more detail):
0027 
0028 include(CMakeArrayMacros)
0029 
0030 function(cmake_utils_abs_path var path)
0031   get_filename_component(abs_path "${path}" ABSOLUTE)
0032   if("x${abs_path}x" MATCHES "^x//")
0033     string(SUBSTRING "${abs_path}" 1 -1 abs_path)
0034   endif()
0035   set("${var}" "${abs_path}" PARENT_SCOPE)
0036 endfunction()
0037 
0038 macro(__cmake_utils_to_abs_foreach)
0039   if("x${${__cmake_utils_to_abs_path_value}}x" STREQUAL xx)
0040     return()
0041   endif()
0042   cmake_utils_abs_path("${__cmake_utils_to_abs_path_value}"
0043     "${${__cmake_utils_to_abs_path_value}}")
0044   set("${__cmake_utils_to_abs_path_value}"
0045     "${${__cmake_utils_to_abs_path_value}}" PARENT_SCOPE)
0046 endmacro()
0047 
0048 function(cmake_utils_to_abs)
0049   cmake_array_foreach(__cmake_utils_to_abs_path_value
0050     __cmake_utils_to_abs_foreach)
0051 endfunction()
0052 
0053 function(cmake_utils_is_subpath ret_var parent child)
0054   cmake_utils_to_abs(parent child)
0055   file(RELATIVE_PATH rel_path "${parent}" "${child}")
0056   string(REGEX MATCH "^\\.\\./" match "${rel_path}")
0057   if(match)
0058     set("${ret_var}" False PARENT_SCOPE)
0059   else()
0060     set("${ret_var}" True PARENT_SCOPE)
0061   endif()
0062 endfunction()
0063 
0064 function(__cmake_utils_src_to_bin_with_path out path src_path bin_path)
0065   cmake_utils_is_subpath(issub "${src_path}" "${path}")
0066   if(issub)
0067     file(RELATIVE_PATH rel_path "${src_path}" "${path}")
0068     cmake_utils_abs_path(path "${bin_path}/${rel_path}")
0069     set("${out}" "${path}" PARENT_SCOPE)
0070   endif()
0071 endfunction()
0072 
0073 function(cmake_utils_src_to_bin out path)
0074   set(bin_path)
0075   __cmake_utils_src_to_bin_with_path(bin_path "${path}"
0076     "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")
0077   if(NOT "x${bin_path}" STREQUAL "x")
0078     set("${out}" "${bin_path}" PARENT_SCOPE)
0079     return()
0080   endif()
0081   __cmake_utils_src_to_bin_with_path(bin_path "${path}"
0082     "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}")
0083   if(NOT "x${bin_path}" STREQUAL "x")
0084     set("${out}" "${bin_path}" PARENT_SCOPE)
0085     return()
0086   endif()
0087   __cmake_utils_src_to_bin_with_path(bin_path "${path}"
0088     "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}")
0089   if(NOT "x${bin_path}" STREQUAL "x")
0090     set("${out}" "${bin_path}" PARENT_SCOPE)
0091     return()
0092   endif()
0093   set("${out}" "${path}" PARENT_SCOPE)
0094 endfunction()
0095 
0096 function(_cmake_utils_std_fname_with_dirs var bin src fname)
0097   cmake_utils_is_subpath(is_bin "${bin}" "${fname}")
0098   cmake_utils_is_subpath(is_src "${src}" "${fname}")
0099   if(is_bin OR is_src)
0100     if(NOT is_src)
0101       file(RELATIVE_PATH rel_path "${bin}" "${fname}")
0102     elseif(NOT is_bin)
0103       file(RELATIVE_PATH rel_path "${src}" "${fname}")
0104     else()
0105       cmake_utils_is_subpath(bin_in_src "${src}" "${bin}")
0106       if(bin_in_src)
0107         file(RELATIVE_PATH rel_path "${bin}" "${fname}")
0108       else()
0109         file(RELATIVE_PATH rel_path "${src}" "${fname}")
0110       endif()
0111     endif()
0112     set("${var}" "${rel_path}" PARENT_SCOPE)
0113   else()
0114     set("${var}" "" PARENT_SCOPE)
0115   endif()
0116 endfunction()
0117 
0118 function(cmake_utils_std_fname var fname)
0119   cmake_utils_to_abs(fname)
0120   _cmake_utils_std_fname_with_dirs(cur_rel_path "${CMAKE_CURRENT_BINARY_DIR}"
0121     "${CMAKE_CURRENT_SOURCE_DIR}" "${fname}")
0122   if(NOT "x${cur_rel_path}x" STREQUAL "xx")
0123     set("${var}" "${cur_rel_path}" PARENT_SCOPE)
0124     return()
0125   endif()
0126   _cmake_utils_std_fname_with_dirs(pro_rel_path "${PROJECT_BINARY_DIR}"
0127     "${PROJECT_SOURCE_DIR}" "${fname}")
0128   if(NOT "x${pro_rel_path}x" STREQUAL "xx")
0129     set("${var}" "${pro_rel_path}" PARENT_SCOPE)
0130     return()
0131   endif()
0132   _cmake_utils_std_fname_with_dirs(cmake_rel_path "${CMAKE_BINARY_DIR}"
0133     "${CMAKE_SOURCE_DIR}" "${fname}")
0134   if(NOT "x${cmake_rel_path}x" STREQUAL "xx")
0135     set("${var}" "${cmake_rel_path}" PARENT_SCOPE)
0136     return()
0137   endif()
0138   set("${var}" "${fname}" PARENT_SCOPE)
0139 endfunction()