Home | History | Annotate | Download | only in expat
      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