diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index e749055abf92da378c2494b4349e26f19b1b28aa..c0efa27f6e0e993389308235535b23b0a219a341 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -40,9 +40,4 @@ else (SERVER AND LINUX)
   set(LLWINDOW_LIBRARIES
       llwindow
       )
-  if (WINDOWS)
-      list(APPEND LLWINDOW_LIBRARIES
-          comdlg32
-          )
-  endif (WINDOWS)
 endif (SERVER AND LINUX)
diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt
index 1a4d92bc34bd65761012a27e913026730f062969..a155d1940750f758531a3ee2d7b1e8d30b66c493 100644
--- a/indra/llimage/CMakeLists.txt
+++ b/indra/llimage/CMakeLists.txt
@@ -49,8 +49,11 @@ set_source_files_properties(${llimage_HEADER_FILES}
 list(APPEND llimage_SOURCE_FILES ${llimage_HEADER_FILES})
 
 add_library (llimage ${llimage_SOURCE_FILES})
-target_link_libraries(
-    llimage
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+target_link_libraries(llimage
+    llcommon
+    llimagej2coj        # *HACK: In theory a noop for KDU builds?
     ${JPEG_LIBRARIES}
     ${PNG_LIBRARIES}
     ${ZLIB_LIBRARIES}
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 0bdb55f9d091a6a932ff9fa665369ea02ece80a3..0bb835970fdd72bda7a71fde12353ce072f3d9eb 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -3,6 +3,7 @@
 project(llrender)
 
 include(00-Common)
+include(FindOpenGL)
 include(FreeType)
 include(LLCommon)
 include(LLImage)
@@ -89,3 +90,9 @@ else (SERVER AND NOT WINDOWS AND NOT DARWIN)
       )
 endif (SERVER AND NOT WINDOWS AND NOT DARWIN)
 add_library (llrender ${llrender_SOURCE_FILES})
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+target_link_libraries(llrender 
+    llimage 
+    ${FREETYPE_LIBRARIES}
+    ${OPENGL_LIBRARIES})
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 32118e8a691564b9503a8328f1620b450067de16..5de8dc76af520b36571445e5a9f8d638bdbbbbf3 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -141,3 +141,14 @@ set_source_files_properties(${llui_HEADER_FILES}
 list(APPEND llui_SOURCE_FILES ${llui_HEADER_FILES})
 
 add_library (llui ${llui_SOURCE_FILES})
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+target_link_libraries(llui
+    llrender
+    llwindow
+    llimage
+    llvfs       # ugh, just for LLDir
+    llxml
+    llcommon    # must be after llimage, llwindow, llrender
+    llmath
+    )
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index afce0c06c38cf18cf48ab01af3ba1ff404ba589c..e1f7406287f982029e93cbd0838e5094cbcf9790 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -55,6 +55,13 @@ set(viewer_HEADER_FILES
     llmousehandler.h
     )
 
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+set(llwindow_LINK_LIBRARIES
+    ${UI_LIBRARIES}     # for GTK
+    ${SDL_LIBRARY}
+    )
+
 if (DARWIN)
   list(APPEND llwindow_SOURCE_FILES
     llkeyboardmacosx.cpp
@@ -98,6 +105,9 @@ if (WINDOWS)
        lldxhardware.h
        llkeyboardwin32.h
        )
+  list(APPEND llwindow_LINK_LIBRARIES
+       comdlg32     # Common Dialogs for ChooseColor
+       )
 endif (WINDOWS)
 
 if (SOLARIS)
@@ -133,6 +143,7 @@ if (SERVER AND NOT WINDOWS AND NOT DARWIN)
     ${llwindow_SOURCE_FILES}
     ${server_SOURCE_FILES}
     )
+  # *TODO: This should probably have target_link_libraries
 endif (SERVER AND NOT WINDOWS AND NOT DARWIN)
 
 if (llwindow_HEADER_FILES)
@@ -145,4 +156,6 @@ if (VIEWER)
     ${llwindow_SOURCE_FILES}
     ${viewer_SOURCE_FILES}
     )
+  target_link_libraries (llwindow ${llwindow_LINK_LIBRARIES})
 endif (VIEWER)
+
diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt
index 487c5b9a8a78d6d1ca9e15abfd054f788940efb6..dc7787beea98725d7011004d4db4828326bfe231 100644
--- a/indra/llxml/CMakeLists.txt
+++ b/indra/llxml/CMakeLists.txt
@@ -35,8 +35,10 @@ set_source_files_properties(${llxml_HEADER_FILES}
 list(APPEND llxml_SOURCE_FILES ${llxml_HEADER_FILES})
 
 add_library (llxml ${llxml_SOURCE_FILES})
-target_link_libraries(
-    llxml
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+target_link_libraries( llxml
+    llmath
     ${BOOST_SIGNALS_LIBRARY}
     ${EXPAT_LIBRARIES}
     )