X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=CMakeLists.txt;h=504d087a18aca006e3a0f7d3c5e6ad68c2f84b2d;hb=HEAD;hp=353627e2fcecd881df9028c5ccbca0734b063a26;hpb=d2d8a3f8b23b35cabe9acb57dfde7ec6b6d57bdc;p=platform%2Fupstream%2Fexpat.git diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 index 353627e..504d087 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,19 +6,53 @@ project(expat) cmake_minimum_required(VERSION 2.6) set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") set(PACKAGE_NAME "expat") -set(PACKAGE_VERSION "2.1.1") +set(PACKAGE_VERSION "2.2.5") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_TARNAME "${PACKAGE_NAME}") -option(BUILD_tools "build the xmlwf tool for expat library" ON) +if(WINCE) + set(BUILD_tools_default OFF) +else() + set(BUILD_tools_default ON) +endif() +if(MSVC OR NOT BUILD_tools_default) + set(BUILD_doc_default OFF) +else() + find_program(DOCBOOK_TO_MAN NAMES docbook2x-man docbook2man docbook-to-man) + if(DOCBOOK_TO_MAN) + set(BUILD_doc_default ON) + else() + set(BUILD_doc_default OFF) + endif() +endif() + +option(BUILD_tools "build the xmlwf tool for expat library" ${BUILD_tools_default}) option(BUILD_examples "build the examples for expat library" ON) option(BUILD_tests "build the tests for expat library" ON) option(BUILD_shared "build a shared expat library" ON) +option(BUILD_doc "build man page for xmlwf" ${BUILD_doc_default}) +option(USE_libbsd "utilize libbsd (for arc4random_buf)" OFF) +option(INSTALL "install expat files in cmake install target" ON) + +if(USE_libbsd) + find_library(LIB_BSD NAMES bsd) + if(NOT LIB_BSD) + message(FATAL_ERROR "USE_libbsd option is enabled, but libbsd was not found") + else() + set(HAVE_LIBBSD TRUE) + endif() +endif() # configuration options set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") option(XML_DTD "Define to make parameter entity parsing functionality available" ON) option(XML_NS "Define to make XML Namespaces functionality available" ON) +if(NOT WIN32) + option(XML_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON) + if(XML_DEV_URANDOM) + add_definitions(-DXML_DEV_URANDOM) + endif() +endif() if(XML_DTD) set(XML_DTD 1) @@ -35,34 +69,67 @@ if(BUILD_tests) enable_testing() endif(BUILD_tests) -include(ConfigureChecks.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake) -include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib) +set(EXTRA_COMPILE_FLAGS) +if(FLAG_NO_STRICT_ALIASING) + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing") +endif() +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}") + +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib) if(MSVC) add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) endif(MSVC) +if(WIN32) + set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows") +endif(WIN32) set(expat_SRCS + lib/loadlibrary.c lib/xmlparse.c lib/xmlrole.c - lib/xmltok.c - lib/xmltok_impl.c + lib/xmltok.c + lib/xmltok_impl.c lib/xmltok_ns.c ) -if(WIN32 AND BUILD_shared) - set(expat_SRCS ${expat_SRCS} lib/libexpat.def) -endif(WIN32 AND BUILD_shared) - if(BUILD_shared) set(_SHARED SHARED) + if(WIN32) + set(expat_SRCS ${expat_SRCS} lib/libexpat.def) + endif(WIN32) else(BUILD_shared) set(_SHARED STATIC) + if(WIN32) + add_definitions(-DXML_STATIC) + endif(WIN32) endif(BUILD_shared) add_library(expat ${_SHARED} ${expat_SRCS}) - -install(TARGETS expat RUNTIME DESTINATION bin +if(USE_libbsd) + target_link_libraries(expat ${LIB_BSD}) +endif() + +set(LIBCURRENT 7) # sync +set(LIBREVISION 7) # with +set(LIBAGE 6) # configure.ac! +math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") + +if(NOT WIN32) + set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION}) + set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE}) + set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME}) +endif(NOT WIN32) + +macro(expat_install) + if(INSTALL) + install(${ARGN}) + endif() +endmacro() + +expat_install(TARGETS expat RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) @@ -72,12 +139,10 @@ set(libdir "\${prefix}/lib") set(includedir "\${prefix}/include") configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc) -install(FILES lib/expat.h lib/expat_external.h DESTINATION include) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig) - - +expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include) +expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig) -if(BUILD_tools AND NOT WINCE) +if(BUILD_tools) set(xmlwf_SRCS xmlwf/xmlwf.c xmlwf/xmlfile.c @@ -88,9 +153,12 @@ if(BUILD_tools AND NOT WINCE) add_executable(xmlwf ${xmlwf_SRCS}) set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) target_link_libraries(xmlwf expat) - install(TARGETS xmlwf DESTINATION bin) - install(FILES doc/xmlwf.1 DESTINATION share/man/man1) -endif(BUILD_tools AND NOT WINCE) + expat_install(TARGETS xmlwf DESTINATION bin) + if(BUILD_doc) + add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_SOURCE_DIR}/doc/xmlwf.1") + expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1) + endif() +endif() if(BUILD_examples) add_executable(elements examples/elements.c) @@ -104,12 +172,12 @@ endif(BUILD_examples) if(BUILD_tests) ## these are unittests that can be run on any platform - add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c) + add_executable(runtests tests/runtests.c tests/chardata.c tests/structdata.c tests/minicheck.c tests/memcheck.c) set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) target_link_libraries(runtests expat) add_test(runtests tests/runtests) - add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c) + add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/structdata.c tests/minicheck.c tests/memcheck.c) set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) target_link_libraries(runtestspp expat) add_test(runtestspp tests/runtestspp)