diff --git a/polly/lib/CMakeLists.txt b/polly/lib/CMakeLists.txt
index 2da9dbb632df38ebcf69d77bfcdc5e5d18d81ec5..f4af8a97fc803d72b7f67ece875e035069073ef5 100755
--- a/polly/lib/CMakeLists.txt
+++ b/polly/lib/CMakeLists.txt
@@ -1,24 +1,18 @@
 add_subdirectory(Analysis)
+add_subdirectory(Exchange)
 add_subdirectory(Support)
 add_subdirectory(JSON)
 
 set(MODULE TRUE)
 set(LLVM_NO_RTTI 1)
 
-if (OPENSCOP_FOUND)
-  set(POLLY_EXCHANGE_FILES
-      Exchange/OpenScopImporter.cpp Exchange/OpenScopExporter.cpp)
-endif (OPENSCOP_FOUND)
 if (SCOPLIB_FOUND)
-  set(POLLY_SCOPLIB_FILES
-      Pocc.cpp
-      Exchange/ScopLib.cpp
-      Exchange/ScopLibExporter.cpp
-      Exchange/ScopLibImporter.cpp)
+  set(POLLY_SCOPLIB_FILES Pocc.cpp)
 endif (SCOPLIB_FOUND)
 
 set(LLVM_USED_LIBS
   PollyAnalysis
+  PollyExchange
   PollySupport
   PollyJSON
   )
@@ -33,13 +27,12 @@ add_polly_library(LLVMPolly
   RegionSimplify.cpp
   RegisterPasses.cpp
   ScheduleOptimizer.cpp
-  Exchange/JSONExporter.cpp
-  ${POLLY_EXCHANGE_FILES}
   ${POLLY_SCOPLIB_FILES}
   )
 
 add_dependencies(LLVMPolly
   PollyAnalysis
+  PollyExchange
   PollySupport
   PollyJSON
   )
diff --git a/polly/lib/Exchange/CMakeLists.txt b/polly/lib/Exchange/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2268e099c22a93057a3ca95199fa32333974cc74
--- /dev/null
+++ b/polly/lib/Exchange/CMakeLists.txt
@@ -0,0 +1,18 @@
+if (OPENSCOP_FOUND)
+  set(POLLY_OPENSCOP_FILES
+      OpenScopImporter.cpp
+      OpenScopExporter.cpp)
+endif (OPENSCOP_FOUND)
+
+if (SCOPLIB_FOUND)
+  set(POLLY_SCOPLIB_FILES
+      ScopLib.cpp
+      ScopLibExporter.cpp
+      ScopLibImporter.cpp)
+endif (SCOPLIB_FOUND)
+
+add_polly_library(PollyExchange
+  JSONExporter.cpp
+  ${POLLY_OPENSCOP_FILES}
+  ${POLLY_SCOPLIB_FILES}
+)