summaryrefslogtreecommitdiffstats
path: root/Tests/LinkLineOrder/CMakeLists.txt
diff options
context:
space:
mode:
authorAmitha Perera <perera@cs.rpi.edu>2002-11-19 23:01:05 (GMT)
committerAmitha Perera <perera@cs.rpi.edu>2002-11-19 23:01:05 (GMT)
commit939035ad91aff5de5a1b514176cd2765a1b9a728 (patch)
tree9994ce3571301afd9a375bd50eda63603b4de202 /Tests/LinkLineOrder/CMakeLists.txt
parent7140c6f364c55084d5e581cc7e603032ec4087b9 (diff)
downloadCMake-939035ad91aff5de5a1b514176cd2765a1b9a728.zip
CMake-939035ad91aff5de5a1b514176cd2765a1b9a728.tar.gz
CMake-939035ad91aff5de5a1b514176cd2765a1b9a728.tar.bz2
BUG: the dependency analysis would incorrectly alphabetically re-order the
link lines, which affects external libraries pulled up from deep within the dependency tree. Fixed by preserving order everywhere.
Diffstat (limited to 'Tests/LinkLineOrder/CMakeLists.txt')
-rw-r--r--Tests/LinkLineOrder/CMakeLists.txt36
1 files changed, 36 insertions, 0 deletions
diff --git a/Tests/LinkLineOrder/CMakeLists.txt b/Tests/LinkLineOrder/CMakeLists.txt
new file mode 100644
index 0000000..21a5022
--- /dev/null
+++ b/Tests/LinkLineOrder/CMakeLists.txt
@@ -0,0 +1,36 @@
+PROJECT( LinkLineOrder )
+
+# This tests ensures that the order of libraries are preserved when
+# they don't have dependency information, even if they are deep in the
+# dependency tree.
+
+# NoDepC depends on NoDepA which depends on NoDepB. NoDepE and NoDepF
+# are dependent on each other (recursive dependency). However, CMake
+# has no information about these libraries except for the order they
+# are specified in One. We must make sure we don't lose that.
+
+ADD_LIBRARY( NoDepA NoDepA.c )
+ADD_LIBRARY( NoDepB NoDepB.c )
+ADD_LIBRARY( NoDepC NoDepC.c )
+ADD_LIBRARY( NoDepE NoDepE.c )
+ADD_LIBRARY( NoDepF NoDepF.c )
+
+ADD_LIBRARY( One One.c )
+TARGET_LINK_LIBRARIES( One NoDepC NoDepA NoDepB NoDepE NoDepF NoDepE )
+
+ADD_EXECUTABLE( Exec1 Exec1.c )
+TARGET_LINK_LIBRARIES( Exec1 One )
+
+
+# Similar situation as One, except at a different level of the
+# dependency tree. This makes sure that the order is presevered
+# everywhere in the graph.
+ADD_LIBRARY( NoDepX NoDepX.c )
+ADD_LIBRARY( NoDepY NoDepY.c )
+ADD_LIBRARY( NoDepZ NoDepZ.c )
+
+ADD_LIBRARY( Two Two.c )
+TARGET_LINK_LIBRARIES( Two One NoDepZ NoDepX NoDepY )
+
+ADD_EXECUTABLE( Exec2 Exec2.c )
+TARGET_LINK_LIBRARIES( Exec2 Two )