Revision: 77910
http://sourceforge.net/p/brlcad/code/77910
Author: starseeker
Date: 2020-12-03 17:32:32 +0000 (Thu, 03 Dec 2020)
Log Message:
-----------
Pull the working CMAKE_IGNORE_PATH logic from extbuild - need to ignore exact
paths of interest, not the prefix dir for those paths.
Modified Paths:
--------------
brlcad/trunk/misc/CMake/BRLCAD_Install_Prefix.cmake
Modified: brlcad/trunk/misc/CMake/BRLCAD_Install_Prefix.cmake
===================================================================
--- brlcad/trunk/misc/CMake/BRLCAD_Install_Prefix.cmake 2020-12-03 17:28:01 UTC
(rev 77909)
+++ brlcad/trunk/misc/CMake/BRLCAD_Install_Prefix.cmake 2020-12-03 17:32:32 UTC
(rev 77910)
@@ -137,20 +137,40 @@
# To ensure the previous (and internally set) CMAKE_INSTALL_PREFIX value
# is available, BRLCAD_PREFIX is used to store the value in the cache.)
-if(CMAKE_INSTALL_PREFIX)
- if(NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT
"${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
- get_filename_component(PATH_NORMALIZED
"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}" ABSOLUTE)
- set(CMAKE_SYSTEM_IGNORE_PATH "${PATH_NORMALIZED}")
- endif(NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT
"${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
-endif(CMAKE_INSTALL_PREFIX)
+# CMAKE_IGNORE_PATH needs a list of explicit directories, not a
+# list of prefixes - in other words, it ignores EXACTLY the specified
+# path and not any subdirectories under that path. See:
+# https://cmake.org/cmake/help/latest/variable/CMAKE_IGNORE_PATH.html
+# This means we can't just add the install path to the ignore variables
+# and have find_package skip items in the bin and lib subdirs - we need
+# to list them explicitly for exclusion.
-if(BRLCAD_PREFIX)
- if(NOT "${BRLCAD_PREFIX}" STREQUAL "/usr" AND NOT "${BRLCAD_PREFIX}"
STREQUAL "/usr/local")
- get_filename_component(PATH_NORMALIZED "${BRLCAD_PREFIX}/${LIB_DIR}"
ABSOLUTE)
- set(CMAKE_SYSTEM_IGNORE_PATH "${PATH_NORMALIZED}")
- endif(NOT "${BRLCAD_PREFIX}" STREQUAL "/usr" AND NOT "${BRLCAD_PREFIX}"
STREQUAL "/usr/local")
-endif(BRLCAD_PREFIX)
-mark_as_advanced(CMAKE_SYSTEM_IGNORE_PATH)
+if(NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT
"${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
+ # Make sure we are working with the fully normalized path
+ get_filename_component(PATH_NORMALIZED "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
+ set(IGNORE_SUBDIRS ${BIN_DIR} ${LIB_DIR})
+ if (CMAKE_CONFIGURATION_TYPES)
+ # If we're doing multi-config, ignore all the possible output locations
+ foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
+ if ("${cfg}" STREQUAL "Release")
+ string(REPLACE "${BUILD_TYPE_KEY}" "rel" "${CMAKE_INSTALL_PREFIX}"
TYPEPATH)
+ elseif ("${cfg}" STREQUAL "Debug")
+ string(REPLACE "${BUILD_TYPE_KEY}" "dev" "${CMAKE_INSTALL_PREFIX}"
TYPEPATH)
+ else ("${cfg}" STREQUAL "Release")
+ string(REPLACE "${BUILD_TYPE_KEY}" "${cfg}" "${CMAKE_INSTALL_PREFIX}"
TYPEPATH)
+ endif ("${cfg}" STREQUAL "Release")
+ foreach(sd ${IGNORE_SUBDIRS})
+ set(CMAKE_SYSTEM_IGNORE_PATH
"${CMAKE_SYSTEM_IGNORE_PATH};${TYPEPATH}/${sd}")
+ set(CMAKE_IGNORE_PATH "${CMAKE_SYSTEM_IGNORE_PATH};${TYPEPATH}/${sd}")
+ endforeach(sd ${IGNORE_SUBDIRS})
+ endforeach(cfg ${CMAKE_CONFIGURATION_TYPES})
+ else (CMAKE_CONFIGURATION_TYPES)
+ foreach(sd ${IGNORE_SUBDIRS})
+ set(CMAKE_SYSTEM_IGNORE_PATH
"${CMAKE_SYSTEM_IGNORE_PATH};${PATH_NORMALIZED}/${sd}")
+ set(CMAKE_IGNORE_PATH
"${CMAKE_SYSTEM_IGNORE_PATH};${PATH_NORMALIZED}/${sd}")
+ endforeach(sd ${IGNORE_SUBDIRS})
+ endif (CMAKE_CONFIGURATION_TYPES)
+endif(NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT
"${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
#------------------------------------------------------------------------------
# Now that we know the install prefix, generate the binary for calculating
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits