1# This file is copyrighted under the BSD-license for buildsystem files of KDE 2# copyright 2010, Patrick Spendrin <ps_ml@gmx.de> 3 4project(expat) 5 6cmake_minimum_required(VERSION 2.6) 7set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") 8set(PACKAGE_NAME "expat") 9set(PACKAGE_VERSION "2.1.0") 10set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") 11set(PACKAGE_TARNAME "${PACKAGE_NAME}") 12 13option(BUILD_tools "build the xmlwf tool for expat library" ON) 14option(BUILD_examples "build the examples for expat library" ON) 15option(BUILD_tests "build the tests for expat library" ON) 16option(BUILD_shared "build a shared expat library" ON) 17 18# configuration options 19set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") 20option(XML_DTD "Define to make parameter entity parsing functionality available" ON) 21option(XML_NS "Define to make XML Namespaces functionality available" ON) 22 23if(XML_DTD) 24 set(XML_DTD 1) 25else(XML_DTD) 26 set(XML_DTD 0) 27endif(XML_DTD) 28if(XML_NS) 29 set(XML_NS 1) 30else(XML_NS) 31 set(XML_NS 0) 32endif(XML_NS) 33 34if(BUILD_tests) 35 enable_testing() 36endif(BUILD_tests) 37 38include(ConfigureChecks.cmake) 39 40include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib) 41if(MSVC) 42 add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) 43endif(MSVC) 44 45set(expat_SRCS 46 lib/xmlparse.c 47 lib/xmlrole.c 48 lib/xmltok.c 49 lib/xmltok_impl.c 50 lib/xmltok_ns.c 51) 52 53if(WIN32 AND BUILD_shared) 54 set(expat_SRCS ${expat_SRCS} lib/libexpat.def) 55endif(WIN32 AND BUILD_shared) 56 57if(BUILD_shared) 58 set(_SHARED SHARED) 59else(BUILD_shared) 60 set(_SHARED STATIC) 61endif(BUILD_shared) 62 63add_library(expat ${_SHARED} ${expat_SRCS}) 64 65install(TARGETS expat RUNTIME DESTINATION bin 66 LIBRARY DESTINATION lib 67 ARCHIVE DESTINATION lib) 68 69set(prefix ${CMAKE_INSTALL_PREFIX}) 70set(exec_prefix "\${prefix}/bin") 71set(libdir "\${prefix}/lib") 72set(includedir "\${prefix}/include") 73configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc) 74 75install(FILES lib/expat.h lib/expat_external.h DESTINATION include) 76install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig) 77 78 79 80if(BUILD_tools AND NOT WINCE) 81 set(xmlwf_SRCS 82 xmlwf/xmlwf.c 83 xmlwf/xmlfile.c 84 xmlwf/codepage.c 85 xmlwf/readfilemap.c 86 ) 87 88 add_executable(xmlwf ${xmlwf_SRCS}) 89 target_link_libraries(xmlwf expat) 90 install(TARGETS xmlwf DESTINATION bin) 91 install(FILES doc/xmlwf.1 DESTINATION share/man/man1) 92endif(BUILD_tools AND NOT WINCE) 93 94if(BUILD_examples) 95 add_executable(elements examples/elements.c) 96 target_link_libraries(elements expat) 97 98 add_executable(outline examples/outline.c) 99 target_link_libraries(outline expat) 100endif(BUILD_examples) 101 102if(BUILD_tests) 103 ## these are unittests that can be run on any platform 104 add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c) 105 target_link_libraries(runtests expat) 106 add_test(runtests runtests) 107 108 add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c) 109 target_link_libraries(runtestspp expat) 110 add_test(runtestspp runtestspp) 111endif(BUILD_tests) 112