Commits

kwaclaw  committed 0e009e5

Added CMake build system.

  • Participants
  • Parent commits 8f7470a
  • Branches default

Comments (0)

Files changed (5)

File CMake.README

+== How to build expat with cmake (experimental) ==
+
+The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual 
+Studio) and should work on all other platform cmake supports.
+
+Assuming ~/expat-2.1.0 is the source directory of expat, add a subdirectory
+build and change into that directory:
+~/expat-2.1.0$ mkdir build && cd build
+~/expat-2.1.0/build$
+
+From that directory, call cmake first, then call make, make test and 
+make install in the usual way:
+~/expat-2.1.0/build$ cmake ..
+-- The C compiler identification is GNU
+-- The CXX compiler identification is GNU
+....
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/patrick/expat-2.1.0/build
+
+If you want to specify the install location for your files, append 
+-DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call.
+
+~/expat-2.1.0/build$ make && make test && make install
+Scanning dependencies of target expat
+[  5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o
+[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o
+....
+-- Installing: /usr/local/lib/pkgconfig/expat.pc
+-- Installing: /usr/local/bin/xmlwf
+-- Installing: /usr/local/share/man/man1/xmlwf.1
+
+For Windows builds, you must make sure to call cmake from an environment where 
+your compiler is reachable, that means either you call it from the 
+Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and
+make sure that gcc can be called. On Windows, you also might want to specify a 
+special Generator for CMake:
+for Visual Studio builds do: 
+cmake .. -G "Visual Studio 10" && vcexpress expat.sln
+for mingw builds do: 
+cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install 
+    && gmake && gmake install

File CMakeLists.txt

+# This file is copyrighted under the BSD-license for buildsystem files of KDE
+# copyright 2010, Patrick Spendrin <ps_ml@gmx.de>
+
+project(expat)
+
+cmake_minimum_required(VERSION 2.6)
+set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org")
+set(PACKAGE_NAME "expat")
+set(PACKAGE_VERSION "2.1.0")
+set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
+set(PACKAGE_TARNAME "${PACKAGE_NAME}")
+
+option(BUILD_tools "build the xmlwf tool for expat library" ON)
+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)
+
+# 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(XML_DTD)
+    set(XML_DTD 1)
+else(XML_DTD)
+    set(XML_DTD 0)
+endif(XML_DTD)
+if(XML_NS)
+    set(XML_NS 1)
+else(XML_NS)
+    set(XML_NS 0)
+endif(XML_NS)
+
+if(BUILD_tests)
+    enable_testing()
+endif(BUILD_tests)
+
+include(ConfigureChecks.cmake)
+
+include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
+if(MSVC)
+    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
+endif(MSVC)
+
+set(expat_SRCS
+    lib/xmlparse.c
+    lib/xmlrole.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)
+else(BUILD_shared)
+    set(_SHARED STATIC)
+endif(BUILD_shared)
+
+add_library(expat ${_SHARED} ${expat_SRCS})
+
+install(TARGETS expat RUNTIME DESTINATION bin
+                      LIBRARY DESTINATION lib
+                      ARCHIVE DESTINATION lib)
+
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(exec_prefix "\${prefix}/bin")
+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)
+
+
+
+if(BUILD_tools AND NOT WINCE)
+    set(xmlwf_SRCS
+        xmlwf/xmlwf.c
+        xmlwf/xmlfile.c
+        xmlwf/codepage.c
+        xmlwf/readfilemap.c
+    )
+
+    add_executable(xmlwf ${xmlwf_SRCS})
+    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)
+
+if(BUILD_examples)
+    add_executable(elements examples/elements.c)
+    target_link_libraries(elements expat)
+
+    add_executable(outline examples/outline.c)
+    target_link_libraries(outline expat)
+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)
+    target_link_libraries(runtests expat)
+    add_test(runtests runtests)
+
+    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
+    target_link_libraries(runtestspp expat)
+    add_test(runtestspp runtestspp)
+endif(BUILD_tests)

File ConfigureChecks.cmake

+include(CheckIncludeFile)
+include(CheckIncludeFiles)
+include(CheckFunctionExists)
+include(CheckSymbolExists)
+include(TestBigEndian)
+
+check_include_file("dlfcn.h" HAVE_DLFCN_H)
+check_include_file("fcntl.h" HAVE_FCNTL_H)
+check_include_file("inttypes.h" HAVE_INTTYPES_H)
+check_include_file("memory.h" HAVE_MEMORY_H)
+check_include_file("stdint.h" HAVE_STDINT_H)
+check_include_file("stdlib.h" HAVE_STDLIB_H)
+check_include_file("strings.h" HAVE_STRINGS_H)
+check_include_file("string.h" HAVE_STRING_H)
+check_include_file("sys/stat.h" HAVE_SYS_STAT_H)
+check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
+check_include_file("unistd.h" HAVE_UNISTD_H)
+
+check_function_exists("getpagesize" HAVE_GETPAGESIZE)
+check_function_exists("bcopy" HAVE_BCOPY)
+check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE)
+check_function_exists("mmap" HAVE_MMAP)
+
+#/* Define to 1 if you have the ANSI C header files. */
+check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
+
+test_big_endian(WORDS_BIGENDIAN)
+#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+if(WORDS_BIGENDIAN)
+    set(BYTEORDER 4321)
+else(WORDS_BIGENDIAN)
+    set(BYTEORDER 1234)
+endif(WORDS_BIGENDIAN)
+
+if(HAVE_SYS_TYPES_H)
+    check_symbol_exists("off_t" "sys/types.h" OFF_T)
+    check_symbol_exists("size_t" "sys/types.h" SIZE_T)
+else(HAVE_SYS_TYPES_H)
+    set(OFF_T "long")
+    set(SIZE_T "unsigned")
+endif(HAVE_SYS_TYPES_H)
+
+configure_file(expat_config.h.cmake expat_config.h)
+add_definitions(-DHAVE_EXPAT_CONFIG_H)
 doc/valid-xhtml10.png
 doc/xmlwf.1
 doc/xmlwf.sgml
+CMakeLists.txt
+CMake.README
 COPYING
 Changes
+ConfigureChecks.cmake
 MANIFEST
 Makefile.in
 README
 configure
 configure.in
 expat_config.h.in
+expat_config.h.cmake
 expat.pc.in
 expat.dsw
 aclocal.m4

File expat_config.h.cmake

+/* expat_config.h.in.  Generated from configure.in by autoheader.  */
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#cmakedefine BYTEORDER @BYTEORDER@
+
+/* Define to 1 if you have the `bcopy' function. */
+#cmakedefine HAVE_BCOPY
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#cmakedefine HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#cmakedefine HAVE_FCNTL_H
+
+/* Define to 1 if you have the `getpagesize' function. */
+#cmakedefine HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#cmakedefine HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `memmove' function. */
+#cmakedefine HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#cmakedefine HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#cmakedefine HAVE_MMAP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#cmakedefine HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#cmakedefine HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#cmakedefine HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#cmakedefine HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#cmakedefine HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#cmakedefine HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#cmakedefine HAVE_UNISTD_H
+
+/* Define to the address where bug reports for this package should be sent. */
+#cmakedefine PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#cmakedefine PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#cmakedefine PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#cmakedefine PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#cmakedefine PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#cmakedefine STDC_HEADERS
+
+/* whether byteorder is bigendian */
+#cmakedefine WORDS_BIGENDIAN
+
+/* Define to specify how much context to retain around the current parse
+   point. */
+#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@
+
+/* Define to make parameter entity parsing functionality available. */
+#cmakedefine XML_DTD
+
+/* Define to make XML Namespaces functionality available. */
+#cmakedefine XML_NS
+
+/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */
+#ifdef _MSC_VER
+# define __func__ __FUNCTION__
+#endif
+
+/* Define to `long' if <sys/types.h> does not define. */
+#cmakedefine off_t @OFF_T@
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#cmakedefine size_t @SIZE_T@