Przeglądaj źródła

BundleUtilities: Add rpath to loadable modules in test.

Clinton Stimpson 14 lat temu
rodzic
commit
e17135e882

+ 33 - 21
Tests/BundleUtilities/CMakeLists.txt

@@ -9,12 +9,6 @@ add_library(shared SHARED shared.cpp shared.h)
 # another shared library
 add_library(shared2 SHARED shared2.cpp shared2.h)
 
-# a loadable module (depends on shared2)
-# test app will load this at runtime
-add_library(module MODULE module.cpp module.h)
-set_target_properties(module PROPERTIES PREFIX "")
-get_target_property(module_loc module LOCATION)
-target_link_libraries(module shared2)
 
 # a framework library
 add_library(framework SHARED framework.cpp framework.h)
@@ -22,28 +16,37 @@ add_library(framework SHARED framework.cpp framework.h)
 #set_target_properties(framework PROPERTIES FRAMEWORK 1)
 
 # make sure rpaths are not helping BundleUtilities or the executables
-set_target_properties(shared shared2 module framework PROPERTIES
+set_target_properties(shared shared2 framework PROPERTIES
                       SKIP_BUILD_RPATH 1)
 
 
 ######  test a Bundle application using dependencies
 
-set(TESTBUNDLEDIR "${CMAKE_CURRENT_BINARY_DIR}/testdir1")
-add_executable(testbundleutils1 MACOSX_BUNDLE testbundleutils.cpp)
+# a loadable module (depends on shared2)
+# testbundleutils1 will load this at runtime
+add_library(module1 MODULE module.cpp module.h)
+set_target_properties(module1 PROPERTIES PREFIX "")
+get_target_property(module_loc module1 LOCATION)
+target_link_libraries(module1 shared2)
+
+# a bundle application
+add_executable(testbundleutils1 MACOSX_BUNDLE testbundleutils1.cpp)
 target_link_libraries(testbundleutils1 shared framework ${CMAKE_DL_LIBS})
-set_target_properties(testbundleutils1 PROPERTIES
-                      INSTALL_RPATH "${TESTBUNDLEDIR}"
-                      BUILD_WITH_INSTALL_RPATH 1)
 get_target_property(loc testbundleutils1 LOCATION)
 
+set_target_properties(testbundleutils1 module1 PROPERTIES
+                      INSTALL_RPATH "${CMAKE_CURRENT_BINARY_DIR}/testdir1"
+                      BUILD_WITH_INSTALL_RPATH 1)
+
+# add custom target to install and test the app
 add_custom_target(testbundleutils1_test  ALL
   COMMAND ${CMAKE_COMMAND}
   "-DINPUT=${loc}"
   "-DMODULE=${module_loc}"
   "-DINPUTDIR=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
-  "-DOUTPUTDIR=${TESTBUNDLEDIR}"
+  "-DOUTPUTDIR=${CMAKE_CURRENT_BINARY_DIR}/testdir1"
   -P "${CMAKE_CURRENT_SOURCE_DIR}/bundleutils.cmake"
-  DEPENDS testbundleutils1 module
+  DEPENDS testbundleutils1 module1
   )
 
 add_dependencies(testbundleutils1_test testbundleutils1)
@@ -52,21 +55,30 @@ add_dependencies(testbundleutils1_test testbundleutils1)
 
 ######  test a non-Bundle application using dependencies
 
-set(TESTBUNDLEDIR "${CMAKE_CURRENT_BINARY_DIR}/testdir2")
-add_executable(testbundleutils2 testbundleutils.cpp)
+# a loadable module (depends on shared2)
+# testbundleutils2 will load this at runtime
+add_library(module2 MODULE module.cpp module.h)
+set_target_properties(module2 PROPERTIES PREFIX "")
+get_target_property(module_loc module2 LOCATION)
+target_link_libraries(module2 shared2)
+
+# a non-bundle application
+add_executable(testbundleutils2 testbundleutils2.cpp)
 target_link_libraries(testbundleutils2 shared framework ${CMAKE_DL_LIBS})
-set_target_properties(testbundleutils2 PROPERTIES
-                      INSTALL_RPATH "${TESTBUNDLEDIR}"
-                      BUILD_WITH_INSTALL_RPATH 1)
 get_target_property(loc testbundleutils2 LOCATION)
 
+set_target_properties(testbundleutils2 module2 PROPERTIES
+                      INSTALL_RPATH "${CMAKE_CURRENT_BINARY_DIR}/testdir2"
+                      BUILD_WITH_INSTALL_RPATH 1)
+
+# add custom target to install and test the app
 add_custom_target(testbundleutils2_test  ALL
   COMMAND ${CMAKE_COMMAND}
   "-DINPUT=${loc}"
   "-DMODULE=${module_loc}"
   "-DINPUTDIR=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
-  "-DOUTPUTDIR=${TESTBUNDLEDIR}"
+  "-DOUTPUTDIR=${CMAKE_CURRENT_BINARY_DIR}/testdir2"
   -P "${CMAKE_CURRENT_SOURCE_DIR}/bundleutils.cmake"
-  DEPENDS testbundleutils1 module
+  DEPENDS testbundleutils1 module2
   )
 add_dependencies(testbundleutils2_test testbundleutils2)

+ 4 - 4
Tests/BundleUtilities/testbundleutils.cpp → Tests/BundleUtilities/testbundleutils1.cpp

@@ -15,16 +15,16 @@ int main(int, char**)
   shared();
 
 #if defined(WIN32)
-  HANDLE lib = LoadLibraryA("module.dll");
+  HANDLE lib = LoadLibraryA("module1.dll");
   if(!lib)
   {
-    printf("Failed to open module\n");
+    printf("Failed to open module1\n");
   }
 #else
-  void* lib = dlopen("module.so", RTLD_LAZY);
+  void* lib = dlopen("module1.so", RTLD_LAZY);
   if(!lib)
   {
-    printf("Failed to open module\n%s\n", dlerror());
+    printf("Failed to open module1\n%s\n", dlerror());
   }
 #endif
 

+ 33 - 0
Tests/BundleUtilities/testbundleutils2.cpp

@@ -0,0 +1,33 @@
+
+#include "framework.h"
+#include "shared.h"
+#include "stdio.h"
+
+#if defined(WIN32)
+#include <windows.h>
+#else
+#include "dlfcn.h"
+#endif
+
+int main(int, char**)
+{
+  framework();
+  shared();
+
+#if defined(WIN32)
+  HANDLE lib = LoadLibraryA("module2.dll");
+  if(!lib)
+  {
+    printf("Failed to open module2\n");
+  }
+#else
+  void* lib = dlopen("module2.so", RTLD_LAZY);
+  if(!lib)
+  {
+    printf("Failed to open module2\n%s\n", dlerror());
+  }
+#endif
+
+
+  return lib == 0 ? 1 : 0;
+}