root / CMakeLists.txt @ a417fdf2
History | View | Annotate | Download (4.9 kB)
| 1 | # WebODF is mostly a JavaScript project. CMake needs to know about the C++ parts |
|---|---|
| 2 | project (WebODF C CXX) |
| 3 | # version 2.8.2 is needed to have support for zip files in external projects |
| 4 | cmake_minimum_required(VERSION 2.8.2) |
| 5 | |
| 6 | # At this point, the version number that is used throughout is defined |
| 7 | set(WEBODF_VERSION 0.3.0) |
| 8 | |
| 9 | # This makefile 'compiles' WebODF using various tools, instruments the code and |
| 10 | # builds and packages programs that use WebODF. |
| 11 | |
| 12 | # Find installed dependencies |
| 13 | find_package(Qt4 4.7.0 COMPONENTS QtCore QtGui QtXml QtNetwork QtWebKit) |
| 14 | if (NOT QT4_FOUND) |
| 15 | message(WARNING "Qt4 with modules QtCore QtGui QtXml QtNetwork QtWebKit was not found. qtjsruntime will no be built.") |
| 16 | endif (NOT QT4_FOUND) |
| 17 | |
| 18 | # java runtime is needed for Closure Compiler |
| 19 | find_package(Java COMPONENTS Runtime) |
| 20 | |
| 21 | if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) |
| 22 | message(FATAL_ERROR "Compiling in the source directortory is not supported. Use for example 'mkdir build; cd build; cmake ..'.") |
| 23 | endif (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) |
| 24 | |
| 25 | # Tools must be obtained to work with: |
| 26 | include (ExternalProject) |
| 27 | |
| 28 | if(Java_JAVA_EXECUTABLE) |
| 29 | # Closure Compiler |
| 30 | ExternalProject_Add( |
| 31 | ClosureCompiler |
| 32 | URL "http://closure-compiler.googlecode.com/files/compiler-20120123.tar.gz" |
| 33 | URL_MD5 1e23c299c8a8d0fa1f812ea8743bddcc |
| 34 | CONFIGURE_COMMAND "" |
| 35 | BUILD_COMMAND "" |
| 36 | INSTALL_COMMAND "" |
| 37 | ) |
| 38 | set(CLOSURE_JAR ${CMAKE_BINARY_DIR}/ClosureCompiler-prefix/src/ClosureCompiler/compiler.jar)
|
| 39 | endif(Java_JAVA_EXECUTABLE) |
| 40 | |
| 41 | # Rhino |
| 42 | if(Java_JAVA_EXECUTABLE) |
| 43 | ExternalProject_Add( |
| 44 | Rhino |
| 45 | URL "http://ftp.mozilla.org/pub/js/rhino1_7R3.zip" |
| 46 | URL_MD5 99d94103662a8d0b571e247a77432ac5 |
| 47 | CONFIGURE_COMMAND "" |
| 48 | BUILD_COMMAND "" |
| 49 | INSTALL_COMMAND "" |
| 50 | ) |
| 51 | set(RHINO ${CMAKE_BINARY_DIR}/Rhino-prefix/src/Rhino/js.jar)
|
| 52 | endif(Java_JAVA_EXECUTABLE) |
| 53 | |
| 54 | # JSDoc |
| 55 | ExternalProject_Add( |
| 56 | JsDoc |
| 57 | URL "http://jsdoc-toolkit.googlecode.com/files/jsdoc_toolkit-2.4.0.zip" |
| 58 | URL_MD5 a8f78f5ecd24b54501147b2af341a231 |
| 59 | CONFIGURE_COMMAND "" |
| 60 | BUILD_COMMAND "" |
| 61 | INSTALL_COMMAND "" |
| 62 | ) |
| 63 | set(JSDOCDIR ${CMAKE_BINARY_DIR}/JsDoc-prefix/src/JsDoc/jsdoc-toolkit)
|
| 64 | |
| 65 | # Node.JS |
| 66 | ExternalProject_Add( |
| 67 | NodeJS |
| 68 | URL "http://nodejs.org/dist/v0.6.9/node-v0.6.9.tar.gz" |
| 69 | URL_MD5 c2d2aee123a141ba8431855f1d9c8200 |
| 70 | CONFIGURE_COMMAND "./configure" |
| 71 | BUILD_IN_SOURCE 1 |
| 72 | INSTALL_COMMAND "" |
| 73 | ) |
| 74 | set(NODE ${CMAKE_BINARY_DIR}/NodeJS-prefix/src/NodeJS/out/Release/node)
|
| 75 | |
| 76 | # JSCoverage |
| 77 | ExternalProject_Add( |
| 78 | JSCoverage |
| 79 | URL "http://siliconforks.com/jscoverage/download/jscoverage-0.5.1.tar.bz2" |
| 80 | URL_MD5 a70d79a6759367fbcc0bcc18d6866ff3 |
| 81 | PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR}/JSCoverage.patch
|
| 82 | CONFIGURE_COMMAND "./configure" |
| 83 | BUILD_IN_SOURCE 1 |
| 84 | INSTALL_COMMAND "" |
| 85 | ) |
| 86 | set(JSCOVERAGE ${CMAKE_BINARY_DIR}/JSCoverage-prefix/src/JSCoverage/jscoverage)
|
| 87 | |
| 88 | # Android |
| 89 | if (NOT ANDROID_SDK_DIR) |
| 90 | find_path(ANDROID_SDK_DIR platform-tools/aapt) |
| 91 | endif(NOT ANDROID_SDK_DIR) |
| 92 | if (NOT ANT) |
| 93 | find_file(ANT NAMES ant ant.exe /usr/bin /usr/local/bin) |
| 94 | endif(NOT ANT) |
| 95 | |
| 96 | |
| 97 | |
| 98 | set(LIBJSFILES lib/packages.js lib/runtime.js lib/core/Base64.js |
| 99 | lib/core/RawDeflate.js lib/core/ByteArray.js |
| 100 | lib/core/ByteArrayWriter.js lib/core/RawInflate.js |
| 101 | lib/core/Cursor.js lib/core/UnitTester.js |
| 102 | lib/core/PointWalker.js lib/core/Async.js |
| 103 | lib/core/Zip.js |
| 104 | |
| 105 | lib/xmldom/LSSerializerFilter.js lib/xmldom/LSSerializer.js |
| 106 | lib/xmldom/RelaxNGParser.js lib/xmldom/RelaxNG.js |
| 107 | lib/xmldom/RelaxNG2.js lib/xmldom/OperationalTransformInterface.js |
| 108 | lib/xmldom/OperationalTransformDOM.js |
| 109 | lib/xmldom/XPath.js |
| 110 | |
| 111 | lib/odf/StyleInfo.js lib/odf/Style2CSS.js |
| 112 | lib/odf/FontLoader.js lib/odf/OdfContainer.js |
| 113 | lib/odf/Formatting.js lib/odf/OdfCanvas.js |
| 114 | |
| 115 | lib/gui/PresenterUI.js lib/gui/Caret.js |
| 116 | lib/gui/SelectionMover.js lib/gui/XMLEdit.js |
| 117 | |
| 118 | lib/manifest.js |
| 119 | ) |
| 120 | |
| 121 | set(HTML5UIFILES |
| 122 | app/app.js app/controller/Files.js app/model/FileSystem.js |
| 123 | app/views/FileDetail.js app/views/FilesList.js app/views/OdfView.js |
| 124 | app/views/Viewport.js sencha-touch.css sencha-touch.js |
| 125 | app/store/FileStore.js |
| 126 | ZoomOut.png ZoomIn.png go-previous.png go-next.png |
| 127 | zoom-fit-width.png zoom-fit-best.png zoom-fit-height.png |
| 128 | ) |
| 129 | |
| 130 | add_subdirectory(webodf) |
| 131 | add_subdirectory(programs) |
| 132 | |
| 133 | # package webodf |
| 134 | set(WEBODFZIP webodf-${WEBODF_VERSION}.zip)
|
| 135 | set(WEBODFZIP_FILES |
| 136 | ${CMAKE_BINARY_DIR}/webodf/webodf-debug.js
|
| 137 | ${CMAKE_BINARY_DIR}/webodf/webodf.js
|
| 138 | ${CMAKE_SOURCE_DIR}/webodf/webodf.css
|
| 139 | ) |
| 140 | add_custom_command( |
| 141 | OUTPUT ${WEBODFZIP}
|
| 142 | # zip using javascript code running in node.js |
| 143 | COMMAND ${NODE} ARGS webodf/lib/runtime.js packwebodf.js
|
| 144 | ${CMAKE_BINARY_DIR}/${WEBODFZIP}
|
| 145 | #input files |
| 146 | ${WEBODFZIP_FILES}
|
| 147 | #output files |
| 148 | webodf-debug.js |
| 149 | webodf.js |
| 150 | webodf.css |
| 151 | DEPENDS NodeJS |
| 152 | packwebodf.js |
| 153 | ${WEBODFZIP_FILES}
|
| 154 | webodf-debug.js |
| 155 | webodf.js |
| 156 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
| 157 | ) |
| 158 | add_custom_target(zip ALL DEPENDS ${WEBODFZIP})
|
| 159 | |
| 160 | # vim:expandtab |