Add the ios port the the main repository.
[odfkit:webodf.git] / CMakeLists.txt
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 "ftp://ftp.mozilla.org/pub/mozilla.org/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 add_subdirectory(webodf)
97 add_subdirectory(programs)
98
99 # package webodf
100 set(WEBODFZIP webodf-${WEBODF_VERSION}.zip)
101 set(WEBODFZIP_FILES
102   ${CMAKE_BINARY_DIR}/webodf/webodf-debug.js
103   ${CMAKE_BINARY_DIR}/webodf/webodf.js
104   ${CMAKE_SOURCE_DIR}/webodf/webodf.css
105 )
106 add_custom_command(
107     OUTPUT ${WEBODFZIP}
108     # zip using javascript code running in node.js
109     COMMAND ${NODE} ARGS webodf/lib/runtime.js packwebodf.js
110         ${CMAKE_BINARY_DIR}/${WEBODFZIP}
111 #input files
112         ${WEBODFZIP_FILES}
113 #output files
114         webodf-debug.js
115         webodf.js
116         webodf.css
117     DEPENDS NodeJS
118         packwebodf.js
119         ${WEBODFZIP_FILES}
120         webodf-debug.js
121         webodf.js
122     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
123 )
124 add_custom_target(zip ALL DEPENDS ${WEBODFZIP})
125
126 # vim:expandtab