diff generator/CMakeLists.txt @ 27:a9626891eca6

CMake: generator will work only for needed packages. CMake: check for depends packages. CMake: add options 'QT_BUILD_PACKAGE'. Now you can build only needed packages.
author SokoL_SD
date Fri, 15 May 2009 16:42:02 +0000
parents 907d517d37c6
children 10baf869635a
line wrap: on
line diff
--- a/generator/CMakeLists.txt	Fri May 15 13:38:09 2009 +0000
+++ b/generator/CMakeLists.txt	Fri May 15 16:42:02 2009 +0000
@@ -183,26 +183,84 @@
 add_executable(generator ${all_srcs} )
 target_link_libraries(generator ${libs})
 
-foreach(package ${packages})   
-    set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}.xml
-	    ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}-java.java)
-endforeach(package ${packages})
+macro(add_dgen_target package)
+    string(TOLOWER ${package} package)
+    set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/built_${package}.txt)
+    set(dgen_build_conf_req ${CMAKE_BINARY_DIR}/CMakeFiles/built_${package}_with_req.txt)
+    file(REMOVE ${dgen_build_conf})
+    file(REMOVE ${dgen_build_conf_req})
+    file(APPEND ${dgen_build_conf} "<typesystem>\n")
+    file(APPEND ${dgen_build_conf_req} "<typesystem>\n")
+    foreach(req ${ARGN})
+	string(TOLOWER ${req} req_lower)
+	file(APPEND ${dgen_build_conf} "	<load-typesystem name=\"typesystem_${req_lower}.xml\" generate=\"no\" />\n")
+	file(APPEND ${dgen_build_conf_req} "	<load-typesystem name=\"typesystem_${req_lower}.xml\" generate=\"yes\" />\n")
+    endforeach(req ${ARGN})
+
+    if(${package} STREQUAL "all")
+	foreach(pack ${ARGN})   
+	    set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${pack}/metainfo.cpp)  ## Temporary     
+	    break(pack ${ARGN})  
+	endforeach(pack ${ARGN})  	
+    else(${package} STREQUAL "all")
+	set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${package}/qt_${package}.pri)  
+	set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}.xml
+		${CMAKE_SOURCE_DIR}/generator/typesystem_${package}-java.java)
+	file(APPEND ${dgen_build_conf} "	<load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n")
+	file(APPEND ${dgen_build_conf_req} "	<load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n")
+    endif(${package} STREQUAL "all")
+
+    file(APPEND ${dgen_build_conf} "</typesystem>\n")
+    file(APPEND ${dgen_build_conf_req} "</typesystem>\n")
 
-foreach(package ${packages})   
-    set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${package}/qt_${package}.pri)       
-    break(package ${packages})  
-endforeach(package ${packages})    
+    foreach(pack ${ARGN})   
+	string(TOLOWER ${pack} pack_lower)
+	set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack_lower}.xml
+		${CMAKE_SOURCE_DIR}/generator/typesystem_${pack_lower}-java.java)
+    endforeach(pack ${ARGN})
+
+    add_custom_command(OUTPUT ${dgen_impl}
+		    COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl}
+		    COMMAND "generator"
+		    ARGS ${GEN_OPT}  --no-repreprocess --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=./ 
+			--source-directory=${CMAKE_SOURCE_DIR}/generator
+			qtjambi_masterinclude.h 
+			${dgen_build_conf}
+		    COMMENT "Generating binding..."
+		    DEPENDS  generator ${gen_sources} 
+		)
+    add_custom_target(dgen_${package} DEPENDS ${dgen_impl} COMMENT "")
+endmacro(add_dgen_target target package required)
+
+foreach(pack ${packages})   
+    set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${pack}/qt_${pack}.pri) 
+    break(pack ${packages})  
+endforeach(pack ${packages})
+
+foreach(pack ${packages})   
+    set(gen_typesystem ${gen_typesystem} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack}.xml)
+    set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack}-java.java)
+endforeach(pack ${packages})
+
+
+set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/built.txt)
+file(REMOVE ${dgen_build_conf})
+file(APPEND ${dgen_build_conf} "<typesystem>\n")
+foreach(package ${packages})
+    file(APPEND ${dgen_build_conf} "	<load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n")
+endforeach(package ${packages})
+file(APPEND ${dgen_build_conf} "</typesystem>\n")
 
 add_custom_command(OUTPUT ${dgen_impl}
-		COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl}
-		COMMAND "generator"
-		ARGS ${GEN_OPT}  --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=../ 
-		    --source-directory=${CMAKE_SOURCE_DIR}/generator
-		    qtjambi_masterinclude.h 
-		    build_opengl.txt
-		COMMENT "Generating binding..."
-		DEPENDS  generator ${gen_sources} 
-	    )		
+		    COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl}
+		    COMMAND "generator"
+		    ARGS ${GEN_OPT}  --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=${CMAKE_BINARY_DIR}
+			--source-directory=${CMAKE_SOURCE_DIR}/generator
+			qtjambi_masterinclude.h 
+			${dgen_build_conf}
+		    COMMENT "Generating binding..."
+		    DEPENDS  generator ${gen_typesystem} ${gen_sources} 
+		)
 add_custom_target(dgen DEPENDS ${dgen_impl} COMMENT "")
 
 macro(add_sources_for_generating)