Statistics
| Branch: | Revision:

root / CMakeLists.txt @ master

History | View | Annotate | Download (5 kB)

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