From 5b21c39bb2b2cb52f280fc9aab81b17858c84a64 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Thu, 11 Feb 2016 22:11:14 +0100 Subject: [PATCH] cmake: add lib, add versioning info, install lib Also remove some headers which were not checked anyway and add macros to cmakeconfig.h.in (based on the headers list in the CMakeLists.txt file). --- CMakeLists.txt | 59 +++++++++++++++++++++++++--------------------- cmakeconfig.h.in | 36 ++++++++++++++++++++++++++++ lib/CMakeLists.txt | 37 +++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 27 deletions(-) create mode 100644 lib/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d7164fa3..06719bf8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,12 +26,20 @@ cmake_minimum_required(VERSION 3.0) # XXX using 1.7.90 instead of 1.8.0-DEV project(nghttp2 VERSION 1.7.90) +# See versioning rule: +# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +set(LT_CURRENT 18) +set(LT_REVISION 1) +set(LT_AGE 4) + set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(Version) set(PACKAGE_VERSION "${PROJECT_VERSION}") HexVersion(PACKAGE_VERSION_NUM ${PROJECT_VERSION_MAJOR} ${PROJECT_VERSION_MINOR} ${PROJECT_VERSION_PATCH}) +include(GNUInstallDirs) + option(ENABLE_WERROR "Turn on compile time warnings") option(ENABLE_DEBUG "Turn on debug output") option(ENABLE_THREADS "Turn on threading in apps" ON) @@ -321,10 +329,6 @@ check_include_file("limits.h" HAVE_LIMITS_H) check_include_file("netdb.h" HAVE_NETDB_H) check_include_file("netinet/in.h" HAVE_NETINET_IN_H) check_include_file("pwd.h" HAVE_PWD_H) -check_include_file("stddef.h" HAVE_STDDEF_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/socket.h" HAVE_SYS_SOCKET_H) check_include_file("sys/time.h" HAVE_SYS_TIME_H) check_include_file("syslog.h" HAVE_SYSLOG_H) @@ -456,6 +460,7 @@ endif() # AC_SUBST([TESTLDADD]) # AC_SUBST([APPLDFLAGS]) +add_definitions(-DHAVE_CONFIG_H) configure_file(cmakeconfig.h.in config.h) # autotools-compatible names set(top_srcdir "${CMAKE_SOURCE_DIR}") @@ -464,13 +469,13 @@ set(abs_top_srcdir "${CMAKE_SOURCE_DIR}") set(abs_top_builddir "${CMAKE_BINARY_DIR}") # libnghttp2.pc (pkg-config file) set(prefix "${CMAKE_INSTALL_PREFIX}") -set(exec_prefix "\${prefix}") -set(libdir "\${prefix}/lib") -set(includedir "\${prefix}/include") +set(exec_prefix "${CMAKE_INSTALL_PREFIX}") +set(libdir "${CMAKE_INSTALL_LIBDIR}") +set(includedir "${CMAKE_INSTALL_INCLUDEDIR}") set(VERSION "${PACKAGE_VERSION}") # For init scripts and systemd service file -set(bindir "${prefix}/bin") -set(sbindir "${prefix}/sbin") +set(bindir "${CMAKE_INSTALL_FULL_BINDIR}") +set(sbindir "${CMAKE_INSTALL_FULL_SBINDIR}") foreach(name lib/libnghttp2.pc lib/includes/nghttp2/nghttp2ver.h @@ -499,29 +504,29 @@ foreach(name configure_file("${name}.in" "${name}" @ONLY) endforeach() -# AC_CONFIG_FILES([ -# Makefile -# lib/Makefile -# lib/includes/Makefile -# tests/Makefile -# tests/testdata/Makefile -# third-party/Makefile -# src/Makefile -# src/includes/Makefile -# examples/Makefile -# python/Makefile -# integration-tests/Makefile -# doc/Makefile -# contrib/Makefile -# script/Makefile -# ]) -# AC_OUTPUT + +add_subdirectory(lib) +#add_subdirectory(lib/includes) +if(0) +add_subdirectory(third-party) +add_subdirectory(src) +#add_subdirectory(src/includes) +add_subdirectory(examples) +add_subdirectory(python) +add_subdirectory(tests) +#add_subdirectory(tests/testdata) +add_subdirectory(integration-tests) +add_subdirectory(doc) +add_subdirectory(contrib) +add_subdirectory(script) +endif() + # XXX - fix list of variables message(STATUS "summary of build options: Package version: ${VERSION} - Library version: $LT_CURRENT:$LT_REVISION:$LT_AGE + Library version: ${LT_CURRENT}:${LT_REVISION}:${LT_AGE} Install prefix: ${prefix} System types: Build: ${build} diff --git a/cmakeconfig.h.in b/cmakeconfig.h.in index 353ff477..d7db50f3 100644 --- a/cmakeconfig.h.in +++ b/cmakeconfig.h.in @@ -37,3 +37,39 @@ /* Define to 1 if you want to disable threads. */ #cmakedefine NOTHREADS 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_PWD_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYSLOG_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H 1 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 00000000..7b4d5e3e --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,37 @@ +include_directories( + "${CMAKE_BINARY_DIR}" # for config.h + "${CMAKE_CURRENT_SOURCE_DIR}/includes" + "${CMAKE_CURRENT_BINARY_DIR}/includes" +) + +add_definitions(-DBUILDING_NGHTTP2) + +set(NGHTTP2_SOURCES + nghttp2_pq.c nghttp2_map.c nghttp2_queue.c + nghttp2_frame.c + nghttp2_buf.c + nghttp2_stream.c nghttp2_outbound_item.c + nghttp2_session.c nghttp2_submit.c + nghttp2_helper.c + nghttp2_npn.c + nghttp2_hd.c nghttp2_hd_huffman.c nghttp2_hd_huffman_data.c + nghttp2_version.c + nghttp2_priority_spec.c + nghttp2_option.c + nghttp2_callbacks.c + nghttp2_mem.c + nghttp2_http.c +) + +add_library(nghttp2 SHARED ${NGHTTP2_SOURCES}) +#target_link_libraries(nghttp2 ...) +set_target_properties(nghttp2 PROPERTIES + COMPILE_FLAGS "${WARNCFLAGS} ${EXTRACFLAG}" + VERSION ${LT_CURRENT}.${LT_REVISION}.${LT_AGE} + SOVERSION ${LT_CURRENT}) + +install(TARGETS nghttp2 + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libnghttp2.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")