aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLode Vandevenne <lvandeve@users.noreply.github.com>2018-08-10 13:42:32 +0200
committerGitHub <noreply@github.com>2018-08-10 13:42:32 +0200
commit9f3a635f3bdb6bc4a7545e82443c8c2bb48f788c (patch)
treefde4e65b746c1a52e5cfaad60841d93e66c1c95d
parentae43a8b73827577c4b19b005b6eed81f5cf9bbac (diff)
parent7554e4d34e7000b0595aa606e7d72357cf46ba86 (diff)
downloadzopfli-9f3a635f3bdb6bc4a7545e82443c8c2bb48f788c.tar.gz
Merge pull request #58 from jibsen/cmake-build
Add CMake script
-rw-r--r--CMakeLists.txt88
1 files changed, 88 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..b37987d
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,88 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(Zopfli)
+
+option(BUILD_SHARED_LIBS "Build Zopfli with shared libraries" OFF)
+
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE Release)
+endif()
+
+if(MSVC)
+ add_definitions(/D_CRT_SECURE_NO_WARNINGS)
+endif()
+
+set(zopflilib_src
+ src/zopfli/blocksplitter.c
+ src/zopfli/cache.c
+ src/zopfli/deflate.c
+ src/zopfli/gzip_container.c
+ src/zopfli/hash.c
+ src/zopfli/katajainen.c
+ src/zopfli/lz77.c
+ src/zopfli/squeeze.c
+ src/zopfli/tree.c
+ src/zopfli/util.c
+ src/zopfli/zlib_container.c
+ src/zopfli/zopfli_lib.c
+)
+
+set(zopflipnglib_src
+ src/zopflipng/zopflipng_lib.cc
+)
+
+set (lodepng_src
+ src/zopflipng/lodepng/lodepng.cpp
+ src/zopflipng/lodepng/lodepng_util.cpp
+)
+
+#
+# libzopfli object files shared by both libraries
+#
+add_library(zopflilib_obj OBJECT
+ ${zopflilib_src}
+)
+if(BUILD_SHARED_LIBS)
+ set_property(TARGET zopflilib_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
+endif()
+
+#
+# libzopfli
+#
+add_library(libzopfli
+ $<TARGET_OBJECTS:zopflilib_obj>
+)
+set_target_properties(libzopfli PROPERTIES
+ OUTPUT_NAME zopfli
+ VERSION 1.0.1
+ SOVERSION 1
+)
+if(UNIX)
+ target_link_libraries(libzopfli m)
+endif()
+
+#
+# libzopflipng
+#
+add_library(libzopflipng
+ ${zopflipnglib_src}
+ ${lodepng_src}
+ $<TARGET_OBJECTS:zopflilib_obj>
+)
+set_target_properties(libzopflipng PROPERTIES
+ OUTPUT_NAME zopflipng
+ VERSION 1.0.0
+ SOVERSION 1
+)
+
+#
+# zopfli
+#
+add_executable(zopfli src/zopfli/zopfli_bin.c)
+target_link_libraries(zopfli libzopfli)
+
+#
+# zopflipng
+#
+add_executable(zopflipng src/zopflipng/zopflipng_bin.cc)
+target_link_libraries(zopflipng libzopflipng)