blob: 589c7e6a9a15c785bd3a10c649d805642e9d4eb6 [file] [log] [blame]
cmake_minimum_required(VERSION 2.8)
project(reason)
set(PROJECT_MAJOR_VERSION 0)
set(PROJECT_MINOR_VERSION 3)
set(PROJECT_PATCH_VERSION 5)
set (PROJECT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION})
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
INCLUDE (CheckFunctionExists)
INCLUDE (CheckIncludeFiles)
INCLUDE (CheckTypeSize)
CHECK_FUNCTION_EXISTS(alloca C_ALLOCA)
CHECK_FUNCTION_EXISTS(memcmp HAVE_MEMCMP)
CHECK_INCLUDE_FILES(alloca.h HAVE_ALLOCA_H)
CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H)
CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H)
CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILES(sys/times.h HAVE_SYS_TIMES_H)
CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H)
CHECK_INCLUDE_FILES(stdarg.h HAVE_STDARG_PROTOTYPES)
CHECK_TYPE_SIZE("int" SIZEOF_INT)
CHECK_TYPE_SIZE("long" SIZEOF_LONG)
CHECK_TYPE_SIZE("short" SIZEOF_SHORT)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/oniguruma/config.h)
set(ONIG_SOURCES
oniguruma/regerror.c
oniguruma/regparse.c
oniguruma/regext.c
oniguruma/regcomp.c
oniguruma/regexec.c
oniguruma/reggnu.c
oniguruma/regenc.c
oniguruma/regsyntax.c
oniguruma/regtrav.c
oniguruma/regversion.c
oniguruma/st.c
oniguruma/regposix.c
oniguruma/regposerr.c
oniguruma/enc/unicode.c
oniguruma/enc/ascii.c
oniguruma/enc/utf8.c
oniguruma/enc/utf16_be.c
oniguruma/enc/utf16_le.c
oniguruma/enc/utf32_be.c
oniguruma/enc/utf32_le.c
oniguruma/enc/euc_jp.c
oniguruma/enc/sjis.c
oniguruma/enc/iso8859_1.c
oniguruma/enc/iso8859_2.c
oniguruma/enc/iso8859_3.c
oniguruma/enc/iso8859_4.c
oniguruma/enc/iso8859_5.c
oniguruma/enc/iso8859_6.c
oniguruma/enc/iso8859_7.c
oniguruma/enc/iso8859_8.c
oniguruma/enc/iso8859_9.c
oniguruma/enc/iso8859_10.c
oniguruma/enc/iso8859_11.c
oniguruma/enc/iso8859_13.c
oniguruma/enc/iso8859_14.c
oniguruma/enc/iso8859_15.c
oniguruma/enc/iso8859_16.c
oniguruma/enc/euc_tw.c
oniguruma/enc/euc_kr.c
oniguruma/enc/big5.c
oniguruma/enc/gb18030.c
oniguruma/enc/koi8_r.c
oniguruma/enc/cp1251.c
)
#add_library(libonig STATIC ${ONIG_SOURCES})
#set_target_properties(libonig PROPERTIES OUTPUT_NAME "onig")
OPTION(DISABLE_SSL "Disable ssl support" OFF)
OPTION(DISABLE_EVTHR "Disable evthread support" OFF)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
include(BaseConfig)
message("Build Type: ${CMAKE_BUILD_TYPE}")
message("Std CFLAGS: ${CMAKE_C_FLAGS}")
message("Dbg CFLAGS: ${CMAKE_C_FLAGS_DEBUG}")
message("Rel CFLAGS: ${CMAKE_C_FLAGS_RELEASE}")
find_package(LibEvent)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}/oniguruma
${CMAKE_CURRENT_SOURCE_DIR}/oniguruma
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/evthr
${CMAKE_CURRENT_SOURCE_DIR}/http_parser
)
set(LIBEVHTP_EXTERNAL_LIBS ${LIBEVENT_LIBRARY} ${LIBEVENT_PTHREADS_LIBRARY} ${LIBEVENT_OPENSSL_LIBRARY})
if (NOT ${LIBEVENT_PTHREADS_FOUND})
set(DISABLE_EVTHR 1)
endif(NOT ${LIBEVENT_PTHREADS_FOUND})
if (NOT ${LIBEVENT_OPENSSL_FOUND})
set (DISABLE_SSL 1)
endif(NOT ${LIBEVENT_OPENSSL_FOUND})
if (DISABLE_EVTHR)
set(LIBEVHTP_SOURCES http_parser/http_parser.c evhtp.c)
else()
set(LIBEVHTP_SOURCES evthr/evthr.c http_parser/http_parser.c evhtp.c)
endif(DISABLE_EVTHR)
#add_library(libevhtp STATIC ${LIBEVHTP_SOURCES} ${ONIG_SOURCES})
add_library(libevhtp SHARED ${LIBEVHTP_SOURCES} ${ONIG_SOURCES})
set_target_properties(libevhtp PROPERTIES OUTPUT_NAME "evhtp")
install (TARGETS libevhtp DESTINATION lib)
install (FILES evhtp.h DESTINATION include)
install (FILES evthr/evthr.h DESTINATION include)
install (FILES http_parser/http_parser.h DESTINATION include)
add_executable(test test.c)
target_link_libraries(test libevhtp ${LIBEVHTP_EXTERNAL_LIBS})
add_executable(oniguruma_test_posix ${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/sample/posix.c)
add_executable(oniguruma_test_listcap ${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/sample/listcap.c)
add_executable(oniguruma_test_names ${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/sample/names.c)
add_executable(oniguruma_test_simple ${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/sample/simple.c)
add_executable(oniguruma_test_sql ${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/sample/sql.c)
add_executable(oniguruma_test_syntax ${CMAKE_CURRENT_SOURCE_DIR}/oniguruma/sample/syntax.c)
target_link_libraries(oniguruma_test_posix libevhtp ${LIBEVHTP_EXTERNAL_LIBS})
target_link_libraries(oniguruma_test_listcap libevhtp ${LIBEVHTP_EXTERNAL_LIBS})
target_link_libraries(oniguruma_test_names libevhtp ${LIBEVHTP_EXTERNAL_LIBS})
target_link_libraries(oniguruma_test_simple libevhtp ${LIBEVHTP_EXTERNAL_LIBS})
target_link_libraries(oniguruma_test_sql libevhtp ${LIBEVHTP_EXTERNAL_LIBS})
target_link_libraries(oniguruma_test_syntax libevhtp ${LIBEVHTP_EXTERNAL_LIBS})