aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.editorconfig2
-rw-r--r--.gitmodules3
-rw-r--r--CMakeLists.txt3
m---------lib/cairo0
-rw-r--r--scripts/cmake/cairo.cmake25
-rw-r--r--scripts/meson-emscripten.ini.in27
-rw-r--r--tools/proxy_domains.txt6
7 files changed, 65 insertions, 1 deletions
diff --git a/.editorconfig b/.editorconfig
index 3455562a..345d6884 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -16,6 +16,6 @@ indent_size = 2
indent_style = space
indent_size = 2
-[CMakeLists.txt]
+[*.cmake, CMakeLists.txt]
indent_style = tab
indent_size = 4
diff --git a/.gitmodules b/.gitmodules
index 056b9ef1..f382b935 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
[submodule "lib/Catch2"]
path = lib/Catch2
url = https://github.com/catchorg/Catch2.git
+[submodule "lib/cairo"]
+ path = lib/cairo
+ url = https://gitlab.freedesktop.org/cairo/cairo.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 155a4687..8b777728 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,3 +50,6 @@ endfunction()
add_subdirectory(src)
add_subdirectory(test)
add_subdirectory(demos)
+
+include(scripts/cmake/cairo.cmake)
+
diff --git a/lib/cairo b/lib/cairo
new file mode 160000
+Subproject f9de19ad745e587743914a37b1ee3ff804723a0
diff --git a/scripts/cmake/cairo.cmake b/scripts/cmake/cairo.cmake
new file mode 100644
index 00000000..d1a775e3
--- /dev/null
+++ b/scripts/cmake/cairo.cmake
@@ -0,0 +1,25 @@
+find_program(MESON meson REQUIRED)
+find_program(NINJA ninja REQUIRED)
+
+set(CAIRO_BUILD_DIR ${CMAKE_BINARY_DIR}/cairo/build)
+set(CAIRO_INSTALL_DIR ${CMAKE_BINARY_DIR}/cairo/install)
+
+set(CAIRO_MESON_SETUP meson setup ${CAIRO_BUILD_DIR} --prefix=${CAIRO_INSTALL_DIR} --reconfigure)
+
+if(EMSCRIPTEN)
+ FILE(REAL_PATH ${CMAKE_C_COMPILER}/.. EMSCRIPTEN_TOOLCHAIN)
+ set(EMSCRIPTEN_CROSS_FILE_TEMPLATE ${PROJECT_SOURCE_DIR}/scripts/meson-emscripten.ini.in)
+ set(EMSCRIPTEN_CROSS_FILE ${CAIRO_BUILD_DIR}/emscripten.ini)
+ configure_file(${EMSCRIPTEN_CROSS_FILE_TEMPLATE} ${EMSCRIPTEN_CROSS_FILE})
+ set(CAIRO_MESON_SETUP ${CAIRO_MESON_SETUP} --cross-file ${EMSCRIPTEN_CROSS_FILE})
+endif()
+
+add_custom_target(
+ cairo
+ COMMAND mkdir -p ${CAIRO_BUILD_DIR} ${CAIRO_INSTALL_DIR}
+ COMMAND ${CAIRO_MESON_SETUP}
+ COMMAND ninja -C ${CAIRO_BUILD_DIR}
+ COMMAND ninja -C ${CAIRO_BUILD_DIR} install
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/cairo
+)
+
diff --git a/scripts/meson-emscripten.ini.in b/scripts/meson-emscripten.ini.in
new file mode 100644
index 00000000..f8e2fdc0
--- /dev/null
+++ b/scripts/meson-emscripten.ini.in
@@ -0,0 +1,27 @@
+[constants]
+emscripten = '${EMSCRIPTEN_TOOLCHAIN}'
+
+[binaries]
+c = emscripten / 'emcc'
+cpp = emscripten / 'em++'
+c_ld = emscripten / 'emcc'
+cpp_ld = emscripten / 'emcc'
+ar = emscripten / 'emar'
+nm = emscripten / 'emnm'
+ranlid =emscripten / 'emranlib'
+strip = emscripten / 'emstrip'
+
+[built-in options]
+default_library = 'static'
+
+[pixman:project options]
+loongson-mmi = 'disabled'
+mmx = 'disabled'
+sse2 = 'disabled'
+ssse3 = 'disabled'
+vmx = 'disabled'
+arm-simd = 'disabled'
+neon = 'disabled'
+a64-neon = 'disabled'
+iwmmxt = 'disabled'
+mips-dspr2 = 'disabled'
diff --git a/tools/proxy_domains.txt b/tools/proxy_domains.txt
new file mode 100644
index 00000000..c13a1d6f
--- /dev/null
+++ b/tools/proxy_domains.txt
@@ -0,0 +1,6 @@
+measonbuild.com
+github.com
+zlib.net
+download.gnome.org
+mirror.ossplanet.net
+