Warning, /sdk/pology/cmake/ProjectTools.cmake is written in an unsupported language. File is not indexed.
0001 # TODO: Add doc comments for all this stuff. 0002 0003 0004 function(GET_CURRENT_SOURCE_SUBDIR subdirvar) 0005 set(argn ${ARGN}) 0006 0007 string(REPLACE ${CMAKE_SOURCE_DIR}/ "" subdir 0008 ${CMAKE_CURRENT_SOURCE_DIR}) 0009 0010 if(${ARGC} GREATER 1) 0011 string(REPLACE "/" ";" subdirlst ${subdir}) 0012 list(LENGTH subdirlst subdepth) 0013 set(start 0) 0014 if(${ARGC} GREATER 1) 0015 list(GET argn 0 start) 0016 string(REGEX MATCH "^-" isneg ${start}) 0017 if(isneg) 0018 math(EXPR start "${subdepth} ${start}") 0019 endif() 0020 endif() 0021 set(end ${subdepth}) 0022 if(${ARGC} GREATER 2) 0023 list(GET argn 1 end) 0024 string(REGEX MATCH "^-" isneg ${end}) 0025 if(isneg) 0026 math(EXPR end "${subdepth} ${end}") 0027 endif() 0028 endif() 0029 set(subdir "") 0030 set(i 0) 0031 math(EXPR startm1 "${start} - 1") 0032 math(EXPR endp1 "${end} + 1") 0033 foreach(cdir ${subdirlst}) 0034 if(i GREATER startm1 AND i LESS endp1) 0035 if(subdir) 0036 set(subdir "${subdir}/${cdir}") 0037 else() 0038 set(subdir "${cdir}") 0039 endif() 0040 endif() 0041 math(EXPR i "${i} + 1") 0042 endforeach() 0043 endif() 0044 0045 set(${subdirvar} "${subdir}" PARENT_SCOPE) 0046 0047 endfunction() 0048 0049 0050 macro(LINK_INSTALL_SCRIPTS instdir linkdir) 0051 set(scripts ${ARGN}) 0052 0053 # If install directory is a relative path, prepend install prefix. 0054 if(NOT IS_ABSOLUTE ${instdir}) 0055 set(instdir ${CMAKE_INSTALL_PREFIX}/${instdir}) 0056 endif() 0057 0058 # Determine base name for targets. 0059 get_current_source_subdir(srcsubdir) 0060 string(REPLACE "/" "-" targbase ${srcsubdir}) 0061 0062 if(UNIX) 0063 # On UNIX platforms, make symlinks to point as installed. 0064 set(scriptlinks) 0065 foreach(script ${scripts}) 0066 get_filename_component(scriptname ${script} NAME) 0067 get_filename_component(scriptnamewe ${script} NAME_WE) 0068 set(scriptlinkdir ${CMAKE_CURRENT_BINARY_DIR}/bin) 0069 set(scriptlink ${scriptlinkdir}/${scriptnamewe}) 0070 set(scriptlinks ${scriptlinks} ${scriptlink}) 0071 add_custom_command(OUTPUT ${scriptlink} 0072 COMMAND mkdir -p ${scriptlinkdir} 0073 COMMAND ln -sf 0074 ${instdir}/${scriptname} 0075 ${scriptlink} 0076 DEPENDS ${script}) 0077 install(PROGRAMS ${script} DESTINATION ${instdir}) 0078 install(PROGRAMS ${scriptlink} DESTINATION ${linkdir}) 0079 endforeach() 0080 add_custom_target(${targbase}-links ALL DEPENDS ${scriptlinks}) 0081 else() 0082 # On non-UNIX platforms, put scripts directly into linkdir instead. 0083 # FIXME: Batch files for WIN32? 0084 foreach(script ${scripts}) 0085 get_filename_component(scriptnamewe ${script} NAME_WE) 0086 install(PROGRAMS ${script} DESTINATION ${linkdir} 0087 RENAME ${scriptnamewe}) 0088 endforeach() 0089 endif() 0090 0091 endmacro() 0092 0093