#libmng-VERSION CMAKE_MINIMUM_REQUIRED(VERSION 2.6) # IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) # IF(NOT MNG_NAMESPACE) SET(MNG_NAMESPACE "MNG") SET(MNG_STANDALONE 1) ENDIF(NOT MNG_NAMESPACE) # STRING(TOLOWER ${MNG_NAMESPACE} MNG_LIBRARY_NAME) # project(${MNG_NAMESPACE} C) # INCLUDE(${CMAKE_SOURCE_DIR}/CMake/vers.cmake) # SET(MNG_VERSION "${MNG_VERSION_MAJOR}.${MNG_VERSION_MINOR}.${MNG_VERSION_PATCH}") # SET(PACKAGE_VERSION "${MNG_VERSION_MAJOR}.${MNG_VERSION_MINOR}.${MNG_VERSION_PATCH}") # SET(MNG_LIBRARY_PROPERTIES VERSION "${MNG_VERSION_MAJOR}.${MNG_VERSION_MINOR}.${MNG_VERSION_PATCH}" SOVERSION "${MNG_VERSION_MAJOR}") # # Path to additional CMake modules SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH}) FIND_PACKAGE(GZIP) FIND_PACKAGE(MAN) # STRING(TOLOWER ${PROJECT_NAME} projectname) SET(MNG_INSTALL_SUBDIR "${projectname}-${MNG_VERSION_MAJOR}.${MNG_VERSION_MINOR}") # IF(MSVC) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) ENDIF(MSVC) # IF(DEBUG_LIBMNG) IF(UNIX) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wconversion -Wno-unused") ENDIF(UNIX) ENDIF(DEBUG_LIBMNG) # IF(NOT MNG_INSTALL_BIN_DIR) SET(MNG_INSTALL_BIN_DIR "bin") ENDIF(NOT MNG_INSTALL_BIN_DIR) # IF(NOT MNG_INSTALL_LIB_DIR) IF(UNIX) IF(CMAKE_SIZEOF_VOID_P EQUAL "8") SET(MNG_INSTALL_LIB_DIR "lib64") ELSE(CMAKE_SIZEOF_VOID_P EQUAL "8") SET(MNG_INSTALL_LIB_DIR "lib") ENDIF(CMAKE_SIZEOF_VOID_P EQUAL "8") ELSE(UNIX) SET(MNG_INSTALL_LIB_DIR "lib") ENDIF(UNIX) ENDIF(NOT MNG_INSTALL_LIB_DIR) # IF(NOT MNG_INSTALL_SHARE_DIR) SET(MNG_INSTALL_SHARE_DIR "share") ENDIF(NOT MNG_INSTALL_SHARE_DIR) # IF(NOT MNG_INSTALL_DATA_DIR) SET(MNG_INSTALL_DATA_DIR "${MNG_INSTALL_SHARE_DIR}/${MNG_INSTALL_SUBDIR}") ENDIF(NOT MNG_INSTALL_DATA_DIR) # IF(NOT MNG_INSTALL_PKGCONFIG_DIR) SET(MNG_INSTALL_PKGCONFIG_DIR "${MNG_INSTALL_LIB_DIR}/pkgconfig") ENDIF(NOT MNG_INSTALL_PKGCONFIG_DIR) # IF(NOT MNG_INSTALL_INCLUDE_DIR) SET(MNG_INSTALL_INCLUDE_DIR "include") ENDIF(NOT MNG_INSTALL_INCLUDE_DIR) # IF(NOT MNG_INSTALL_DOC_DIR) SET(MNG_INSTALL_DOC_DIR "share/doc/${MNG_INSTALL_SUBDIR}") ENDIF(NOT MNG_INSTALL_DOC_DIR) # IF(NOT MNG_INSTALL_PACKAGE_DIR) SET(MNG_INSTALL_PACKAGE_DIR "${MNG_INSTALL_SHARE_DIR}/${MNG_INSTALL_SUBDIR}") ENDIF(NOT MNG_INSTALL_PACKAGE_DIR) # INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake) TEST_BIG_ENDIAN(WORDS_BIGENDIAN) # IF(WORDS_BIGENDIAN) SET(WORDS_BIGENDIAN_S "#define WORDS_BIGENDIAN 1") ELSE(WORDS_BIGENDIAN) SET(WORDS_BIGENDIAN_S "/* #undef WORDS_BIGENDIAN */") ENDIF(WORDS_BIGENDIAN) # OPTION(BUILD_STATIC_LIBS "Build MNG static library and link executables against it." ON) OPTION(BUILD_SHARED_LIBS "Build MNG shared library and link executables against it." ON) # OPTION(BUILD_MAN "Build MAN pages" OFF) # OPTION(WITH_LCMS2 "Build MNG library with liblcms version 2" ON) # OPTION(WITH_LCMS1 "Build MNG library with liblcms version 1" OFF) # OPTION(ENABLE_SUPPORT_FULL "Enable full support for MNG library; no LC or VLC" ON) # OPTION(DISABLE_BUILD_SO "Do not build MNG library with standard shared object" OFF) # OPTION(DISABLE_READ "Disable read support for MNG library" OFF) # OPTION(DISABLE_WRITE "Disable write support for MNG library" OFF) # OPTION(DISABLE_DISPLAY "Disable image display support for MNG library" OFF) # OPTION(DISABLE_DYNAMIC "Disable dynamic support for MNG library" OFF) # OPTION(DISABLE_CHUNKS "Remove support in MNG library to access chunks" OFF) # OPTION(DISABLE_STORE_CHUNKS "Disable support for accessing chunks that have been previously read" OFF) # OPTION(ENABLE_TRACE "Enable support for debug tracing callbacks and messages" OFF) # OPTION(WITH_JPEG "Enable JPEG support" ON) # FIND_PACKAGE(ZLIB REQUIRED) # IF(ZLIB_FOUND) INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) SET(HAVE_LIBZ 1) ENDIF(ZLIB_FOUND) # #---------- local build output path for testing --------- SET(EXECUTABLE_OUTPUT_PATH ${MNG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.") # SET(LIBRARY_OUTPUT_PATH ${MNG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.") MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) # #------------------ installation RPATH ------------------- # use, i.e. don't skip the full RPATH for the build tree SET(CMAKE_SKIP_BUILD_RPATH FALSE) # # when building, don't use the install RPATH already # (but later on when installing) SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") # # add the automatically determined parts of the RPATH # which point to directories outside the build tree to the install RPATH SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # # the RPATH to be used when installing, # but only if it's not a system directory LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) IF("${isSystemDir}" STREQUAL "-1") SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") ENDIF("${isSystemDir}" STREQUAL "-1") # #----- # INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H) CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H) CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H) CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H) CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H) CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H) CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) CHECK_INCLUDE_FILE("stddef.h" HAVE_STDDEF_H) CHECK_INCLUDE_FILE("io.h" HAVE_IO_H) CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H) CHECK_INCLUDE_FILE("assert.h" HAVE_ASSERT_H) CHECK_INCLUDE_FILE("limits.h" HAVE_LIMITS_H) CHECK_INCLUDE_FILE("math.h" HAVE_LIBM) CHECK_INCLUDE_FILE("malloc.h" HAVE_MALLOC_H) CHECK_INCLUDE_FILE("search.h" HAVE_SEARCH_H) CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H) CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H) CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) # IF(NOT HAVE_LIBM) MESSAGE(FATAL_ERROR "pow() REQUIRED: not found. Quitting.") ENDIF(NOT HAVE_LIBM) # FIND_PACKAGE(JPEG) # IF(JPEG_FOUND) INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR}) SET(HAVE_LIBJPEG 1) ENDIF(JPEG_FOUND) # IF(WITH_LCMS2) FIND_PACKAGE(LCMS2) IF(LCMS2_FOUND) INCLUDE_DIRECTORIES(${LCMS2_INCLUDE_DIR}) SET(HAVE_LIBLCMS2 1) SET(MNG_FULL_CMS 1) ENDIF(LCMS2_FOUND) ENDIF(WITH_LCMS2) # IF(WITH_LCMS1) FIND_PACKAGE(LCMS1) IF(LCMS1_FOUND) INCLUDE_DIRECTORIES(${LCMS1_INCLUDE_DIR}) SET(HAVE_LIBLCMS1 1) SET(MNG_FULL_CMS 1) ENDIF(LCMS1_FOUND) ENDIF(WITH_LCMS1) # IF(ENABLE_SUPPORT_FULL) SET(MNG_SUPPORT_FULL 1) ENDIF(ENABLE_SUPPORT_FULL) # IF(NOT DISABLE_BUILD_SO) SET(MNG_BUILD_SO 1) ENDIF(NOT DISABLE_BUILD_SO) # IF(NOT DISABLE_READ) SET(MNG_SUPPORT_READ 1) ENDIF(NOT DISABLE_READ) # IF(NOT DISABLE_WRITE) SET(MNG_SUPPORT_WRITE 1) ENDIF(NOT DISABLE_WRITE) # IF(NOT DISABLE_DISPLAY) SET(MNG_SUPPORT_DISPLAY 1) ENDIF(NOT DISABLE_DISPLAY) # IF(NOT DISABLE_DYNAMIC) SET(MNG_SUPPORT_DYNAMICMNG 1) ENDIF(NOT DISABLE_DYNAMIC) # IF(NOT DISABLE_CHUNKS) SET(MNG_ACCESS_CHUNKS 1) ENDIF(NOT DISABLE_CHUNKS) # IF(NOT DISABLE_STORE_CHUNKS) SET(MNG_STORE_CHUNKS 1) ENDIF(NOT DISABLE_STORE_CHUNKS) # IF(ENABLE_TRACE) SET(MNG_SUPPORT_TRACE 1) SET(MNG_TRACE_TELLTALE 1) ENDIF(ENABLE_TRACE) # SET(MNG_ERROR_TELLTALE 1) # #----------------- end of configuration ---------------------- CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/config.h.cmake.in" "${CMAKE_BINARY_DIR}/config.h" @ONLY ) # INCLUDE_DIRECTORIES(BEFORE ${MNG_BINARY_DIR}) # INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) # FIND_PACKAGE(MAN) FIND_PACKAGE(GZIP) # ADD_SUBDIRECTORY(doc) # #--------------------------------------------------- # SET(TARGET_FILES libmng.h libmng_chunk_descr.h libmng_chunk_io.h libmng_chunk_prc.h libmng_chunks.h libmng_cms.h libmng_conf.h libmng_data.h libmng_display.h libmng_dither.h libmng_error.h libmng_filter.h libmng_jpeg.h libmng_memory.h libmng_object_prc.h libmng_objects.h libmng_pixels.h libmng_read.h libmng_trace.h libmng_types.h libmng_write.h libmng_zlib.h libmng_callback_xs.c libmng_chunk_descr.c libmng_chunk_io.c libmng_chunk_prc.c libmng_chunk_xs.c libmng_cms.c libmng_display.c libmng_dither.c libmng_error.c libmng_filter.c libmng_hlapi.c libmng_jpeg.c libmng_object_prc.c libmng_pixels.c libmng_prop_xs.c libmng_read.c libmng_trace.c libmng_write.c libmng_zlib.c ) # #------------------ STATIC --------------------- IF(BUILD_STATIC_LIBS) ADD_LIBRARY(${MNG_LIBRARY_NAME} STATIC ${TARGET_FILES}) # IF(JPEG_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME} ${JPEG_LIBRARY}) ENDIF(JPEG_FOUND) # IF(ZLIB_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME} ${ZLIB_LIBRARY}) ENDIF(ZLIB_FOUND) # IF(LCMS2_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME} ${LCMS2_LIBRARY}) ENDIF(LCMS2_FOUND) # IF(LCMS1_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME} ${LCMS1_LIBRARY}) ENDIF(LCMS1_FOUND) # IF(UNIX) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME} m) ENDIF(UNIX) # IF(MSVC) SET_TARGET_PROPERTIES(${MNG_LIBRARY_NAME} PROPERTIES PREFIX "lib") ENDIF(MSVC) # SET_TARGET_PROPERTIES(${MNG_LIBRARY_NAME} PROPERTIES LINKER_LANGUAGE C) # # INSTALL(TARGETS ${MNG_LIBRARY_NAME} EXPORT MNG_TARGETS RUNTIME DESTINATION ${MNG_INSTALL_BIN_DIR} COMPONENT Applications LIBRARY DESTINATION ${MNG_INSTALL_LIB_DIR} COMPONENT Libraries ARCHIVE DESTINATION ${MNG_INSTALL_LIB_DIR} COMPONENT Libraries ) ENDIF(BUILD_STATIC_LIBS) #---------------- SHARED ------------- IF(BUILD_SHARED_LIBS) IF(WIN32) #-DMNG_BUILD_DLL or -DMNG_DLL or -DMNG_USE_DLL : cnf. libmng_types.h ADD_DEFINITIONS(-DMNG_BUILD_DLL) ENDIF(WIN32) ADD_LIBRARY(${MNG_LIBRARY_NAME}-shared ${TARGET_FILES} ) # IF(JPEG_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME}-shared ${JPEG_LIBRARY}) ENDIF(JPEG_FOUND) # IF(ZLIB_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME}-shared ${ZLIB_LIBRARY}) ENDIF(ZLIB_FOUND) # IF(LCMS2_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME}-shared ${LCMS2_LIBRARY}) ENDIF(LCMS2_FOUND) # IF(LCMS1_FOUND) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME}-shared ${LCMS1_LIBRARY}) ENDIF(LCMS1_FOUND) # IF(UNIX) TARGET_LINK_LIBRARIES(${MNG_LIBRARY_NAME}-shared m) ENDIF(UNIX) # IF(MSVC) SET_TARGET_PROPERTIES(${MNG_LIBRARY_NAME}-shared PROPERTIES PREFIX "lib") ENDIF(MSVC) # SET_TARGET_PROPERTIES(${MNG_LIBRARY_NAME}-shared PROPERTIES LINKER_LANGUAGE C) # SET_TARGET_PROPERTIES(${MNG_LIBRARY_NAME}-shared PROPERTIES OUTPUT_NAME ${MNG_LIBRARY_NAME} ${MNG_LIBRARY_PROPERTIES} ) # INSTALL(TARGETS ${MNG_LIBRARY_NAME}-shared EXPORT MNG_TARGETS RUNTIME DESTINATION ${MNG_INSTALL_BIN_DIR} COMPONENT Applications LIBRARY DESTINATION ${MNG_INSTALL_LIB_DIR} COMPONENT Libraries ARCHIVE DESTINATION ${MNG_INSTALL_LIB_DIR} COMPONENT Libraries ) # ENDIF(BUILD_SHARED_LIBS) #------------ libmng.pc --------------- IF(UNIX) SET(MNG_LIBS_PRIVATE "") IF(JPEG_FOUND) SET(MNG_LIBS_PRIVATE "${MNG_LIBS_PRIVATE} -ljpeg") ENDIF(JPEG_FOUND) IF(ZLIB_FOUND) SET(MNG_LIBS_PRIVATE "${MNG_LIBS_PRIVATE} -lz") ENDIF(ZLIB_FOUND) IF(LCMS2_FOUND) SET(MNG_LIBS_PRIVATE "${MNG_LIBS_PRIVATE} -llcms2") ENDIF(LCMS2_FOUND) IF(LCMS1_FOUND) SET(MNG_LIBS_PRIVATE "${MNG_LIBS_PRIVATE} -llcms") ENDIF(LCMS1_FOUND) # SET(MNG_LIBS_PRIVATE "${MNG_LIBS_PRIVATE} -lm") # CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/CMake/libmng.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libmng.pc @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libmng.pc DESTINATION ${MNG_INSTALL_PKGCONFIG_DIR} ) ENDIF(UNIX) # INSTALL(EXPORT MNG_TARGETS DESTINATION ${MNG_INSTALL_PACKAGE_DIR}) # INSTALL(FILES libmng.h libmng_conf.h libmng_types.h DESTINATION ${MNG_INSTALL_INCLUDE_DIR} COMPONENT Headers ) INSTALL(FILES README README.config README.dll README.footprint README.autoconf README.contrib README.examples README.packaging CHANGES LICENSE DESTINATION ${MNG_INSTALL_DOC_DIR} ) #--- fin