cmake/WebKitPackaging.cmake
changeset 0 4f2f89ce4247
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake/WebKitPackaging.cmake	Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,184 @@
+# -----------------------------------------------------------------------------
+# This file defines the basics of CPack behavior for WebKit
+#
+# The following CPack variables will be defined if they were unset:
+#   - CPACK_PACKAGE_NAME to WebKit-${PORT}
+#   - CPACK_SOURCE_IGNORE_FILES to a known pattern of good files
+#
+# The following variables affect the behavior of packaging:
+#   - WEBKIT_CPACK_ALL_PORTS if defined and true, will not limit packaging
+#     to just include files of the port (affects CPACK_SOURCE_IGNORE_FILES,
+#     just if this variable was not defined before).
+#   - WEBKIT_CPACK_ADD_TESTS if defined and true, will also add tests
+#     (affects CPACK_SOURCE_IGNORE_FILES, just if this variable was
+#     not defined before)
+#   - WEBKIT_CPACK_ADD_TOOLS if defined and true, will also add tools
+#     (affects CPACK_SOURCE_IGNORE_FILES, just if this variable was
+#     not defined before)
+# -----------------------------------------------------------------------------
+
+IF(NOT DEFINED CPACK_PACKAGE_NAME)
+  SET(CPACK_PACKAGE_NAME WebKit-${PORT})
+ENDIF()
+
+IF(NOT DEFINED CPACK_SOURCE_IGNORE_FILES)
+  SET(CPACK_SOURCE_IGNORE_FILES
+    # Version control:
+    "/CVS/"
+    "/\\\\.svn/"
+    "/\\\\.bzr/"
+    "/\\\\.hg/"
+    "/\\\\.git/"
+    "\\\\.swp$"
+    "\\\\.#"
+    "/#"
+    "/\\\\.gitignore$"
+    "/\\\\.gitattributes$"
+
+    # SVN-only files should be ignored (site, examples...)
+    "/PlanetWebKit/"
+    "/SunSpider/"
+    "/WebKitExamplePlugins/"
+    "/WebKitSite/"
+    "/BugsSite/"
+
+    # Other build systems:
+    # - Makefiles (.mk/Makefile)
+    "\\\\.mk$"
+    "\\\\.make$"
+    "Makefile"
+    # - Autotools (GTK)
+    "/autotools/"
+    "/configure\\\\.ac"
+    "/autogen\\\\.sh"
+    "/autom4te\\\\.cache/"
+    "/aclocal\\\\.m4$"
+    "/GNUmakefile"
+    "/GNUmakefile"
+    # - XCode (Mac)
+    "\\\\.xcodeproj"
+    "\\\\.xcconfig"
+    # - GYP
+    "\\\\.gyp"
+    # - QMake (Qt)
+    "\\\\.pri$"
+    "\\\\.pro$"
+
+    # Development & Runtime created files
+    "~$"
+    "\\\\.mode"
+    "\\\\.pbxuser$"
+    "\\\\.perspective"
+    "\\\\.pyc$"
+    "\\\\.pyo$"
+    "/cmake-build/"
+    "/build/"
+    "/WebKitBuild/"
+    "/WebKitTools/Scripts/webkitpy/thirdparty/autoinstalled/"
+    )
+
+  IF(NOT WEBKIT_CPACK_ADD_TESTS)
+    LIST(APPEND CPACK_SOURCE_IGNORE_FILES
+      "/LayoutTests/"
+      "/manual-tests/"
+      "/tests/"
+      "/PageLoadTests/"
+      )
+  ENDIF(NOT WEBKIT_CPACK_ADD_TESTS)
+
+  IF(NOT WEBKIT_CPACK_ADD_TOOLS)
+    LIST(APPEND CPACK_SOURCE_IGNORE_FILES
+      "/WebKitTools/"
+      "/manual-tools/"
+      "/tools/"
+      "/PageLoadTools/"
+      )
+  ENDIF(NOT WEBKIT_CPACK_ADD_TOOLS)
+
+
+  IF(NOT WEBKIT_CPACK_ALL_PORTS)
+
+    # All file and directory patterns that Efl uses
+    SET(FILE_PATTERNS_Efl
+      "/cairo/" "/Cairo/" "cairo\\\\." "Cairo\\\\."
+      "/efl/" "/Efl/" "efl\\\\." "Efl\\\\."
+      "/glib/" "/Glib/" "glib\\\\." "Glib\\\\."
+      "/gobject/" "/Gobject/" "gobject\\\\." "Gobject\\\\."
+      "/icu/" "/Icu/" "icu\\\\." "Icu\\\\."
+      "/posix/" "/Posix/" "posix\\\\." "Posix\\\\."
+      "/soup/" "/Soup/" "soup\\\\." "Soup\\\\."
+      )
+
+    # File and Directory patterns that no CMake-ified port uses
+    SET(FILE_PATTERNS_UNKNOWN_PORTS
+      "/android/" "/Android/" "android\\\\." "Android\\\\."
+      "/brew/" "/Brew/" "brew\\\\." "Brew\\\\."
+      "/carbon/" "/Carbon/" "carbon\\\\." "Carbon\\\\."
+      "/cf/" "/Cf/" "cf\\\\." "Cf\\\\."
+      "/cg/" "/Cg/" "cg\\\\." "Cg\\\\."
+      "/chromium/" "/Chromium/" "chromium\\\\." "Chromium\\\\."
+      "/cocoa/" "/Cocoa/" "cocoa\\\\." "Cocoa\\\\."
+      "/Configurations/" "/Configurations/" "Configurations\\\\." "Configurations\\\\."
+      "/curl/" "/Curl/" "curl\\\\." "Curl\\\\."
+      "/gstreamer/" "/Gstreamer/" "gstreamer\\\\." "Gstreamer\\\\."
+      "/gtk/" "/Gtk/" "gtk\\\\." "Gtk\\\\."
+      "/haiku/" "/Haiku/" "haiku\\\\." "Haiku\\\\."
+      "/iphone/" "/Iphone/" "iphone\\\\." "Iphone\\\\."
+      "/mac/" "/Mac/" "mac\\\\." "Mac\\\\."
+      "/opentype/" "/Opentype/" "opentype\\\\." "Opentype\\\\."
+      "/openvg/" "/Openvg/" "openvg\\\\." "Openvg\\\\."
+      "/os-win32/" "/Os-Win32/" "os-win32\\\\." "Os-Win32\\\\."
+      "/qscriptengine/" "/Qscriptengine/" "qscriptengine\\\\." "Qscriptengine\\\\."
+      "/qscriptstring/" "/Qscriptstring/" "qscriptstring\\\\." "Qscriptstring\\\\."
+      "/qscriptvalue/" "/Qscriptvalue/" "qscriptvalue\\\\." "Qscriptvalue\\\\."
+      "/qt/" "/Qt/" "qt\\\\." "Qt\\\\."
+      "/qt4/" "/Qt4/" "qt4\\\\." "Qt4\\\\."
+      "/skia/" "/Skia/" "skia\\\\." "Skia\\\\."
+      "/symbian/" "/Symbian/" "symbian\\\\." "Symbian\\\\."
+      "/v8/" "/V8/" "v8\\\\." "V8\\\\."
+      "/V8/" "/V8/" "V8\\\\." "V8\\\\."
+      "/win/" "/Win/" "win\\\\." "Win\\\\."
+      "/wince/" "/Wince/" "wince\\\\." "Wince\\\\."
+      "/wx/" "/Wx/" "wx\\\\." "Wx\\\\."
+      "/wxcode/" "/Wxcode/" "wxcode\\\\." "Wxcode\\\\."
+      "/WebKitLibraries/"
+      "/English\\\\.lproj/"
+      "/WebKit2/"
+      "\\\\.a$"
+      "\\\\.exe$"
+      "\\\\.mm$"
+      )
+
+    # Append all Unknown port patterns
+    FOREACH(_pattern ${FILE_PATTERNS_UNKNOWN_PORTS})
+      LIST(FIND FILE_PATTERNS_${PORT} ${_pattern} _pattern_index)
+      IF(_pattern_index GREATER -1)
+        MESSAGE("pattern ${_pattern} declared of 'no-port' is actually used by ${PORT}")
+      ELSE()
+        LIST(APPEND CPACK_SOURCE_IGNORE_FILES ${_pattern})
+      ENDIF()
+    ENDFOREACH()
+
+    # Append all "other-ports" patterns
+    FOREACH(_port ${ALL_PORTS})
+      IF(NOT ${_port} STREQUAL ${PORT})
+        FOREACH(_pattern ${FILE_PATTERNS_${_port}})
+
+          LIST(FIND FILE_PATTERNS_${PORT} ${_pattern} _pattern_index)
+          IF(_pattern_index GREATER -1)
+            MESSAGE("pattern ${_pattern} of port ${_port} is also used by ${PORT}")
+          ELSE()
+            LIST(APPEND CPACK_SOURCE_IGNORE_FILES ${_pattern})
+          ENDIF()
+        ENDFOREACH()
+      ENDIF()
+    ENDFOREACH()
+
+  ENDIF(NOT WEBKIT_CPACK_ALL_PORTS)
+
+ENDIF(NOT DEFINED CPACK_SOURCE_IGNORE_FILES)
+
+# -----------------------------------------------------------------------------
+# Include CPack that will define targets based on the variables defined before
+# -----------------------------------------------------------------------------
+INCLUDE(CPack)