Revision: 77462
          http://sourceforge.net/p/brlcad/code/77462
Author:   starseeker
Date:     2020-10-16 20:24:59 +0000 (Fri, 16 Oct 2020)
Log Message:
-----------
Actually we don't want to use MAKE_ARCHIVE_OUTPUT_DIRECTORY and friends here, 
since they're full path and don't work for multiconfig...

Modified Paths:
--------------
    
brlcad/branches/thirdparty_rework/src/superbuild/CMake/ExternalProject_Target.cmake

Modified: 
brlcad/branches/thirdparty_rework/src/superbuild/CMake/ExternalProject_Target.cmake
===================================================================
--- 
brlcad/branches/thirdparty_rework/src/superbuild/CMake/ExternalProject_Target.cmake
 2020-10-16 20:23:02 UTC (rev 77461)
+++ 
brlcad/branches/thirdparty_rework/src/superbuild/CMake/ExternalProject_Target.cmake
 2020-10-16 20:24:59 UTC (rev 77462)
@@ -123,7 +123,7 @@
 endfunction(ExternalProject_ByProducts)
 
 
-function(ET_target_props etarg IMPORT_PREFIX LINK_TARGET)
+function(ET_target_props etarg REL_DIR LINK_TARGET)
 
   cmake_parse_arguments(ET "SHARED" "LINK_TARGET_DEBUG" "" ${ARGN})
 
@@ -136,7 +136,7 @@
     set_property(TARGET ${etarg} APPEND PROPERTY IMPORTED_CONFIGURATIONS 
NOCONFIG)
     set_target_properties(${etarg} PROPERTIES
       IMPORTED_NO_SONAME TRUE
-      IMPORTED_LOCATION_NOCONFIG "${IMPORT_PREFIX}/${LINK_TARGET}"
+      IMPORTED_LOCATION_NOCONFIG 
"${CMAKE_BINARY_DIR}/${REL_DIR}/${LINK_TARGET}"
       IMPORTED_SONAME_NOCONFIG "${LINK_TARGET}"
       )
 
@@ -146,7 +146,7 @@
     if(ET_SHARED AND MSVC)
       string(REPLACE "${CMAKE_SHARED_LIBRARY_SUFFIX}" ".lib" IMPLIB_FILE 
"${LINK_TARGET}")
       set_target_properties(${etarg} PROPERTIES
-       IMPORTED_IMPLIB_NOCONFIG "${IMPORT_PREFIX}/${IMPLIB_FILE}"
+       IMPORTED_IMPLIB_NOCONFIG "${CMAKE_BINARY_DIR}/${REL_DIR}/${IMPLIB_FILE}"
        )
     endif(ET_SHARED AND MSVC)
 
@@ -165,7 +165,7 @@
       # If we're multiconfig, define properties for each configuration
       set_target_properties(${etarg} PROPERTIES
        IMPORTED_NO_SONAME_${CFG_TYPE_UPPER} TRUE
-       IMPORTED_LOCATION_${CFG_TYPE_UPPER} "${IMPORT_PREFIX}/${CLINK_TARGET}"
+       IMPORTED_LOCATION_${CFG_TYPE_UPPER} 
"${CMAKE_BINARY_DIR}/${CFG_TYPE}/${REL_DIR}/${CLINK_TARGET}"
        IMPORTED_SONAME_${CFG_TYPE_UPPER} "${CLINK_TARGET}"
        )
 
@@ -175,7 +175,7 @@
       if(ET_SHARED AND MSVC)
        string(REPLACE "${CMAKE_SHARED_LIBRARY_SUFFIX}" ".lib" IMPLIB_FILE 
"${CLINK_TARGET}")
        set_target_properties(${etarg} PROPERTIES
-         IMPORTED_IMPLIB_${CFG_TYPE_UPPER} "${IMPORT_PREFIX}/${IMPLIB_FILE}"
+         IMPORTED_IMPLIB_${CFG_TYPE_UPPER} 
"${CMAKE_BINARY_DIR}/${CFG_TYPE}/${REL_DIR}/${IMPLIB_FILE}"
          )
       endif(ET_SHARED AND MSVC)
 
@@ -317,12 +317,22 @@
 
     add_library(${etarg} SHARED IMPORTED GLOBAL)
 
-    fcfgcpy(TOUT ${extproj} ${extroot} ${fname} 
${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${fname})
+    if (MSVC)
+      set(SHARED_DIR ${BIN_DIR})
+    else (MSVC)
+      set(SHARED_DIR ${LIB_DIR})
+    endif (MSVC)
 
+    fcfgcpy(TOUT ${extproj} ${extroot} ${fname} ${SHARED_DIR} ${fname})
+
+    # Because we're using LINK_TARGET here rather than fname, we need to take 
any relative
+    # directories specified in fname and ppend them to SHARED_DIR. (For other 
cases we are
+    # just feeding fname directly, so there are no such concerns.  TODO - 
should we just
+    # require relative dirs on all the symlinks instead?
     get_filename_component(LDIR "${fname}" DIRECTORY)
-    ET_target_props(${etarg} "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${LDIR}" 
${LINK_TARGET} SHARED LINK_TARGET_DEBUG "${LINK_TARGET_DEBUG}")
+    ET_target_props(${etarg} "${SHARED_DIR}/${LDIR}" ${LINK_TARGET} SHARED 
LINK_TARGET_DEBUG "${LINK_TARGET_DEBUG}")
 
-    install(FILES 
"${CMAKE_BINARY_DIR}/$<CONFIG>/${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${fname}" 
DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${E_SUBDIR})
+    install(FILES "${CMAKE_BINARY_DIR}/$<CONFIG>/${SHARED_DIR}/${fname}" 
DESTINATION ${SHARED_DIR}/${E_SUBDIR})
 
     # Let CMake know there is a target dependency here, despite this being an 
import target
     add_dependencies(${etarg} ${extproj})
@@ -332,13 +342,13 @@
 
       # Perform RPath magic
       if (E_RPATH)
-       ET_RPath("${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${fname}")
+       ET_RPath("${CMAKE_INSTALL_PREFIX}/${SHARED_DIR}/${fname}")
       endif (E_RPATH)
 
       # Add install rules for any symlinks the caller has listed
       foreach(slink ${E_SYMLINKS})
-       fcfgcpy(TOUT ${extproj} ${extroot} ${slink} 
${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${slink})
-       install(FILES 
"${CMAKE_BINARY_DIR}/$<CONFIG>/${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${slink}" 
DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${E_SUBDIR})
+       fcfgcpy(TOUT ${extproj} ${extroot} ${slink} ${SHARED_DIR} ${slink})
+       install(FILES "${CMAKE_BINARY_DIR}/$<CONFIG>/${SHARED_DIR}/${slink}" 
DESTINATION ${SHARED_DIR}/${E_SUBDIR})
       endforeach(slink ${E_SYMLINKS})
 
     endif (NOT MSVC)
@@ -350,10 +360,10 @@
 
     add_library(${etarg} STATIC IMPORTED GLOBAL)
 
-    fcfgcpy(TOUT ${extproj} ${extroot} ${fname} 
${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} ${fname})
+    fcfgcpy(TOUT ${extproj} ${extroot} ${fname} ${LIB_DIR} ${fname})
 
-    ET_target_props(${etarg} "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" ${fname} 
STATIC LINK_TARGET_DEBUG "${LINK_TARGET_DEBUG}")
-    install(FILES 
"${CMAKE_BINARY_DIR}/$<CONFIG>/${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${fname}" 
DESTINATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${E_SUBDIR})
+    ET_target_props(${etarg} "${LIB_DIR}" ${fname} STATIC LINK_TARGET_DEBUG 
"${LINK_TARGET_DEBUG}")
+    install(FILES "${CMAKE_BINARY_DIR}/$<CONFIG>/${LIB_DIR}/${fname}" 
DESTINATION ${LIB_DIR}/${E_SUBDIR})
 
     # Let CMake know there is a target dependency here, despite this being an 
import target
     add_dependencies(${etarg} ${extproj})
@@ -363,8 +373,8 @@
 
       # Add install rules for any symlinks the caller has listed
       foreach(slink ${E_SYMLINKS})
-       fcfgcpy(TOUT ${extproj} ${extroot} ${slink} 
${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} ${slink})
-       install(FILES 
"${CMAKE_BINARY_DIR}/$<CONFIG>/${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${slink}" 
DESTINATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
+       fcfgcpy(TOUT ${extproj} ${extroot} ${slink} ${LIB_DIR} ${slink})
+       install(FILES "${CMAKE_BINARY_DIR}/$<CONFIG>/${LIB_DIR}/${slink}" 
DESTINATION ${LIB_DIR})
       endforeach(slink ${E_SYMLINKS})
 
     endif (NOT MSVC)
@@ -376,25 +386,25 @@
 
     add_executable(${etarg} IMPORTED GLOBAL)
 
-    fcfgcpy(TOUT ${extproj} ${extroot} ${fname} 
${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${fname})
-    
-    ET_target_props(${etarg} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ${fname})
+    fcfgcpy(TOUT ${extproj} ${extroot} ${fname} ${BIN_DIR} ${fname})
 
-    install(PROGRAMS 
"${CMAKE_BINARY_DIR}/$<CONFIG>/${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${fname}" 
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${E_SUBDIR})
+    ET_target_props(${etarg} "${BIN_DIR}" ${fname})
 
+    install(PROGRAMS "${CMAKE_BINARY_DIR}/$<CONFIG>/${BIN_DIR}/${fname}" 
DESTINATION ${BIN_DIR}/${E_SUBDIR})
+
     # Let CMake know there is a target dependency here, despite this being an 
import target
     add_dependencies(${etarg} ${extproj})
 
     # additional (non-MSVC) work specific to shared libraries:
     if (NOT MSVC)
- 
+
       # Perform RPath magic
       if (E_RPATH)
-       ET_RPath("${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${fname}")
+       ET_RPath("${CMAKE_INSTALL_PREFIX}/${BIN_DIR}/${fname}")
       endif (E_RPATH)
 
     endif (NOT MSVC)
-  
+
   endif ("${etype}" STREQUAL "EXEC")
 
   # Set up the staging targets - these copy the files we are interested in 
from the

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