From add3926b17e374f8adcd5121cf53f1c7d7bb442c Mon Sep 17 00:00:00 2001 From: Joakim Soderberg Date: Wed, 6 Feb 2013 15:25:26 +0900 Subject: [PATCH] Some more Cmake stuff. --- CMakeLists.txt | 70 ++++++++++++++++++++++++------ config.h.cmake | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 191 insertions(+), 14 deletions(-) create mode 100644 config.h.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d6b293..aa8e9e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,13 +11,26 @@ set(PACKAGE_TARNAME "${PACKAGE}") set(PACKAGE_URL "http://libwebsockets.org") set(VERSION "{PACKAGE_VERSION}") -option(WITH_SSL "Include SSL support", ON) +option(WITH_SSL "Include SSL support (default OpenSSL, CyaSSL if USE_CYASSL is set)" ON) option(USE_INCLUDED_WIN32_ZLIB "Use the internal version of ZLib instead of searching the system" ON) option(USE_CYASSL "Use CyaSSL replacement for OpenSSL" OFF) option(WITH_BUILTIN_GETIFADDRS "Use BSD getifaddrs implementation from libwebsockets... default is your libc provides it" OFF) +option(WITHOUT_TESTAPPS "Don't build the libwebsocket-test-apps" OFF) +option(WITHOUT_CLIENT "Don't build the client part of the library" OFF) +option(WITHOUT_SERVER "Don't build the server part of the library" OFF) +option(WITH_LIBCRYPTO "Use libcrypto MD5 and SHA1 implementations" ON) +option(WITHOUT_PING "Don't build the ping test application" OFF) +option(WITHOUT_DEBUG "Don't compile debug related code" OFF) + set(CYASSL_LIB ON CACHE STRING "") set(CYASSL_INCLUDE_DIRS ON CACHE STRING "") +if (USE_CYASSL) + if (NOT CYASSL_LIB OR NOT CYASSL_INCLUDE_DIRS) + error("You must set CYASSL_LIB and CYASSL_INCLUDE_DIRS when USE_CYASSL is turned on") + endif() +endif() + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") include_directories(${PROJECT_BINARY_DIR}) @@ -93,13 +106,14 @@ if (WIN32) add_definitions(-D_WIN32_WINNT=0x0501) endif(WIN32) - +# Group headers and sources. +# Some IDEs use this for nicer file structure. set(HDR_PRIVATE - lib/private-libwebsockets.h) - -set(HDR_PUBLIC + lib/private-libwebsockets.h lib/extension-deflate-frame.h - lib/lib/extension-deflate-stream.h + lib/lib/extension-deflate-stream.h) + +set(HDR_PUBLIC lib/libwebsockets.h ) @@ -110,7 +124,7 @@ set(SOURCES lib/client-parser.c lib/daemonize.c lib/extension.c - lib/extension-defalte-frame.c + lib/extension-deflate-frame.c lib/extension-deflate-stream.c lib/handshake.c lib/libwebsockets.c @@ -122,17 +136,44 @@ set(SOURCES lib/sha-1.c ) -source_group("Headers Private" FILES ${HDR_PRIVATE}) -source_group("Headers Public" FILES ${HDR_PUBLIC}) -source_group("Sources" FILES ${SOURCES}) +# Add helper files for Windows. +if (WIN32) + set(WIN32_HELPERS_PATH ${PROJECT_SOURCE_DIR}/win32port/win32helpers) + + list(APPEND HDR_PRIVATE + ${WIN32_HELPERS_PATH}/websock-w32.h + ${WIN32_HELPERS_PATH}/gettimeofday.h + ) + + list(APPEND SOURCES + ${WIN32_HELPERS_PATH}/websock-w32.c + ${WIN32_HELPERS_PATH}/gettimeofday.c + ) +endif() if (UNIX) if (!WITH_BUILTIN_GETIFADDRS) - list(APPEND HDR_PUBLIC lib/getifaddrs.h) + list(APPEND HDR_PRIVATE lib/getifaddrs.h) list(APPEND SOURCES lib/getifaddrs.c) endif() endif() +source_group("Headers Private" FILES ${HDR_PRIVATE}) +source_group("Headers Public" FILES ${HDR_PUBLIC}) +source_group("Sources" FILES ${SOURCES}) + +# +# Create the lib. +# +add_library(websocket STATIC + ${HDR_PRIVATE} + ${HDR_PUBLIC} + ${SOURCES}) + +# +# Find libraries. +# + # # ZLIB. # @@ -172,7 +213,7 @@ else() endif() include_directories(${ZLIB_INCLUDE_DIRS}) -target_link_libraries(websockets ${ZLIB_LIBRARIES}) +target_link_libraries(websocket ${ZLIB_LIBRARIES}) # # OpenSSL @@ -187,8 +228,9 @@ if (WITH_SSL) # TODO: Add support for STATIC also. find_package(OpenSSL REQUIRED) endif() + + include_directories(${OPENSSL_INCLUDE_DIR}) + target_link_libraries(websocket ${OPENSSL_LIBRARIES}) endif() -include_directories(${OPENSSL_INCLUDE_DIR}) -target_link_libraries(websockets ${OPENSSL_LIBRARIES}) diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 0000000..f2087ac --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,135 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +#cmakedefine USE_CYASSL + +/* Define to 1 if you have the `bzero' function. */ +#cmakedefine HAVE_BZERO + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the `fork' function. */ +#cmakedefine HAVE_FORK + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the `ssl' library (-lssl). */ +//#cmakedefine HAVE_LIBSSL + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#cmakedefine HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#cmakedefine HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_IN_H + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#cmakedefine HAVE_REALLOC + +/* Define to 1 if you have the `socket' function. */ +#cmakedefine HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror' function. */ +#cmakedefine HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#cmakedefine HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_VFORK_H + +/* Define to 1 if `fork' works. */ +#cmakedefine HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#cmakedefine HAVE_WORKING_VFORK + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ZLIB_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR // We're not using libtool + +/* Name of package */ +#cmakedefine PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#cmakedefine PACKAGE_URL + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* Version number of package */ +#cmakedefine VERSION + +/* Define to rpl_malloc if the replacement function should be used. */ +#cmakedefine malloc + +/* Define to `int' if does not define. */ +#cmakedefine pid_t + +/* Define to rpl_realloc if the replacement function should be used. */ +#cmakedefine realloc + +/* Define to `unsigned int' if does not define. */ +#cmakedefine size_t + +/* Define to 1 if we have getifaddrs */ +#cmakedefine HAVE_GETIFADDRS + +/* Define as `fork' if `vfork' does not work. */ +//#cmakedefine vfork -- 2.7.4