Merge pull request #30 from Coacher/use-gnuinstalldirs-cmake-module

Use GNUInstallDirs cmake module, fix library filename bug, minor cleanups.
This commit is contained in:
Jehan 2016-03-27 20:31:17 +02:00
commit 74b4f6a62b
6 changed files with 69 additions and 95 deletions

View File

@ -1,5 +1,5 @@
######## Project settings ######## Project settings
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8.5)
set (PACKAGE_NAME uchardet) set (PACKAGE_NAME uchardet)
project (${PACKAGE_NAME} CXX C) project (${PACKAGE_NAME} CXX C)
enable_testing() enable_testing()
@ -12,7 +12,7 @@ set (UCHARDET_VERSION_MINOR 0)
set (UCHARDET_VERSION_REVISION 5) set (UCHARDET_VERSION_REVISION 5)
if (CMAKE_BUILD_TYPE MATCHES Debug) if (CMAKE_BUILD_TYPE MATCHES Debug)
set (version_suffix .Debug) set (version_suffix .debug)
endif (CMAKE_BUILD_TYPE MATCHES Debug) endif (CMAKE_BUILD_TYPE MATCHES Debug)
set ( set (
@ -29,43 +29,16 @@ set (
######## Directory ######## Directory
set (DIR_PREFIX ${CMAKE_INSTALL_PREFIX}) include(GNUInstallDirs)
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)
######## Configuration ######## Configuration
option(BUILD_SHARED_LIBS "Build shared library and link executable against it" option(BUILD_BINARY "Build executable" ON)
ON) option(BUILD_SHARED_LIBS "Build shared library and link executable to it" ON)
if (BUILD_SHARED_LIBS) if (BUILD_SHARED_LIBS)
option(BUILD_STATIC "Build static library" ON) option(BUILD_STATIC "Build static library" ON)
endif (BUILD_SHARED_LIBS) endif (BUILD_SHARED_LIBS)
option(BUILD_BINARY "Build executable" ON)
configure_file( configure_file(
uchardet.pc.in uchardet.pc.in
@ -77,7 +50,7 @@ install(
FILES FILES
${CMAKE_BINARY_DIR}/uchardet.pc ${CMAKE_BINARY_DIR}/uchardet.pc
DESTINATION DESTINATION
${DIR_LIBRARY}/pkgconfig ${CMAKE_INSTALL_LIBDIR}/pkgconfig
) )
######## Subdirectories ######## Subdirectories

View File

@ -2,5 +2,5 @@ install(
FILES FILES
uchardet.1 uchardet.1
DESTINATION DESTINATION
${DIR_SHARE}/man/man1 ${CMAKE_INSTALL_MANDIR}/man1
) )

View File

@ -41,56 +41,18 @@ set(
uchardet.cpp uchardet.cpp
) )
set (UCHARDET_TARGET libuchardet) set (UCHARDET_LIBRARY libuchardet)
set (UCHARDET_LIBRARY libuchardet PARENT_SCOPE)
if (BUILD_STATIC AND BUILD_SHARED_LIBS) if (BUILD_STATIC AND BUILD_SHARED_LIBS)
set (UCHARDET_STATIC_TARGET libuchardet_static) set (UCHARDET_STATIC_LIBRARY libuchardet_static)
endif () endif ()
add_definitions( add_definitions(
-DPKGDATADIR="${DIR_SHARE_UCHARDET}"
-DLOCALEDIR="${DIR_SHARE_LOCALE}"
-DVERSION="${UCHARDET_VERSION}" -DVERSION="${UCHARDET_VERSION}"
-DPACKAGE_NAME="${PACKAGE_NAME}"
-Wall -Wall
) )
add_library(
${UCHARDET_TARGET}
${UCHARDET_SOURCES}
)
if (UCHARDET_STATIC_TARGET)
add_library(
${UCHARDET_STATIC_TARGET}
STATIC
${UCHARDET_SOURCES}
)
endif (UCHARDET_STATIC_TARGET)
set_target_properties(
${UCHARDET_TARGET}
PROPERTIES
LINKER_LANGUAGE
CXX
OUTPUT_NAME
uchardet
VERSION
0.0.0
SOVERSION
0
)
if (UCHARDET_STATIC_TARGET)
set_target_properties(
${UCHARDET_STATIC_TARGET}
PROPERTIES
LINKER_LANGUAGE
CXX
OUTPUT_NAME
uchardet
)
endif (UCHARDET_STATIC_TARGET)
if (CMAKE_BUILD_TYPE MATCHES Debug) if (CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions( add_definitions(
-O0 -O0
@ -98,40 +60,77 @@ if (CMAKE_BUILD_TYPE MATCHES Debug)
) )
endif (CMAKE_BUILD_TYPE MATCHES Debug) endif (CMAKE_BUILD_TYPE MATCHES Debug)
add_library(
${UCHARDET_LIBRARY}
${UCHARDET_SOURCES}
)
if (UCHARDET_STATIC_LIBRARY)
add_library(
${UCHARDET_STATIC_LIBRARY}
STATIC
${UCHARDET_SOURCES}
)
endif (UCHARDET_STATIC_LIBRARY)
set_target_properties(
${UCHARDET_LIBRARY}
PROPERTIES
LINKER_LANGUAGE
CXX
OUTPUT_NAME
${PACKAGE_NAME}
VERSION
${UCHARDET_VERSION}
SOVERSION
${UCHARDET_VERSION_MAJOR}
)
if (UCHARDET_STATIC_LIBRARY)
set_target_properties(
${UCHARDET_STATIC_LIBRARY}
PROPERTIES
LINKER_LANGUAGE
CXX
OUTPUT_NAME
${PACKAGE_NAME}
)
endif (UCHARDET_STATIC_LIBRARY)
if (NOT WIN32) if (NOT WIN32)
install( install(
TARGETS TARGETS
${UCHARDET_TARGET} ${UCHARDET_LIBRARY}
LIBRARY DESTINATION LIBRARY DESTINATION
${DIR_LIBRARY} ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ARCHIVE DESTINATION
${DIR_LIBRARY} ${CMAKE_INSTALL_LIBDIR}
) )
else (NOT WIN32) else (NOT WIN32)
install( install(
TARGETS TARGETS
${UCHARDET_TARGET} ${UCHARDET_LIBRARY}
RUNTIME DESTINATION RUNTIME DESTINATION
${CMAKE_INSTALL_BINDIR} ${CMAKE_INSTALL_BINDIR}
ARCHIVE DESTINATION ARCHIVE DESTINATION
${DIR_LIBRARY} ${CMAKE_INSTALL_LIBDIR}
) )
endif (NOT WIN32) endif (NOT WIN32)
if (UCHARDET_STATIC_TARGET) if (UCHARDET_STATIC_LIBRARY)
install( install(
TARGETS TARGETS
${UCHARDET_STATIC_TARGET} ${UCHARDET_STATIC_LIBRARY}
ARCHIVE DESTINATION ARCHIVE DESTINATION
${DIR_LIBRARY_STATIC} ${CMAKE_INSTALL_LIBDIR}
) )
endif (UCHARDET_STATIC_TARGET) endif (UCHARDET_STATIC_LIBRARY)
install( install(
FILES FILES
${UCHARDET_HEADERS} ${UCHARDET_HEADERS}
DESTINATION DESTINATION
${DIR_INCLUDE}/uchardet ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}
) )
include(symbols.cmake) include(symbols.cmake)

View File

@ -11,7 +11,7 @@ set(
set (LINK_FLAGS "") set (LINK_FLAGS "")
if (APPLE) 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}") string(REPLACE ";" "\n_" _symbols "${UCHARDET_SYMBOLS}")
set(_symbols_list "${CMAKE_CURRENT_BINARY_DIR}/symbols.list") set(_symbols_list "${CMAKE_CURRENT_BINARY_DIR}/symbols.list")
file(WRITE ${_symbols_list} "_${_symbols}\n") file(WRITE ${_symbols_list} "_${_symbols}\n")
@ -19,7 +19,7 @@ if (APPLE)
set(LINK_FLAGS set(LINK_FLAGS
"${LINK_FLAGS} -Wl,-exported_symbols_list,'${_symbols_list}'") "${LINK_FLAGS} -Wl,-exported_symbols_list,'${_symbols_list}'")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL GNU) 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(_symbols "{ global: ${UCHARDET_SYMBOLS}; local: *; };")
set(_version_script "${CMAKE_CURRENT_BINARY_DIR}/version.script") set(_version_script "${CMAKE_CURRENT_BINARY_DIR}/version.script")
file(WRITE ${_version_script} "${_symbols}\n") file(WRITE ${_version_script} "${_symbols}\n")
@ -28,7 +28,7 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL GNU)
endif (APPLE) endif (APPLE)
set_target_properties( set_target_properties(
${UCHARDET_TARGET} ${UCHARDET_LIBRARY}
PROPERTIES PROPERTIES
LINK_FLAGS LINK_FLAGS
"${LINK_FLAGS}" "${LINK_FLAGS}"

View File

@ -3,19 +3,21 @@ set(
uchardet.cpp uchardet.cpp
) )
set(UCHARDET_BINARY uchardet)
add_executable( add_executable(
uchardet ${UCHARDET_BINARY}
${UCHARDET_SOURCES} ${UCHARDET_SOURCES}
) )
target_link_libraries( target_link_libraries(
uchardet ${UCHARDET_BINARY}
${UCHARDET_TARGET} ${UCHARDET_LIBRARY}
) )
install( install(
TARGETS TARGETS
uchardet ${UCHARDET_BINARY}
RUNTIME DESTINATION RUNTIME DESTINATION
${CMAKE_INSTALL_BINDIR} ${CMAKE_INSTALL_BINDIR}
) )

View File

@ -10,7 +10,7 @@ add_executable(
target_link_libraries( target_link_libraries(
uchardet-tests uchardet-tests
libuchardet ${UCHARDET_LIBRARY}
) )
set_target_properties( set_target_properties(