From d0e29dc934213555067282490d815e5154e352ff Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 18:45:17 +0300 Subject: [PATCH 01/11] cmake: bump the minimum version to 2.8.5 Required for the GNUInstallDirs cmake module. See the next commit. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e6ad0d..4c50294 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ ######## Project settings -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 2.8.5) set (PACKAGE_NAME uchardet) project (${PACKAGE_NAME} CXX C) enable_testing() From 31a53570d6f7024c23b0bbc1b22bd5d0f6c37947 Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 20:40:42 +0300 Subject: [PATCH 02/11] cmake: use GNUInstallDirs cmake module Available in cmake >= 2.8.5. --- CMakeLists.txt | 37 +++++-------------------------------- doc/CMakeLists.txt | 2 +- src/CMakeLists.txt | 12 +++++------- 3 files changed, 11 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c50294..edac194 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,43 +29,16 @@ set ( ######## Directory -set (DIR_PREFIX ${CMAKE_INSTALL_PREFIX}) -set (DIR_LIBRARY ${DIR_PREFIX}/${CMAKE_SHARED_LIBRARY_PREFIX}) -set (DIR_LIBRARY_STATIC ${DIR_PREFIX}/${CMAKE_STATIC_LIBRARY_PREFIX}) -set (DIR_INCLUDE ${DIR_PREFIX}/include) -set (DIR_SHARE ${DIR_PREFIX}/share) -set (DIR_ETC ${DIR_PREFIX}/etc) - -set (CMAKE_INSTALL_BINDIR bin CACHE STRING "Install location of executables") - -if (DEFINED CMAKE_INSTALL_LIBDIR) - set (DIR_LIBRARY ${CMAKE_INSTALL_LIBDIR}) - set (DIR_LIBRARY_STATIC ${CMAKE_INSTALL_LIBDIR}) -endif (DEFINED CMAKE_INSTALL_LIBDIR) - -if (DEFINED SHARE_INSTALL_PREFIX) - set (DIR_SHARE ${SHARE_INSTALL_PREFIX}) -endif (DEFINED SHARE_INSTALL_PREFIX) - -if (DEFINED INCLUDE_INSTALL_DIR) - set (DIR_INCLUDE ${INCLUDE_INSTALL_DIR}) -endif (DEFINED INCLUDE_INSTALL_DIR) - -if (DEFINED SYSCONF_INSTALL_DIR) - set (DIR_ETC ${SYSCONF_INSTALL_DIR}) -endif (DEFINED SYSCONF_INSTALL_DIR) - -set (DIR_SHARE_UCHARDET ${DIR_SHARE}/${PACKAGE_NAME}) -set (DIR_SHARE_LOCALE ${DIR_SHARE}/locale) +include(GNUInstallDirs) ######## Configuration -option(BUILD_SHARED_LIBS "Build shared library and link executable against it" - ON) +option(BUILD_BINARY "Build executable" ON) +option(BUILD_SHARED_LIBS "Build shared library and link executable to it" ON) + if (BUILD_SHARED_LIBS) option(BUILD_STATIC "Build static library" ON) endif (BUILD_SHARED_LIBS) -option(BUILD_BINARY "Build executable" ON) configure_file( uchardet.pc.in @@ -77,7 +50,7 @@ install( FILES ${CMAKE_BINARY_DIR}/uchardet.pc DESTINATION - ${DIR_LIBRARY}/pkgconfig + ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) ######## Subdirectories diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index f14354e..10751f8 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -2,5 +2,5 @@ install( FILES uchardet.1 DESTINATION - ${DIR_SHARE}/man/man1 + ${CMAKE_INSTALL_MANDIR}/man1 ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 95148e4..73c672a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -47,8 +47,6 @@ if (BUILD_STATIC AND BUILD_SHARED_LIBS) endif () add_definitions( - -DPKGDATADIR="${DIR_SHARE_UCHARDET}" - -DLOCALEDIR="${DIR_SHARE_LOCALE}" -DVERSION="${UCHARDET_VERSION}" -DPACKAGE_NAME="${PACKAGE_NAME}" -Wall @@ -103,9 +101,9 @@ if (NOT WIN32) TARGETS ${UCHARDET_TARGET} LIBRARY DESTINATION - ${DIR_LIBRARY} + ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION - ${DIR_LIBRARY} + ${CMAKE_INSTALL_LIBDIR} ) else (NOT WIN32) install( @@ -114,7 +112,7 @@ else (NOT WIN32) RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ARCHIVE DESTINATION - ${DIR_LIBRARY} + ${CMAKE_INSTALL_LIBDIR} ) endif (NOT WIN32) @@ -123,7 +121,7 @@ if (UCHARDET_STATIC_TARGET) TARGETS ${UCHARDET_STATIC_TARGET} ARCHIVE DESTINATION - ${DIR_LIBRARY_STATIC} + ${CMAKE_INSTALL_LIBDIR} ) endif (UCHARDET_STATIC_TARGET) @@ -131,7 +129,7 @@ install( FILES ${UCHARDET_HEADERS} DESTINATION - ${DIR_INCLUDE}/uchardet + ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME} ) include(symbols.cmake) From 1a1f4bfbd8daca2479fa89b8765d95cf69d9b061 Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:16:20 +0300 Subject: [PATCH 03/11] cmake: rename UCHARDET_{TARGET -> LIBRARY} for clarity --- src/CMakeLists.txt | 10 +++++----- src/symbols.cmake | 2 +- src/tools/CMakeLists.txt | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 73c672a..97e63bf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,7 +41,7 @@ set( uchardet.cpp ) -set (UCHARDET_TARGET libuchardet) +set (UCHARDET_LIBRARY libuchardet) if (BUILD_STATIC AND BUILD_SHARED_LIBS) set (UCHARDET_STATIC_TARGET libuchardet_static) endif () @@ -53,7 +53,7 @@ add_definitions( ) add_library( - ${UCHARDET_TARGET} + ${UCHARDET_LIBRARY} ${UCHARDET_SOURCES} ) @@ -66,7 +66,7 @@ if (UCHARDET_STATIC_TARGET) endif (UCHARDET_STATIC_TARGET) set_target_properties( - ${UCHARDET_TARGET} + ${UCHARDET_LIBRARY} PROPERTIES LINKER_LANGUAGE CXX @@ -99,7 +99,7 @@ endif (CMAKE_BUILD_TYPE MATCHES Debug) if (NOT WIN32) install( TARGETS - ${UCHARDET_TARGET} + ${UCHARDET_LIBRARY} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION @@ -108,7 +108,7 @@ if (NOT WIN32) else (NOT WIN32) install( TARGETS - ${UCHARDET_TARGET} + ${UCHARDET_LIBRARY} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ARCHIVE DESTINATION diff --git a/src/symbols.cmake b/src/symbols.cmake index 4cd630d..5f97979 100644 --- a/src/symbols.cmake +++ b/src/symbols.cmake @@ -28,7 +28,7 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL GNU) endif (APPLE) set_target_properties( - ${UCHARDET_TARGET} + ${UCHARDET_LIBRARY} PROPERTIES LINK_FLAGS "${LINK_FLAGS}" diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 8e3ffa4..10dd604 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -10,7 +10,7 @@ add_executable( target_link_libraries( uchardet - ${UCHARDET_TARGET} + ${UCHARDET_LIBRARY} ) install( From e7feb356279fe49366ca9f661e6a587db589251b Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:17:14 +0300 Subject: [PATCH 04/11] cmake: rename UCHARDET_STATIC_{TARGET -> LIBRARY} for clarity --- src/CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 97e63bf..a19bded 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,7 +43,7 @@ set( set (UCHARDET_LIBRARY libuchardet) if (BUILD_STATIC AND BUILD_SHARED_LIBS) - set (UCHARDET_STATIC_TARGET libuchardet_static) + set (UCHARDET_STATIC_LIBRARY libuchardet_static) endif () add_definitions( @@ -57,13 +57,13 @@ add_library( ${UCHARDET_SOURCES} ) -if (UCHARDET_STATIC_TARGET) +if (UCHARDET_STATIC_LIBRARY) add_library( - ${UCHARDET_STATIC_TARGET} + ${UCHARDET_STATIC_LIBRARY} STATIC ${UCHARDET_SOURCES} ) -endif (UCHARDET_STATIC_TARGET) +endif (UCHARDET_STATIC_LIBRARY) set_target_properties( ${UCHARDET_LIBRARY} @@ -78,16 +78,16 @@ set_target_properties( 0 ) -if (UCHARDET_STATIC_TARGET) +if (UCHARDET_STATIC_LIBRARY) set_target_properties( - ${UCHARDET_STATIC_TARGET} + ${UCHARDET_STATIC_LIBRARY} PROPERTIES LINKER_LANGUAGE CXX OUTPUT_NAME uchardet ) -endif (UCHARDET_STATIC_TARGET) +endif (UCHARDET_STATIC_LIBRARY) if (CMAKE_BUILD_TYPE MATCHES Debug) add_definitions( @@ -116,14 +116,14 @@ else (NOT WIN32) ) endif (NOT WIN32) -if (UCHARDET_STATIC_TARGET) +if (UCHARDET_STATIC_LIBRARY) install( TARGETS - ${UCHARDET_STATIC_TARGET} + ${UCHARDET_STATIC_LIBRARY} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) -endif (UCHARDET_STATIC_TARGET) +endif (UCHARDET_STATIC_LIBRARY) install( FILES From 7201835c98fb298ffaa3288fdd130d56ab148a4b Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:17:53 +0300 Subject: [PATCH 05/11] cmake: export UCHARDET_LIBRARY to the topmost scope --- src/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a19bded..627fc41 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,6 +42,8 @@ set( ) set (UCHARDET_LIBRARY libuchardet) +set (UCHARDET_LIBRARY libuchardet PARENT_SCOPE) + if (BUILD_STATIC AND BUILD_SHARED_LIBS) set (UCHARDET_STATIC_LIBRARY libuchardet_static) endif () From 29f18210b11d01087426ed137f675dbbd584365a Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:13:51 +0300 Subject: [PATCH 06/11] cmake: hardcode less --- src/CMakeLists.txt | 4 ++-- src/tools/CMakeLists.txt | 8 +++++--- test/CMakeLists.txt | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 627fc41..f6be76f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -73,7 +73,7 @@ set_target_properties( LINKER_LANGUAGE CXX OUTPUT_NAME - uchardet + ${PACKAGE_NAME} VERSION 0.0.0 SOVERSION @@ -87,7 +87,7 @@ if (UCHARDET_STATIC_LIBRARY) LINKER_LANGUAGE CXX OUTPUT_NAME - uchardet + ${PACKAGE_NAME} ) endif (UCHARDET_STATIC_LIBRARY) diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 10dd604..fa15eb2 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -3,19 +3,21 @@ set( uchardet.cpp ) +set(UCHARDET_BINARY uchardet) + add_executable( - uchardet + ${UCHARDET_BINARY} ${UCHARDET_SOURCES} ) target_link_libraries( - uchardet + ${UCHARDET_BINARY} ${UCHARDET_LIBRARY} ) install( TARGETS - uchardet + ${UCHARDET_BINARY} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c9663bd..a059044 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -10,7 +10,7 @@ add_executable( target_link_libraries( uchardet-tests - libuchardet + ${UCHARDET_LIBRARY} ) set_target_properties( From ad647d2e0aad05e979315899a4a4ac6d9b1d6158 Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:45:47 +0300 Subject: [PATCH 07/11] cmake: keep compiler definitions in one place --- src/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f6be76f..1678a1e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -54,6 +54,13 @@ add_definitions( -Wall ) +if (CMAKE_BUILD_TYPE MATCHES Debug) + add_definitions( + -O0 + -g3 + ) +endif (CMAKE_BUILD_TYPE MATCHES Debug) + add_library( ${UCHARDET_LIBRARY} ${UCHARDET_SOURCES} @@ -91,13 +98,6 @@ if (UCHARDET_STATIC_LIBRARY) ) endif (UCHARDET_STATIC_LIBRARY) -if (CMAKE_BUILD_TYPE MATCHES Debug) - add_definitions( - -O0 - -g3 - ) -endif (CMAKE_BUILD_TYPE MATCHES Debug) - if (NOT WIN32) install( TARGETS From dbeee08335f31129a42d4e78b81e276f81b7f9ce Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:11:29 +0300 Subject: [PATCH 08/11] cmake: use lowercase suffix for debug build --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index edac194..af7e75d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ set (UCHARDET_VERSION_MINOR 0) set (UCHARDET_VERSION_REVISION 5) if (CMAKE_BUILD_TYPE MATCHES Debug) - set (version_suffix .Debug) + set (version_suffix .debug) endif (CMAKE_BUILD_TYPE MATCHES Debug) set ( From d0e7ddd8aba0a5aaf8dbd013d298e84ffd367177 Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:14:49 +0300 Subject: [PATCH 09/11] cmake: fix library filename and SONAME Make library filename respect the current uchardet version and make library SONAME respect the current major version. --- src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1678a1e..64b912e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -82,9 +82,9 @@ set_target_properties( OUTPUT_NAME ${PACKAGE_NAME} VERSION - 0.0.0 + ${UCHARDET_VERSION} SOVERSION - 0 + ${UCHARDET_VERSION_MAJOR} ) if (UCHARDET_STATIC_LIBRARY) From 6db8b6f8fe05b7371f8f6b9469f2563602f776bd Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 21:35:50 +0300 Subject: [PATCH 10/11] cmake: minor comment cleanups --- src/symbols.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/symbols.cmake b/src/symbols.cmake index 5f97979..c7b1652 100644 --- a/src/symbols.cmake +++ b/src/symbols.cmake @@ -11,7 +11,7 @@ set( set (LINK_FLAGS "") if (APPLE) - # Create a symbols_list file for the darwin linker. + # Create a symbols_list file for the Darwin linker. string(REPLACE ";" "\n_" _symbols "${UCHARDET_SYMBOLS}") set(_symbols_list "${CMAKE_CURRENT_BINARY_DIR}/symbols.list") file(WRITE ${_symbols_list} "_${_symbols}\n") @@ -19,7 +19,7 @@ if (APPLE) set(LINK_FLAGS "${LINK_FLAGS} -Wl,-exported_symbols_list,'${_symbols_list}'") elseif (CMAKE_CXX_COMPILER_ID STREQUAL GNU) - # Create a version script for GNU ld. + # Create a version script for the GNU ld. set(_symbols "{ global: ${UCHARDET_SYMBOLS}; local: *; };") set(_version_script "${CMAKE_CURRENT_BINARY_DIR}/version.script") file(WRITE ${_version_script} "${_symbols}\n") From 2a3e41a6c37730bd1c3dec6455fa34e5dba5bb92 Mon Sep 17 00:00:00 2001 From: Ilya Tumaykin Date: Mon, 21 Mar 2016 22:40:19 +0300 Subject: [PATCH 11/11] cmake: drop useless PACKAGE_NAME redefinition --- src/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 64b912e..4b38fba 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -50,7 +50,6 @@ endif () add_definitions( -DVERSION="${UCHARDET_VERSION}" - -DPACKAGE_NAME="${PACKAGE_NAME}" -Wall )