1 # This file is copyrighted under the BSD-license for buildsystem files of KDE 2 # copyright 2010, Patrick Spendrin <ps_ml (a] gmx.de> 3 4 project(expat) 5 6 cmake_minimum_required(VERSION 2.6) 7 set(PACKAGE_BUGREPORT "expat-bugs (a] libexpat.org") 8 set(PACKAGE_NAME "expat") 9 set(PACKAGE_VERSION "2.1.0") 10 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") 11 set(PACKAGE_TARNAME "${PACKAGE_NAME}") 12 13 option(BUILD_tools "build the xmlwf tool for expat library" ON) 14 option(BUILD_examples "build the examples for expat library" ON) 15 option(BUILD_tests "build the tests for expat library" ON) 16 option(BUILD_shared "build a shared expat library" ON) 17 18 # configuration options 19 set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") 20 option(XML_DTD "Define to make parameter entity parsing functionality available" ON) 21 option(XML_NS "Define to make XML Namespaces functionality available" ON) 22 23 if(XML_DTD) 24 set(XML_DTD 1) 25 else(XML_DTD) 26 set(XML_DTD 0) 27 endif(XML_DTD) 28 if(XML_NS) 29 set(XML_NS 1) 30 else(XML_NS) 31 set(XML_NS 0) 32 endif(XML_NS) 33 34 if(BUILD_tests) 35 enable_testing() 36 endif(BUILD_tests) 37 38 include(ConfigureChecks.cmake) 39 40 include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib) 41 if(MSVC) 42 add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) 43 endif(MSVC) 44 45 set(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 53 if(WIN32 AND BUILD_shared) 54 set(expat_SRCS ${expat_SRCS} lib/libexpat.def) 55 endif(WIN32 AND BUILD_shared) 56 57 if(BUILD_shared) 58 set(_SHARED SHARED) 59 else(BUILD_shared) 60 set(_SHARED STATIC) 61 endif(BUILD_shared) 62 63 add_library(expat ${_SHARED} ${expat_SRCS}) 64 65 install(TARGETS expat RUNTIME DESTINATION bin 66 LIBRARY DESTINATION lib 67 ARCHIVE DESTINATION lib) 68 69 set(prefix ${CMAKE_INSTALL_PREFIX}) 70 set(exec_prefix "\${prefix}/bin") 71 set(libdir "\${prefix}/lib") 72 set(includedir "\${prefix}/include") 73 configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc) 74 75 install(FILES lib/expat.h lib/expat_external.h DESTINATION include) 76 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig) 77 78 79 80 if(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) 92 endif(BUILD_tools AND NOT WINCE) 93 94 if(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) 100 endif(BUILD_examples) 101 102 if(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) 111 endif(BUILD_tests) 112