diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt
index 20c641f2f0212ed6f6980d6ce8dba7a0105776f4..7cfc41d5b27e34ceaae5423139096ac46c6a7721 100644
--- a/swig/CMakeLists.txt
+++ b/swig/CMakeLists.txt
@@ -38,6 +38,8 @@ if(CMAKE_COMPILER_IS_GNUCXX)
         set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -fno-omit-frame-pointer")
 endif(CMAKE_COMPILER_IS_GNUCXX)
 
+file(GLOB_RECURSE I_FILES "*.i")
+
 # -----------------------------------------------------------------------------
 # -----------------------------------------------------------------------------
 
@@ -48,6 +50,7 @@ SET(SWIG_SRC_DIR ${SWIG_DIR}/wccl)
 # wccl
 SET_SOURCE_FILES_PROPERTIES(wccl.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(wccl.i PROPERTIES SWIG_FLAGS "-includeall" )
+set(SWIG_MODULE_wccl_EXTRA_DEPS ${I_FILES})
 SWIG_ADD_MODULE(wccl python wccl.i )
 SWIG_LINK_LIBRARIES(wccl ${PYTHON_LIBRARIES} ${CORPUS2_PWR_WCCL_LIBS} antlr-pic)
 
@@ -92,35 +95,7 @@ install(
 # -----------------------------------------------------------------------------
 
 install(
-	FILES libcclactionexeccontext.i
-	libcclannotationmatch.i
-	libcclbool.i
-	libcclexpression.i
-	libcclfunctionaloperator.i
-	libcclfunctionalopsequence.i
-	libccllexicon.i
-	libccllexicons.i
-	libcclmatchdata.i
-	libcclmatch.i
-	libcclmatchrule.i
-	libcclmatchrulesequence.i
-	libcclmatchvector.i
-	libccloperator.i
-	libcclparsedexpression.i
-	libcclparser.i
-	libcclposition.i
-	libcclsentencecontext.i
-	libcclstrset.i
-	libccltagaction.i
-	libccltagrule.i
-	libccltagrulesequence.i
-	libccltokenmatch.i
-	libccltset.i
-	libcclvalue.i
-	libcclvariables.i
-	libcclwcclfile.i
-	libcclwcclfileopsections.i
-	wccl.i
+	FILES ${I_FILES}
 	DESTINATION ${SWIG_SRC_DIR}
 	PERMISSIONS ${PERM_SCRIPTS}
 )