Skip to content

Commit

Permalink
Automatically generate versioned documentation and headers
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@1824295 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
rleigh-codelibre committed Feb 15, 2018
1 parent a701985 commit bb9c00c
Show file tree
Hide file tree
Showing 19 changed files with 2,875 additions and 1,250 deletions.
54 changes: 38 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ foreach(line IN LISTS configure)
string(REGEX REPLACE "^AC_INIT\\(\\[xerces-c\\],\\[(.*)\\]\\)" "\\1" xerces_c_version "${line}")
break()
endforeach()
file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/configure.ac" configure
REGEX "^INTERFACE_VERSION=.*")
foreach(line IN LISTS configure)
string(REGEX REPLACE "^INTERFACE_VERSION=(.*)" "\\1" xerces_c_interface_version "${line}")
break()
endforeach()

message(STATUS "Configuring Apache Xerces-C++ version ${xerces_c_version}")

Expand All @@ -68,8 +74,18 @@ set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "c-dev@xerces.apache.org")
set(PACKAGE_URL "https://xerces.apache.org/xerces-c/")

set(VERSION "${PROJECT_VERSION}")
set(XERCES_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(XERCES_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(XERCES_VERSION_REVISION "${PROJECT_VERSION_PATCH}")
string(REPLACE "." ";" interface_version_parts "${xerces_c_interface_version}")
list(GET interface_version_parts 0 INTERFACE_VERSION_MAJOR)
list(GET interface_version_parts 1 INTERFACE_VERSION_MINOR)

set(INTERFACE_VERSION_D "${INTERFACE_VERSION_MAJOR}.${INTERFACE_VERSION_MINOR}")
set(INTERFACE_VERSION_U "${INTERFACE_VERSION_MAJOR}_${INTERFACE_VERSION_MINOR}")

set(EXTRA_DIST
version.incl
xerces-c.spec
xerces-c.pc.in
CREDITS
Expand Down Expand Up @@ -125,6 +141,14 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/src/xercesc/util/Xerces_autoconf_config.hpp.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/src/xercesc/util/Xerces_autoconf_config.hpp
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/src/xercesc/util/Xerces_version_config.hpp.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/src/xercesc/util/Xerces_version_config.hpp
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/doc/style/dtd/entities.ent.in
${CMAKE_CURRENT_BINARY_DIR}/doc/style/dtd/entities.ent
@ONLY)

# Generate pkg-config file
set(pkgconfig-dir "${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE STRING "pkg-config installation directory (default ${CMAKE_INSTALL_LIBDIR}/pkgconfig)")
Expand Down Expand Up @@ -152,20 +176,18 @@ message(STATUS "")
message(STATUS "Xerces-C++ configuration summary")
message(STATUS "--------------------------------")
message(STATUS "")
message(STATUS " Version: ${xerces-c_VERSION}")
message(STATUS " Library version: ${LIB_VER}")
message(STATUS " Library interface version D: ${LIB_INTERFACE_VER_D}")
message(STATUS " Library interface version U: ${LIB_INTERFACE_VER_U}")
message(STATUS " Version: ${xerces-c_VERSION}")
message(STATUS " Library interface version: ${xerces_c_interface_version}")
message(STATUS "")
message(STATUS " Installation directory: ${prefix}")
message(STATUS " C compiler: ${CMAKE_C_COMPILER}")
message(STATUS " C++ compiler: ${CMAKE_CXX_COMPILER}")
message(STATUS " Installation directory: ${prefix}")
message(STATUS " C compiler: ${CMAKE_C_COMPILER}")
message(STATUS " C++ compiler: ${CMAKE_CXX_COMPILER}")
message(STATUS "")
message(STATUS " Build shared libraries: ${BUILD_SHARED_LIBS}")
message(STATUS " Path delimiters: \"${path_delims}\"")
message(STATUS " File Manager: ${filemgr}")
message(STATUS " Mutex Manager: ${mutexmgr}")
message(STATUS " Transcoder: ${transcoder}")
message(STATUS " NetAccessor: ${netaccessor}")
message(STATUS " Message Loader: ${msgloader}")
message(STATUS " XMLCh type: ${xmlch_type}")
message(STATUS " Build shared libraries: ${BUILD_SHARED_LIBS}")
message(STATUS " Path delimiters: \"${path_delims}\"")
message(STATUS " File Manager: ${filemgr}")
message(STATUS " Mutex Manager: ${mutexmgr}")
message(STATUS " Transcoder: ${transcoder}")
message(STATUS " NetAccessor: ${netaccessor}")
message(STATUS " Message Loader: ${msgloader}")
message(STATUS " XMLCh type: ${xmlch_type}")
6 changes: 2 additions & 4 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
SUBDIRS = src tests samples
SUBDIRS = doc src tests samples

EXTRA_DIST = version.incl \
CMakeLists.txt \
EXTRA_DIST = CMakeLists.txt \
cmake \
config.h.cmake.in \
xerces-c.spec \
Expand All @@ -13,7 +12,6 @@ EXTRA_DIST = version.incl \
NOTICE \
README \
config/pretty-make \
doc \
reconf \
scripts/createBindingsFormatFromHPP.pl \
scripts/makeStringDefinition.pl \
Expand Down
18 changes: 0 additions & 18 deletions cmake/XercesDLL.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -43,21 +43,3 @@ else()
set(XERCES_DLL_EXPORT 1)
endif()
endif()

# Versioning information

file(STRINGS "${PROJECT_SOURCE_DIR}/version.incl" icu_verinfo
REGEX "^[^#].*=.*")

foreach(item IN LISTS icu_verinfo)
string(REGEX REPLACE "^([^=]+)=(.*)"
"\\1" lib_key "${item}")
string(REGEX REPLACE "^([^=]+)=(.*)"
"\\2" lib_value "${item}")
set(LIB_${lib_key} "${lib_value}")
endforeach()

string(REGEX REPLACE "^([0-9]+)_.*"
"\\1"
LIB_INTERFACE_VER_U_MAJOR
"${LIB_INTERFACE_VER_U}")
36 changes: 32 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,43 @@

AC_PREREQ(2.60)
AC_INIT([xerces-c],[3.2.1])
INTERFACE_VERSION=3.2

XERCES_VERSION_MAJOR=$(echo $PACKAGE_VERSION | cut -d. -f1)
XERCES_VERSION_MINOR=$(echo $PACKAGE_VERSION | cut -d. -f2)
XERCES_VERSION_REVISION=$(echo $PACKAGE_VERSION | cut -d. -f3)

INTERFACE_VERSION_MAJOR=$(echo $INTERFACE_VERSION | cut -d. -f1)
INTERFACE_VERSION_MINOR=$(echo $INTERFACE_VERSION | cut -d. -f2)

INTERFACE_VERSION_D="${INTERFACE_VERSION_MAJOR}.${INTERFACE_VERSION_MINOR}"
INTERFACE_VERSION_U="${INTERFACE_VERSION_MAJOR}_${INTERFACE_VERSION_MINOR}"

AC_SUBST([XERCES_VERSION_MAJOR])
AC_SUBST([XERCES_VERSION_MINOR])
AC_SUBST([XERCES_VERSION_REVISION])
AC_SUBST([INTERFACE_VERSION_MAJOR])
AC_SUBST([INTERFACE_VERSION_MINOR])
AC_SUBST([INTERFACE_VERSION_D])
AC_SUBST([INTERFACE_VERSION_U])

AC_DEFINE_UNQUOTED([XERCES_VERSION_MAJOR], $XERCES_VERSION_MAJOR, [Definition of Xerces major version])
AC_DEFINE_UNQUOTED([XERCES_VERSION_MINOR], $XERCES_VERSION_MINOR, [Definition of Xerces minor version])
AC_DEFINE_UNQUOTED([XERCES_VERSION_REVISION], $XERCES_VERSION_REVISION, [Definition of Xerces patch version])

AC_CONFIG_SRCDIR([src/Makefile.am])
AC_CONFIG_LIBOBJ_DIR([src])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h src/xercesc/util/Xerces_autoconf_config.hpp])
AC_CONFIG_FILES([Makefile \
src/Makefile \
tests/Makefile \
samples/Makefile \
AC_CONFIG_HEADER([src/xercesc/util/Xerces_version_config.hpp])
AC_CONFIG_FILES([Makefile
doc/Makefile
doc/Doxyfile
doc/style/dtd/entities.ent
src/Makefile
tests/Makefile
samples/Makefile
xerces-c.pc
scripts/run-test])

Expand Down
26 changes: 21 additions & 5 deletions doc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,15 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# Install docs
# Install docs. Install from source tree if pre-generated, then the
# build tree if generated during the build.
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/html"
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
COMPONENT "development")
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
COMPONENT "development")

# Add createdocs target (if Java is available, plus the needed jars)
find_package(Java COMPONENTS Runtime)
Expand All @@ -34,24 +39,35 @@ if(Java_FOUND
set(cpsep ";")
endif()
set(classpath "${PROJECT_SOURCE_DIR}/tools/jars/stylebook-1.0-b2.jar${cpsep}${PROJECT_SOURCE_DIR}/tools/jars/xalan.jar${cpsep}${PROJECT_SOURCE_DIR}/tools/jars/xerces.jar")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc/style/dtd}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/style/dtd/entities.ent.in
${CMAKE_CURRENT_BINARY_DIR}/style/dtd/entities.ent @ONLY)
add_custom_target(createdocs
COMMAND "${CMAKE_COMMAND}" -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/style
${CMAKE_CURRENT_BINARY_DIR}/style
COMMAND "${Java_JAVA_EXECUTABLE}" -Djava.awt.headless=true
-classpath "${classpath}"
org.apache.stylebook.StyleBook
"targetDirectory=${CMAKE_CURRENT_SOURCE_DIR}/html"
"targetDirectory=${CMAKE_CURRENT_BINARY_DIR}/html"
${CMAKE_CURRENT_SOURCE_DIR}/xerces-c_book.xml
${CMAKE_CURRENT_SOURCE_DIR}/style
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
${CMAKE_CURRENT_BINARY_DIR}/style
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
set_target_properties(createdocs PROPERTIES FOLDER "Documentation")
endif()

# Add createapidocs target (if doxygen is available)
find_program(DOXYGEN_EXECUTABLE doxygen)
if(DOXYGEN_EXECUTABLE)
set(VERSION "${PROJECT_VERSION}")
set(abs_top_srcdir "${PROJECT_SOURCE_DIR}")
set(abs_top_builddir "${PROJECT_BINARY_DIR}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(createapidocs
COMMAND "${DOXYGEN_EXECUTABLE}" Doxyfile
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
set_target_properties(createapidocs PROPERTIES FOLDER "Documentation")
endif()
Expand Down
Loading

0 comments on commit bb9c00c

Please sign in to comment.