patch with build system modifcations

lucak
Posts: 2
Joined: Sun Jun 28, 2009 2:37 pm

patch with build system modifcations

Post by lucak »

Hello,

here I attach a patch which contains the modifications to the build system of Bullet i did to use it from external projects, like OgreBullet.

List of changes:
-Added the configuration file bullet-config.cmake, which is installed into <prefix>/lib/cmake/Bullet: this way any other project wanting to link to Bullet just have to use FIND_PACKAGE in "Config mode" to easily retrieve the values of the BULLET_INCLUDE_DIR, BULLET_LIBRARY_DIR and BULLET_LIBRARIES and use them.
-Added the configuration file bullet-config-version.cmake which allow the usage of the above mentioned configuration file only when the requested version matches exactly the one available.
-Modified all the INSTALL(DIRECTORY) rules to prevent to accidentaly create any CMakeFiles directory (and any of its subdirectories) in the installation directory during installation.
-Added the installation the following Extras libraries: BulletColladaConverter, COLLADA_DOM, ConvexDecomposition, GIMPACTUtils, glui, LibXML.

I hope this patch could be useful to others, or even included in the mainstream sources of Bullet.

Greetings,
Luca

p.s. Since attaching a .txt or a .diff file is not allowed, i paste the patch in here:

Code: Select all

diff -Naur ../bullet2.74ORIG/bullet-config.cmake.in ./bullet-config.cmake.in
--- ../bullet2.74ORIG/bullet-config.cmake.in	1970-01-01 01:00:00.000000000 +0100
+++ ./bullet-config.cmake.in	2009-04-19 12:22:23.000000000 +0200
@@ -0,0 +1,8 @@
+SET (BULLET_INCLUDE_DIR
+  ${CMAKE_INSTALL_PREFIX}/include/)
+SET (BULLET_LIBRARY_DIR
+  ${CMAKE_INSTALL_PREFIX}/lib/)
+SET (BULLET_LIBRARIES
+  bulletdynamics
+  bulletcollision
+  bulletmath)
diff -Naur ../bullet2.74ORIG/bullet-config-version.cmake ./bullet-config-version.cmake
--- ../bullet2.74ORIG/bullet-config-version.cmake	1970-01-01 01:00:00.000000000 +0100
+++ ./bullet-config-version.cmake	2009-04-19 17:50:31.000000000 +0200
@@ -0,0 +1,8 @@
+IF (${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR} EQUAL 2.74)
+  SET (PACKAGE_VERSION_EXACT TRUE)
+  SET (PACKAGE_VERSION_COMPATIBLE TRUE)
+  SET (PACKAGE_VERSION_UNSUITABLE FALSE)
+ELSE (${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR} EQUAL 2.74)
+  SET (PACKAGE_VERSION_COMPATIBLE FALSE)
+  SET (PACKAGE_VERSION_UNSUITABLE TRUE)
+ENDIF (${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR} EQUAL 2.74)
diff -Naur ../bullet2.74ORIG/CMakeLists.txt ./CMakeLists.txt
--- ../bullet2.74ORIG/CMakeLists.txt	2009-02-18 23:52:03.000000000 +0100
+++ ./CMakeLists.txt	2009-04-19 17:02:14.000000000 +0200
@@ -69,3 +69,15 @@
 ENDIF(BUILD_EXTRAS)
 
 SUBDIRS(src)
+
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+  #
+  # Create the configuration file to let other projects to link to Bullet.
+  CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/bullet-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/bullet-config.cmake)
+  INSTALL(
+    FILES
+      ${CMAKE_CURRENT_BINARY_DIR}/bullet-config.cmake
+      ${CMAKE_CURRENT_SOURCE_DIR}/bullet-config-version.cmake
+    DESTINATION
+      lib/cmake/Bullet/)
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/BulletColladaConverter/CMakeLists.txt ./Extras/BulletColladaConverter/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/BulletColladaConverter/CMakeLists.txt	2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/BulletColladaConverter/CMakeLists.txt	2009-05-25 22:33:33.000000000 +0200
@@ -10,3 +10,11 @@
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(BulletColladaConverter ColladaDom BulletCollision BulletDynamics)
 ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS BulletColladaConverter DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/COLLADA_DOM/CMakeLists.txt ./Extras/COLLADA_DOM/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/COLLADA_DOM/CMakeLists.txt	2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/COLLADA_DOM/CMakeLists.txt	2009-05-25 19:26:30.000000000 +0200
@@ -211,3 +211,11 @@
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(ColladaDom XML)
 ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS ColladaDom DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/ConvexDecomposition/CMakeLists.txt ./Extras/ConvexDecomposition/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/ConvexDecomposition/CMakeLists.txt	2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/ConvexDecomposition/CMakeLists.txt	2009-05-25 19:27:47.000000000 +0200
@@ -13,3 +13,11 @@
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(ConvexDecomposition BulletCollision LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS ConvexDecomposition DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/GIMPACTUtils/CMakeLists.txt ./Extras/GIMPACTUtils/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/GIMPACTUtils/CMakeLists.txt	2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/GIMPACTUtils/CMakeLists.txt	2009-05-25 19:25:59.000000000 +0200
@@ -12,3 +12,11 @@
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(GIMPACTUtils ConvexDecomposition BulletCollision)
 ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS GIMPACTUtils DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/glui/CMakeLists.txt ./Extras/glui/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/glui/CMakeLists.txt	2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/glui/CMakeLists.txt	2009-05-25 22:31:02.000000000 +0200
@@ -64,3 +64,11 @@
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(GLUI ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
 ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS GLUI DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/iff/CMakeLists.txt ./Extras/iff/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/iff/CMakeLists.txt	2009-01-14 02:18:41.000000000 +0100
+++ ./Extras/iff/CMakeLists.txt	2009-05-25 22:30:48.000000000 +0200
@@ -9,3 +9,11 @@
 )
 
 #SUBDIRS( BulletIffConverter )
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS Iff DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/LibXML/CMakeLists.txt ./Extras/LibXML/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/LibXML/CMakeLists.txt	2008-11-10 21:33:14.000000000 +0100
+++ ./Extras/LibXML/CMakeLists.txt	2009-05-25 22:52:07.000000000 +0200
@@ -55,3 +55,11 @@
 			xpath.c
 			xpointer.c
 )
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+    INSTALL(TARGETS XML DESTINATION lib)
+    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/src/BulletCollision/CMakeLists.txt ./src/BulletCollision/CMakeLists.txt
--- ../bullet2.74ORIG/src/BulletCollision/CMakeLists.txt	2009-02-18 23:52:03.000000000 +0100
+++ ./src/BulletCollision/CMakeLists.txt	2009-05-25 22:34:51.000000000 +0200
@@ -217,7 +217,9 @@
 #INSTALL of other files requires CMake 2.6
 IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 	INSTALL(TARGETS BulletCollision DESTINATION lib)
-        INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+        INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
 ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 
 IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff -Naur ../bullet2.74ORIG/src/BulletDynamics/CMakeLists.txt ./src/BulletDynamics/CMakeLists.txt
--- ../bullet2.74ORIG/src/BulletDynamics/CMakeLists.txt	2009-02-18 23:52:03.000000000 +0100
+++ ./src/BulletDynamics/CMakeLists.txt	2009-05-25 22:41:43.000000000 +0200
@@ -77,7 +77,9 @@
 
 IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 	INSTALL(TARGETS BulletDynamics DESTINATION lib)
-	INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+	INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
 ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 
 IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff -Naur ../bullet2.74ORIG/src/BulletSoftBody/CMakeLists.txt ./src/BulletSoftBody/CMakeLists.txt
--- ../bullet2.74ORIG/src/BulletSoftBody/CMakeLists.txt	2009-02-18 23:52:03.000000000 +0100
+++ ./src/BulletSoftBody/CMakeLists.txt	2009-05-25 22:51:34.000000000 +0200
@@ -34,7 +34,9 @@
 
 IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 	INSTALL(TARGETS BulletSoftBody DESTINATION lib)
-        INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+        INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
 ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 
 IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff -Naur ../bullet2.74ORIG/src/LinearMath/CMakeLists.txt ./src/LinearMath/CMakeLists.txt
--- ../bullet2.74ORIG/src/LinearMath/CMakeLists.txt	2009-02-18 23:52:03.000000000 +0100
+++ ./src/LinearMath/CMakeLists.txt	2009-05-25 22:56:58.000000000 +0200
@@ -42,7 +42,9 @@
 #FILES_MATCHING requires CMake 2.6
 IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 	INSTALL(TARGETS LinearMath DESTINATION lib)
-	INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+	INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+      PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+      PATTERN "*.h")
 ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 
 IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
lucak
Posts: 2
Joined: Sun Jun 28, 2009 2:37 pm

Re: patch with build system modifcations

Post by lucak »

Sorry for this post, I will attach the present patch to the Issue Tracker of Google Code,

Thanks for your patience,
Luca