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

Reply via email to