Explorar o código

Updated core cmake files to not rebuild stuff that is up to date.

The method is a bit "messy"(generating an empty file to indicate the date at which the target has last been built), but it seems to work fine.

Main advantage is that you can now change .cpp files, and the lua bindings will not be regenerated because of it.
cib %!s(int64=12) %!d(string=hai) anos
pai
achega
7963171175

+ 7 - 0
Bindings/Scripts/create_lua_library/CMakeLists.txt

@@ -6,12 +6,19 @@ IF(NOT PY_PLY)
 	MESSAGE(SEND_ERROR "The Python PLY (Python Lex-Yacc) module is required to generate Lua bindings.")
 	MESSAGE(SEND_ERROR "The Python PLY (Python Lex-Yacc) module is required to generate Lua bindings.")
 ENDIF(NOT PY_PLY)
 ENDIF(NOT PY_PLY)
 
 
+FILE(GLOB HEADER_DEPENDENCIES_CORE ../../../Core/Contents/Include/*.h)
+FILE(GLOB HEADER_DEPENDENCIES_2DPHYSICS ../../../Modules/Contents/2DPhysics/Include/*.h)
+FILE(GLOB HEADER_DEPENDENCIES_3DPHYSICS ../../../Modules/Contents/3DPhysics/Include/*.h)
+FILE(GLOB HEADER_DEPENDENCIES_UI ../../../Modules/Contents/UI/Include/*.h)
+
 ADD_CUSTOM_COMMAND(
 ADD_CUSTOM_COMMAND(
 OUTPUT luaGenerateCmd
 OUTPUT luaGenerateCmd
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Core/Contents/Include Polycode Polycode.h polycore Polycore ../../Contents/LUA/API ../../Contents/LUA/API/Polycode ../../Contents/LUA/Include ../../Contents/LUA/Source
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Core/Contents/Include Polycode Polycode.h polycore Polycore ../../Contents/LUA/API ../../Contents/LUA/API/Polycode ../../Contents/LUA/Include ../../Contents/LUA/Source
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Modules/Contents/2DPhysics/Include/ Physics2D Polycode2DPhysics.h physics2d Physics2D ../../../Modules/Bindings/2DPhysics/API ../../../Modules/Bindings/2DPhysics/API/Physics2D ../../../Modules/Bindings/2DPhysics/Include ../../../Modules/Bindings/2DPhysics/Source
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Modules/Contents/2DPhysics/Include/ Physics2D Polycode2DPhysics.h physics2d Physics2D ../../../Modules/Bindings/2DPhysics/API ../../../Modules/Bindings/2DPhysics/API/Physics2D ../../../Modules/Bindings/2DPhysics/Include ../../../Modules/Bindings/2DPhysics/Source
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Modules/Contents/3DPhysics/Include/ Physics3D Polycode3DPhysics.h physics3d Physics3D ../../../Modules/Bindings/3DPhysics/API ../../../Modules/Bindings/3DPhysics/API/Physics3D ../../../Modules/Bindings/3DPhysics/Include ../../../Modules/Bindings/3DPhysics/Source 
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Modules/Contents/3DPhysics/Include/ Physics3D Polycode3DPhysics.h physics3d Physics3D ../../../Modules/Bindings/3DPhysics/API ../../../Modules/Bindings/3DPhysics/API/Physics3D ../../../Modules/Bindings/3DPhysics/Include ../../../Modules/Bindings/3DPhysics/Source 
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Modules/Contents/UI/Include/ UI PolycodeUI.h UI UI ../../../Modules/Bindings/UI/API ../../../Modules/Bindings/UI/API/UI ../../../Modules/Bindings/UI/Include ../../../Modules/Bindings/UI/Source
 COMMAND ${PYTHON_EXECUTABLE} create_lua_library.py ../../../Modules/Contents/UI/Include/ UI PolycodeUI.h UI UI ../../../Modules/Bindings/UI/API ../../../Modules/Bindings/UI/API/UI ../../../Modules/Bindings/UI/Include ../../../Modules/Bindings/UI/Source
+COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/luaGenerateCmd # Generate the given output file(empty file), to keep track of whether we need to rebuild.
+DEPENDS ${HEADER_DEPENDENCIES_CORE} ${HEADER_DEPENDENCIES_2DPHYSICS} ${HEADER_DEPENDENCIES_3DPHYSICS} ${HEADER_DEPENDENCIES_UI} 
 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
 )
 )
 
 

+ 7 - 0
Documentation/CMakeLists.txt

@@ -4,12 +4,19 @@ FIND_PACKAGE(Doxygen)
 
 
 IF(DOXYGEN_FOUND)
 IF(DOXYGEN_FOUND)
 
 
+FILE(GLOB HEADER_DEPENDENCIES_CORE ${Polycode_SOURCE_DIR}/Core/Contents/Include/*.h)
+FILE(GLOB HEADER_DEPENDENCIES_2DPHYSICS ${Polycode_SOURCE_DIR}/Modules/Contents/2DPhysics/Include/*.h)
+FILE(GLOB HEADER_DEPENDENCIES_3DPHYSICS ${Polycode_SOURCE_DIR}/Modules/Contents/3DPhysics/Include/*.h)
+FILE(GLOB HEADER_DEPENDENCIES_UI ${Polycode_SOURCE_DIR}/Modules/Contents/UI/Include/*.h)
+
 ADD_CUSTOM_COMMAND(
 ADD_CUSTOM_COMMAND(
 OUTPUT doc_cmd
 OUTPUT doc_cmd
 COMMAND ${DOXYGEN_EXECUTABLE} ${Polycode_SOURCE_DIR}/Documentation/Doxygen/Polycode.doxygen
 COMMAND ${DOXYGEN_EXECUTABLE} ${Polycode_SOURCE_DIR}/Documentation/Doxygen/Polycode.doxygen
 COMMAND ${DOXYGEN_EXECUTABLE} ${Polycode_SOURCE_DIR}/Documentation/Doxygen/Physics2D.doxygen
 COMMAND ${DOXYGEN_EXECUTABLE} ${Polycode_SOURCE_DIR}/Documentation/Doxygen/Physics2D.doxygen
 COMMAND ${DOXYGEN_EXECUTABLE} ${Polycode_SOURCE_DIR}/Documentation/Doxygen/Physics3D.doxygen
 COMMAND ${DOXYGEN_EXECUTABLE} ${Polycode_SOURCE_DIR}/Documentation/Doxygen/Physics3D.doxygen
+COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/doc_cmd # Generate the given output file(empty file), to keep track of whether we need to rebuild.
 WORKING_DIRECTORY ${Polycode_SOURCE_DIR}/Documentation/Doxygen/
 WORKING_DIRECTORY ${Polycode_SOURCE_DIR}/Documentation/Doxygen/
+DEPENDS ${HEADER_DEPENDENCIES_CORE} ${HEADER_DEPENDENCIES_2DPHYSICS} ${HEADER_DEPENDENCIES_3DPHYSICS} ${HEADER_DEPENDENCIES_UI}
 COMMENT "Generating Polycode API documentation with Doxygen" VERBATIM
 COMMENT "Generating Polycode API documentation with Doxygen" VERBATIM
 )
 )
 
 

+ 4 - 0
Documentation/Lua/scripts/CMakeLists.txt

@@ -2,9 +2,13 @@ INCLUDE(FindPythonModule)
 
 
 FIND_PACKAGE(PythonInterp REQUIRED)
 FIND_PACKAGE(PythonInterp REQUIRED)
 
 
+FILE(GLOB XML_DEPENDENCIES ${CMAKE_CURRENT_SOURCE_DIR}/../xml/*.xml)
+
 ADD_CUSTOM_COMMAND(
 ADD_CUSTOM_COMMAND(
 OUTPUT luaGenerateDocsCmd
 OUTPUT luaGenerateDocsCmd
 COMMAND ${PYTHON_EXECUTABLE} make_html.py
 COMMAND ${PYTHON_EXECUTABLE} make_html.py
+COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/luaGenerateDocsCmd # Generate the given output file(empty file), to keep track of whether we need to rebuild.
+DEPENDS ${XML_DEPENDENCIES}
 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
 )
 )