From 2f930e0872c8ce1f59b17f9a48257cf4e58b0e2c Mon Sep 17 00:00:00 2001 From: James Zern Date: Tue, 3 Apr 2018 19:52:18 -0700 Subject: [PATCH] Revert "Use proper targets for CMake." This reverts commit 8165e8fb3b15d5df8fb9c64256756e4a8c7875a8. breaks webp_js builds: missing includes, multiply defined symbols Change-Id: I8df7eda3974e708c2a96b98600ec69981ec7aacb --- CMakeLists.txt | 141 ++++++++++++++----------------------------------- 1 file changed, 40 insertions(+), 101 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 235c3f79..a3b7a436 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,16 +1,16 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 2.8.7) -project(WebP C) +project(libwebp C) # Options for coder / decoder executables. option(WEBP_ENABLE_SIMD "Enable any SIMD optimization." ON) -option(WEBP_BUILD_CWEBP "Build the cwebp command line tool." ON) -option(WEBP_BUILD_DWEBP "Build the dwebp command line tool." ON) -option(WEBP_BUILD_GIF2WEBP "Build the gif2webp conversion tool." ON) -option(WEBP_BUILD_IMG2WEBP "Build the img2webp animation tool." ON) -option(WEBP_BUILD_WEBPINFO "Build the webpinfo command line tool." ON) +option(WEBP_BUILD_CWEBP "Build the cwebp command line tool." OFF) +option(WEBP_BUILD_DWEBP "Build the dwebp command line tool." OFF) +option(WEBP_BUILD_GIF2WEBP "Build the gif2webp conversion tool." OFF) +option(WEBP_BUILD_IMG2WEBP "Build the img2webp animation tool." OFF) +option(WEBP_BUILD_WEBPINFO "Build the webpinfo command line tool." OFF) option(WEBP_BUILD_WEBP_JS "Emscripten build of webp.js." OFF) -option(WEBP_NEAR_LOSSLESS "Enable near-lossless encoding" ON) +option(WEBP_ENABLE_NEAR_LOSSLESS "Enable near-lossless encoding" ON) option(WEBP_ENABLE_SWAP_16BIT_CSP "Enable byte swap for 16 bit colorspaces." OFF) if(WEBP_BUILD_WEBP_JS) @@ -22,13 +22,12 @@ set(WEBP_DEP_INCLUDE_DIRS) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE - "Build type: Release, Debug, MinSizeRel or RelWithDebInfo" STRING FORCE + "Build type: Release, Debug or RelWithDebInfo" STRING FORCE ) endif() # Include dependencies. include(cmake/deps.cmake) -include(GNUInstallDirs) ################################################################################ # Options. @@ -101,11 +100,6 @@ foreach(FILE ${WEBP_SIMD_FILES_NOT_TO_INCLUDE}) list(REMOVE_ITEM WEBP_DSP_DEC_SRCS ${FILE}) endforeach() -# Generate the config.h file. -configure_file(${CMAKE_CURRENT_LIST_DIR}/cmake/config.h.in - ${CMAKE_CURRENT_BINARY_DIR}/src/webp/config.h) -add_definitions(-DHAVE_CONFIG_H) - ### Define the mandatory libraries. # Build the webpdecoder library. if(MSVC) @@ -114,62 +108,24 @@ if(MSVC) else() add_definitions(-Wall) endif() -include_directories(${WEBP_DEP_INCLUDE_DIRS}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${WEBP_DEP_INCLUDE_DIRS}) add_library(webpdecode OBJECT ${WEBP_DEC_SRCS}) -target_include_directories(webpdecode PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) add_library(webpdspdecode OBJECT ${WEBP_DSP_COMMON_SRCS} ${WEBP_DSP_DEC_SRCS}) -target_include_directories(webpdspdecode PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) add_library(webputilsdecode OBJECT ${WEBP_UTILS_COMMON_SRCS} - ${WEBP_UTILS_DEC_SRCS} -) -target_include_directories(webputilsdecode PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) + ${WEBP_UTILS_DEC_SRCS}) add_library(webpdecoder $ $ $) target_link_libraries(webpdecoder ${WEBP_DEP_LIBRARIES}) -target_include_directories(webpdecoder - PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - INTERFACE $ -) -set_target_properties(webpdecoder PROPERTIES PUBLIC_HEADER -"${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h" -) # Build the webp library. add_library(webpencode OBJECT ${WEBP_ENC_SRCS}) -target_include_directories(webpencode PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) add_library(webpdsp OBJECT ${WEBP_DSP_COMMON_SRCS} ${WEBP_DSP_DEC_SRCS} ${WEBP_DSP_ENC_SRCS}) -target_include_directories(webpdsp PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) add_library(webputils OBJECT ${WEBP_UTILS_COMMON_SRCS} ${WEBP_UTILS_DEC_SRCS} ${WEBP_UTILS_ENC_SRCS}) -target_include_directories(webputils PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) add_library(webp $ $ $ $) target_link_libraries(webp ${WEBP_DEP_LIBRARIES}) -target_include_directories(webp - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - PUBLIC $ -) -set_target_properties(webp PROPERTIES PUBLIC_HEADER -"${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/encode.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h" -) # Make sure the OBJECT libraries are built with position independent code # (it is not ON by default). @@ -179,17 +135,6 @@ set_target_properties(webpdecode webpdspdecode webputilsdecode # Build the webp demux library. add_library(webpdemux ${WEBP_DEMUX_SRCS}) target_link_libraries(webpdemux webp) -target_include_directories(webpdemux - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - PUBLIC $ -) -set_target_properties(webpdemux PROPERTIES PUBLIC_HEADER -"${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/demux.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux_types.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h" -) # Set the version numbers. function(parse_version FILE NAME VAR) @@ -237,8 +182,6 @@ if(WEBP_BUILD_CWEBP OR WEBP_BUILD_DWEBP OR list(APPEND EXAMPLEUTIL_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/examples/stopwatch.h) add_library(exampleutil ${EXAMPLEUTIL_SRCS}) - target_include_directories(exampleutil - PUBLIC $) parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/imageio "IMAGEIOUTILS_SRCS" "imageio_util_[^ ]*") @@ -270,9 +213,9 @@ if(WEBP_BUILD_DWEBP) "dwebp") add_executable(dwebp ${DWEBP_SRCS}) target_link_libraries(dwebp exampleutil imagedec imageenc webpdecoder) - install(TARGETS dwebp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS dwebp RUNTIME DESTINATION bin) set_property(TARGET dwebp PROPERTY INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_BINARY_DIR}/src) + ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src) endif() if(WEBP_BUILD_CWEBP) @@ -282,9 +225,9 @@ if(WEBP_BUILD_CWEBP) "cwebp") add_executable(cwebp ${CWEBP_SRCS}) target_link_libraries(cwebp exampleutil imagedec webp) - install(TARGETS cwebp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS cwebp RUNTIME DESTINATION bin) set_property(TARGET cwebp PROPERTY INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_BINARY_DIR}/src) + ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src) endif() if(WEBP_BUILD_GIF2WEBP AND NOT GIF_FOUND) @@ -296,17 +239,9 @@ if(WEBP_BUILD_GIF2WEBP OR WEBP_BUILD_IMG2WEBP) "") add_library(webpmux ${WEBP_MUX_SRCS}) target_link_libraries(webpmux webp) - target_include_directories(webpmux - PRIVATE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}) parse_version(mux/Makefile.am webpmux WEBP_MUX_SOVERSION) set_target_properties(webpmux PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${WEBP_MUX_SOVERSION}) - set_target_properties(webpmux PROPERTIES PUBLIC_HEADER -"${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux_types.h;\ -${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h;" - ) list(APPEND INSTALLED_LIBRARIES webpmux) endif() @@ -318,9 +253,9 @@ if(WEBP_BUILD_GIF2WEBP) add_executable(gif2webp ${GIF2WEBP_SRCS}) target_link_libraries(gif2webp exampleutil imageioutil webp webpmux ${WEBP_DEP_GIF_LIBRARIES}) - install(TARGETS gif2webp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS gif2webp RUNTIME DESTINATION bin) set_property(TARGET gif2webp PROPERTY INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_BINARY_DIR}/src) + ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src) endif() if(WEBP_BUILD_IMG2WEBP) @@ -330,9 +265,9 @@ if(WEBP_BUILD_IMG2WEBP) "img2webp") add_executable(img2webp ${IMG2WEBP_SRCS}) target_link_libraries(img2webp exampleutil imagedec imageioutil webp webpmux) - install(TARGETS img2webp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS img2webp RUNTIME DESTINATION bin) set_property(TARGET img2webp PROPERTY INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_BINARY_DIR}/src) + ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src) endif() if (WEBP_BUILD_WEBPINFO) @@ -342,7 +277,7 @@ if (WEBP_BUILD_WEBPINFO) "webpinfo") add_executable(webpinfo ${WEBPINFO_SRCS}) target_link_libraries(webpinfo exampleutil imageioutil) - install(TARGETS webpinfo RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS webpinfo RUNTIME DESTINATION bin) set_property(TARGET webpinfo PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src) endif() @@ -372,22 +307,25 @@ if(WEBP_BUILD_WEBP_JS) target_compile_definitions(webpdecoder PUBLIC EMSCRIPTEN) endif() +# Generate the config.h file. +configure_file(${CMAKE_CURRENT_LIST_DIR}/cmake/config.h.in + ${CMAKE_CURRENT_BINARY_DIR}/src/webp/config.h) +add_definitions(-DHAVE_CONFIG_H) +# The webp folder is included as we reference config.h as +# ../webp/config.h or webp/config.h +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + # Install the different headers and libraries. -include(GNUInstallDirs) -install( - TARGETS ${INSTALLED_LIBRARIES} - EXPORT ${PROJECT_NAME}Targets - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/webp - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -) -set(ConfigPackageLocation ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake/) -install(EXPORT ${PROJECT_NAME}Targets - NAMESPACE ${PROJECT_NAME}:: - DESTINATION ${ConfigPackageLocation} -) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/demux.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/encode.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h + DESTINATION include/webp) +install(TARGETS ${INSTALLED_LIBRARIES} + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) # Create the CMake version file. include(CMakePackageConfigHelpers) @@ -399,6 +337,7 @@ write_basic_package_version_file( # Create the Config file. include(CMakePackageConfigHelpers) +set(ConfigPackageLocation share/WebP/cmake/) configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/WebPConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/WebPConfig.cmake @@ -425,7 +364,7 @@ foreach(I_MAN RANGE ${MAN_PAGES_RANGE}) if(WEBP_BUILD_${EXEC_BUILD}) list(GET MAN_PAGES ${I_MAN} MAN_PAGE) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man/${MAN_PAGE} - DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1 COMPONENT doc ) endif()