diff --git a/.travis.yml b/.travis.yml index 72f0216..146a914 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ compiler: - clang before_install: - - sudo apt-get install libtool autoconf git nasm + - sudo apt-get install libtool autoconf git nasm pkg-config cmake libtiff-dev - chmod +x install.sh - ./install.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index e275044..c312b5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,18 +5,26 @@ project(libcaesium) set(CMAKE_MACOSX_RPATH 1) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -set(MOZJPEG_INCLUDE /opt/mozjpeg/include) -set(MOZJPEG_LIB32 /opt/mozjpeg/lib) -set(MOZJPEG_LIB64 /opt/mozjpeg/lib64) +# The version number. +set(VERSION_MAJOR 0) +set(VERSION_MINOR 3) +set(VERSION_PATCH 1) -include_directories(${MOZJPEG_INCLUDE}) +configure_file( + "caesium/config.h.in" + "${PROJECT_BINARY_DIR}/config.h" +) -if(EXISTS ${MOZJPEG_LIB64}) - link_directories(${MOZJPEG_LIB64}) +include_directories("${PROJECT_BINARY_DIR}") +include_directories(/opt/mozjpeg/include) + +if(EXISTS /opt/mozjpeg/lib64) + link_directories(/opt/mozjpeg/lib64) else() - link_directories(${MOZJPEG_LIB32}) + link_directories(/opt/mozjpeg/lib) endif() + add_subdirectory(caesium) add_subdirectory(demo) diff --git a/caesium/CMakeLists.txt b/caesium/CMakeLists.txt index c91566d..0aeaef3 100644 --- a/caesium/CMakeLists.txt +++ b/caesium/CMakeLists.txt @@ -1,7 +1,7 @@ set(CMAKE_C_FLAGS "--std=gnu99 -fPIC ${CMAKE_C_FLAGS}") find_library(zoflipng zopflipng /usr/local/lib) -find_library(jpeg jpeg /opt/mozjpeg/lib) +find_library(jpeg /opt/mozjpeg/lib) find_library(turbojpeg turbojpeg /opt/mozjpeg/lib) add_library(caesium SHARED caesium.c error.c utils.c png.c lodepng.c jpeg.c) @@ -9,13 +9,24 @@ add_library(caesium_static STATIC caesium.c error.c utils.c png.c lodepng.c jpeg set_target_properties(caesium_static PROPERTIES OUTPUT_NAME caesium) -target_link_libraries(caesium zopflipng jpeg turbojpeg) +target_link_libraries(caesium zopflipng jpeg turbojpeg tiff) # Make sure the compiler can find include files for our Caesium library # when other libraries or executables link to Caesium target_include_directories(caesium PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -install(FILES caesium.h DESTINATION include) -install(TARGETS caesium caesium_static - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) +# OSX installs in local +if (APPLE) + install(FILES caesium.h DESTINATION /usr/local/include) + install(TARGETS LIBRARY DESTINATION /usr/local/lib) + install(TARGETS ARCHIVE DESTINATION /usr/local/lib) +elseif (UNIX) + install(FILES caesium.h DESTINATION /usr/include) + install(TARGETS LIBRARY DESTINATION /usr/lib) + install(TARGETS ARCHIVE DESTINATION /usr/lib) +else () + install(FILES caesium.h DESTINATION include) + install(TARGETS caesium caesium_static + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) +endif () \ No newline at end of file diff --git a/caesium/caesium.c b/caesium/caesium.c index e8d0c1b..c69d4c1 100644 --- a/caesium/caesium.c +++ b/caesium/caesium.c @@ -23,7 +23,7 @@ bool cs_compress(const char *input_path, const char *output_path, cs_image_pars if (type == UNKN) { display_error(WARNING, 103); - } else if (type == JPEG) { + } else if (type == CS_JPEG) { if (options->jpeg.quality != 0) { cs_jpeg_compress(output_path, cs_jpeg_decompress(input_path, &options->jpeg), &options->jpeg); //The output is now the new input for optimization @@ -31,7 +31,7 @@ bool cs_compress(const char *input_path, const char *output_path, cs_image_pars } else { result = cs_jpeg_optimize(input_path, output_path, options->jpeg.exif_copy, input_path); } - } else if (type == PNG) { + } else if (type == CS_PNG) { result = cs_png_optimize(input_path, output_path, &options->png); } diff --git a/caesium/caesium.h b/caesium/caesium.h index 04c16a1..cba71c1 100644 --- a/caesium/caesium.h +++ b/caesium/caesium.h @@ -40,8 +40,8 @@ typedef struct cs_image_pars typedef enum image_type { - JPEG, - PNG, + CS_JPEG, + CS_PNG, UNKN, } image_type; diff --git a/caesium/config.h.in b/caesium/config.h.in new file mode 100644 index 0000000..30f46c8 --- /dev/null +++ b/caesium/config.h.in @@ -0,0 +1,3 @@ +#define VERSION_MAJOR @VERSION_MAJOR@ +#define VERSION_MINOR @VERSION_MINOR@ +#define VERSION_PATCH @VERSION_PATCH@ \ No newline at end of file diff --git a/caesium/utils.c b/caesium/utils.c index 2c288cc..79b185e 100644 --- a/caesium/utils.c +++ b/caesium/utils.c @@ -18,9 +18,9 @@ image_type detect_image_type(FILE *pFile) } if (buffer[0] == 0xFF && buffer[1] == 0xD8) { - return JPEG; + return CS_JPEG; } else if (buffer[0] == 0x89 && buffer[1] == 0x50) { - return PNG; + return CS_PNG; } return UNKN; diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 1341edd..79ca8e2 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -1,5 +1,3 @@ add_executable(caesiumd main.c) -target_link_libraries(caesiumd LINK_PUBLIC caesium) - -install(TARGETS caesiumd DESTINATION bin) \ No newline at end of file +target_link_libraries(caesiumd LINK_PUBLIC caesium) \ No newline at end of file diff --git a/demo/main.c b/demo/main.c index d52485e..1cdf325 100644 --- a/demo/main.c +++ b/demo/main.c @@ -1,14 +1,22 @@ #include +#include #include "caesium.h" +#include "config.h" int main(int argc, char *argv[]) { + fprintf(stdout, "libcaesium demo application v%d.%d.%d\n\n", + VERSION_MAJOR, + VERSION_MINOR, + VERSION_PATCH); + if (argc != 3) { fprintf(stderr, "Wrong arguments.\nExiting.\n"); - return -1; + exit(EXIT_FAILURE); } + cs_image_pars options = initialize_parameters(); cs_compress(argv[1], argv[2], &options); - return 0; + exit(EXIT_SUCCESS); } \ No newline at end of file diff --git a/install.sh b/install.sh index 8bf4b98..7826638 100644 --- a/install.sh +++ b/install.sh @@ -4,7 +4,7 @@ git clone https://github.com/mozilla/mozjpeg cd mozjpeg/ autoreconf -fiv -autoreconf -fiv +autoreconf -fiv #It's not a typo, trust me mkdir build && cd build ../configure make && sudo make install