diff options
224 files changed, 19892 insertions, 2112 deletions
diff --git a/Modules/CMakeCCompiler.cmake.in b/Modules/CMakeCCompiler.cmake.in index b4eabe5..17d63eb 100644 --- a/Modules/CMakeCCompiler.cmake.in +++ b/Modules/CMakeCCompiler.cmake.in @@ -9,6 +9,8 @@ set(CMAKE_RANLIB "@CMAKE_RANLIB@") set(CMAKE_LINKER "@CMAKE_LINKER@") set(CMAKE_COMPILER_IS_GNUCC @CMAKE_COMPILER_IS_GNUCC@) set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS @CMAKE_C_COMPILER_WORKS@) +set(CMAKE_C_ABI_COMPILED @CMAKE_C_ABI_COMPILED@) set(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@) set(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@) if(CMAKE_COMPILER_IS_CYGWIN) diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in index 06aa9bf..c5bde9a 100644 --- a/Modules/CMakeCCompilerId.c.in +++ b/Modules/CMakeCCompilerId.c.in @@ -67,6 +67,10 @@ #elif defined(__DECC) # define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) #elif defined(__IBMC__) # if defined(__COMPILER_VER__) @@ -91,14 +95,25 @@ # define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) # endif -#elif defined(__PATHSCALE__) +#elif defined(__PATHCC__) # define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif #elif defined(_CRAYC) # define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) #elif defined(__TI_COMPILER_VERSION__) # define COMPILER_ID "TI_DSP" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) #elif defined(__TINYC__) # define COMPILER_ID "TinyCC" @@ -132,9 +147,16 @@ # define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) # endif +/* Analog VisualDSP++ >= 4.5.6 */ +#elif defined(__VISUALDSPVERSION__) +# define COMPILER_ID "ADSP" + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) + +/* Analog VisualDSP++ < 4.5.6 */ #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -/* Analog Devices C++ compiler for Blackfin, TigerSHARC and - SHARC (21000) DSPs */ # define COMPILER_ID "ADSP" /* IAR Systems compiler for embedded systems. @@ -147,6 +169,10 @@ http://sdcc.sourceforge.net */ #elif defined(SDCC) # define COMPILER_ID "SDCC" + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) # define COMPILER_ID "MIPSpro" diff --git a/Modules/CMakeCXXCompiler.cmake.in b/Modules/CMakeCXXCompiler.cmake.in index b6477df..7f66be5 100644 --- a/Modules/CMakeCXXCompiler.cmake.in +++ b/Modules/CMakeCXXCompiler.cmake.in @@ -9,6 +9,8 @@ set(CMAKE_RANLIB "@CMAKE_RANLIB@") set(CMAKE_LINKER "@CMAKE_LINKER@") set(CMAKE_COMPILER_IS_GNUCXX @CMAKE_COMPILER_IS_GNUCXX@) set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS @CMAKE_CXX_COMPILER_WORKS@) +set(CMAKE_CXX_ABI_COMPILED @CMAKE_CXX_ABI_COMPILED@) set(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@) set(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@) if(CMAKE_COMPILER_IS_CYGWIN) diff --git a/Modules/CMakeCXXCompilerId.cpp.in b/Modules/CMakeCXXCompilerId.cpp.in index 95fc852..2c8dd4b 100644 --- a/Modules/CMakeCXXCompilerId.cpp.in +++ b/Modules/CMakeCXXCompilerId.cpp.in @@ -10,6 +10,9 @@ #if defined(__COMO__) # define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) #elif defined(__INTEL_COMPILER) || defined(__ICC) # define COMPILER_ID "Intel" @@ -69,6 +72,10 @@ #elif defined(__DECCXX) # define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) #elif defined(__IBMCPP__) # if defined(__COMPILER_VER__) @@ -93,14 +100,25 @@ # define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) # endif -#elif defined(__PATHSCALE__) +#elif defined(__PATHCC__) # define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif #elif defined(_CRAYC) # define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) #elif defined(__TI_COMPILER_VERSION__) # define COMPILER_ID "TI_DSP" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) #elif defined(__SCO_VERSION__) # define COMPILER_ID "SCO" @@ -131,9 +149,16 @@ # define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) # endif +/* Analog VisualDSP++ >= 4.5.6 */ +#elif defined(__VISUALDSPVERSION__) +# define COMPILER_ID "ADSP" + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) + +/* Analog VisualDSP++ < 4.5.6 */ #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -/* Analog Devices C++ compiler for Blackfin, TigerSHARC and - SHARC (21000) DSPs */ # define COMPILER_ID "ADSP" #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) diff --git a/Modules/CMakeClDeps.cmake b/Modules/CMakeClDeps.cmake index b52641c..0214ead 100644 --- a/Modules/CMakeClDeps.cmake +++ b/Modules/CMakeClDeps.cmake @@ -26,12 +26,9 @@ if(MSVC_C_ARCHITECTURE_ID AND CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_C_COMPIL file(WRITE ${showdir}/foo.h "\n") file(WRITE ${showdir}/main.c "#include \"foo.h\" \nint main(){}\n") execute_process(COMMAND ${CMAKE_C_COMPILER} /nologo /showIncludes ${showdir}/main.c - WORKING_DIRECTORY ${showdir} OUTPUT_VARIABLE showOut) - string(REPLACE main.c "" showOut1 ${showOut}) - string(REPLACE "/" "\\" header1 ${showdir}/foo.h) - string(TOLOWER ${header1} header2) - string(REPLACE ${header2} "" showOut2 ${showOut1}) - string(REPLACE "\n" "" showOut3 ${showOut2}) + WORKING_DIRECTORY ${showdir} OUTPUT_VARIABLE outLine) + string(REGEX MATCH "\n([^:]*:[^:]*:[ \t]*)" tmp "${outLine}") + set(localizedPrefix "${CMAKE_MATCH_1}") set(SET_CMAKE_CMCLDEPS_EXECUTABLE "set(CMAKE_CMCLDEPS_EXECUTABLE \"${CMAKE_CMCLDEPS_EXECUTABLE}\")") - set(SET_CMAKE_CL_SHOWINCLUDE_PREFIX "set(CMAKE_CL_SHOWINCLUDE_PREFIX \"${showOut3}\")") + set(SET_CMAKE_CL_SHOWINCLUDE_PREFIX "set(CMAKE_CL_SHOWINCLUDE_PREFIX \"${localizedPrefix}\")") endif() diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index 4cf29dd..9f0b30a 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -163,7 +163,7 @@ set(_CMAKE_ASM_COMPILER_ENV_VAR "${CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR}") # configure variables set in this file for fast reload later on configure_file(${CMAKE_ROOT}/Modules/CMakeASMCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeASM${ASM_DIALECT}Compiler.cmake IMMEDIATE @ONLY) + ${CMAKE_PLATFORM_INFO_DIR}/CMakeASM${ASM_DIALECT}Compiler.cmake IMMEDIATE @ONLY) set(_CMAKE_ASM_COMPILER) set(_CMAKE_ASM_COMPILER_ARG1) diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 16e2f53..275fc47 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -39,76 +39,66 @@ if(NOT CMAKE_C_COMPILER_NAMES) set(CMAKE_C_COMPILER_NAMES cc) endif() -if(NOT CMAKE_C_COMPILER) - set(CMAKE_C_COMPILER_INIT NOTFOUND) - - # prefer the environment variable CC - if($ENV{CC} MATCHES ".+") - get_filename_component(CMAKE_C_COMPILER_INIT $ENV{CC} PROGRAM PROGRAM_ARGS CMAKE_C_FLAGS_ENV_INIT) - if(CMAKE_C_FLAGS_ENV_INIT) - set(CMAKE_C_COMPILER_ARG1 "${CMAKE_C_FLAGS_ENV_INIT}" CACHE STRING "First argument to C compiler") +if(${CMAKE_GENERATOR} MATCHES "Visual Studio") +elseif("${CMAKE_GENERATOR}" MATCHES "Xcode") + set(CMAKE_C_COMPILER_XCODE_TYPE sourcecode.c.c) +else() + if(NOT CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER_INIT NOTFOUND) + + # prefer the environment variable CC + if($ENV{CC} MATCHES ".+") + get_filename_component(CMAKE_C_COMPILER_INIT $ENV{CC} PROGRAM PROGRAM_ARGS CMAKE_C_FLAGS_ENV_INIT) + if(CMAKE_C_FLAGS_ENV_INIT) + set(CMAKE_C_COMPILER_ARG1 "${CMAKE_C_FLAGS_ENV_INIT}" CACHE STRING "First argument to C compiler") + endif() + if(NOT EXISTS ${CMAKE_C_COMPILER_INIT}) + message(FATAL_ERROR "Could not find compiler set in environment variable CC:\n$ENV{CC}.") + endif() endif() - if(NOT EXISTS ${CMAKE_C_COMPILER_INIT}) - message(FATAL_ERROR "Could not find compiler set in environment variable CC:\n$ENV{CC}.") + + # next try prefer the compiler specified by the generator + if(CMAKE_GENERATOR_CC) + if(NOT CMAKE_C_COMPILER_INIT) + set(CMAKE_C_COMPILER_INIT ${CMAKE_GENERATOR_CC}) + endif() endif() - endif() - # next try prefer the compiler specified by the generator - if(CMAKE_GENERATOR_CC) + # finally list compilers to try if(NOT CMAKE_C_COMPILER_INIT) - set(CMAKE_C_COMPILER_INIT ${CMAKE_GENERATOR_CC}) + set(CMAKE_C_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc clang) endif() - endif() - - # finally list compilers to try - if(NOT CMAKE_C_COMPILER_INIT) - set(CMAKE_C_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc clang) - endif() - _cmake_find_compiler(C) + _cmake_find_compiler(C) -else() + else() - # we only get here if CMAKE_C_COMPILER was specified using -D or a pre-made CMakeCache.txt - # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE - # if CMAKE_C_COMPILER is a list of length 2, use the first item as - # CMAKE_C_COMPILER and the 2nd one as CMAKE_C_COMPILER_ARG1 + # we only get here if CMAKE_C_COMPILER was specified using -D or a pre-made CMakeCache.txt + # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE + # if CMAKE_C_COMPILER is a list of length 2, use the first item as + # CMAKE_C_COMPILER and the 2nd one as CMAKE_C_COMPILER_ARG1 - list(LENGTH CMAKE_C_COMPILER _CMAKE_C_COMPILER_LIST_LENGTH) - if("${_CMAKE_C_COMPILER_LIST_LENGTH}" EQUAL 2) - list(GET CMAKE_C_COMPILER 1 CMAKE_C_COMPILER_ARG1) - list(GET CMAKE_C_COMPILER 0 CMAKE_C_COMPILER) - endif() + list(LENGTH CMAKE_C_COMPILER _CMAKE_C_COMPILER_LIST_LENGTH) + if("${_CMAKE_C_COMPILER_LIST_LENGTH}" EQUAL 2) + list(GET CMAKE_C_COMPILER 1 CMAKE_C_COMPILER_ARG1) + list(GET CMAKE_C_COMPILER 0 CMAKE_C_COMPILER) + endif() - # if a compiler was specified by the user but without path, - # now try to find it with the full path - # if it is found, force it into the cache, - # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" - # if the C compiler already had a path, reuse it for searching the CXX compiler - get_filename_component(_CMAKE_USER_C_COMPILER_PATH "${CMAKE_C_COMPILER}" PATH) - if(NOT _CMAKE_USER_C_COMPILER_PATH) - find_program(CMAKE_C_COMPILER_WITH_PATH NAMES ${CMAKE_C_COMPILER}) - mark_as_advanced(CMAKE_C_COMPILER_WITH_PATH) - if(CMAKE_C_COMPILER_WITH_PATH) - set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_WITH_PATH} CACHE STRING "C compiler" FORCE) + # if a compiler was specified by the user but without path, + # now try to find it with the full path + # if it is found, force it into the cache, + # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" + # if the C compiler already had a path, reuse it for searching the CXX compiler + get_filename_component(_CMAKE_USER_C_COMPILER_PATH "${CMAKE_C_COMPILER}" PATH) + if(NOT _CMAKE_USER_C_COMPILER_PATH) + find_program(CMAKE_C_COMPILER_WITH_PATH NAMES ${CMAKE_C_COMPILER}) + mark_as_advanced(CMAKE_C_COMPILER_WITH_PATH) + if(CMAKE_C_COMPILER_WITH_PATH) + set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_WITH_PATH} CACHE STRING "C compiler" FORCE) + endif() endif() endif() -endif() -mark_as_advanced(CMAKE_C_COMPILER) - -if (NOT _CMAKE_TOOLCHAIN_LOCATION) - get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH) -endif () - -# Build a small source file to identify the compiler. -if(${CMAKE_GENERATOR} MATCHES "Visual Studio") - set(CMAKE_C_COMPILER_ID_RUN 1) - set(CMAKE_C_PLATFORM_ID "Windows") - set(CMAKE_C_COMPILER_ID "MSVC") -endif() - -if(NOT CMAKE_C_COMPILER_ID_RUN) - set(CMAKE_C_COMPILER_ID_RUN 1) + mark_as_advanced(CMAKE_C_COMPILER) # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce @@ -120,6 +110,11 @@ if(NOT CMAKE_C_COMPILER_ID_RUN) # Try enabling ANSI mode on HP. "-Aa" ) +endif() + +# Build a small source file to identify the compiler. +if(NOT CMAKE_C_COMPILER_ID_RUN) + set(CMAKE_C_COMPILER_ID_RUN 1) # Try to identify the compiler. set(CMAKE_C_COMPILER_ID) @@ -139,6 +134,10 @@ if(NOT CMAKE_C_COMPILER_ID_RUN) endif() endif() +if (NOT _CMAKE_TOOLCHAIN_LOCATION) + get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH) +endif () + # If we have a gcc cross compiler, they have usually some prefix, like # e.g. powerpc-linux-gcc, arm-elf-gcc or i586-mingw32msvc-gcc, optionally # with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2). @@ -170,7 +169,7 @@ if(MSVC_C_ARCHITECTURE_ID) endif() # configure variables set in this file for fast reload later on configure_file(${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in - "${CMAKE_PLATFORM_ROOT_BIN}/CMakeCCompiler.cmake" + ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 ) set(CMAKE_C_COMPILER_ENV_VAR "CC") diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index 8e4d59f..59da3e6 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -38,87 +38,66 @@ if(NOT CMAKE_CXX_COMPILER_NAMES) set(CMAKE_CXX_COMPILER_NAMES CC) endif() -if(NOT CMAKE_CXX_COMPILER) - set(CMAKE_CXX_COMPILER_INIT NOTFOUND) - - # prefer the environment variable CXX - if($ENV{CXX} MATCHES ".+") - get_filename_component(CMAKE_CXX_COMPILER_INIT $ENV{CXX} PROGRAM PROGRAM_ARGS CMAKE_CXX_FLAGS_ENV_INIT) - if(CMAKE_CXX_FLAGS_ENV_INIT) - set(CMAKE_CXX_COMPILER_ARG1 "${CMAKE_CXX_FLAGS_ENV_INIT}" CACHE STRING "First argument to CXX compiler") +if(${CMAKE_GENERATOR} MATCHES "Visual Studio") +elseif("${CMAKE_GENERATOR}" MATCHES "Xcode") + set(CMAKE_CXX_COMPILER_XCODE_TYPE sourcecode.cpp.cpp) +else() + if(NOT CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER_INIT NOTFOUND) + + # prefer the environment variable CXX + if($ENV{CXX} MATCHES ".+") + get_filename_component(CMAKE_CXX_COMPILER_INIT $ENV{CXX} PROGRAM PROGRAM_ARGS CMAKE_CXX_FLAGS_ENV_INIT) + if(CMAKE_CXX_FLAGS_ENV_INIT) + set(CMAKE_CXX_COMPILER_ARG1 "${CMAKE_CXX_FLAGS_ENV_INIT}" CACHE STRING "First argument to CXX compiler") + endif() + if(NOT EXISTS ${CMAKE_CXX_COMPILER_INIT}) + message(FATAL_ERROR "Could not find compiler set in environment variable CXX:\n$ENV{CXX}.\n${CMAKE_CXX_COMPILER_INIT}") + endif() endif() - if(NOT EXISTS ${CMAKE_CXX_COMPILER_INIT}) - message(FATAL_ERROR "Could not find compiler set in environment variable CXX:\n$ENV{CXX}.\n${CMAKE_CXX_COMPILER_INIT}") + + # next prefer the generator specified compiler + if(CMAKE_GENERATOR_CXX) + if(NOT CMAKE_CXX_COMPILER_INIT) + set(CMAKE_CXX_COMPILER_INIT ${CMAKE_GENERATOR_CXX}) + endif() endif() - endif() - # next prefer the generator specified compiler - if(CMAKE_GENERATOR_CXX) + # finally list compilers to try if(NOT CMAKE_CXX_COMPILER_INIT) - set(CMAKE_CXX_COMPILER_INIT ${CMAKE_GENERATOR_CXX}) + set(CMAKE_CXX_COMPILER_LIST CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC clang++) endif() - endif() - # finally list compilers to try - if(NOT CMAKE_CXX_COMPILER_INIT) - set(CMAKE_CXX_COMPILER_LIST CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC clang++) - endif() - - _cmake_find_compiler(CXX) -else() + _cmake_find_compiler(CXX) + else() -# we only get here if CMAKE_CXX_COMPILER was specified using -D or a pre-made CMakeCache.txt -# (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE -# -# if CMAKE_CXX_COMPILER is a list of length 2, use the first item as -# CMAKE_CXX_COMPILER and the 2nd one as CMAKE_CXX_COMPILER_ARG1 + # we only get here if CMAKE_CXX_COMPILER was specified using -D or a pre-made CMakeCache.txt + # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE + # + # if CMAKE_CXX_COMPILER is a list of length 2, use the first item as + # CMAKE_CXX_COMPILER and the 2nd one as CMAKE_CXX_COMPILER_ARG1 - list(LENGTH CMAKE_CXX_COMPILER _CMAKE_CXX_COMPILER_LIST_LENGTH) - if("${_CMAKE_CXX_COMPILER_LIST_LENGTH}" EQUAL 2) - list(GET CMAKE_CXX_COMPILER 1 CMAKE_CXX_COMPILER_ARG1) - list(GET CMAKE_CXX_COMPILER 0 CMAKE_CXX_COMPILER) - endif() + list(LENGTH CMAKE_CXX_COMPILER _CMAKE_CXX_COMPILER_LIST_LENGTH) + if("${_CMAKE_CXX_COMPILER_LIST_LENGTH}" EQUAL 2) + list(GET CMAKE_CXX_COMPILER 1 CMAKE_CXX_COMPILER_ARG1) + list(GET CMAKE_CXX_COMPILER 0 CMAKE_CXX_COMPILER) + endif() -# if a compiler was specified by the user but without path, -# now try to find it with the full path -# if it is found, force it into the cache, -# if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" -# if the CXX compiler already had a path, reuse it for searching the C compiler - get_filename_component(_CMAKE_USER_CXX_COMPILER_PATH "${CMAKE_CXX_COMPILER}" PATH) - if(NOT _CMAKE_USER_CXX_COMPILER_PATH) - find_program(CMAKE_CXX_COMPILER_WITH_PATH NAMES ${CMAKE_CXX_COMPILER}) - mark_as_advanced(CMAKE_CXX_COMPILER_WITH_PATH) - if(CMAKE_CXX_COMPILER_WITH_PATH) - set(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER_WITH_PATH} CACHE STRING "CXX compiler" FORCE) + # if a compiler was specified by the user but without path, + # now try to find it with the full path + # if it is found, force it into the cache, + # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" + # if the CXX compiler already had a path, reuse it for searching the C compiler + get_filename_component(_CMAKE_USER_CXX_COMPILER_PATH "${CMAKE_CXX_COMPILER}" PATH) + if(NOT _CMAKE_USER_CXX_COMPILER_PATH) + find_program(CMAKE_CXX_COMPILER_WITH_PATH NAMES ${CMAKE_CXX_COMPILER}) + mark_as_advanced(CMAKE_CXX_COMPILER_WITH_PATH) + if(CMAKE_CXX_COMPILER_WITH_PATH) + set(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER_WITH_PATH} CACHE STRING "CXX compiler" FORCE) + endif() endif() endif() -endif() -mark_as_advanced(CMAKE_CXX_COMPILER) - -if (NOT _CMAKE_TOOLCHAIN_LOCATION) - get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH) -endif () - -# This block was used before the compiler was identified by building a -# source file. Unless g++ crashes when building a small C++ -# executable this should no longer be needed. -# -# The g++ that comes with BeOS 5 segfaults if you run "g++ -E" -# ("gcc -E" is fine), which throws up a system dialog box that hangs cmake -# until the user clicks "OK"...so for now, we just assume it's g++. -# if(BEOS) -# set(CMAKE_COMPILER_IS_GNUCXX 1) -# set(CMAKE_COMPILER_IS_GNUCXX_RUN 1) -# endif() - -# Build a small source file to identify the compiler. -if(${CMAKE_GENERATOR} MATCHES "Visual Studio") - set(CMAKE_CXX_COMPILER_ID_RUN 1) - set(CMAKE_CXX_PLATFORM_ID "Windows") - set(CMAKE_CXX_COMPILER_ID "MSVC") -endif() -if(NOT CMAKE_CXX_COMPILER_ID_RUN) - set(CMAKE_CXX_COMPILER_ID_RUN 1) + mark_as_advanced(CMAKE_CXX_COMPILER) # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce @@ -127,6 +106,11 @@ if(NOT CMAKE_CXX_COMPILER_ID_RUN) # Try compiling to an object file only. "-c" ) +endif() + +# Build a small source file to identify the compiler. +if(NOT CMAKE_CXX_COMPILER_ID_RUN) + set(CMAKE_CXX_COMPILER_ID_RUN 1) # Try to identify the compiler. set(CMAKE_CXX_COMPILER_ID) @@ -146,6 +130,10 @@ if(NOT CMAKE_CXX_COMPILER_ID_RUN) endif() endif() +if (NOT _CMAKE_TOOLCHAIN_LOCATION) + get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH) +endif () + # if we have a g++ cross compiler, they have usually some prefix, like # e.g. powerpc-linux-g++, arm-elf-g++ or i586-mingw32msvc-g++ , optionally # with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2). @@ -177,7 +165,7 @@ if(MSVC_CXX_ARCHITECTURE_ID) endif() # configure all variables set in this file configure_file(${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCXXCompiler.cmake + ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 ) diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index ae2eb9b..75247d9 100644 --- a/Modules/CMakeDetermineCompilerABI.cmake +++ b/Modules/CMakeDetermineCompilerABI.cmake @@ -19,16 +19,16 @@ include(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake) function(CMAKE_DETERMINE_COMPILER_ABI lang src) - if(NOT DEFINED CMAKE_DETERMINE_${lang}_ABI_COMPILED) + if(NOT DEFINED CMAKE_${lang}_ABI_COMPILED) message(STATUS "Detecting ${lang} compiler ABI info") # Compile the ABI identification source. - set(BIN "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeDetermineCompilerABI_${lang}.bin") + set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CMakeDetermineCompilerABI_${lang}.bin") set(CMAKE_FLAGS ) if(DEFINED CMAKE_${lang}_VERBOSE_FLAG) set(CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_${lang}_VERBOSE_FLAG}") endif() - try_compile(CMAKE_DETERMINE_${lang}_ABI_COMPILED + try_compile(CMAKE_${lang}_ABI_COMPILED ${CMAKE_BINARY_DIR} ${src} CMAKE_FLAGS "${CMAKE_FLAGS}" "-DCMAKE_${lang}_STANDARD_LIBRARIES=" @@ -39,9 +39,13 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src) OUTPUT_VARIABLE OUTPUT COPY_FILE "${BIN}" ) + # Move result from cache to normal variable. + set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED}) + unset(CMAKE_${lang}_ABI_COMPILED CACHE) + set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED} PARENT_SCOPE) # Load the resulting information strings. - if(CMAKE_DETERMINE_${lang}_ABI_COMPILED) + if(CMAKE_${lang}_ABI_COMPILED) message(STATUS "Detecting ${lang} compiler ABI info - done") file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Detecting ${lang} compiler ABI info compiled with the following output:\n${OUTPUT}\n\n") diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index f574978..3df17c7 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -30,7 +30,7 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) string(REGEX REPLACE " " ";" CMAKE_${lang}_COMPILER_ID_FLAGS_LIST "${CMAKE_${lang}_COMPILER_ID_FLAGS}") # Compute the directory in which to run the test. - set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CompilerId${lang}) + set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_PLATFORM_INFO_DIR}/CompilerId${lang}) # Try building with no extra flags and then try each set # of helper flags. Stop when the compiler is identified. @@ -66,6 +66,15 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) message(STATUS "The ${lang} compiler identification is unknown") endif() + # Check if compiler id detection gave us the compiler tool. + if(NOT CMAKE_${lang}_COMPILER) + if(CMAKE_${lang}_COMPILER_ID_TOOL) + set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER_ID_TOOL}" PARENT_SCOPE) + else() + set(CMAKE_${lang}_COMPILER "CMAKE_${lang}_COMPILER-NOTFOUND" PARENT_SCOPE) + endif() + endif() + set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE) set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE) set(MSVC_${lang}_ARCHITECTURE_ID "${MSVC_${lang}_ARCHITECTURE_ID}" @@ -98,28 +107,126 @@ Id flags: ${testflags} ") # Compile the compiler identification source. - if(COMMAND EXECUTE_PROCESS) + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio ([0-9]+)( .NET)?( 200[358])? *((Win64|IA64|ARM))?") + set(vs_version ${CMAKE_MATCH_1}) + set(vs_arch ${CMAKE_MATCH_4}) + set(id_lang "${lang}") + set(id_cl cl.exe) + if(NOT "${vs_version}" VERSION_LESS 10) + set(v 10) + set(ext vcxproj) + elseif(NOT "${vs_version}" VERSION_LESS 7) + set(id_version ${vs_version}.00) + set(v 7) + set(ext vcproj) + else() + set(v 6) + set(ext dsp) + endif() + if("${vs_arch}" STREQUAL "Win64") + set(id_machine_7 17) + set(id_machine_10 MachineX64) + set(id_arch x64) + elseif("${vs_arch}" STREQUAL "IA64") + set(id_machine_7 5) + set(id_machine_10 MachineIA64) + set(id_arch ia64) + else() + set(id_machine_6 x86) + set(id_machine_7 1) + set(id_machine_10 MachineX86) + set(id_arch Win32) + endif() + if(CMAKE_VS_PLATFORM_TOOLSET) + set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>") + else() + set(id_toolset "") + endif() + if("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Bb][Uu][Ii][Ll][Dd]") + set(build /p:Configuration=Debug /p:Platform=@id_arch@) + elseif("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Dd][Ee][Vv]") + set(build /make) + else() + set(build /build Debug) + endif() + set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR}) + get_filename_component(id_src "${src}" NAME) + configure_file(${CMAKE_ROOT}/Modules/CompilerId/VS-${v}.${ext}.in + ${id_dir}/CompilerId${lang}.${ext} @ONLY IMMEDIATE) execute_process( - COMMAND ${CMAKE_${lang}_COMPILER} - ${CMAKE_${lang}_COMPILER_ID_ARG1} - ${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST} - ${testflags} - "${src}" + COMMAND ${CMAKE_MAKE_PROGRAM} CompilerId${lang}.${ext} ${build} WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR} OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT ) - else() - exec_program( - ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_COMPILER_ID_DIR} - ARGS ${CMAKE_${lang}_COMPILER_ID_ARG1} - ${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST} - ${testflags} - \"${src}\" + # Match the compiler location line printed out. + if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "CMAKE_${lang}_COMPILER=([^%\r\n]+)[\r\n]") + set(_comp "${CMAKE_MATCH_1}") + if(EXISTS "${_comp}") + file(TO_CMAKE_PATH "${_comp}" _comp) + set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE) + endif() + endif() + elseif("${CMAKE_GENERATOR}" MATCHES "Xcode") + set(id_lang "${lang}") + set(id_type ${CMAKE_${lang}_COMPILER_XCODE_TYPE}) + set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR}) + get_filename_component(id_src "${src}" NAME) + if(NOT ${XCODE_VERSION} VERSION_LESS 3) + set(v 3) + set(ext xcodeproj) + elseif(NOT ${XCODE_VERSION} VERSION_LESS 2) + set(v 2) + set(ext xcodeproj) + else() + set(v 1) + set(ext xcode) + endif() + configure_file(${CMAKE_ROOT}/Modules/CompilerId/Xcode-${v}.pbxproj.in + ${id_dir}/CompilerId${lang}.${ext}/project.pbxproj @ONLY IMMEDIATE) + execute_process(COMMAND xcodebuild + WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR} OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT - RETURN_VALUE CMAKE_${lang}_COMPILER_ID_RESULT + ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT + RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT ) + + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerId${lang}/... + # to extract the compiler front-end for the language. + if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerId${lang}/\\./CompilerId${lang}[ \t\n\\\"]") + set(_comp "${CMAKE_MATCH_2}") + if(EXISTS "${_comp}") + set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE) + endif() + endif() + else() + if(COMMAND EXECUTE_PROCESS) + execute_process( + COMMAND ${CMAKE_${lang}_COMPILER} + ${CMAKE_${lang}_COMPILER_ID_ARG1} + ${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST} + ${testflags} + "${src}" + WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR} + OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT + ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT + RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT + ) + else() + exec_program( + ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_COMPILER_ID_DIR} + ARGS ${CMAKE_${lang}_COMPILER_ID_ARG1} + ${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST} + ${testflags} + \"${src}\" + OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT + RETURN_VALUE CMAKE_${lang}_COMPILER_ID_RESULT + ) + endif() endif() # Check the result of compilation. @@ -153,14 +260,18 @@ ${CMAKE_${lang}_COMPILER_ID_OUTPUT} # Find the executable produced by the compiler, try all files in the # binary dir. - file(GLOB COMPILER_${lang}_PRODUCED_FILES + file(GLOB files RELATIVE ${CMAKE_${lang}_COMPILER_ID_DIR} ${CMAKE_${lang}_COMPILER_ID_DIR}/*) - list(REMOVE_ITEM COMPILER_${lang}_PRODUCED_FILES "${src}") - foreach(file ${COMPILER_${lang}_PRODUCED_FILES}) - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Compilation of the ${lang} compiler identification source \"" - "${src}\" produced \"${file}\"\n\n") + list(REMOVE_ITEM files "${src}") + set(COMPILER_${lang}_PRODUCED_FILES "") + foreach(file ${files}) + if(NOT IS_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}/${file}) + list(APPEND COMPILER_${lang}_PRODUCED_FILES ${file}) + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Compilation of the ${lang} compiler identification source \"" + "${src}\" produced \"${file}\"\n\n") + endif() endforeach() if(NOT COMPILER_${lang}_PRODUCED_FILES) @@ -282,7 +393,7 @@ function(CMAKE_DETERMINE_COMPILER_ID_VENDOR lang) # We get here when this function is called not from within CMAKE_DETERMINE_COMPILER_ID() # This is done e.g. for detecting the compiler ID for assemblers. # Compute the directory in which to run the test and Create a clean working directory. - set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CompilerId${lang}) + set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_PLATFORM_INFO_DIR}/CompilerId${lang}) file(REMOVE_RECURSE ${CMAKE_${lang}_COMPILER_ID_DIR}) file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}) endif() diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index da77e21..f861e39 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -25,105 +25,102 @@ if(NOT CMAKE_Fortran_COMPILER_NAMES) set(CMAKE_Fortran_COMPILER_NAMES f95) endif() -if(NOT CMAKE_Fortran_COMPILER) - # prefer the environment variable CC - if($ENV{FC} MATCHES ".+") - get_filename_component(CMAKE_Fortran_COMPILER_INIT $ENV{FC} PROGRAM PROGRAM_ARGS CMAKE_Fortran_FLAGS_ENV_INIT) - if(CMAKE_Fortran_FLAGS_ENV_INIT) - set(CMAKE_Fortran_COMPILER_ARG1 "${CMAKE_Fortran_FLAGS_ENV_INIT}" CACHE STRING "First argument to Fortran compiler") +if(${CMAKE_GENERATOR} MATCHES "Visual Studio") + set(CMAKE_Fortran_COMPILER_ID_RUN 1) + set(CMAKE_Fortran_PLATFORM_ID "Windows") + set(CMAKE_Fortran_COMPILER_ID "Intel") + set(CMAKE_Fortran_COMPILER "${CMAKE_GENERATOR_FC}") +elseif("${CMAKE_GENERATOR}" MATCHES "Xcode") + set(CMAKE_Fortran_COMPILER_XCODE_TYPE sourcecode.fortran.f90) +else() + if(NOT CMAKE_Fortran_COMPILER) + # prefer the environment variable CC + if($ENV{FC} MATCHES ".+") + get_filename_component(CMAKE_Fortran_COMPILER_INIT $ENV{FC} PROGRAM PROGRAM_ARGS CMAKE_Fortran_FLAGS_ENV_INIT) + if(CMAKE_Fortran_FLAGS_ENV_INIT) + set(CMAKE_Fortran_COMPILER_ARG1 "${CMAKE_Fortran_FLAGS_ENV_INIT}" CACHE STRING "First argument to Fortran compiler") + endif() + if(EXISTS ${CMAKE_Fortran_COMPILER_INIT}) + else() + message(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.") + endif() endif() - if(EXISTS ${CMAKE_Fortran_COMPILER_INIT}) - else() - message(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.") + + # next try prefer the compiler specified by the generator + if(CMAKE_GENERATOR_FC) + if(NOT CMAKE_Fortran_COMPILER_INIT) + set(CMAKE_Fortran_COMPILER_INIT ${CMAKE_GENERATOR_FC}) + endif() endif() - endif() - # next try prefer the compiler specified by the generator - if(CMAKE_GENERATOR_FC) + # finally list compilers to try if(NOT CMAKE_Fortran_COMPILER_INIT) - set(CMAKE_Fortran_COMPILER_INIT ${CMAKE_GENERATOR_FC}) + # Known compilers: + # f77/f90/f95: generic compiler names + # g77: GNU Fortran 77 compiler + # gfortran: putative GNU Fortran 95+ compiler (in progress) + # fort77: native F77 compiler under HP-UX (and some older Crays) + # frt: Fujitsu F77 compiler + # pathf90/pathf95/pathf2003: PathScale Fortran compiler + # pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers + # xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers + # lf95: Lahey-Fujitsu F95 compiler + # fl32: Microsoft Fortran 77 "PowerStation" compiler + # af77: Apogee F77 compiler for Intergraph hardware running CLIX + # epcf90: "Edinburgh Portable Compiler" F90 + # fort: Compaq (now HP) Fortran 90/95 compiler for Tru64 and Linux/Alpha + # ifc: Intel Fortran 95 compiler for Linux/x86 + # efc: Intel Fortran 95 compiler for IA64 + # + # The order is 95 or newer compilers first, then 90, + # then 77 or older compilers, gnu is always last in the group, + # so if you paid for a compiler it is picked by default. + set(CMAKE_Fortran_COMPILER_LIST + ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95 + fort gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77 + frt pgf77 xlf fl32 af77 g77 f77 + ) + + # Vendor-specific compiler names. + set(_Fortran_COMPILER_NAMES_GNU gfortran gfortran-4 g95 g77) + set(_Fortran_COMPILER_NAMES_Intel ifort ifc efc) + set(_Fortran_COMPILER_NAMES_Absoft af95 af90 af77) + set(_Fortran_COMPILER_NAMES_PGI pgf95 pgfortran pgf90 pgf77) + set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90) + set(_Fortran_COMPILER_NAMES_XL xlf) + set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf) endif() - endif() - # finally list compilers to try - if(NOT CMAKE_Fortran_COMPILER_INIT) - # Known compilers: - # f77/f90/f95: generic compiler names - # g77: GNU Fortran 77 compiler - # gfortran: putative GNU Fortran 95+ compiler (in progress) - # fort77: native F77 compiler under HP-UX (and some older Crays) - # frt: Fujitsu F77 compiler - # pathf90/pathf95/pathf2003: PathScale Fortran compiler - # pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers - # xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers - # lf95: Lahey-Fujitsu F95 compiler - # fl32: Microsoft Fortran 77 "PowerStation" compiler - # af77: Apogee F77 compiler for Intergraph hardware running CLIX - # epcf90: "Edinburgh Portable Compiler" F90 - # fort: Compaq (now HP) Fortran 90/95 compiler for Tru64 and Linux/Alpha - # ifc: Intel Fortran 95 compiler for Linux/x86 - # efc: Intel Fortran 95 compiler for IA64 - # - # The order is 95 or newer compilers first, then 90, - # then 77 or older compilers, gnu is always last in the group, - # so if you paid for a compiler it is picked by default. - set(CMAKE_Fortran_COMPILER_LIST - ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95 - fort gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77 - frt pgf77 xlf fl32 af77 g77 f77 - ) - - # Vendor-specific compiler names. - set(_Fortran_COMPILER_NAMES_GNU gfortran gfortran-4 g95 g77) - set(_Fortran_COMPILER_NAMES_Intel ifort ifc efc) - set(_Fortran_COMPILER_NAMES_Absoft af95 af90 af77) - set(_Fortran_COMPILER_NAMES_PGI pgf95 pgfortran pgf90 pgf77) - set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90) - set(_Fortran_COMPILER_NAMES_XL xlf) - set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf) - endif() + _cmake_find_compiler(Fortran) - _cmake_find_compiler(Fortran) + else() + # we only get here if CMAKE_Fortran_COMPILER was specified using -D or a pre-made CMakeCache.txt + # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE + # if CMAKE_Fortran_COMPILER is a list of length 2, use the first item as + # CMAKE_Fortran_COMPILER and the 2nd one as CMAKE_Fortran_COMPILER_ARG1 -else() - # we only get here if CMAKE_Fortran_COMPILER was specified using -D or a pre-made CMakeCache.txt - # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE - # if CMAKE_Fortran_COMPILER is a list of length 2, use the first item as - # CMAKE_Fortran_COMPILER and the 2nd one as CMAKE_Fortran_COMPILER_ARG1 - - list(LENGTH CMAKE_Fortran_COMPILER _CMAKE_Fortran_COMPILER_LIST_LENGTH) - if("${_CMAKE_Fortran_COMPILER_LIST_LENGTH}" EQUAL 2) - list(GET CMAKE_Fortran_COMPILER 1 CMAKE_Fortran_COMPILER_ARG1) - list(GET CMAKE_Fortran_COMPILER 0 CMAKE_Fortran_COMPILER) - endif() + list(LENGTH CMAKE_Fortran_COMPILER _CMAKE_Fortran_COMPILER_LIST_LENGTH) + if("${_CMAKE_Fortran_COMPILER_LIST_LENGTH}" EQUAL 2) + list(GET CMAKE_Fortran_COMPILER 1 CMAKE_Fortran_COMPILER_ARG1) + list(GET CMAKE_Fortran_COMPILER 0 CMAKE_Fortran_COMPILER) + endif() - # if a compiler was specified by the user but without path, - # now try to find it with the full path - # if it is found, force it into the cache, - # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" - # if the C compiler already had a path, reuse it for searching the CXX compiler - get_filename_component(_CMAKE_USER_Fortran_COMPILER_PATH "${CMAKE_Fortran_COMPILER}" PATH) - if(NOT _CMAKE_USER_Fortran_COMPILER_PATH) - find_program(CMAKE_Fortran_COMPILER_WITH_PATH NAMES ${CMAKE_Fortran_COMPILER}) - mark_as_advanced(CMAKE_Fortran_COMPILER_WITH_PATH) - if(CMAKE_Fortran_COMPILER_WITH_PATH) - set(CMAKE_Fortran_COMPILER ${CMAKE_Fortran_COMPILER_WITH_PATH} - CACHE STRING "Fortran compiler" FORCE) + # if a compiler was specified by the user but without path, + # now try to find it with the full path + # if it is found, force it into the cache, + # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" + # if the C compiler already had a path, reuse it for searching the CXX compiler + get_filename_component(_CMAKE_USER_Fortran_COMPILER_PATH "${CMAKE_Fortran_COMPILER}" PATH) + if(NOT _CMAKE_USER_Fortran_COMPILER_PATH) + find_program(CMAKE_Fortran_COMPILER_WITH_PATH NAMES ${CMAKE_Fortran_COMPILER}) + mark_as_advanced(CMAKE_Fortran_COMPILER_WITH_PATH) + if(CMAKE_Fortran_COMPILER_WITH_PATH) + set(CMAKE_Fortran_COMPILER ${CMAKE_Fortran_COMPILER_WITH_PATH} + CACHE STRING "Fortran compiler" FORCE) + endif() endif() endif() -endif() - -mark_as_advanced(CMAKE_Fortran_COMPILER) - -# Build a small source file to identify the compiler. -if(${CMAKE_GENERATOR} MATCHES "Visual Studio") - set(CMAKE_Fortran_COMPILER_ID_RUN 1) - set(CMAKE_Fortran_PLATFORM_ID "Windows") - set(CMAKE_Fortran_COMPILER_ID "Intel") -endif() - -if(NOT CMAKE_Fortran_COMPILER_ID_RUN) - set(CMAKE_Fortran_COMPILER_ID_RUN 1) + mark_as_advanced(CMAKE_Fortran_COMPILER) # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce @@ -135,6 +132,11 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN) # Intel on windows does not preprocess by default. "-fpp" ) +endif() + +# Build a small source file to identify the compiler. +if(NOT CMAKE_Fortran_COMPILER_ID_RUN) + set(CMAKE_Fortran_COMPILER_ID_RUN 1) # Table of per-vendor compiler id flags with expected output. list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS Compaq) @@ -187,6 +189,32 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN) endif() endif() +if (NOT _CMAKE_TOOLCHAIN_LOCATION) + get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Fortran_COMPILER}" PATH) +endif () + +# if we have a fortran cross compiler, they have usually some prefix, like +# e.g. powerpc-linux-gfortran, arm-elf-gfortran or i586-mingw32msvc-gfortran , optionally +# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2). +# The other tools of the toolchain usually have the same prefix +# NAME_WE cannot be used since then this test will fail for names lile +# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be +# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-" +if (CMAKE_CROSSCOMPILING + AND "${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU" + AND NOT _CMAKE_TOOLCHAIN_PREFIX) + get_filename_component(COMPILER_BASENAME "${CMAKE_Fortran_COMPILER}" NAME) + if (COMPILER_BASENAME MATCHES "^(.+-)g?fortran(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$") + set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1}) + endif () + + # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils + # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.) + if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$") + set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1}) + endif () +endif () + include(CMakeFindBinUtils) if(MSVC_Fortran_ARCHITECTURE_ID) @@ -195,7 +223,7 @@ if(MSVC_Fortran_ARCHITECTURE_ID) endif() # configure variables set in this file for fast reload later on configure_file(${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake + ${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 ) set(CMAKE_Fortran_COMPILER_ENV_VAR "FC") diff --git a/Modules/CMakeDetermineJavaCompiler.cmake b/Modules/CMakeDetermineJavaCompiler.cmake index 3f430b4..c4217f5 100644 --- a/Modules/CMakeDetermineJavaCompiler.cmake +++ b/Modules/CMakeDetermineJavaCompiler.cmake @@ -98,5 +98,5 @@ mark_as_advanced(CMAKE_Java_COMPILER) # configure variables set in this file for fast reload later on configure_file(${CMAKE_ROOT}/Modules/CMakeJavaCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeJavaCompiler.cmake IMMEDIATE @ONLY) + ${CMAKE_PLATFORM_INFO_DIR}/CMakeJavaCompiler.cmake IMMEDIATE @ONLY) set(CMAKE_Java_COMPILER_ENV_VAR "JAVA_COMPILER") diff --git a/Modules/CMakeDetermineRCCompiler.cmake b/Modules/CMakeDetermineRCCompiler.cmake index 669dd16..fa78da0 100644 --- a/Modules/CMakeDetermineRCCompiler.cmake +++ b/Modules/CMakeDetermineRCCompiler.cmake @@ -63,5 +63,5 @@ endif() # configure variables set in this file for fast reload later on configure_file(${CMAKE_ROOT}/Modules/CMakeRCCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeRCCompiler.cmake IMMEDIATE) + ${CMAKE_PLATFORM_INFO_DIR}/CMakeRCCompiler.cmake IMMEDIATE) set(CMAKE_RC_COMPILER_ENV_VAR "RC") diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake index 22c5016..cd33447 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -170,7 +170,7 @@ if(CMAKE_BINARY_DIR) # configure variables set in this file for fast reload, the template file is defined at the top of this file configure_file(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake + ${CMAKE_PLATFORM_INFO_DIR}/CMakeSystem.cmake IMMEDIATE @ONLY) endif() diff --git a/Modules/CMakeFindPackageMode.cmake b/Modules/CMakeFindPackageMode.cmake index 30d62bc..c9f58e3 100644 --- a/Modules/CMakeFindPackageMode.cmake +++ b/Modules/CMakeFindPackageMode.cmake @@ -47,6 +47,8 @@ macro(ENABLE_LANGUAGE) # But in --find-package mode, we don't want (and can't) enable any language. endmacro() +set(CMAKE_PLATFORM_INFO_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) + include(CMakeDetermineSystem) # short-cut some tests on Darwin, see Darwin-GNU.cmake: diff --git a/Modules/CMakeForceCompiler.cmake b/Modules/CMakeForceCompiler.cmake index 980cc17..207c8ad 100644 --- a/Modules/CMakeForceCompiler.cmake +++ b/Modules/CMakeForceCompiler.cmake @@ -46,7 +46,6 @@ macro(CMAKE_FORCE_C_COMPILER compiler id) set(CMAKE_C_COMPILER "${compiler}") set(CMAKE_C_COMPILER_ID_RUN TRUE) set(CMAKE_C_COMPILER_ID ${id}) - set(CMAKE_C_COMPILER_WORKS TRUE) set(CMAKE_C_COMPILER_FORCED TRUE) # Set old compiler id variables. @@ -59,7 +58,6 @@ macro(CMAKE_FORCE_CXX_COMPILER compiler id) set(CMAKE_CXX_COMPILER "${compiler}") set(CMAKE_CXX_COMPILER_ID_RUN TRUE) set(CMAKE_CXX_COMPILER_ID ${id}) - set(CMAKE_CXX_COMPILER_WORKS TRUE) set(CMAKE_CXX_COMPILER_FORCED TRUE) # Set old compiler id variables. @@ -72,7 +70,6 @@ macro(CMAKE_FORCE_Fortran_COMPILER compiler id) set(CMAKE_Fortran_COMPILER "${compiler}") set(CMAKE_Fortran_COMPILER_ID_RUN TRUE) set(CMAKE_Fortran_COMPILER_ID ${id}) - set(CMAKE_Fortran_COMPILER_WORKS TRUE) set(CMAKE_Fortran_COMPILER_FORCED TRUE) # Set old compiler id variables. diff --git a/Modules/CMakeFortranCompiler.cmake.in b/Modules/CMakeFortranCompiler.cmake.in index c7529fc..55f8277 100644 --- a/Modules/CMakeFortranCompiler.cmake.in +++ b/Modules/CMakeFortranCompiler.cmake.in @@ -7,6 +7,8 @@ set(CMAKE_AR "@CMAKE_AR@") set(CMAKE_RANLIB "@CMAKE_RANLIB@") set(CMAKE_COMPILER_IS_GNUG77 @CMAKE_COMPILER_IS_GNUG77@) set(CMAKE_Fortran_COMPILER_LOADED 1) +set(CMAKE_Fortran_COMPILER_WORKS @CMAKE_Fortran_COMPILER_WORKS@) +set(CMAKE_Fortran_ABI_COMPILED @CMAKE_Fortran_ABI_COMPILED@) set(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@) set(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@) if(CMAKE_COMPILER_IS_CYGWIN) diff --git a/Modules/CMakePlatformId.h.in b/Modules/CMakePlatformId.h.in index 4b360f7..c373414 100644 --- a/Modules/CMakePlatformId.h.in +++ b/Modules/CMakePlatformId.h.in @@ -100,6 +100,12 @@ # elif defined(_M_ARM) # define ARCHITECTURE_ID "ARM" +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + # else /* unknown architecture */ # define ARCHITECTURE_ID "" # endif diff --git a/Modules/CMakeTestCCompiler.cmake b/Modules/CMakeTestCCompiler.cmake index 14291a7..2c75147 100644 --- a/Modules/CMakeTestCCompiler.cmake +++ b/Modules/CMakeTestCCompiler.cmake @@ -1,6 +1,6 @@ #============================================================================= -# Copyright 2003-2009 Kitware, Inc. +# Copyright 2003-2012 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -12,8 +12,19 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) +if(CMAKE_C_COMPILER_FORCED) + # The compiler configuration was forced by the user. + # Assume the user has configured all compiler information. + set(CMAKE_C_COMPILER_WORKS TRUE) + return() +endif() + include(CMakeTestCompilerCommon) +# Remove any cached result from an older CMake version. +# We now store this in CMakeCCompiler.cmake. +unset(CMAKE_C_COMPILER_WORKS CACHE) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected C compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -36,6 +47,9 @@ if(NOT CMAKE_C_COMPILER_WORKS) try_compile(CMAKE_C_COMPILER_WORKS ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c OUTPUT_VARIABLE __CMAKE_C_COMPILER_OUTPUT) + # Move result from cache to normal variable. + set(CMAKE_C_COMPILER_WORKS ${CMAKE_C_COMPILER_WORKS}) + unset(CMAKE_C_COMPILER_WORKS CACHE) set(C_TEST_WAS_RUN 1) endif() @@ -44,11 +58,6 @@ if(NOT CMAKE_C_COMPILER_WORKS) file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the C compiler works failed with " "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n") - # if the compiler is broken make sure to remove the platform file - # since Windows-cl configures both c/cxx files both need to be removed - # when c or c++ fails - file(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCPlatform.cmake ) - file(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake ) message(FATAL_ERROR "The C compiler \"${CMAKE_C_COMPILER}\" " "is not able to compile a simple test program.\nIt fails " "with the following output:\n ${__CMAKE_C_COMPILER_OUTPUT}\n\n" @@ -60,22 +69,19 @@ else() "Determining if the C compiler works passed with " "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n") endif() - set(CMAKE_C_COMPILER_WORKS 1 CACHE INTERNAL "") - if(CMAKE_C_COMPILER_FORCED) - # The compiler configuration was forced by the user. - # Assume the user has configured all compiler information. - else() - # Try to identify the ABI and configure it into CMakeCCompiler.cmake - include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) - CMAKE_DETERMINE_COMPILER_ABI(C ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c) - configure_file( - ${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCCompiler.cmake - @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 - ) - include(${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCCompiler.cmake) - endif() + # Try to identify the ABI and configure it into CMakeCCompiler.cmake + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) + CMAKE_DETERMINE_COMPILER_ABI(C ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c) + + # Re-configure to save learned information. + configure_file( + ${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in + ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake + @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 + ) + include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake) + if(CMAKE_C_SIZEOF_DATA_PTR) foreach(f ${CMAKE_C_ABI_FILES}) include(${f}) diff --git a/Modules/CMakeTestCXXCompiler.cmake b/Modules/CMakeTestCXXCompiler.cmake index 5ed826b..a5cdf56 100644 --- a/Modules/CMakeTestCXXCompiler.cmake +++ b/Modules/CMakeTestCXXCompiler.cmake @@ -1,6 +1,6 @@ #============================================================================= -# Copyright 2003-2009 Kitware, Inc. +# Copyright 2003-2012 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -12,8 +12,19 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) +if(CMAKE_CXX_COMPILER_FORCED) + # The compiler configuration was forced by the user. + # Assume the user has configured all compiler information. + set(CMAKE_CXX_COMPILER_WORKS TRUE) + return() +endif() + include(CMakeTestCompilerCommon) +# Remove any cached result from an older CMake version. +# We now store this in CMakeCXXCompiler.cmake. +unset(CMAKE_CXX_COMPILER_WORKS CACHE) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected C++ compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -29,16 +40,14 @@ if(NOT CMAKE_CXX_COMPILER_WORKS) try_compile(CMAKE_CXX_COMPILER_WORKS ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCXXCompiler.cxx OUTPUT_VARIABLE __CMAKE_CXX_COMPILER_OUTPUT) + # Move result from cache to normal variable. + set(CMAKE_CXX_COMPILER_WORKS ${CMAKE_CXX_COMPILER_WORKS}) + unset(CMAKE_CXX_COMPILER_WORKS CACHE) set(CXX_TEST_WAS_RUN 1) endif() if(NOT CMAKE_CXX_COMPILER_WORKS) PrintTestCompilerStatus("CXX" " -- broken") - # if the compiler is broken make sure to remove the platform file - # since Windows-cl configures both c/cxx files both need to be removed - # when c or c++ fails - file(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCPlatform.cmake ) - file(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake ) file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the CXX compiler works failed with " "the following output:\n${__CMAKE_CXX_COMPILER_OUTPUT}\n\n") @@ -53,22 +62,19 @@ else() "Determining if the CXX compiler works passed with " "the following output:\n${__CMAKE_CXX_COMPILER_OUTPUT}\n\n") endif() - set(CMAKE_CXX_COMPILER_WORKS 1 CACHE INTERNAL "") - if(CMAKE_CXX_COMPILER_FORCED) - # The compiler configuration was forced by the user. - # Assume the user has configured all compiler information. - else() - # Try to identify the ABI and configure it into CMakeCXXCompiler.cmake - include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) - CMAKE_DETERMINE_COMPILER_ABI(CXX ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp) - configure_file( - ${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCXXCompiler.cmake - @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 - ) - include(${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCXXCompiler.cmake) - endif() + # Try to identify the ABI and configure it into CMakeCXXCompiler.cmake + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) + CMAKE_DETERMINE_COMPILER_ABI(CXX ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp) + + # Re-configure to save learned information. + configure_file( + ${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in + ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake + @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 + ) + include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake) + if(CMAKE_CXX_SIZEOF_DATA_PTR) foreach(f ${CMAKE_CXX_ABI_FILES}) include(${f}) diff --git a/Modules/CMakeTestForFreeVC.cxx b/Modules/CMakeTestForFreeVC.cxx deleted file mode 100644 index e580c1f..0000000 --- a/Modules/CMakeTestForFreeVC.cxx +++ /dev/null @@ -1,3 +0,0 @@ -#include<iostream> - -int main(){return 0;} diff --git a/Modules/CMakeTestFortranCompiler.cmake b/Modules/CMakeTestFortranCompiler.cmake index b388d1e..e263345 100644 --- a/Modules/CMakeTestFortranCompiler.cmake +++ b/Modules/CMakeTestFortranCompiler.cmake @@ -1,6 +1,6 @@ #============================================================================= -# Copyright 2004-2009 Kitware, Inc. +# Copyright 2004-2012 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -12,8 +12,19 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) +if(CMAKE_Fortran_COMPILER_FORCED) + # The compiler configuration was forced by the user. + # Assume the user has configured all compiler information. + set(CMAKE_Fortran_COMPILER_WORKS TRUE) + return() +endif() + include(CMakeTestCompilerCommon) +# Remove any cached result from an older CMake version. +# We now store this in CMakeFortranCompiler.cmake. +unset(CMAKE_Fortran_COMPILER_WORKS CACHE) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected Fortran compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -29,6 +40,9 @@ if(NOT CMAKE_Fortran_COMPILER_WORKS) try_compile(CMAKE_Fortran_COMPILER_WORKS ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f OUTPUT_VARIABLE OUTPUT) + # Move result from cache to normal variable. + set(CMAKE_Fortran_COMPILER_WORKS ${CMAKE_Fortran_COMPILER_WORKS}) + unset(CMAKE_Fortran_COMPILER_WORKS CACHE) set(FORTRAN_TEST_WAS_RUN 1) endif() @@ -48,50 +62,46 @@ else() "Determining if the Fortran compiler works passed with " "the following output:\n${OUTPUT}\n\n") endif() - set(CMAKE_Fortran_COMPILER_WORKS 1 CACHE INTERNAL "") - if(CMAKE_Fortran_COMPILER_FORCED) - # The compiler configuration was forced by the user. - # Assume the user has configured all compiler information. - else() - # Try to identify the ABI and configure it into CMakeFortranCompiler.cmake - include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) - CMAKE_DETERMINE_COMPILER_ABI(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F) + # Try to identify the ABI and configure it into CMakeFortranCompiler.cmake + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) + CMAKE_DETERMINE_COMPILER_ABI(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F) - # Test for Fortran 90 support by using an f90-specific construct. - if(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90) - message(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90") - file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 " + # Test for Fortran 90 support by using an f90-specific construct. + if(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90) + message(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90") + file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 " PROGRAM TESTFortran90 stop = 1 ; do while ( stop .eq. 0 ) ; end do END PROGRAM TESTFortran90 ") - try_compile(CMAKE_Fortran_COMPILER_SUPPORTS_F90 ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 - OUTPUT_VARIABLE OUTPUT) - if(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - message(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- yes") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining if the Fortran compiler supports Fortran 90 passed with " - "the following output:\n${OUTPUT}\n\n") - set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1) - else() - message(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- no") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if the Fortran compiler supports Fortran 90 failed with " - "the following output:\n${OUTPUT}\n\n") - set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 0) - endif() - unset(CMAKE_Fortran_COMPILER_SUPPORTS_F90 CACHE) + try_compile(CMAKE_Fortran_COMPILER_SUPPORTS_F90 ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 + OUTPUT_VARIABLE OUTPUT) + if(CMAKE_Fortran_COMPILER_SUPPORTS_F90) + message(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- yes") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the Fortran compiler supports Fortran 90 passed with " + "the following output:\n${OUTPUT}\n\n") + set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1) + else() + message(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- no") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the Fortran compiler supports Fortran 90 failed with " + "the following output:\n${OUTPUT}\n\n") + set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 0) endif() - - configure_file( - ${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake - @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 - ) - include(${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake) + unset(CMAKE_Fortran_COMPILER_SUPPORTS_F90 CACHE) endif() + + # Re-configure to save learned information. + configure_file( + ${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in + ${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake + @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 + ) + include(${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake) + if(CMAKE_Fortran_SIZEOF_DATA_PTR) foreach(f ${CMAKE_Fortran_ABI_FILES}) include(${f}) diff --git a/Modules/CMakeTestNMakeCLVersion.c b/Modules/CMakeTestNMakeCLVersion.c deleted file mode 100644 index 3cece2a..0000000 --- a/Modules/CMakeTestNMakeCLVersion.c +++ /dev/null @@ -1,2 +0,0 @@ -VERSION=_MSC_VER - diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake index b5826ef..0cec897 100644 --- a/Modules/CPackRPM.cmake +++ b/Modules/CPackRPM.cmake @@ -728,18 +728,24 @@ if(CPACK_RPM_USER_FILELIST_INTERNAL) set(CPACK_RPM_USER_INSTALL_FILES "") foreach(F IN LISTS CPACK_RPM_USER_FILELIST_INTERNAL) - string(REGEX REPLACE "%[A-Za-z\(\)]* " "" F_PATH ${F}) - string(REGEX MATCH "%[A-Za-z\(\)]*" F_PREFIX ${F}) + string(REGEX REPLACE "%[A-Za-z0-9\(\),-]* " "" F_PATH ${F}) + string(REGEX MATCH "%[A-Za-z0-9\(\),-]*" F_PREFIX ${F}) + if(CPACK_RPM_PACKAGE_DEBUG) + message("CPackRPM:Debug: F_PREFIX=<${F_PREFIX}>, F_PATH=<${F_PATH}>") + endif() if(F_PREFIX) - set(F_PREFIX "${F_PREFIX} ") + set(F_PREFIX "${F_PREFIX} ") endif() # Rebuild the user list file set(CPACK_RPM_USER_INSTALL_FILES "${CPACK_RPM_USER_INSTALL_FILES}${F_PREFIX}\"${F_PATH}\"\n") # Remove from CPACK_RPM_INSTALL_FILES and CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES_LIST ${F_PATH}) - list(REMOVE_ITEM CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL ${F_PATH}) + # ABSOLUTE destination files list may not exists at all + if (CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL) + list(REMOVE_ITEM CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL ${F_PATH}) + endif() endforeach() diff --git a/Modules/CompilerId/VS-10.vcxproj.in b/Modules/CompilerId/VS-10.vcxproj.in new file mode 100644 index 0000000..ab4705f --- /dev/null +++ b/Modules/CompilerId/VS-10.vcxproj.in @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|@id_arch@"> + <Configuration>Debug</Configuration> + <Platform>@id_arch@</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{CAE07175-D007-4FC3-BFE8-47B392814159}</ProjectGuid> + <RootNamespace>CompilerId@id_lang@</RootNamespace> + <Keyword>Win32Proj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_arch@'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + @id_toolset@ + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <PropertyGroup> + <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|@id_arch@'">.\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|@id_arch@'">$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|@id_arch@'">false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_arch@'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>TurnOffAllWarnings</WarningLevel> + <DebugInformationFormat> + </DebugInformationFormat> + </ClCompile> + <Link> + <GenerateDebugInformation>false</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <TargetMachine>@id_machine_10@</TargetMachine> + </Link> + <PostBuildEvent> + <Command>for %%i in (@id_cl@) do %40echo CMAKE_@id_lang@_COMPILER=%%~$PATH:i</Command> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="@id_src@" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/Modules/CompilerId/VS-6.dsp.in b/Modules/CompilerId/VS-6.dsp.in new file mode 100644 index 0000000..4f7e676 --- /dev/null +++ b/Modules/CompilerId/VS-6.dsp.in @@ -0,0 +1,48 @@ +# Microsoft Developer Studio Project File - Name="CompilerId@id_lang@" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 + +# TARGTYPE "Win32 (@id_machine_6@) Application" 0x0101 + +CFG=CompilerId@id_lang@ - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "CompilerId@id_lang@.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "CompilerId@id_lang@.mak" CFG="CompilerId@id_lang@ - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "CompilerId@id_lang@ - Win32 Debug" (based on "Win32 (@id_machine_6@) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +CPP=cl.exe +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "." +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD CPP /nologo /MDd /c +LINK32=link.exe +# ADD LINK32 /nologo /version:0.0 /subsystem:console /machine:@id_machine_6@ /out:"CompilerId@id_lang@.exe" /IGNORE:4089 +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=for %%i in (@id_cl@) do @echo CMAKE_@id_lang@_COMPILER=%%~$PATH:i +# End Special Build Tool +# Begin Target + +# Name "CompilerId@id_lang@ - Win32 Debug" +# Begin Group "Source Files" + +# Begin Source File + +SOURCE="@id_src@" +# End Source File +# End Group +# End Target +# End Project diff --git a/Modules/CompilerId/VS-7.vcproj.in b/Modules/CompilerId/VS-7.vcproj.in new file mode 100644 index 0000000..71bf64d --- /dev/null +++ b/Modules/CompilerId/VS-7.vcproj.in @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="@id_version@" + Name="CompilerId@id_lang@" + ProjectGUID="{CAE07175-D007-4FC3-BFE8-47B392814159}" + RootNamespace="CompilerId@id_lang@" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + <Platforms> + <Platform + Name="@id_arch@" + /> + </Platforms> + <Configurations> + <Configuration + Name="Debug|@id_arch@" + OutputDirectory="." + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + MinimalRebuild="false" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="0" + DebugInformationFormat="0" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + GenerateDebugInformation="false" + SubSystem="1" + TargetMachine="@id_machine_7@" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="for %%i in (@id_cl@) do @echo CMAKE_@id_lang@_COMPILER=%%~$PATH:i" + /> + </Configuration> + </Configurations> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + > + <File + RelativePath="@id_src@" + > + </File> + </Filter> + </Files> +</VisualStudioProject> diff --git a/Modules/CompilerId/Xcode-1.pbxproj.in b/Modules/CompilerId/Xcode-1.pbxproj.in new file mode 100644 index 0000000..f06960f --- /dev/null +++ b/Modules/CompilerId/Xcode-1.pbxproj.in @@ -0,0 +1,120 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 39; + objects = { + 014CEA460018CE2711CA2923 = { + buildSettings = { + }; + isa = PBXBuildStyle; + name = Development; + }; + 08FB7793FE84155DC02AAC07 = { + buildSettings = { + }; + buildStyles = ( + 014CEA460018CE2711CA2923, + ); + hasScannedForEncodings = 1; + isa = PBXProject; + mainGroup = 08FB7794FE84155DC02AAC07; + projectDirPath = ""; + targets = ( + 8DD76FA90486AB0100D96B5E, + ); + }; + 08FB7794FE84155DC02AAC07 = { + children = ( + 08FB7795FE84155DC02AAC07, + 1AB674ADFE9D54B511CA2CBB, + ); + isa = PBXGroup; + name = CompilerId@id_lang@; + refType = 4; + sourceTree = "<group>"; + }; + 08FB7795FE84155DC02AAC07 = { + children = ( + 2C18F0B415DC1DC700593670, + ); + isa = PBXGroup; + name = Source; + refType = 4; + sourceTree = "<group>"; + }; + 1AB674ADFE9D54B511CA2CBB = { + children = ( + 8DD76F6C0486A84900D96B5E, + ); + isa = PBXGroup; + name = Products; + refType = 4; + sourceTree = "<group>"; + }; + 2C18F0B415DC1DC700593670 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = @id_type@; + path = @id_src@; + refType = 4; + sourceTree = "<group>"; + }; + 2C18F0B615DC1E0300593670 = { + fileRef = 2C18F0B415DC1DC700593670; + isa = PBXBuildFile; + settings = { + }; + }; + 2C8FEB8E15DC1A1A00E56A5D = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"GCC_VERSION=$GCC_VERSION\""; + }; + 8DD76FA90486AB0100D96B5E = { + buildPhases = ( + 2C18F0B515DC1DCE00593670, + 2C8FEB8E15DC1A1A00E56A5D, + ); + buildRules = ( + ); + buildSettings = { + PRODUCT_NAME = CompilerId@id_lang@; + SYMROOT = .; + }; + dependencies = ( + ); + isa = PBXNativeTarget; + name = CompilerId@id_lang@; + productName = CompilerId@id_lang@; + productReference = 8DD76F6C0486A84900D96B5E; + productType = "com.apple.product-type.tool"; + }; + 2C18F0B515DC1DCE00593670 = { + buildActionMask = 2147483647; + files = ( + 2C18F0B615DC1E0300593670, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 8DD76F6C0486A84900D96B5E = { + explicitFileType = "compiled.mach-o.executable"; + includeInIndex = 0; + isa = PBXFileReference; + path = CompilerId@id_lang@; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; + }; + rootObject = 08FB7793FE84155DC02AAC07; +} diff --git a/Modules/CompilerId/Xcode-2.pbxproj.in b/Modules/CompilerId/Xcode-2.pbxproj.in new file mode 100644 index 0000000..e3c7aa9 --- /dev/null +++ b/Modules/CompilerId/Xcode-2.pbxproj.in @@ -0,0 +1,119 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + + 2C18F0B615DC1E0300593670 = {isa = PBXBuildFile; fileRef = 2C18F0B415DC1DC700593670; }; + 2C18F0B415DC1DC700593670 = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = @id_type@; path = @id_src@; sourceTree = "<group>"; }; + 8DD76F6C0486A84900D96B5E = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CompilerId@id_lang@; sourceTree = BUILT_PRODUCTS_DIR; }; + + 08FB7794FE84155DC02AAC07 = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07, + 1AB674ADFE9D54B511CA2CBB, + ); + name = CompilerId@id_lang@; + sourceTree = "<group>"; + }; + 08FB7795FE84155DC02AAC07 = { + isa = PBXGroup; + children = ( + 2C18F0B415DC1DC700593670, + ); + name = Source; + sourceTree = "<group>"; + }; + 1AB674ADFE9D54B511CA2CBB = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E, + ); + name = Products; + sourceTree = "<group>"; + }; + + 8DD76FA90486AB0100D96B5E = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB928508733DD80010E9CD; + buildPhases = ( + 2C18F0B515DC1DCE00593670, + 2C8FEB8E15DC1A1A00E56A5D, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CompilerId@id_lang@; + productName = CompilerId@id_lang@; + productReference = 8DD76F6C0486A84900D96B5E; + productType = "com.apple.product-type.tool"; + }; + 08FB7793FE84155DC02AAC07 = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD; + hasScannedForEncodings = 1; + mainGroup = 08FB7794FE84155DC02AAC07; + projectDirPath = ""; + targets = ( + 8DD76FA90486AB0100D96B5E, + ); + }; + 2C8FEB8E15DC1A1A00E56A5D = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"GCC_VERSION=$GCC_VERSION\""; + }; + 2C18F0B515DC1DCE00593670 = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C18F0B615DC1E0300593670, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1DEB928608733DD80010E9CD = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = CompilerId@id_lang@; + }; + name = Debug; + }; + 1DEB928A08733DD80010E9CD = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + SYMROOT = .; + }; + name = Debug; + }; + 1DEB928508733DD80010E9CD = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928608733DD80010E9CD, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 1DEB928908733DD80010E9CD = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928A08733DD80010E9CD, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + }; + rootObject = 08FB7793FE84155DC02AAC07; +} diff --git a/Modules/CompilerId/Xcode-3.pbxproj.in b/Modules/CompilerId/Xcode-3.pbxproj.in new file mode 100644 index 0000000..41ca7db --- /dev/null +++ b/Modules/CompilerId/Xcode-3.pbxproj.in @@ -0,0 +1,107 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + + 2C18F0B615DC1E0300593670 = {isa = PBXBuildFile; fileRef = 2C18F0B415DC1DC700593670; }; + 2C18F0B415DC1DC700593670 = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = @id_type@; path = @id_src@; sourceTree = "<group>"; }; + 08FB7794FE84155DC02AAC07 = { + isa = PBXGroup; + children = ( + 2C18F0B415DC1DC700593670, + ); + name = CompilerId@id_lang@; + sourceTree = "<group>"; + }; + 8DD76FA90486AB0100D96B5E = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB928508733DD80010E9CD; + buildPhases = ( + 2C18F0B515DC1DCE00593670, + 2C8FEB8E15DC1A1A00E56A5D, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CompilerId@id_lang@; + productName = CompilerId@id_lang@; + productType = "com.apple.product-type.tool"; + }; + 08FB7793FE84155DC02AAC07 = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76FA90486AB0100D96B5E, + ); + }; + 2C8FEB8E15DC1A1A00E56A5D = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"GCC_VERSION=$GCC_VERSION\""; + showEnvVarsInLog = 0; + }; + 2C18F0B515DC1DCE00593670 = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C18F0B615DC1E0300593670, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1DEB928608733DD80010E9CD = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = CompilerId@id_lang@; + }; + name = Debug; + }; + 1DEB928A08733DD80010E9CD = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ONLY_ACTIVE_ARCH = YES; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + SYMROOT = .; + }; + name = Debug; + }; + 1DEB928508733DD80010E9CD = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928608733DD80010E9CD, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 1DEB928908733DD80010E9CD = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928A08733DD80010E9CD, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + }; + rootObject = 08FB7793FE84155DC02AAC07; +} diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index cd77ba4..3923685 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -24,7 +24,10 @@ # [HG_REPOSITORY url] # URL of mercurial repo # [HG_TAG tag] # Mercurial branch name, commit id or tag # [URL /.../src.tgz] # Full path or URL of source -# [URL_MD5 md5] # MD5 checksum of file at URL +# [URL_HASH ALGO=value] # Hash of file at URL +# [URL_MD5 md5] # Equivalent to URL_HASH MD5=md5 +# [TLS_VERIFY bool] # Should certificate for https be checked +# [TLS_CAINFO file] # Path to a certificate authority file # [TIMEOUT seconds] # Time allowed for file download operations # #--Update/Patch step---------- # [UPDATE_COMMAND cmd...] # Source work-tree update command @@ -184,6 +187,9 @@ if(_ep_func) set(_ep_keywords_${_ep_func} "${_ep_keywords_${_ep_func}})$") endif() +# Save regex matching supported hash algorithm names. +set(_ep_hash_algos "MD5|SHA1|SHA224|SHA256|SHA384|SHA512") +set(_ep_hash_regex "^(${_ep_hash_algos})=([0-9A-Fa-f]+)$") function(_ep_parse_arguments f name ns args) # Transfer the arguments to this function into target properties for the @@ -395,7 +401,7 @@ endif() endfunction() -function(_ep_write_downloadfile_script script_filename remote local timeout md5) +function(_ep_write_downloadfile_script script_filename remote local timeout hash tls_verify tls_cainfo) if(timeout) set(timeout_args TIMEOUT ${timeout}) set(timeout_msg "${timeout} seconds") @@ -404,10 +410,31 @@ function(_ep_write_downloadfile_script script_filename remote local timeout md5) set(timeout_msg "none") endif() - if(md5) - set(md5_args EXPECTED_MD5 ${md5}) + if("${hash}" MATCHES "${_ep_hash_regex}") + set(hash_args EXPECTED_HASH ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}) else() - set(md5_args "# no EXPECTED_MD5") + set(hash_args "# no EXPECTED_HASH") + endif() + # check for curl globals in the project + if(DEFINED CMAKE_TLS_VERIFY) + set(tls_verify "set(CMAKE_TLS_VERIFY ${CMAKE_TLS_VERIFY})") + endif() + if(DEFINED CMAKE_TLS_CAINFO) + set(tls_cainfo "set(CMAKE_TLS_CAINFO \"${CMAKE_TLS_CAINFO}\")") + endif() + + # now check for curl locals so that the local values + # will override the globals + + # check for tls_verify argument + string(LENGTH "${tls_verify}" tls_verify_len) + if(tls_verify_len GREATER 0) + set(tls_verify "set(CMAKE_TLS_VERIFY ${tls_verify})") + endif() + # check for tls_cainfo argument + string(LENGTH "${tls_cainfo}" tls_cainfo_len) + if(tls_cainfo_len GREATER 0) + set(tls_cainfo "set(CMAKE_TLS_CAINFO \"${tls_cainfo}\")") endif() file(WRITE ${script_filename} @@ -416,11 +443,14 @@ function(_ep_write_downloadfile_script script_filename remote local timeout md5) dst='${local}' timeout='${timeout_msg}'\") +${tls_verify} +${tls_cainfo} + file(DOWNLOAD \"${remote}\" \"${local}\" SHOW_PROGRESS - ${md5_args} + ${hash_args} ${timeout_args} STATUS status LOG log) @@ -443,48 +473,30 @@ message(STATUS \"downloading... done\") endfunction() -function(_ep_write_verifyfile_script script_filename local md5) - file(WRITE ${script_filename} -"message(STATUS \"verifying file... - file='${local}'\") - -set(verified 0) - -# If an expected md5 checksum exists, compare against it: -# -if(NOT \"${md5}\" STREQUAL \"\") - execute_process(COMMAND \${CMAKE_COMMAND} -E md5sum \"${local}\" - OUTPUT_VARIABLE ov - OUTPUT_STRIP_TRAILING_WHITESPACE - RESULT_VARIABLE rv) - - if(NOT rv EQUAL 0) - message(FATAL_ERROR \"error: computing md5sum of '${local}' failed\") - endif() - - string(REGEX MATCH \"^([0-9A-Fa-f]+)\" md5_actual \"\${ov}\") - - string(TOLOWER \"\${md5_actual}\" md5_actual) - string(TOLOWER \"${md5}\" md5) - - if(NOT \"\${md5}\" STREQUAL \"\${md5_actual}\") - message(FATAL_ERROR \"error: md5sum of '${local}' does not match expected value - md5_expected: \${md5} - md5_actual: \${md5_actual} -\") - endif() - - set(verified 1) -endif() - -if(verified) +function(_ep_write_verifyfile_script script_filename local hash) + if("${hash}" MATCHES "${_ep_hash_regex}") + set(algo "${CMAKE_MATCH_1}") + string(TOLOWER "${CMAKE_MATCH_2}" expect_value) + set(script_content "set(expect_value \"${expect_value}\") +file(${algo} \"\${file}\" actual_value) +if(\"\${actual_value}\" STREQUAL \"\${expect_value}\") message(STATUS \"verifying file... done\") else() - message(STATUS \"verifying file... warning: did not verify file - no URL_MD5 checksum argument? corrupt file?\") -endif() -" -) - + message(FATAL_ERROR \"error: ${algo} hash of + \${file} +does not match expected value + expected: \${expect_value} + actual: \${actual_value} +\") +endif()") + else() + set(script_content "message(STATUS \"verifying file... warning: did not verify file - no URL_HASH specified?\")") + endif() + file(WRITE ${script_filename} "set(file \"${local}\") +message(STATUS \"verifying file... + file='\${file}'\") +${script_content} +") endfunction() @@ -1254,10 +1266,22 @@ function(_ep_add_download_command name) list(APPEND depends ${stamp_dir}/${name}-hginfo.txt) elseif(url) get_filename_component(work_dir "${source_dir}" PATH) + get_property(hash TARGET ${name} PROPERTY _EP_URL_HASH) + if(hash AND NOT "${hash}" MATCHES "${_ep_hash_regex}") + message(FATAL_ERROR "URL_HASH is set to\n ${hash}\n" + "but must be ALGO=value where ALGO is\n ${_ep_hash_algos}\n" + "and value is a hex string.") + endif() get_property(md5 TARGET ${name} PROPERTY _EP_URL_MD5) + if(md5 AND NOT "MD5=${md5}" MATCHES "${_ep_hash_regex}") + message(FATAL_ERROR "URL_MD5 is set to\n ${md5}\nbut must be a hex string.") + endif() + if(md5 AND NOT hash) + set(hash "MD5=${md5}") + endif() set(repository "external project URL") set(module "${url}") - set(tag "${md5}") + set(tag "${hash}") configure_file( "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in" "${stamp_dir}/${name}-urlinfo.txt" @@ -1283,7 +1307,10 @@ function(_ep_add_download_command name) string(REPLACE ";" "-" fname "${fname}") set(file ${download_dir}/${fname}) get_property(timeout TARGET ${name} PROPERTY _EP_TIMEOUT) - _ep_write_downloadfile_script("${stamp_dir}/download-${name}.cmake" "${url}" "${file}" "${timeout}" "${md5}") + get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY) + get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO) + _ep_write_downloadfile_script("${stamp_dir}/download-${name}.cmake" + "${url}" "${file}" "${timeout}" "${hash}" "${tls_verify}" "${tls_cainfo}") set(cmd ${CMAKE_COMMAND} -P ${stamp_dir}/download-${name}.cmake COMMAND) set(comment "Performing download step (download, verify and extract) for '${name}'") @@ -1291,7 +1318,7 @@ function(_ep_add_download_command name) set(file "${url}") set(comment "Performing download step (verify and extract) for '${name}'") endif() - _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${md5}") + _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}") list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/verify-${name}.cmake COMMAND) _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${name}" "${file}" "${source_dir}") diff --git a/Modules/FindArmadillo.cmake b/Modules/FindArmadillo.cmake index bc0357e..4758534 100644 --- a/Modules/FindArmadillo.cmake +++ b/Modules/FindArmadillo.cmake @@ -76,7 +76,7 @@ endif () # Checks 'REQUIRED', 'QUIET' and versions. -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) find_package_handle_standard_args(Armadillo REQUIRED_VARS ARMADILLO_LIBRARY ARMADILLO_INCLUDE_DIR VERSION_VAR ARMADILLO_VERSION_STRING) diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index 6a6be47..5a834b1 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -68,6 +68,13 @@ # CUDA_HOST_COMPILATION_CPP (Default ON) # -- Set to OFF for C compilation of host code. # +# CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER, $(VCInstallDir)/bin for VS) +# -- Set the host compiler to be used by nvcc. Ignored if -ccbin or +# --compiler-bindir is already present in the CUDA_NVCC_FLAGS or +# CUDA_NVCC_FLAGS_<CONFIG> variables. For Visual Studio targets +# $(VCInstallDir)/bin is a special value that expands out to the path when +# the command is run from withing VS. +# # CUDA_NVCC_FLAGS # CUDA_NVCC_FLAGS_<CONFIG> # -- Additional NVCC command line arguments. NOTE: multiple arguments must be @@ -390,6 +397,12 @@ option(CUDA_HOST_COMPILATION_CPP "Generated file extension" ON) # Extra user settable flags set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.") +if(CMAKE_GENERATOR MATCHES "Visual Studio") + set(CUDA_HOST_COMPILER "$(VCInstallDir)bin" CACHE FILEPATH "Host side compiler used by NVCC") +else() + set(CUDA_HOST_COMPILER "${CMAKE_C_COMPILER}" CACHE FILEPATH "Host side compiler used by NVCC") +endif() + # Propagate the host flags to the host compiler via -Xcompiler option(CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" ON) @@ -900,14 +913,6 @@ endfunction() macro(CUDA_WRAP_SRCS cuda_target format generated_files) - if( ${format} MATCHES "PTX" ) - set( compile_to_ptx ON ) - elseif( ${format} MATCHES "OBJ") - set( compile_to_ptx OFF ) - else() - message( FATAL_ERROR "Invalid format flag passed to CUDA_WRAP_SRCS: '${format}'. Use OBJ or PTX.") - endif() - # Set up all the command line flags here, so that they can be overridden on a per target basis. set(nvcc_flags "") @@ -940,12 +945,11 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files) endif() # This needs to be passed in at this stage, because VS needs to fill out the - # value of VCInstallDir from within VS. + # value of VCInstallDir from within VS. Note that CCBIN is only used if + # -ccbin or --compiler-bindir isn't used and CUDA_HOST_COMPILER matches + # $(VCInstallDir)/bin. if(CMAKE_GENERATOR MATCHES "Visual Studio") - if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - # Add nvcc flag for 64b Windows - set(ccbin_flags -D "\"CCBIN:PATH=$(VCInstallDir)bin\"" ) - endif() + set(ccbin_flags -D "\"CCBIN:PATH=$(VCInstallDir)bin\"" ) endif() # Figure out which configure we will use and pass that in as an argument to @@ -1004,12 +1008,12 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files) # Only add the CMAKE_{C,CXX}_FLAGS if we are propagating host flags. We # always need to set the SHARED_FLAGS, though. if(CUDA_PROPAGATE_HOST_FLAGS) - set(CUDA_HOST_FLAGS "set(CMAKE_HOST_FLAGS ${CMAKE_${CUDA_C_OR_CXX}_FLAGS} ${CUDA_HOST_SHARED_FLAGS})") + set(_cuda_host_flags "set(CMAKE_HOST_FLAGS ${CMAKE_${CUDA_C_OR_CXX}_FLAGS} ${CUDA_HOST_SHARED_FLAGS})") else() - set(CUDA_HOST_FLAGS "set(CMAKE_HOST_FLAGS ${CUDA_HOST_SHARED_FLAGS})") + set(_cuda_host_flags "set(CMAKE_HOST_FLAGS ${CUDA_HOST_SHARED_FLAGS})") endif() - set(CUDA_NVCC_FLAGS_CONFIG "# Build specific configuration flags") + set(_cuda_nvcc_flags_config "# Build specific configuration flags") # Loop over all the configuration types to generate appropriate flags for run_nvcc.cmake foreach(config ${CUDA_configuration_types}) string(TOUPPER ${config} config_upper) @@ -1018,27 +1022,31 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files) if(CUDA_PROPAGATE_HOST_FLAGS) # nvcc chokes on -g3 in versions previous to 3.0, so replace it with -g - if(CMAKE_COMPILER_IS_GNUCC AND CUDA_VERSION VERSION_LESS "3.0") + set(_cuda_fix_g3 FALSE) + + if(CMAKE_COMPILER_IS_GNUCC) + if (CUDA_VERSION VERSION_LESS "3.0" OR + CUDA_VERSION VERSION_EQUAL "4.1" OR + CUDA_VERSION VERSION_EQUAL "4.2" + ) + set(_cuda_fix_g3 TRUE) + endif() + endif() + if(_cuda_fix_g3) string(REPLACE "-g3" "-g" _cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}") else() set(_cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}") endif() - set(CUDA_HOST_FLAGS "${CUDA_HOST_FLAGS}\nset(CMAKE_HOST_FLAGS_${config_upper} ${_cuda_C_FLAGS})") + set(_cuda_host_flags "${_cuda_host_flags}\nset(CMAKE_HOST_FLAGS_${config_upper} ${_cuda_C_FLAGS})") endif() # Note that if we ever want CUDA_NVCC_FLAGS_<CONFIG> to be string (instead of a list # like it is currently), we can remove the quotes around the # ${CUDA_NVCC_FLAGS_${config_upper}} variable like the CMAKE_HOST_FLAGS_<CONFIG> variable. - set(CUDA_NVCC_FLAGS_CONFIG "${CUDA_NVCC_FLAGS_CONFIG}\nset(CUDA_NVCC_FLAGS_${config_upper} ${CUDA_NVCC_FLAGS_${config_upper}} ;; ${CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}})") + set(_cuda_nvcc_flags_config "${_cuda_nvcc_flags_config}\nset(CUDA_NVCC_FLAGS_${config_upper} ${CUDA_NVCC_FLAGS_${config_upper}} ;; ${CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}})") endforeach() - if(compile_to_ptx) - # Don't use any of the host compilation flags for PTX targets. - set(CUDA_HOST_FLAGS) - set(CUDA_NVCC_FLAGS_CONFIG) - endif() - # Get the list of definitions from the directory property get_directory_property(CUDA_NVCC_DEFINITIONS COMPILE_DEFINITIONS) if(CUDA_NVCC_DEFINITIONS) @@ -1061,6 +1069,30 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files) get_source_file_property(_is_header ${file} HEADER_FILE_ONLY) if(${file} MATCHES ".*\\.cu$" AND NOT _is_header) + # Allow per source file overrides of the format. + get_source_file_property(_cuda_source_format ${file} CUDA_SOURCE_PROPERTY_FORMAT) + if(NOT _cuda_source_format) + set(_cuda_source_format ${format}) + endif() + + if( ${_cuda_source_format} MATCHES "PTX" ) + set( compile_to_ptx ON ) + elseif( ${_cuda_source_format} MATCHES "OBJ") + set( compile_to_ptx OFF ) + else() + message( FATAL_ERROR "Invalid format flag passed to CUDA_WRAP_SRCS for file '${file}': '${_cuda_source_format}'. Use OBJ or PTX.") + endif() + + + if(compile_to_ptx) + # Don't use any of the host compilation flags for PTX targets. + set(CUDA_HOST_FLAGS) + set(CUDA_NVCC_FLAGS_CONFIG) + else() + set(CUDA_HOST_FLAGS ${_cuda_host_flags}) + set(CUDA_NVCC_FLAGS_CONFIG ${_cuda_nvcc_flags_config}) + endif() + # Determine output directory cuda_compute_build_path("${file}" cuda_build_path) set(cuda_compile_intermediate_directory "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${cuda_target}.dir/${cuda_build_path}") diff --git a/Modules/FindCUDA/run_nvcc.cmake b/Modules/FindCUDA/run_nvcc.cmake index 8274cc7..f0aac84 100644 --- a/Modules/FindCUDA/run_nvcc.cmake +++ b/Modules/FindCUDA/run_nvcc.cmake @@ -62,6 +62,7 @@ set(cmake_dependency_file "@cmake_dependency_file@") # path set(CUDA_make2cmake "@CUDA_make2cmake@") # path set(CUDA_parse_cubin "@CUDA_parse_cubin@") # path set(build_cubin @build_cubin@) # bool +set(CUDA_HOST_COMPILER "@CUDA_HOST_COMPILER@") # bool # We won't actually use these variables for now, but we need to set this, in # order to force this file to be run again if it changes. set(generated_file_path "@generated_file_path@") # path @@ -102,8 +103,15 @@ endif() # Add the build specific configuration flags list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}}) -if(DEFINED CCBIN) - set(CCBIN -ccbin "${CCBIN}") +# Any -ccbin existing in CUDA_NVCC_FLAGS gets highest priority +list( FIND CUDA_NVCC_FLAGS "-ccbin" ccbin_found0 ) +list( FIND CUDA_NVCC_FLAGS "--compiler-bindir" ccbin_found1 ) +if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 ) + if (CUDA_HOST_COMPILER STREQUAL "$(VCInstallDir)bin" AND DEFINED CCBIN) + set(CCBIN -ccbin "${CCBIN}") + else() + set(CCBIN -ccbin "${CUDA_HOST_COMPILER}") + endif() endif() # cuda_execute_process - Executes a command with optional command echo and status message. diff --git a/Modules/FindFLEX.cmake b/Modules/FindFLEX.cmake index e397d28..daae94f 100644 --- a/Modules/FindFLEX.cmake +++ b/Modules/FindFLEX.cmake @@ -94,7 +94,7 @@ if(FLEX_EXECUTABLE) # older versions of flex printed "/full/path/to/executable version X.Y" # newer versions use "basename(executable) X.Y" get_filename_component(FLEX_EXE_NAME "${FLEX_EXECUTABLE}" NAME) - string(REGEX REPLACE "^.*${FLEX_EXE_NAME}\"? (version )?([0-9]+[^ ]*)$" "\\2" + string(REGEX REPLACE "^.*${FLEX_EXE_NAME}\"? (version )?([0-9]+[^ ]*)( .*)?$" "\\2" FLEX_VERSION "${FLEX_version_output}") unset(FLEX_EXE_NAME) endif() diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake index c7cf0eb..cdb46be 100644 --- a/Modules/FindFreetype.cmake +++ b/Modules/FindFreetype.cmake @@ -46,9 +46,10 @@ find_path(FREETYPE_INCLUDE_DIR_ft2build ft2build.h HINTS ENV FREETYPE_DIR PATHS - /usr/local/X11R6/include - /usr/local/X11/include - /usr/freeware/include + /usr/local/X11R6 + /usr/local/X11 + /usr/freeware + PATH_SUFFIXES include/freetype2 include ) find_path(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h diff --git a/Modules/FindGLEW.cmake b/Modules/FindGLEW.cmake new file mode 100644 index 0000000..37dff03 --- /dev/null +++ b/Modules/FindGLEW.cmake @@ -0,0 +1,30 @@ +# - Find the OpenGL Extension Wrangler Library (GLEW) +# This module defines the following variables: +# GLEW_INCLUDE_DIRS - include directories for GLEW +# GLEW_LIBRARIES - libraries to link against GLEW +# GLEW_FOUND - true if GLEW has been found and can be used + +#============================================================================= +# Copyright 2012 Benjamin Eikel +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +find_path(GLEW_INCLUDE_DIR GL/glew.h) +find_library(GLEW_LIBRARY NAMES GLEW glew32 glew glew32s PATH_SUFFIXES lib64) + +set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR}) +set(GLEW_LIBRARIES ${GLEW_LIBRARY}) + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +find_package_handle_standard_args(GLEW + REQUIRED_VARS GLEW_INCLUDE_DIR GLEW_LIBRARY) + +mark_as_advanced(GLEW_INCLUDE_DIR GLEW_LIBRARY) diff --git a/Modules/FindGettext.cmake b/Modules/FindGettext.cmake index c4774d9..f1c78ae 100644 --- a/Modules/FindGettext.cmake +++ b/Modules/FindGettext.cmake @@ -54,12 +54,12 @@ if(GETTEXT_MSGMERGE_EXECUTABLE) unset(gettext_version) endif() -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gettext REQUIRED_VARS GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE VERSION_VAR GETTEXT_VERSION_STRING) -include(CMakeParseArguments) +include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake) function(_GETTEXT_GET_UNIQUE_TARGET_NAME _name _unique_name) set(propertyName "_GETTEXT_UNIQUE_COUNTER_${_name}") @@ -210,11 +210,4 @@ function(GETTEXT_PROCESS_PO_FILES _lang) endfunction() -if (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE ) - set(GETTEXT_FOUND TRUE) -else () - set(GETTEXT_FOUND FALSE) - if (GetText_REQUIRED) - message(FATAL_ERROR "GetText not found") - endif () -endif () +set(GETTEXT_FOUND ${Gettext_FOUND}) diff --git a/Modules/FindLibLZMA.cmake b/Modules/FindLibLZMA.cmake index f8ea18b..837e633 100644 --- a/Modules/FindLibLZMA.cmake +++ b/Modules/FindLibLZMA.cmake @@ -47,13 +47,13 @@ endif() # it can be found in http://tukaani.org/xz/ # Avoid using old codebase if (LIBLZMA_LIBRARY) - include(CheckLibraryExists) + include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake) CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER) CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER) CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET) endif () -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibLZMA REQUIRED_VARS LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY LIBLZMA_HAS_AUTO_DECODER diff --git a/Modules/FindOpenSceneGraph.cmake b/Modules/FindOpenSceneGraph.cmake index 1f30fe3..4a5aaba 100644 --- a/Modules/FindOpenSceneGraph.cmake +++ b/Modules/FindOpenSceneGraph.cmake @@ -145,23 +145,6 @@ if(OSG_INCLUDE_DIR) endif() endif() -# -# Version checking -# -if(OpenSceneGraph_FIND_VERSION AND OPENSCENEGRAPH_VERSION) - if(OpenSceneGraph_FIND_VERSION_EXACT) - if(NOT OPENSCENEGRAPH_VERSION VERSION_EQUAL ${OpenSceneGraph_FIND_VERSION}) - set(_osg_version_not_exact TRUE) - endif() - else() - # version is too low - if(NOT OPENSCENEGRAPH_VERSION VERSION_EQUAL ${OpenSceneGraph_FIND_VERSION} AND - NOT OPENSCENEGRAPH_VERSION VERSION_GREATER ${OpenSceneGraph_FIND_VERSION}) - set(_osg_version_not_high_enough TRUE) - endif() - endif() -endif() - set(_osg_quiet) if(OpenSceneGraph_FIND_QUIETLY) set(_osg_quiet "QUIET") @@ -190,63 +173,22 @@ if(OPENSCENEGRAPH_INCLUDE_DIR) endif() # -# Inform the users with an error message based on -# what version they have vs. what version was -# required. +# Check each module to see if it's found # +set(_osg_component_founds) if(OpenSceneGraph_FIND_REQUIRED) - set(_osg_version_output_type FATAL_ERROR) -else() - set(_osg_version_output_type STATUS) + foreach(_osg_module ${_osg_modules_to_process}) + string(TOUPPER ${_osg_module} _osg_module_UC) + list(APPEND _osg_component_founds ${_osg_module_UC}_FOUND) + endforeach() endif() -if(_osg_version_not_high_enough) - set(_osg_EPIC_FAIL TRUE) - if(NOT OpenSceneGraph_FIND_QUIETLY) - message(${_osg_version_output_type} - "ERROR: Version ${OpenSceneGraph_FIND_VERSION} or higher of the OSG " - "is required. Version ${OPENSCENEGRAPH_VERSION} was found.") - endif() -elseif(_osg_version_not_exact) - set(_osg_EPIC_FAIL TRUE) - if(NOT OpenSceneGraph_FIND_QUIETLY) - message(${_osg_version_output_type} - "ERROR: Version ${OpenSceneGraph_FIND_VERSION} of the OSG is required " - "(exactly), version ${OPENSCENEGRAPH_VERSION} was found.") - endif() -else() - - # - # Check each module to see if it's found - # - if(OpenSceneGraph_FIND_REQUIRED) - set(_osg_missing_message) - foreach(_osg_module ${_osg_modules_to_process}) - string(TOUPPER ${_osg_module} _osg_module_UC) - if(NOT ${_osg_module_UC}_FOUND) - set(_osg_missing_nodekit_fail true) - set(_osg_missing_message "${_osg_missing_message} ${_osg_module}") - endif() - endforeach() - - if(_osg_missing_nodekit_fail) - message(FATAL_ERROR "ERROR: Missing the following osg " - "libraries: ${_osg_missing_message}.\n" - "Consider using CMAKE_PREFIX_PATH or the OSG_DIR " - "environment variable. See the " - "${CMAKE_CURRENT_LIST_FILE} for more details.") - endif() - endif() - include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSceneGraph DEFAULT_MSG OPENSCENEGRAPH_LIBRARIES OPENSCENEGRAPH_INCLUDE_DIR) -endif() +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSceneGraph + REQUIRED_VARS OPENSCENEGRAPH_LIBRARIES OPENSCENEGRAPH_INCLUDE_DIR ${_osg_component_founds} + VERSION_VAR OPENSCENEGRAPH_VERSION) -if(_osg_EPIC_FAIL) - # Zero out everything, we didn't meet version requirements - set(OPENSCENEGRAPH_FOUND FALSE) - set(OPENSCENEGRAPH_LIBRARIES) - set(OPENSCENEGRAPH_INCLUDE_DIR) -endif() +unset(_osg_component_founds) set(OPENSCENEGRAPH_INCLUDE_DIRS ${OPENSCENEGRAPH_INCLUDE_DIR}) diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index b9440a8..6a1d349 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -146,7 +146,7 @@ if (PostgreSQL_INCLUDE_DIR AND EXISTS "${PostgreSQL_INCLUDE_DIR}/pg_config.h") endif() # Did we find anything? -include(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) find_package_handle_standard_args(PostgreSQL REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR VERSION_VAR PostgreSQL_VERSION_STRING) diff --git a/Modules/FindQt.cmake b/Modules/FindQt.cmake index eeeaf59..13f18fe 100644 --- a/Modules/FindQt.cmake +++ b/Modules/FindQt.cmake @@ -1,7 +1,7 @@ -# - Searches for all installed versions of QT. +# - Searches for all installed versions of Qt. # This should only be used if your project can work with multiple -# versions of QT. If not, you should just directly use FindQt4 or FindQt3. -# If multiple versions of QT are found on the machine, then +# versions of Qt. If not, you should just directly use FindQt4 or FindQt3. +# If multiple versions of Qt are found on the machine, then # The user must set the option DESIRED_QT_VERSION to the version # they want to use. If only one version of qt is found on the machine, # then the DESIRED_QT_VERSION is set to that version and the @@ -10,7 +10,7 @@ # is included. # # QT_REQUIRED if this is set to TRUE then if CMake can -# not find QT4 or QT3 an error is raised +# not find Qt4 or Qt3 an error is raised # and a message is sent to the user. # # DESIRED_QT_VERSION OPTION is created @@ -62,7 +62,7 @@ if(QT_QMAKE_EXECUTABLE_FINDQT) exec_program(${QT_QMAKE_EXECUTABLE_FINDQT} ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION) if(QTVERSION MATCHES "4.*") - set(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "QT4 qmake program.") + set(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt4 qmake program.") set(QT4_INSTALLED TRUE) endif() if(QTVERSION MATCHES "Unknown") @@ -115,14 +115,14 @@ endif() if(QT3_INSTALLED AND QT4_INSTALLED ) # force user to pick if we have both - set(DESIRED_QT_VERSION 0 CACHE STRING "Pick a version of QT to use: 3 or 4") + set(DESIRED_QT_VERSION 0 CACHE STRING "Pick a version of Qt to use: 3 or 4") else() # if only one found then pick that one if(QT3_INSTALLED) - set(DESIRED_QT_VERSION 3 CACHE STRING "Pick a version of QT to use: 3 or 4") + set(DESIRED_QT_VERSION 3 CACHE STRING "Pick a version of Qt to use: 3 or 4") endif() if(QT4_INSTALLED) - set(DESIRED_QT_VERSION 4 CACHE STRING "Pick a version of QT to use: 3 or 4") + set(DESIRED_QT_VERSION 4 CACHE STRING "Pick a version of Qt to use: 3 or 4") endif() endif() @@ -139,21 +139,21 @@ endif() if(NOT QT3_INSTALLED AND NOT QT4_INSTALLED) if(QT_REQUIRED) - message(SEND_ERROR "CMake was unable to find any QT versions, put qmake in your path, or set QT_QMAKE_EXECUTABLE.") + message(SEND_ERROR "CMake was unable to find any Qt versions, put qmake in your path, or set QT_QMAKE_EXECUTABLE.") endif() else() if(NOT QT_FOUND AND NOT DESIRED_QT_VERSION) if(QT_REQUIRED) - message(SEND_ERROR "Multiple versions of QT found please set DESIRED_QT_VERSION") + message(SEND_ERROR "Multiple versions of Qt found please set DESIRED_QT_VERSION") else() - message("Multiple versions of QT found please set DESIRED_QT_VERSION") + message("Multiple versions of Qt found please set DESIRED_QT_VERSION") endif() endif() if(NOT QT_FOUND AND DESIRED_QT_VERSION) if(QT_REQUIRED) - message(FATAL_ERROR "CMake was unable to find QT version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_FILE, if those are set then QT_QT_LIBRARY or QT_LIBRARY_DIR.") + message(FATAL_ERROR "CMake was unable to find Qt version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_FILE, if those are set then QT_QT_LIBRARY or QT_LIBRARY_DIR.") else() - message( "CMake was unable to find desired QT version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_FILE.") + message( "CMake was unable to find desired Qt version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_FILE.") endif() endif() endif() diff --git a/Modules/FindQt3.cmake b/Modules/FindQt3.cmake index 0665063..07b6fef 100644 --- a/Modules/FindQt3.cmake +++ b/Modules/FindQt3.cmake @@ -144,7 +144,7 @@ find_library(QT_QASSISTANTCLIENT_LIBRARY lib ) -# qt 3 should prefer QTDIR over the PATH +# Qt 3 should prefer QTDIR over the PATH find_program(QT_MOC_EXECUTABLE NAMES moc-qt3 moc HINTS @@ -168,7 +168,7 @@ if(QT_MOC_EXECUTABLE) set ( QT_WRAP_CPP "YES") endif() -# qt 3 should prefer QTDIR over the PATH +# Qt 3 should prefer QTDIR over the PATH find_program(QT_UIC_EXECUTABLE NAMES uic-qt3 uic HINTS diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake index f133ae9..a84074b 100644 --- a/Modules/FindQt4.cmake +++ b/Modules/FindQt4.cmake @@ -1,4 +1,4 @@ -# - Find QT 4 +# - Find Qt 4 # This module can be used to find Qt4. # The most important issue is that the Qt4 qmake is available via the system path. # This qmake is then used to detect basically everything else. @@ -482,7 +482,7 @@ endmacro () function(_QT4_QUERY_QMAKE VAR RESULT) execute_process(COMMAND "${QT_QMAKE_EXECUTABLE}" -query ${VAR} RESULT_VARIABLE return_code - OUTPUT_VARIABLE output ERROR_VARIABLE output + OUTPUT_VARIABLE output OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE) if(NOT return_code) file(TO_CMAKE_PATH "${output}" output) @@ -885,6 +885,18 @@ if (QT_QMAKE_EXECUTABLE AND QTVERSION) NAMES ${QT_MODULE}${QT_LIBINFIX}_debug ${QT_MODULE}${QT_LIBINFIX}d ${QT_MODULE}${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH ) + if(QT_${_upper_qt_module}_LIBRARY_RELEASE MATCHES "/${QT_MODULE}\\.framework$") + if(NOT EXISTS "${QT_${_upper_qt_module}_LIBRARY_RELEASE}/${QT_MODULE}") + # Release framework library file does not exist... Force to NOTFOUND: + set(QT_${_upper_qt_module}_LIBRARY_RELEASE "QT_${_upper_qt_module}_LIBRARY_RELEASE-NOTFOUND" CACHE FILEPATH "Path to a library." FORCE) + endif() + endif() + if(QT_${_upper_qt_module}_LIBRARY_DEBUG MATCHES "/${QT_MODULE}\\.framework$") + if(NOT EXISTS "${QT_${_upper_qt_module}_LIBRARY_DEBUG}/${QT_MODULE}") + # Debug framework library file does not exist... Force to NOTFOUND: + set(QT_${_upper_qt_module}_LIBRARY_DEBUG "QT_${_upper_qt_module}_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "Path to a library." FORCE) + endif() + endif() endforeach() # QtUiTools is sometimes not in the same directory as the other found libraries diff --git a/Modules/FindSDL.cmake b/Modules/FindSDL.cmake index 487c5d3..adaec95 100644 --- a/Modules/FindSDL.cmake +++ b/Modules/FindSDL.cmake @@ -133,10 +133,12 @@ endif() if(SDL_LIBRARY_TEMP) # For SDLmain - if(NOT SDL_BUILDING_LIBRARY) - if(SDLMAIN_LIBRARY) - set(SDL_LIBRARY_TEMP ${SDLMAIN_LIBRARY} ${SDL_LIBRARY_TEMP}) + if(SDLMAIN_LIBRARY AND NOT SDL_BUILDING_LIBRARY) + list(FIND SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" _SDL_MAIN_INDEX) + if(_SDL_MAIN_INDEX EQUAL -1) + list(APPEND SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}") endif() + unset(_SDL_MAIN_INDEX) endif() # For OS X, SDL uses Cocoa as a backend so it must link to Cocoa. diff --git a/Modules/Platform/Windows-GNU.cmake b/Modules/Platform/Windows-GNU.cmake index 50ba80b..2bb7a20 100644 --- a/Modules/Platform/Windows-GNU.cmake +++ b/Modules/Platform/Windows-GNU.cmake @@ -57,6 +57,10 @@ if("${_help}" MATCHES "GNU ld .* 2\\.1[1-6]") set(__WINDOWS_GNU_LD_RESPONSE 0) endif() +if(NOT CMAKE_GENERATOR_RC AND CMAKE_GENERATOR MATCHES "Unix Makefiles") + set(CMAKE_GENERATOR_RC windres) +endif() + enable_language(RC) macro(__windows_compiler_gnu lang) diff --git a/Modules/Platform/Windows-Intel.cmake b/Modules/Platform/Windows-Intel.cmake index 3370557..3a30a2e 100644 --- a/Modules/Platform/Windows-Intel.cmake +++ b/Modules/Platform/Windows-Intel.cmake @@ -61,7 +61,7 @@ set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT}) set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT}) set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT}) -include("${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake" OPTIONAL) +include("${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake" OPTIONAL) if(NOT _INTEL_XILINK_TEST_RUN) execute_process(COMMAND xilink /? @@ -70,8 +70,8 @@ if(NOT _INTEL_XILINK_TEST_RUN) if(_XILINK_HELP MATCHES MANIFEST) set(_INTEL_COMPILER_SUPPORTS_MANIFEST 1) endif() - if(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake") - file(WRITE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake + if(NOT EXISTS "${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake") + file(WRITE ${CMAKE_PLATFORM_INFO_DIR}/CMakeIntelInformation.cmake " set(_INTEL_XILINK_TEST_RUN 1) set(_INTEL_COMPILER_SUPPORTS_MANIFEST ${_INTEL_COMPILER_SUPPORTS_MANIFEST}) diff --git a/Modules/Platform/Windows-MSVC-C.cmake b/Modules/Platform/Windows-MSVC-C.cmake new file mode 100644 index 0000000..e81df9f --- /dev/null +++ b/Modules/Platform/Windows-MSVC-C.cmake @@ -0,0 +1,2 @@ +include(Platform/Windows-MSVC) +__windows_compiler_msvc(C) diff --git a/Modules/Platform/Windows-MSVC-CXX.cmake b/Modules/Platform/Windows-MSVC-CXX.cmake new file mode 100644 index 0000000..fdd1dae --- /dev/null +++ b/Modules/Platform/Windows-MSVC-CXX.cmake @@ -0,0 +1,3 @@ +include(Platform/Windows-MSVC) +set(_COMPILE_CXX " /TP") +__windows_compiler_msvc(CXX) diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake new file mode 100644 index 0000000..cc48cfe --- /dev/null +++ b/Modules/Platform/Windows-MSVC.cmake @@ -0,0 +1,240 @@ + +#============================================================================= +# Copyright 2001-2012 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +# This module is shared by multiple languages; use include blocker. +if(__WINDOWS_MSVC) + return() +endif() +set(__WINDOWS_MSVC 1) + +set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:") +set(CMAKE_LINK_LIBRARY_FLAG "") +set(MSVC 1) + +# hack: if a new cmake (which uses CMAKE__LINKER) runs on an old build tree +# (where link was hardcoded) and where CMAKE_LINKER isn't in the cache +# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun) +# hardcode CMAKE_LINKER here to link, so it behaves as it did before, Alex +if(NOT DEFINED CMAKE_LINKER) + set(CMAKE_LINKER link) +endif() + +if(CMAKE_VERBOSE_MAKEFILE) + set(CMAKE_CL_NOLOGO) +else() + set(CMAKE_CL_NOLOGO "/nologo") +endif() + +set(WIN32 1) + +if(CMAKE_SYSTEM_NAME MATCHES "WindowsCE") + set(CMAKE_CREATE_WIN32_EXE "/subsystem:windowsce /entry:WinMainCRTStartup") + set(CMAKE_CREATE_CONSOLE_EXE "/subsystem:windowsce /entry:mainACRTStartup") +else() + set(CMAKE_CREATE_WIN32_EXE "/subsystem:windows") + set(CMAKE_CREATE_CONSOLE_EXE "/subsystem:console") +endif() + +if(CMAKE_GENERATOR MATCHES "Visual Studio 6") + set (CMAKE_NO_BUILD_TYPE 1) +endif() +if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio") + set (CMAKE_NO_BUILD_TYPE 1) + set (CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo" CACHE STRING + "Semicolon separated list of supported configuration types, only supports Debug, Release, MinSizeRel, and RelWithDebInfo, anything else will be ignored.") + mark_as_advanced(CMAKE_CONFIGURATION_TYPES) +endif() + +# make sure to enable languages after setting configuration types +enable_language(RC) +set(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>") + +if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + set(MSVC_IDE 1) +else() + set(MSVC_IDE 0) +endif() + +if(NOT MSVC_VERSION) + if(CMAKE_C_COMPILER_VERSION) + set(_compiler_version ${CMAKE_C_COMPILER_VERSION}) + else() + set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION}) + endif() + if("${_compiler_version}" MATCHES "^([0-9]+)\\.([0-9]+)") + math(EXPR MSVC_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}") + else() + message(FATAL_ERROR "MSVC compiler version not detected properly: ${_compiler_version}") + endif() + + set(MSVC10) + set(MSVC11) + set(MSVC60) + set(MSVC70) + set(MSVC71) + set(MSVC80) + set(MSVC90) + set(CMAKE_COMPILER_2005) + set(CMAKE_COMPILER_SUPPORTS_PDBTYPE) + if(NOT "${_compiler_version}" VERSION_LESS 17) + set(MSVC11 1) + elseif(NOT "${_compiler_version}" VERSION_LESS 16) + set(MSVC10 1) + elseif(NOT "${_compiler_version}" VERSION_LESS 15) + set(MSVC90 1) + elseif(NOT "${_compiler_version}" VERSION_LESS 14) + set(MSVC80 1) + set(CMAKE_COMPILER_2005 1) + elseif(NOT "${_compiler_version}" VERSION_LESS 13.10) + set(MSVC71 1) + elseif(NOT "${_compiler_version}" VERSION_LESS 13) + set(MSVC70 1) + else() + set(MSVC60 1) + set(CMAKE_COMPILER_SUPPORTS_PDBTYPE 1) + endif() +endif() + +if(MSVC_C_ARCHITECTURE_ID MATCHES 64) + set(CMAKE_CL_64 1) +else() + set(CMAKE_CL_64 0) +endif() +if(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64) + set(CMAKE_CL_64 1) +endif() + +if("${MSVC_VERSION}" GREATER 1599) + set(MSVC_INCREMENTAL_DEFAULT ON) +endif() + +# default to Debug builds +set(CMAKE_BUILD_TYPE_INIT Debug) + +if(CMAKE_SYSTEM_NAME MATCHES "WindowsCE") + string(TOUPPER "${MSVC_C_ARCHITECTURE_ID}" _MSVC_C_ARCHITECTURE_ID_UPPER) + string(TOUPPER "${MSVC_CXX_ARCHITECTURE_ID}" _MSVC_CXX_ARCHITECTURE_ID_UPPER) + + if("${CMAKE_SYSTEM_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)") + math(EXPR _CE_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}") + elseif("${CMAKE_SYSTEM_VERSION}" STREQUAL "") + set(_CE_VERSION "500") + else() + message(FATAL_ERROR "Invalid Windows CE version: ${CMAKE_SYSTEM_VERSION}") + endif() + + set(_PLATFORM_DEFINES "/D_WIN32_WCE=0x${_CE_VERSION} /DUNDER_CE") + set(_PLATFORM_DEFINES_C " /D${MSVC_C_ARCHITECTURE_ID} /D_${_MSVC_C_ARCHITECTURE_ID_UPPER}_") + set(_PLATFORM_DEFINES_CXX " /D${MSVC_CXX_ARCHITECTURE_ID} /D_${_MSVC_CXX_ARCHITECTURE_ID_UPPER}_") + + set(_RTC1 "") + set(_FLAGS_CXX " /GR /EHsc") + set(CMAKE_C_STANDARD_LIBRARIES_INIT "coredll.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib") + set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} /NODEFAULTLIB:libc.lib /NODEFAULTLIB:oldnames.lib") +else() + set(_PLATFORM_DEFINES "/DWIN32") + + if(MSVC_VERSION GREATER 1310) + set(_RTC1 "/RTC1") + set(_FLAGS_CXX " /GR /EHsc") + set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib") + else() + set(_RTC1 "/GZ") + set(_FLAGS_CXX " /GR /GX") + set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib") + endif() +endif() + +set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") + +# executable linker flags +set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:") +# set the stack size and the machine type +set(_MACHINE_ARCH_FLAG ${MSVC_C_ARCHITECTURE_ID}) +if(NOT _MACHINE_ARCH_FLAG) + set(_MACHINE_ARCH_FLAG ${MSVC_CXX_ARCHITECTURE_ID}) +endif() +if(CMAKE_SYSTEM_NAME MATCHES "WindowsCE") + if(_MACHINE_ARCH_FLAG MATCHES "ARM") + set(_MACHINE_ARCH_FLAG "THUMB") + elseif(_MACHINE_ARCH_FLAG MATCHES "SH") + set(_MACHINE_ARCH_FLAG "SH4") + endif() +endif() +set (CMAKE_EXE_LINKER_FLAGS_INIT + "${CMAKE_EXE_LINKER_FLAGS_INIT} /STACK:10000000 /machine:${_MACHINE_ARCH_FLAG}") + +# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype +# on versions that support it +set( MSVC_INCREMENTAL_YES_FLAG "") +if(NOT MSVC_INCREMENTAL_DEFAULT) + set( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:YES") +else() + set( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL" ) +endif() + +if (CMAKE_COMPILER_SUPPORTS_PDBTYPE) + set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}") + set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}") +else () + set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug ${MSVC_INCREMENTAL_YES_FLAG}") + set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug ${MSVC_INCREMENTAL_YES_FLAG}") +endif () +# for release and minsize release default to no incremental linking +set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT "/INCREMENTAL:NO") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT "/INCREMENTAL:NO") + +# copy the EXE_LINKER flags to SHARED and MODULE linker flags +# shared linker flags +set (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT}) +set (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT}) +set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT}) +set (CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT ${CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT}) +set (CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL_INIT ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT}) +# module linker flags +set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT}) +set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT}) +set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT}) +set (CMAKE_MODULE_LINKER_FLAGS_RELEASE_INIT ${CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT}) +set (CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL_INIT ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT}) + +macro(__windows_compiler_msvc lang) + if(NOT "${CMAKE_${lang}_COMPILER_VERSION}" VERSION_LESS 14) + # for 2005 make sure the manifest is put in the dll with mt + set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll ") + set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe ") + endif() + set(CMAKE_${lang}_CREATE_SHARED_LIBRARY + "${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_FLAGS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}") + + set(CMAKE_${lang}_CREATE_SHARED_MODULE ${CMAKE_${lang}_CREATE_SHARED_LIBRARY}) + set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_LINKER> /lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ") + + set(CMAKE_${lang}_COMPILE_OBJECT + "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> /Fo<OBJECT> /Fd<TARGET_PDB> -c <SOURCE>${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE + "<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> -E <SOURCE>${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE + "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> /FoNUL /FAs /Fa<ASSEMBLY_SOURCE> /c <SOURCE>${CMAKE_END_TEMP_FILE}") + + set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1) + set(CMAKE_${lang}_LINK_EXECUTABLE + "${_CMAKE_VS_LINK_EXE}<CMAKE_${lang}_COMPILER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} <FLAGS> /Fe<TARGET> /Fd<TARGET_PDB> -link /implib:<TARGET_IMPLIB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}") + + set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS /W3 /Zm1000${_FLAGS_${lang}}") + set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od ${_RTC1}") + set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") + set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") + set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG") +endmacro() diff --git a/Modules/Platform/Windows-cl.cmake b/Modules/Platform/Windows-cl.cmake deleted file mode 100644 index 05df946..0000000 --- a/Modules/Platform/Windows-cl.cmake +++ /dev/null @@ -1,253 +0,0 @@ -# try to load any previously computed information for C on this platform -include( ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCPlatform.cmake OPTIONAL) -# try to load any previously computed information for CXX on this platform -include( ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake OPTIONAL) - -set(WIN32 1) - -include(Platform/cl) - -set(CMAKE_CREATE_WIN32_EXE /subsystem:windows) -set(CMAKE_CREATE_CONSOLE_EXE /subsystem:console) - -if(CMAKE_GENERATOR MATCHES "Visual Studio 6") - set (CMAKE_NO_BUILD_TYPE 1) -endif() -if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio") - set (CMAKE_NO_BUILD_TYPE 1) - set (CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo" CACHE STRING - "Semicolon separated list of supported configuration types, only supports Debug, Release, MinSizeRel, and RelWithDebInfo, anything else will be ignored.") - mark_as_advanced(CMAKE_CONFIGURATION_TYPES) -endif() -# does the compiler support pdbtype and is it the newer compiler -if(CMAKE_GENERATOR MATCHES "Visual Studio 8") - set(CMAKE_COMPILER_2005 1) -endif() - -# make sure to enable languages after setting configuration types -enable_language(RC) -set(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>") - -# for nmake we need to compute some information about the compiler -# that is being used. -# the compiler may be free command line, 6, 7, or 71, and -# each have properties that must be determined. -# to avoid running these tests with each cmake run, the -# test results are saved in CMakeCPlatform.cmake, a file -# that is automatically copied into try_compile directories -# by the global generator. -set(MSVC_IDE 1) -if(CMAKE_GENERATOR MATCHES "Makefiles" OR CMAKE_GENERATOR MATCHES "Ninja") - set(MSVC_IDE 0) - if(NOT CMAKE_VC_COMPILER_TESTS_RUN) - set(CMAKE_VC_COMPILER_TESTS 1) - set(testNmakeCLVersionFile - "${CMAKE_ROOT}/Modules/CMakeTestNMakeCLVersion.c") - string(REGEX REPLACE "/" "\\\\" testNmakeCLVersionFile "${testNmakeCLVersionFile}") - message(STATUS "Check for CL compiler version") - set(CMAKE_TEST_COMPILER ${CMAKE_C_COMPILER}) - if (NOT CMAKE_C_COMPILER) - set(CMAKE_TEST_COMPILER ${CMAKE_CXX_COMPILER}) - endif() - exec_program(${CMAKE_TEST_COMPILER} - ARGS /nologo -EP \"${testNmakeCLVersionFile}\" - OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT - RETURN_VALUE CMAKE_COMPILER_RETURN - ) - if(NOT CMAKE_COMPILER_RETURN) - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining the version of compiler passed with the following output:\n" - "${CMAKE_COMPILER_OUTPUT}\n\n") - string(REGEX REPLACE "\n" " " compilerVersion "${CMAKE_COMPILER_OUTPUT}") - string(REGEX REPLACE ".*VERSION=(.*)" "\\1" - compilerVersion "${compilerVersion}") - message(STATUS "Check for CL compiler version - ${compilerVersion}") - set(MSVC60) - set(MSVC70) - set(MSVC71) - set(MSVC80) - set(CMAKE_COMPILER_2005) - if("${compilerVersion}" LESS 1300) - set(MSVC60 1) - set(CMAKE_COMPILER_SUPPORTS_PDBTYPE 1) - endif() - if("${compilerVersion}" EQUAL 1300) - set(MSVC70 1) - set(CMAKE_COMPILER_SUPPORTS_PDBTYPE 0) - endif() - if("${compilerVersion}" EQUAL 1310) - set(MSVC71 1) - set(CMAKE_COMPILER_SUPPORTS_PDBTYPE 0) - endif() - if("${compilerVersion}" EQUAL 1400) - set(MSVC80 1) - set(CMAKE_COMPILER_2005 1) - endif() - if("${compilerVersion}" EQUAL 1500) - set(MSVC90 1) - endif() - if("${compilerVersion}" EQUAL 1600) - set(MSVC10 1) - endif() - set(MSVC_VERSION "${compilerVersion}") - else() - message(STATUS "Check for CL compiler version - failed") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining the version of compiler failed with the following output:\n" - "${CMAKE_COMPILER_OUTPUT}\n\n") - endif() - # try to figure out if we are running the free command line - # tools from Microsoft. These tools do not provide debug libraries, - # so the link flags used have to be different. - make_directory("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp2") - set(testForFreeVCFile - "${CMAKE_ROOT}/Modules/CMakeTestForFreeVC.cxx") - string(REGEX REPLACE "/" "\\\\" testForFreeVCFile "${testForFreeVCFile}") - message(STATUS "Check if this is a free VC compiler") - exec_program(${CMAKE_TEST_COMPILER} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp2 - ARGS /nologo /MD /EHsc - \"${testForFreeVCFile}\" - OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT - RETURN_VALUE CMAKE_COMPILER_RETURN - ) - if(CMAKE_COMPILER_RETURN) - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if this is a free VC compiler failed with the following output:\n" - "${CMAKE_COMPILER_OUTPUT}\n\n") - message(STATUS "Check if this is a free VC compiler - yes") - set(CMAKE_USING_VC_FREE_TOOLS 1) - else() - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining if this is a free VC compiler passed with the following output:\n" - "${CMAKE_COMPILER_OUTPUT}\n\n") - message(STATUS "Check if this is a free VC compiler - no") - set(CMAKE_USING_VC_FREE_TOOLS 0) - endif() - make_directory("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp3") - endif() -endif() - -if(MSVC_C_ARCHITECTURE_ID MATCHES 64) - set(CMAKE_CL_64 1) -else() - set(CMAKE_CL_64 0) -endif() -if(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64) - set(CMAKE_CL_64 1) -endif() - -if("${MSVC_VERSION}" GREATER 1599) - set(MSVC_INCREMENTAL_DEFAULT ON) -endif() - -# default to Debug builds -if(MSVC_VERSION GREATER 1310) - # for 2005 make sure the manifest is put in the dll with mt - set(CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_LIBRARY}") - set(CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_MODULE}") - # create a C shared library - set(CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") - # create a C shared module just copy the shared library rule - set(CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}") - set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_CXX_LINK_EXECUTABLE}") - set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_C_LINK_EXECUTABLE}") - - set(CMAKE_BUILD_TYPE_INIT Debug) - set (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc /GR") - set (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1") - set (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG") - set (CMAKE_CXX_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") - set (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") - set (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") - set (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1") - set (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG") - set (CMAKE_C_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") - set (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") - set (CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ") - set (CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT}") -else() - if(CMAKE_USING_VC_FREE_TOOLS) - message(STATUS "Using FREE VC TOOLS, NO DEBUG available") - set(CMAKE_BUILD_TYPE_INIT Release) - set (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /GX /GR") - set (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ") - set (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") - set (CMAKE_CXX_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") - set (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") - set (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") - set (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ") - set (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") - set (CMAKE_C_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") - set (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") - else() - set(CMAKE_BUILD_TYPE_INIT Debug) - set (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /GX /GR") - set (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od /GZ") - set (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG") - set (CMAKE_CXX_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") - set (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") - set (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") - set (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od /GZ") - set (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG") - set (CMAKE_C_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") - set (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") - endif() - set (CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib") -endif() - -set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") - -# executable linker flags -set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:") -# set the stack size and the machine type -set(_MACHINE_ARCH_FLAG ${MSVC_C_ARCHITECTURE_ID}) -if(NOT _MACHINE_ARCH_FLAG) - set(_MACHINE_ARCH_FLAG ${MSVC_CXX_ARCHITECTURE_ID}) -endif() -set (CMAKE_EXE_LINKER_FLAGS_INIT - "${CMAKE_EXE_LINKER_FLAGS_INIT} /STACK:10000000 /machine:${_MACHINE_ARCH_FLAG}") - -# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype -# on versions that support it -set( MSVC_INCREMENTAL_YES_FLAG "") -if(NOT MSVC_INCREMENTAL_DEFAULT) - set( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:YES") -else() - set( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL" ) -endif() - -if (CMAKE_COMPILER_SUPPORTS_PDBTYPE) - set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}") - set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}") -else () - set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug ${MSVC_INCREMENTAL_YES_FLAG}") - set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug ${MSVC_INCREMENTAL_YES_FLAG}") -endif () -# for release and minsize release default to no incremental linking -set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT "/INCREMENTAL:NO") -set(CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT "/INCREMENTAL:NO") - -# copy the EXE_LINKER flags to SHARED and MODULE linker flags -# shared linker flags -set (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT}) -set (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT}) -set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT}) -set (CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT ${CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT}) -set (CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL_INIT ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT}) -# module linker flags -set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT}) -set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT}) -set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT}) -set (CMAKE_MODULE_LINKER_FLAGS_RELEASE_INIT ${CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT}) -set (CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL_INIT ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT}) - -# save computed information for this platform -if(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeCPlatform.cmake") - configure_file(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCPlatform.cmake IMMEDIATE) -endif() - -if(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake") - configure_file(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCXXPlatform.cmake IMMEDIATE) -endif() diff --git a/Modules/Platform/Windows-cl.cmake.in b/Modules/Platform/Windows-cl.cmake.in deleted file mode 100644 index 4f3ec3e..0000000 --- a/Modules/Platform/Windows-cl.cmake.in +++ /dev/null @@ -1,14 +0,0 @@ -set(CMAKE_VC_COMPILER_TESTS_RUN 1) -set(CMAKE_COMPILER_SUPPORTS_PDBTYPE @CMAKE_COMPILER_SUPPORTS_PDBTYPE@) -set(CMAKE_COMPILER_2005 @CMAKE_COMPILER_2005@) -set(CMAKE_USING_VC_FREE_TOOLS @CMAKE_USING_VC_FREE_TOOLS@) -set(CMAKE_CL_64 @CMAKE_CL_64@) -set(MSVC60 @MSVC60@) -set(MSVC70 @MSVC70@) -set(MSVC71 @MSVC71@) -set(MSVC80 @MSVC80@) -set(MSVC90 @MSVC90@) -set(MSVC10 @MSVC10@) -set(MSVC_IDE @MSVC_IDE@) -set(MSVC_VERSION @MSVC_VERSION@) -set(WIN32 1) diff --git a/Modules/Platform/WindowsCE-MSVC-C.cmake b/Modules/Platform/WindowsCE-MSVC-C.cmake new file mode 100644 index 0000000..ce8060b --- /dev/null +++ b/Modules/Platform/WindowsCE-MSVC-C.cmake @@ -0,0 +1 @@ +include(Platform/Windows-MSVC-C) diff --git a/Modules/Platform/WindowsCE-MSVC-CXX.cmake b/Modules/Platform/WindowsCE-MSVC-CXX.cmake new file mode 100644 index 0000000..281eadc --- /dev/null +++ b/Modules/Platform/WindowsCE-MSVC-CXX.cmake @@ -0,0 +1 @@ +include(Platform/Windows-MSVC-CXX) diff --git a/Modules/Platform/WindowsCE-MSVC.cmake b/Modules/Platform/WindowsCE-MSVC.cmake new file mode 100644 index 0000000..d28b4ab --- /dev/null +++ b/Modules/Platform/WindowsCE-MSVC.cmake @@ -0,0 +1 @@ +include(Platform/Windows-MSVC) diff --git a/Modules/Platform/WindowsCE.cmake b/Modules/Platform/WindowsCE.cmake new file mode 100644 index 0000000..65b2eae --- /dev/null +++ b/Modules/Platform/WindowsCE.cmake @@ -0,0 +1 @@ +include(Platform/Windows) diff --git a/Modules/Platform/cl.cmake b/Modules/Platform/cl.cmake deleted file mode 100644 index 9e4d607..0000000 --- a/Modules/Platform/cl.cmake +++ /dev/null @@ -1,62 +0,0 @@ -set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:") -set(CMAKE_LINK_LIBRARY_FLAG "") -set(MSVC 1) - -# hack: if a new cmake (which uses CMAKE__LINKER) runs on an old build tree -# (where link was hardcoded) and where CMAKE_LINKER isn't in the cache -# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun) -# hardcode CMAKE_LINKER here to link, so it behaves as it did before, Alex -if(NOT DEFINED CMAKE_LINKER) - set(CMAKE_LINKER link) -endif() - -if(CMAKE_VERBOSE_MAKEFILE) - set(CMAKE_CL_NOLOGO) -else() - set(CMAKE_CL_NOLOGO "/nologo") -endif() -# create a shared C++ library -set(CMAKE_CXX_CREATE_SHARED_LIBRARY - "<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_FLAGS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}") -set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_LIBRARY}) - -# create a C shared library -set(CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") - -# create a C shared module -set(CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}") - -# create a C++ static library -set(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_LINKER> /lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ") - -# create a C static library -set(CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_CXX_CREATE_STATIC_LIBRARY}") - -# compile a C++ file into an object file -set(CMAKE_CXX_COMPILE_OBJECT - "<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> <DEFINES> /TP /Fo<OBJECT> /Fd<TARGET_PDB> -c <SOURCE>${CMAKE_END_TEMP_FILE}") - -# compile a C file into an object file -set(CMAKE_C_COMPILE_OBJECT - "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> <DEFINES> /Fo<OBJECT> /Fd<TARGET_PDB> -c <SOURCE>${CMAKE_END_TEMP_FILE}") - -set(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) -set(CMAKE_C_LINK_EXECUTABLE - "<CMAKE_C_COMPILER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} <FLAGS> /Fe<TARGET> /Fd<TARGET_PDB> -link /implib:<TARGET_IMPLIB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}") - -set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1) -set(CMAKE_CXX_LINK_EXECUTABLE - "<CMAKE_CXX_COMPILER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} <FLAGS> /Fe<TARGET> /Fd<TARGET_PDB> -link /implib:<TARGET_IMPLIB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}") - -set(CMAKE_C_CREATE_PREPROCESSED_SOURCE - "<CMAKE_C_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> <DEFINES> -E <SOURCE>${CMAKE_END_TEMP_FILE}") - -set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE - "<CMAKE_CXX_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> <DEFINES> /TP -E <SOURCE>${CMAKE_END_TEMP_FILE}") - -set(CMAKE_C_CREATE_ASSEMBLY_SOURCE - "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> /FAs /FoNUL /Fa<ASSEMBLY_SOURCE> /c <SOURCE>${CMAKE_END_TEMP_FILE}") - -set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE - "<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> /TP /FAs /FoNUL /Fa<ASSEMBLY_SOURCE> /c <SOURCE>${CMAKE_END_TEMP_FILE}") - diff --git a/Modules/Qt4Macros.cmake b/Modules/Qt4Macros.cmake index 7c9dc9e..251d57c 100644 --- a/Modules/Qt4Macros.cmake +++ b/Modules/Qt4Macros.cmake @@ -187,15 +187,17 @@ macro (QT4_ADD_RESOURCES outfiles ) if(EXISTS "${infile}") # parse file for dependencies # all files are absolute paths or relative to the location of the qrc file - file(STRINGS "${infile}" _RC_FILES REGEX "<file[^>]*>[^<]+") - foreach(_RC_FILE IN LISTS _RC_FILES) - string(REGEX REPLACE "^<file[^>]*>([^<]*)" "\\1" _RC_FILE "${_RC_FILE}") + file(READ "${infile}" _RC_FILE_CONTENTS) + string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}") + foreach(_RC_FILE ${_RC_FILES}) + string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}") if(NOT IS_ABSOLUTE "${_RC_FILE}") set(_RC_FILE "${rc_path}/${_RC_FILE}") endif() set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}") endforeach() unset(_RC_FILES) + unset(_RC_FILE_CONTENTS) # Since this cmake macro is doing the dependency scanning for these files, # let's make a configured file and add it as a dependency so cmake is run # again when dependencies need to be recomputed. diff --git a/Modules/SquishTestScript.cmake b/Modules/SquishTestScript.cmake index 5cdd212..d565305 100644 --- a/Modules/SquishTestScript.cmake +++ b/Modules/SquishTestScript.cmake @@ -44,7 +44,7 @@ foreach(i ${squish_env_vars}) endforeach() if (QT4_INSTALLED) - # record qt lib directory + # record Qt lib directory set ( ENV{${SQUISH_LIBQTDIR}} ${squish_libqtdir} ) endif () diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index e79689b..354f123 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -183,6 +183,12 @@ set(SRCS cmFileTimeComparison.cxx cmFileTimeComparison.h cmGeneratedFileStream.cxx + cmGeneratorExpressionEvaluator.cxx + cmGeneratorExpressionEvaluator.h + cmGeneratorExpressionLexer.cxx + cmGeneratorExpressionLexer.h + cmGeneratorExpressionParser.cxx + cmGeneratorExpressionParser.h cmGeneratorExpression.cxx cmGeneratorExpression.h cmGeneratorTarget.cxx @@ -548,7 +554,7 @@ endif() # Qt GUI option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE) if(BUILD_QtDialog) - subdirs(QtDialog) + add_subdirectory(QtDialog) endif() include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index cda0163..7b6af1e 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -2,5 +2,5 @@ set(CMake_VERSION_MAJOR 2) set(CMake_VERSION_MINOR 8) set(CMake_VERSION_PATCH 9) -set(CMake_VERSION_TWEAK 20120822) +set(CMake_VERSION_TWEAK 20120919) #set(CMake_VERSION_RC 1) diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx index fab9a8c..49cea2e 100644 --- a/Source/CTest/cmCTestSVN.cxx +++ b/Source/CTest/cmCTestSVN.cxx @@ -18,6 +18,11 @@ #include <cmsys/RegularExpression.hxx> +struct cmCTestSVN::Revision: public cmCTestVC::Revision +{ + cmCTestSVN::SVNInfo* SVNInfo; +}; + //---------------------------------------------------------------------------- cmCTestSVN::cmCTestSVN(cmCTest* ct, std::ostream& log): cmCTestGlobalVC(ct, log) @@ -44,8 +49,11 @@ void cmCTestSVN::CleanupImpl() class cmCTestSVN::InfoParser: public cmCTestVC::LineParser { public: - InfoParser(cmCTestSVN* svn, const char* prefix, std::string& rev): - SVN(svn), Rev(rev) + InfoParser(cmCTestSVN* svn, + const char* prefix, + std::string& rev, + SVNInfo& svninfo): + Rev(rev), SVNRepo(svninfo) { this->SetLog(&svn->Log, prefix); this->RegexRev.compile("^Revision: ([0-9]+)"); @@ -53,8 +61,8 @@ public: this->RegexRoot.compile("^Repository Root: +([^ ]+) *$"); } private: - cmCTestSVN* SVN; std::string& Rev; + cmCTestSVN::SVNInfo& SVNRepo; cmsys::RegularExpression RegexRev; cmsys::RegularExpression RegexURL; cmsys::RegularExpression RegexRoot; @@ -66,11 +74,11 @@ private: } else if(this->RegexURL.find(this->Line)) { - this->SVN->URL = this->RegexURL.match(1); + this->SVNRepo.URL = this->RegexURL.match(1); } else if(this->RegexRoot.find(this->Line)) { - this->SVN->Root = this->RegexRoot.match(1); + this->SVNRepo.Root = this->RegexRoot.match(1); } return true; } @@ -95,13 +103,13 @@ static bool cmCTestSVNPathStarts(std::string const& p1, std::string const& p2) } //---------------------------------------------------------------------------- -std::string cmCTestSVN::LoadInfo() +std::string cmCTestSVN::LoadInfo(SVNInfo& svninfo) { // Run "svn info" to get the repository info from the work tree. const char* svn = this->CommandLineTool.c_str(); - const char* svn_info[] = {svn, "info", 0}; + const char* svn_info[] = {svn, "info", svninfo.LocalPath.c_str(), 0}; std::string rev; - InfoParser out(this, "info-out> ", rev); + InfoParser out(this, "info-out> ", rev, svninfo); OutputLogger err(this->Log, "info-err> "); this->RunChild(svn_info, &out, &err); return rev; @@ -110,55 +118,94 @@ std::string cmCTestSVN::LoadInfo() //---------------------------------------------------------------------------- void cmCTestSVN::NoteOldRevision() { - this->OldRevision = this->LoadInfo(); - this->Log << "Revision before update: " << this->OldRevision << "\n"; - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Old revision of repository is: " - << this->OldRevision << "\n"); + // Info for root repository + this->Repositories.push_back( SVNInfo("") ); + this->RootInfo = &(this->Repositories.back()); + // Info for the external repositories + this->LoadExternals(); + + // Get info for all the repositories + std::list<SVNInfo>::iterator itbeg = this->Repositories.begin(); + std::list<SVNInfo>::iterator itend = this->Repositories.end(); + for( ; itbeg != itend ; itbeg++) + { + SVNInfo& svninfo = *itbeg; + svninfo.OldRevision = this->LoadInfo(svninfo); + this->Log << "Revision for repository '" << svninfo.LocalPath + << "' before update: " << svninfo.OldRevision << "\n"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Old revision of external repository '" + << svninfo.LocalPath << "' is: " + << svninfo.OldRevision << "\n"); + } + + // Set the global old revision to the one of the root + this->OldRevision = this->RootInfo->OldRevision; this->PriorRev.Rev = this->OldRevision; } //---------------------------------------------------------------------------- void cmCTestSVN::NoteNewRevision() { - this->NewRevision = this->LoadInfo(); - this->Log << "Revision after update: " << this->NewRevision << "\n"; - cmCTestLog(this->CTest, HANDLER_OUTPUT, " New revision of repository is: " - << this->NewRevision << "\n"); + // Get info for the external repositories + std::list<SVNInfo>::iterator itbeg = this->Repositories.begin(); + std::list<SVNInfo>::iterator itend = this->Repositories.end(); + for( ; itbeg != itend ; itbeg++) + { + SVNInfo& svninfo = *itbeg; + svninfo.NewRevision = this->LoadInfo(svninfo); + this->Log << "Revision for repository '" << svninfo.LocalPath + << "' after update: " << svninfo.NewRevision << "\n"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " New revision of external repository '" + << svninfo.LocalPath << "' is: " + << svninfo.NewRevision << "\n"); + + // svninfo.Root = ""; // uncomment to test GuessBase + this->Log << "Repository '" << svninfo.LocalPath + << "' URL = " << svninfo.URL << "\n"; + this->Log << "Repository '" << svninfo.LocalPath + << "' Root = " << svninfo.Root << "\n"; + + // Compute the base path the working tree has checked out under + // the repository root. + if(!svninfo.Root.empty() + && cmCTestSVNPathStarts(svninfo.URL, svninfo.Root)) + { + svninfo.Base = cmCTest::DecodeURL( + svninfo.URL.substr(svninfo.Root.size())); + svninfo.Base += "/"; + } + this->Log << "Repository '" << svninfo.LocalPath + << "' Base = " << svninfo.Base << "\n"; - // this->Root = ""; // uncomment to test GuessBase - this->Log << "URL = " << this->URL << "\n"; - this->Log << "Root = " << this->Root << "\n"; + } - // Compute the base path the working tree has checked out under - // the repository root. - if(!this->Root.empty() && cmCTestSVNPathStarts(this->URL, this->Root)) - { - this->Base = cmCTest::DecodeURL(this->URL.substr(this->Root.size())); - this->Base += "/"; - } - this->Log << "Base = " << this->Base << "\n"; + // Set the global new revision to the one of the root + this->NewRevision = this->RootInfo->NewRevision; } //---------------------------------------------------------------------------- -void cmCTestSVN::GuessBase(std::vector<Change> const& changes) +void cmCTestSVN::GuessBase(SVNInfo& svninfo, + std::vector<Change> const& changes) { // Subversion did not give us a good repository root so we need to // guess the base path from the URL and the paths in a revision with // changes under it. // Consider each possible URL suffix from longest to shortest. - for(std::string::size_type slash = this->URL.find('/'); - this->Base.empty() && slash != std::string::npos; - slash = this->URL.find('/', slash+1)) + for(std::string::size_type slash = svninfo.URL.find('/'); + svninfo.Base.empty() && slash != std::string::npos; + slash = svninfo.URL.find('/', slash+1)) { // If the URL suffix is a prefix of at least one path then it is the base. - std::string base = cmCTest::DecodeURL(this->URL.substr(slash)); + std::string base = cmCTest::DecodeURL(svninfo.URL.substr(slash)); for(std::vector<Change>::const_iterator ci = changes.begin(); - this->Base.empty() && ci != changes.end(); ++ci) + svninfo.Base.empty() && ci != changes.end(); ++ci) { if(cmCTestSVNPathStarts(ci->Path, base)) { - this->Base = base; + svninfo.Base = base; } } } @@ -167,25 +214,9 @@ void cmCTestSVN::GuessBase(std::vector<Change> const& changes) // base lie under its path. If no base was found then the working // tree must be a checkout of the entire repo and this will match // the leading slash in all paths. - this->Base += "/"; - - this->Log << "Guessed Base = " << this->Base << "\n"; -} + svninfo.Base += "/"; -//---------------------------------------------------------------------------- -const char* cmCTestSVN::LocalPath(std::string const& path) -{ - if(path.size() > this->Base.size() && - strncmp(path.c_str(), this->Base.c_str(), this->Base.size()) == 0) - { - // This path lies under the base, so return a relative path. - return path.c_str() + this->Base.size(); - } - else - { - // This path does not lie under the base, so ignore it. - return 0; - } + this->Log << "Guessed Base = " << svninfo.Base << "\n"; } //---------------------------------------------------------------------------- @@ -274,11 +305,13 @@ class cmCTestSVN::LogParser: public cmCTestVC::OutputLogger, private cmXMLParser { public: - LogParser(cmCTestSVN* svn, const char* prefix): - OutputLogger(svn->Log, prefix), SVN(svn) { this->InitializeParser(); } + LogParser(cmCTestSVN* svn, const char* prefix, SVNInfo& svninfo): + OutputLogger(svn->Log, prefix), SVN(svn), SVNRepo(svninfo) + { this->InitializeParser(); } ~LogParser() { this->CleanupParser(); } private: cmCTestSVN* SVN; + cmCTestSVN::SVNInfo& SVNRepo; typedef cmCTestSVN::Revision Revision; typedef cmCTestSVN::Change Change; @@ -300,6 +333,7 @@ private: if(strcmp(name, "logentry") == 0) { this->Rev = Revision(); + this->Rev.SVNInfo = &SVNRepo; if(const char* rev = this->FindAttribute(atts, "revision")) { this->Rev.Rev = rev; @@ -325,11 +359,13 @@ private: { if(strcmp(name, "logentry") == 0) { - this->SVN->DoRevision(this->Rev, this->Changes); + this->SVN->DoRevisionSVN(this->Rev, this->Changes); } else if(strcmp(name, "path") == 0 && !this->CData.empty()) { - this->CurChange.Path.assign(&this->CData[0], this->CData.size()); + std::string orig_path(&this->CData[0], this->CData.size()); + std::string new_path = SVNRepo.BuildLocalPath( orig_path ); + this->CurChange.Path.assign(new_path); this->Changes.push_back(this->CurChange); } else if(strcmp(name, "author") == 0 && !this->CData.empty()) @@ -356,36 +392,58 @@ private: //---------------------------------------------------------------------------- void cmCTestSVN::LoadRevisions() { + // Get revisions for all the external repositories + std::list<SVNInfo>::iterator itbeg = this->Repositories.begin(); + std::list<SVNInfo>::iterator itend = this->Repositories.end(); + for( ; itbeg != itend ; itbeg++) + { + SVNInfo& svninfo = *itbeg; + LoadRevisions(svninfo); + } +} + +//---------------------------------------------------------------------------- +void cmCTestSVN::LoadRevisions(SVNInfo &svninfo) +{ // We are interested in every revision included in the update. std::string revs; - if(atoi(this->OldRevision.c_str()) < atoi(this->NewRevision.c_str())) + if(atoi(svninfo.OldRevision.c_str()) < atoi(svninfo.NewRevision.c_str())) { - revs = "-r" + this->OldRevision + ":" + this->NewRevision; + revs = "-r" + svninfo.OldRevision + ":" + svninfo.NewRevision; } else { - revs = "-r" + this->NewRevision; + revs = "-r" + svninfo.NewRevision; } // Run "svn log" to get all global revisions of interest. const char* svn = this->CommandLineTool.c_str(); - const char* svn_log[] = {svn, "log", "--xml", "-v", revs.c_str(), 0}; + const char* svn_log[] = {svn, "log", "--xml", "-v", revs.c_str(), + svninfo.LocalPath.c_str(), 0}; { - LogParser out(this, "log-out> "); + LogParser out(this, "log-out> ", svninfo); OutputLogger err(this->Log, "log-err> "); this->RunChild(svn_log, &out, &err); } } //---------------------------------------------------------------------------- -void cmCTestSVN::DoRevision(Revision const& revision, - std::vector<Change> const& changes) +void cmCTestSVN::DoRevisionSVN(Revision const& revision, + std::vector<Change> const& changes) { // Guess the base checkout path from the changes if necessary. - if(this->Base.empty() && !changes.empty()) + if(this->RootInfo->Base.empty() && !changes.empty()) { - this->GuessBase(changes); + this->GuessBase(*this->RootInfo, changes); } + + // Ignore changes in the old revision for external repositories + if(revision.Rev == revision.SVNInfo->OldRevision + && revision.SVNInfo->LocalPath != "") + { + return; + } + this->cmCTestGlobalVC::DoRevision(revision, changes); } @@ -446,5 +504,81 @@ void cmCTestSVN::WriteXMLGlobal(std::ostream& xml) { this->cmCTestGlobalVC::WriteXMLGlobal(xml); - xml << "\t<SVNPath>" << this->Base << "</SVNPath>\n"; + xml << "\t<SVNPath>" << this->RootInfo->Base << "</SVNPath>\n"; +} + +//---------------------------------------------------------------------------- +class cmCTestSVN::ExternalParser: public cmCTestVC::LineParser +{ +public: + ExternalParser(cmCTestSVN* svn, const char* prefix): SVN(svn) + { + this->SetLog(&svn->Log, prefix); + this->RegexExternal.compile("^X..... +(.+)$"); + } +private: + cmCTestSVN* SVN; + cmsys::RegularExpression RegexExternal; + bool ProcessLine() + { + if(this->RegexExternal.find(this->Line)) + { + this->DoPath(this->RegexExternal.match(1)); + } + return true; + } + + void DoPath(std::string const& path) + { + // Get local path relative to the source directory + std::string local_path; + if(path.size() > this->SVN->SourceDirectory.size() && + strncmp(path.c_str(), this->SVN->SourceDirectory.c_str(), + this->SVN->SourceDirectory.size()) == 0) + { + local_path = path.c_str() + this->SVN->SourceDirectory.size() + 1; + } + else + { + local_path = path; + } + this->SVN->Repositories.push_back( SVNInfo(local_path.c_str()) ); + } +}; + +//---------------------------------------------------------------------------- +void cmCTestSVN::LoadExternals() +{ + // Run "svn status" to get the list of external repositories + const char* svn = this->CommandLineTool.c_str(); + const char* svn_status[] = {svn, "status", 0}; + ExternalParser out(this, "external-out> "); + OutputLogger err(this->Log, "external-err> "); + this->RunChild(svn_status, &out, &err); +} + +//---------------------------------------------------------------------------- +std::string cmCTestSVN::SVNInfo::BuildLocalPath(std::string const& path) const +{ + std::string local_path; + + // Add local path prefix if not empty + if (!this->LocalPath.empty()) + { + local_path += this->LocalPath; + local_path += "/"; + } + + // Add path with base prefix removed + if(path.size() > this->Base.size() && + strncmp(path.c_str(), this->Base.c_str(), this->Base.size()) == 0) + { + local_path += (path.c_str() + this->Base.size()); + } + else + { + local_path += path; + } + + return local_path; } diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h index f72c58f..56265d0 100644 --- a/Source/CTest/cmCTestSVN.h +++ b/Source/CTest/cmCTestSVN.h @@ -33,24 +33,50 @@ private: virtual void NoteNewRevision(); virtual bool UpdateImpl(); - // URL of repository directory checked out in the working tree. - std::string URL; + // Information about an SVN repository (root repository or external) + struct SVNInfo { - // URL of repository root directory. - std::string Root; + SVNInfo(const char* path) : LocalPath(path) {} + // Remove base from the filename + std::string BuildLocalPath(std::string const& path) const; - // Directory under repository root checked out in working tree. - std::string Base; + // LocalPath relative to the main source directory. + std::string LocalPath; - std::string LoadInfo(); + // URL of repository directory checked out in the working tree. + std::string URL; + + // URL of repository root directory. + std::string Root; + + // Directory under repository root checked out in working tree. + std::string Base; + + // Old and new repository revisions. + std::string OldRevision; + std::string NewRevision; + + }; + + // Extended revision structure to include info about external it refers to. + struct Revision; + + // Info of all the repositories (root, externals and nested ones). + std::list<SVNInfo> Repositories; + + // Pointer to the infos of the root repository. + SVNInfo* RootInfo; + + std::string LoadInfo(SVNInfo& svninfo); + void LoadExternals(); void LoadModifications(); void LoadRevisions(); + void LoadRevisions(SVNInfo& svninfo); - void GuessBase(std::vector<Change> const& changes); - const char* LocalPath(std::string const& path); + void GuessBase(SVNInfo &svninfo, std::vector<Change> const& changes); - void DoRevision(Revision const& revision, - std::vector<Change> const& changes); + void DoRevisionSVN(Revision const& revision, + std::vector<Change> const& changes); void WriteXMLGlobal(std::ostream& xml); @@ -59,10 +85,12 @@ private: class LogParser; class StatusParser; class UpdateParser; + class ExternalParser; friend class InfoParser; friend class LogParser; friend class StatusParser; friend class UpdateParser; + friend class ExternalParser; }; #endif diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt index 0969aea..a1ffa20 100644 --- a/Source/QtDialog/CMakeLists.txt +++ b/Source/QtDialog/CMakeLists.txt @@ -9,115 +9,129 @@ # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= -project(QtDialog) -set(QT_MIN_VERSION "4.4.0") -find_package(Qt4 REQUIRED) -if(NOT QT4_FOUND) - message(SEND_ERROR "Failed to find Qt 4.4 or greater.") +project(QtDialog) +find_package(Qt5Widgets QUIET) +if (Qt5Widgets_FOUND) + include_directories(${Qt5Widgets_INCLUDE_DIRS}) + add_definitions(${Qt5Widgets_DEFINITONS}) + macro(qt4_wrap_ui) + qt5_wrap_ui(${ARGN}) + endmacro() + macro(qt4_wrap_cpp) + qt5_wrap_cpp(${ARGN}) + endmacro() + macro(qt4_add_resources) + qt5_add_resources(${ARGN}) + endmacro() + set(QT_LIBRARIES ${Qt5Widgets_LIBRARIES}) else() + set(QT_MIN_VERSION "4.4.0") + find_package(Qt4 REQUIRED) + if(NOT QT4_FOUND) + message(SEND_ERROR "Failed to find Qt 4.4 or greater.") + return() + endif() include(${QT_USE_FILE}) - set(CMAKE_PACKAGE_QTGUI TRUE) - set(SRCS - AddCacheEntry.cxx - AddCacheEntry.h - CMakeSetup.cxx - CMakeSetupDialog.cxx - CMakeSetupDialog.h - FirstConfigure.cxx - FirstConfigure.h - QCMake.cxx - QCMake.h - QCMakeCacheView.cxx - QCMakeCacheView.h - QCMakeWidgets.cxx - QCMakeWidgets.h - QMacInstallDialog.cxx - QMacInstallDialog.h - ) - QT4_WRAP_UI(UI_SRCS - CMakeSetupDialog.ui - Compilers.ui - CrossCompiler.ui - AddCacheEntry.ui - MacInstallDialog.ui - ) - QT4_WRAP_CPP(MOC_SRCS - AddCacheEntry.h - Compilers.h - CMakeSetupDialog.h - FirstConfigure.h - QCMake.h - QCMakeCacheView.h - QCMakeWidgets.h - QMacInstallDialog.h - ) - QT4_ADD_RESOURCES(RC_SRCS CMakeSetup.qrc) +endif() - set(SRCS ${SRCS} ${UI_SRCS} ${MOC_SRCS} ${RC_SRCS}) - if(Q_WS_WIN) - set(SRCS ${SRCS} CMakeSetup.rc) - endif() - if(Q_WS_MAC) - set(SRCS ${SRCS} CMakeSetup.icns) - set(MACOSX_BUNDLE_ICON_FILE CMakeSetup.icns) - set_source_files_properties(CMakeSetup.icns PROPERTIES - MACOSX_PACKAGE_LOCATION Resources) - endif() +set(SRCS + AddCacheEntry.cxx + AddCacheEntry.h + CMakeSetup.cxx + CMakeSetupDialog.cxx + CMakeSetupDialog.h + FirstConfigure.cxx + FirstConfigure.h + QCMake.cxx + QCMake.h + QCMakeCacheView.cxx + QCMakeCacheView.h + QCMakeWidgets.cxx + QCMakeWidgets.h + QMacInstallDialog.cxx + QMacInstallDialog.h + ) +QT4_WRAP_UI(UI_SRCS + CMakeSetupDialog.ui + Compilers.ui + CrossCompiler.ui + AddCacheEntry.ui + MacInstallDialog.ui + ) +QT4_WRAP_CPP(MOC_SRCS + AddCacheEntry.h + Compilers.h + CMakeSetupDialog.h + FirstConfigure.h + QCMake.h + QCMakeCacheView.h + QCMakeWidgets.h + QMacInstallDialog.h + ) +QT4_ADD_RESOURCES(RC_SRCS CMakeSetup.qrc) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +set(SRCS ${SRCS} ${UI_SRCS} ${MOC_SRCS} ${RC_SRCS}) +if(WIN32) + set(SRCS ${SRCS} CMakeSetup.rc) +endif() +if(APPLE) + set(SRCS ${SRCS} CMakeSetup.icns) + set(MACOSX_BUNDLE_ICON_FILE CMakeSetup.icns) + set_source_files_properties(CMakeSetup.icns PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) +endif() - add_executable(cmake-gui WIN32 MACOSX_BUNDLE ${SRCS}) - target_link_libraries(cmake-gui CMakeLib ${QT_QTMAIN_LIBRARY} ${QT_LIBRARIES}) - if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) - if(APPLE) - set_target_properties(cmake-gui PROPERTIES - OUTPUT_NAME ${CMAKE_BUNDLE_NAME}) - endif() - set(CMAKE_INSTALL_DESTINATION_ARGS - BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}") - endif() +set(CMAKE_INCLUDE_CURRENT_DIR ON) - install(TARGETS cmake-gui RUNTIME DESTINATION bin ${CMAKE_INSTALL_DESTINATION_ARGS}) +add_executable(cmake-gui WIN32 MACOSX_BUNDLE ${SRCS}) +target_link_libraries(cmake-gui CMakeLib ${QT_QTMAIN_LIBRARY} ${QT_LIBRARIES}) - if(UNIX) - # install a desktop file so CMake appears in the application start menu - # with an icon - install(FILES CMake.desktop DESTINATION share/applications ) - install(FILES CMakeSetup32.png DESTINATION share/pixmaps ) - install(FILES cmakecache.xml DESTINATION share/mime/packages ) - endif() +if(APPLE) + set_target_properties(cmake-gui PROPERTIES + OUTPUT_NAME ${CMAKE_BUNDLE_NAME}) +endif() +set(CMAKE_INSTALL_DESTINATION_ARGS + BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}") - if(APPLE) - set(CMAKE_POSTFLIGHT_SCRIPT - "${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh") - set(CMAKE_POSTUPGRADE_SCRIPT - "${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh") - configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postflight.sh.in" - "${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh") - configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postupgrade.sh.in" - "${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh") - install(CODE "execute_process(COMMAND ln -s \"../MacOS/${CMAKE_BUNDLE_NAME}\" cmake-gui - WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin)") - endif() +install(TARGETS cmake-gui RUNTIME DESTINATION bin ${CMAKE_INSTALL_DESTINATION_ARGS}) - if(APPLE OR WIN32) - # install rules for including 3rd party libs such as Qt - # if a system Qt is used (e.g. installed in /usr/lib/), it will not be included in the installation - set(fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/cmake-gui${CMAKE_EXECUTABLE_SUFFIX}") - if(APPLE) - set(fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/MacOS/${CMAKE_BUNDLE_NAME}") - endif() - install(CODE " - include(\"${CMake_SOURCE_DIR}/Modules/BundleUtilities.cmake\") - set(BU_CHMOD_BUNDLE_ITEMS ON) - fixup_bundle(\"${fixup_exe}\" \"\" \"${QT_LIBRARY_DIR};${QT_BINARY_DIR}\") - ") - endif() +if(UNIX) + # install a desktop file so CMake appears in the application start menu + # with an icon + install(FILES CMake.desktop DESTINATION share/applications ) + install(FILES CMakeSetup32.png DESTINATION share/pixmaps ) + install(FILES cmakecache.xml DESTINATION share/mime/packages ) +endif() - configure_file("${QtDialog_SOURCE_DIR}/QtDialogCPack.cmake.in" - "${QtDialog_BINARY_DIR}/QtDialogCPack.cmake" @ONLY) +if(APPLE) + set(CMAKE_POSTFLIGHT_SCRIPT + "${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh") + set(CMAKE_POSTUPGRADE_SCRIPT + "${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh") + configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postflight.sh.in" + "${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh") + configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postupgrade.sh.in" + "${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh") + install(CODE "execute_process(COMMAND ln -s \"../MacOS/${CMAKE_BUNDLE_NAME}\" cmake-gui + WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin)") +endif() + +if(APPLE OR WIN32) + # install rules for including 3rd party libs such as Qt + # if a system Qt is used (e.g. installed in /usr/lib/), it will not be included in the installation + set(fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/cmake-gui${CMAKE_EXECUTABLE_SUFFIX}") + if(APPLE) + set(fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/MacOS/${CMAKE_BUNDLE_NAME}") + endif() + install(CODE " + include(\"${CMake_SOURCE_DIR}/Modules/BundleUtilities.cmake\") + set(BU_CHMOD_BUNDLE_ITEMS ON) + fixup_bundle(\"${fixup_exe}\" \"\" \"${QT_LIBRARY_DIR};${QT_BINARY_DIR}\") + ") endif() +set(CMAKE_PACKAGE_QTGUI TRUE) +configure_file("${QtDialog_SOURCE_DIR}/QtDialogCPack.cmake.in" + "${QtDialog_BINARY_DIR}/QtDialogCPack.cmake" @ONLY) diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index a2b1567..0d01181 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -348,7 +348,11 @@ void QCMake::interrupt() bool QCMake::interruptCallback(void* cd) { QCMake* self = reinterpret_cast<QCMake*>(cd); +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) return self->InterruptFlag; +#else + return self->InterruptFlag.load(); +#endif } void QCMake::progressCallback(const char* msg, float percent, void* cd) diff --git a/Source/cmAddLibraryCommand.h b/Source/cmAddLibraryCommand.h index b330e68..c144565 100644 --- a/Source/cmAddLibraryCommand.h +++ b/Source/cmAddLibraryCommand.h @@ -78,7 +78,9 @@ public: "functionality. " "If no type is given explicitly the type is STATIC or SHARED based " "on whether the current value of the variable BUILD_SHARED_LIBS is " - "true." + "true. " + "For SHARED and MODULE libraries the POSITION_INDEPENDENT_CODE " + "target property is set to TRUE automatically." "\n" "By default the library file will be created in the build tree " "directory corresponding to the source tree directory in which " diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index a650129..07df7d5 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -21,7 +21,7 @@ cmCustomCommandGenerator::cmCustomCommandGenerator( cmCustomCommand const& cc, const char* config, cmMakefile* mf): CC(cc), Config(config), Makefile(mf), LG(mf->GetLocalGenerator()), OldStyle(cc.GetEscapeOldStyle()), MakeVars(cc.GetEscapeAllowMakeVars()), - GE(new cmGeneratorExpression(mf, config, cc.GetBacktrace())) + GE(new cmGeneratorExpression(cc.GetBacktrace())) { } @@ -47,7 +47,7 @@ std::string cmCustomCommandGenerator::GetCommand(unsigned int c) const { return target->GetLocation(this->Config); } - return this->GE->Process(argv0); + return this->GE->Parse(argv0).Evaluate(this->Makefile, this->Config); } //---------------------------------------------------------------------------- @@ -58,7 +58,8 @@ cmCustomCommandGenerator cmCustomCommandLine const& commandLine = this->CC.GetCommandLines()[c]; for(unsigned int j=1;j < commandLine.size(); ++j) { - std::string arg = this->GE->Process(commandLine[j]); + std::string arg = this->GE->Parse(commandLine[j]).Evaluate(this->Makefile, + this->Config); cmd += " "; if(this->OldStyle) { diff --git a/Source/cmDepends.cxx b/Source/cmDepends.cxx index 545fe97..166a584 100644 --- a/Source/cmDepends.cxx +++ b/Source/cmDepends.cxx @@ -98,7 +98,7 @@ bool cmDepends::Check(const char *makeFile, const char *internalFile, // Check whether dependencies must be regenerated. bool okay = true; std::ifstream fin(internalFile); - if(!(fin && this->CheckDependencies(fin, validDeps))) + if(!(fin && this->CheckDependencies(fin, internalFile, validDeps))) { // Clear all dependencies so they will be regenerated. this->Clear(makeFile); @@ -143,6 +143,7 @@ bool cmDepends::WriteDependencies(const char*, const char*, //---------------------------------------------------------------------------- bool cmDepends::CheckDependencies(std::istream& internalDepends, + const char* internalDependsFileName, std::map<std::string, DependencyVector>& validDeps) { // Parse dependencies from the stream. If any dependee is missing @@ -186,8 +187,11 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends, } */ - // Dependencies must be regenerated if the dependee does not exist - // or if the depender exists and is older than the dependee. + // Dependencies must be regenerated + // * if the dependee does not exist + // * if the depender exists and is older than the dependee. + // * if the depender does not exist, but the dependee is newer than the + // depends file bool regenerate = false; const char* dependee = this->Dependee+1; const char* depender = this->Depender; @@ -211,24 +215,49 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends, cmSystemTools::Stdout(msg.str().c_str()); } } - else if(dependerExists) + else { - // The dependee and depender both exist. Compare file times. - int result = 0; - if((!this->FileComparison->FileTimeCompare(depender, dependee, - &result) || result < 0)) + if(dependerExists) { - // The depender is older than the dependee. - regenerate = true; + // The dependee and depender both exist. Compare file times. + int result = 0; + if((!this->FileComparison->FileTimeCompare(depender, dependee, + &result) || result < 0)) + { + // The depender is older than the dependee. + regenerate = true; - // Print verbose output. - if(this->Verbose) + // Print verbose output. + if(this->Verbose) + { + cmOStringStream msg; + msg << "Dependee \"" << dependee + << "\" is newer than depender \"" + << depender << "\"." << std::endl; + cmSystemTools::Stdout(msg.str().c_str()); + } + } + } + else + { + // The dependee exists, but the depender doesn't. Regenerate if the + // internalDepends file is older than the dependee. + int result = 0; + if((!this->FileComparison->FileTimeCompare(internalDependsFileName, + dependee, &result) || result < 0)) { - cmOStringStream msg; - msg << "Dependee \"" << dependee - << "\" is newer than depender \"" - << depender << "\"." << std::endl; - cmSystemTools::Stdout(msg.str().c_str()); + // The depends-file is older than the dependee. + regenerate = true; + + // Print verbose output. + if(this->Verbose) + { + cmOStringStream msg; + msg << "Dependee \"" << dependee + << "\" is newer than depends file \"" + << internalDependsFileName << "\"." << std::endl; + cmSystemTools::Stdout(msg.str().c_str()); + } } } } diff --git a/Source/cmDepends.h b/Source/cmDepends.h index 100e187..f7dc881 100644 --- a/Source/cmDepends.h +++ b/Source/cmDepends.h @@ -83,6 +83,7 @@ protected: // Return false if dependencies must be regenerated and true // otherwise. virtual bool CheckDependencies(std::istream& internalDepends, + const char* internalDependsFileName, std::map<std::string, DependencyVector>& validDeps); // Finalize the dependency information for the target. diff --git a/Source/cmDependsJava.cxx b/Source/cmDependsJava.cxx index 1d84914..ba0e8fb 100644 --- a/Source/cmDependsJava.cxx +++ b/Source/cmDependsJava.cxx @@ -38,7 +38,7 @@ bool cmDependsJava::WriteDependencies(const char *src, const char *, return true; } -bool cmDependsJava::CheckDependencies(std::istream&, +bool cmDependsJava::CheckDependencies(std::istream&, const char*, std::map<std::string, DependencyVector >&) { return true; diff --git a/Source/cmDependsJava.h b/Source/cmDependsJava.h index fe6fef5..bf7e234 100644 --- a/Source/cmDependsJava.h +++ b/Source/cmDependsJava.h @@ -32,7 +32,8 @@ protected: virtual bool WriteDependencies(const char *src, const char *file, std::ostream& makeDepends, std::ostream& internalDepends); virtual bool CheckDependencies(std::istream& internalDepends, - std::map<std::string, DependencyVector >& validDeps); + const char* internalDependsFileName, + std::map<std::string, DependencyVector>& validDeps); private: cmDependsJava(cmDependsJava const&); // Purposely not implemented. diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx index c2197f2..94cd5c2 100644 --- a/Source/cmDocumentVariables.cxx +++ b/Source/cmDocumentVariables.cxx @@ -283,6 +283,16 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "see CMAKE_BUILD_TOOL.",false, "Variables that Provide Information"); cm->DefineProperty + ("CMAKE_VS_PLATFORM_TOOLSET", cmProperty::VARIABLE, + "Visual Studio Platform Toolset name.", + "VS 10 and above use MSBuild under the hood and support multiple " + "compiler toolchains. " + "CMake may specify a toolset explicitly, such as \"v110\" for " + "VS 11 or \"Windows7.1SDK\" for 64-bit support in VS 10 Express. " + "CMake provides the name of the chosen toolset in this variable." + ,false, + "Variables that Provide Information"); + cm->DefineProperty ("CMAKE_MINOR_VERSION", cmProperty::VARIABLE, "The Minor version of cmake (i.e. the 4 in X.4.X).", "This specifies the minor version of the CMake" @@ -373,12 +383,6 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "into all executables and libraries.",false, "Variables that Provide Information"); cm->DefineProperty - ("CMAKE_USING_VC_FREE_TOOLS", cmProperty::VARIABLE, - "True if free visual studio tools being used.", - "This is set to true if the compiler is Visual " - "Studio free tools.",false, - "Variables that Provide Information"); - cm->DefineProperty ("CMAKE_VERBOSE_MAKEFILE", cmProperty::VARIABLE, "Create verbose makefiles if on.", "This variable defaults to false. You can set " @@ -841,9 +845,9 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Tell cmake to use MFC for an executable or dll.", "This can be set in a CMakeLists.txt file and will " "enable MFC in the application. It should be set " - "to 1 for static the static MFC library, and 2 for " - "the shared MFC library. This is used in visual " - "studio 6 and 7 project files. The CMakeSetup " + "to 1 for the static MFC library, and 2 for " + "the shared MFC library. This is used in Visual " + "Studio 6 and 7 project files. The CMakeSetup " "dialog used MFC and the CMakeLists.txt looks like this:\n" " add_definitions(-D_AFXDLL)\n" " set(CMAKE_MFC_FLAG 2)\n" @@ -1365,7 +1369,7 @@ void cmDocumentVariables::DefineVariables(cmake* cm) false, "Variables that Control the Build"); cm->DefineProperty - ("CMAKE_POSITION_INDEPENDENT_FLAGS", cmProperty::VARIABLE, + ("CMAKE_POSITION_INDEPENDENT_CODE", cmProperty::VARIABLE, "Default value for POSITION_INDEPENDENT_CODE of targets.", "This variable is used to initialize the " "POSITION_INDEPENDENT_CODE property on all the targets. " @@ -1395,8 +1399,30 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cm->DefineProperty ("CMAKE_<LANG>_COMPILER_ID", cmProperty::VARIABLE, - "An internal variable subject to change.", - "This is used in determining the compiler and is subject to change.", + "Compiler identification string.", + "A short string unique to the compiler vendor. " + "Possible values include:\n" + " Absoft = Absoft Fortran (absoft.com)\n" + " ADSP = Analog VisualDSP++ (analog.com)\n" + " Clang = LLVM Clang (clang.llvm.org)\n" + " Cray = Cray Compiler (cray.com)\n" + " Embarcadero, Borland = Embarcadero (embarcadero.com)\n" + " G95 = G95 Fortran (g95.org)\n" + " GNU = GNU Compiler Collection (gcc.gnu.org)\n" + " HP = Hewlett-Packard Compiler (hp.com)\n" + " Intel = Intel Compiler (intel.com)\n" + " MIPSpro = SGI MIPSpro (sgi.com)\n" + " MSVC = Microsoft Visual Studio (microsoft.com)\n" + " PGI = The Portland Group (pgroup.com)\n" + " PathScale = PathScale (pathscale.com)\n" + " SDCC = Small Device C Compiler (sdcc.sourceforge.net)\n" + " SunPro = Oracle Solaris Studio (oracle.com)\n" + " TI_DSP = Texas Instruments (ti.com)\n" + " TinyCC = Tiny C Compiler (tinycc.org)\n" + " Watcom = Open Watcom (openwatcom.org)\n" + " XL, VisualAge, zOS = IBM XL (ibm.com)\n" + "This variable is not guaranteed to be defined for all " + "compilers or languages.", false, "Variables for Languages"); @@ -1416,10 +1442,10 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cm->DefineProperty ("CMAKE_<LANG>_COMPILER_VERSION", cmProperty::VARIABLE, - "An internal variable subject to change.", + "Compiler version string.", "Compiler version in major[.minor[.patch[.tweak]]] format. " - "This variable is reserved for internal use by CMake and is not " - "guaranteed to be set.", + "This variable is not guaranteed to be defined for all " + "compilers or languages.", false, "Variables for Languages"); diff --git a/Source/cmDocumentation.cxx b/Source/cmDocumentation.cxx index 1b042ae..c1360ef 100644 --- a/Source/cmDocumentation.cxx +++ b/Source/cmDocumentation.cxx @@ -148,13 +148,6 @@ static const char *cmDocumentationStandardSeeAlso[][3] = "The list is member-post-only but one may sign up on the CMake web page. " "Please first read the full documentation at " "http://www.cmake.org before posting questions to the list."}, - {0, - "Summary of helpful links:\n" - " Home: http://www.cmake.org\n" - " Docs: http://www.cmake.org/HTML/Documentation.html\n" - " Mail: http://www.cmake.org/HTML/MailingLists.html\n" - " FAQ: http://www.cmake.org/Wiki/CMake_FAQ\n" - , 0}, {0,0,0} }; diff --git a/Source/cmDocumentationFormatterDocbook.cxx b/Source/cmDocumentationFormatterDocbook.cxx index eabdbc1..706ce0a 100644 --- a/Source/cmDocumentationFormatterDocbook.cxx +++ b/Source/cmDocumentationFormatterDocbook.cxx @@ -11,6 +11,14 @@ ============================================================================*/ #include "cmDocumentationFormatterDocbook.h" #include "cmDocumentationSection.h" +#include <algorithm> +#include <ctype.h> // for isalnum + +static int cmIsAlnum(int c) +{ + return isalnum(c); +} + //---------------------------------------------------------------------------- // this function is a copy of the one in the HTML formatter @@ -94,151 +102,116 @@ void cmDocumentationPrintDocbookEscapes(std::ostream& os, const char* text) } } - +//---------------------------------------------------------------------------- cmDocumentationFormatterDocbook::cmDocumentationFormatterDocbook() :cmDocumentationFormatter() { } +//---------------------------------------------------------------------------- void cmDocumentationFormatterDocbook ::PrintSection(std::ostream& os, const cmDocumentationSection §ion, const char* name) { - if(name) - { - std::string id = "section_"; - id += name; - if (this->EmittedLinkIds.find(id) == this->EmittedLinkIds.end()) - { - this->EmittedLinkIds.insert(id); - os << "<sect1 id=\"section_" << name << "\">\n" - "<title>\n" << name << "</title>\n"; - } - else - { - static unsigned int i=0; - i++; - os << "<sect1 id=\"section_" << name << i << "\">\n" - "<title>\n" << name << "</title>\n"; - } - } + os << "<sect1 id=\""; + this->PrintId(os, 0, name); + os << "\">\n<title>" << name << "</title>\n"; std::string prefix = this->ComputeSectionLinkPrefix(name); + const std::vector<cmDocumentationEntry> &entries = section.GetEntries(); - const std::vector<cmDocumentationEntry> &entries = - section.GetEntries(); - - if (!entries.empty()) + bool hasSubSections = false; + for(std::vector<cmDocumentationEntry>::const_iterator op = entries.begin(); + op != entries.end(); ++op) { - os << "<itemizedlist>\n"; - for(std::vector<cmDocumentationEntry>::const_iterator op - = entries.begin(); op != entries.end(); ++ op ) + if(op->Name.size()) { - if(op->Name.size()) - { - os << " <listitem><link linkend=\"" << prefix << "_"; - cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); - os << "\"><emphasis><literal>"; - cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); - os << "</literal></emphasis></link></listitem>\n"; - } + hasSubSections = true; + break; } - os << "</itemizedlist>\n" ; } + bool inAbstract = false; for(std::vector<cmDocumentationEntry>::const_iterator op = entries.begin(); - op != entries.end();) + op != entries.end(); ++op) { if(op->Name.size()) { - for(;op != entries.end() && op->Name.size(); ++op) + if(inAbstract) + { + os << "</abstract>\n"; + inAbstract = false; + } + os << "<sect2 id=\""; + this->PrintId(os, prefix.c_str(), op->Name); + os << "\">\n<title>"; + cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); + os << "</title>\n"; + if(op->Full.size()) { - if(op->Name.size()) - { - os << " <para id=\"" << prefix << "_"; - cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); - - // make sure that each id exists only once. Since it seems - // not easily possible to determine which link refers to which id, - // we have at least to make sure that the duplicated id's get a - // different name (by appending an increasing number), Alex - std::string id = prefix; - id += "_"; - id += op->Name; - if (this->EmittedLinkIds.find(id) == this->EmittedLinkIds.end()) - { - this->EmittedLinkIds.insert(id); - } - else - { - static unsigned int i=0; - i++; - os << i; - } - // continue as normal... - - os << "\"><sect2><title>"; - cmDocumentationPrintDocbookEscapes(os, op->Name.c_str()); - os << "</title></sect2> "; - } + os << "<abstract>\n<para>"; cmDocumentationPrintDocbookEscapes(os, op->Brief.c_str()); - if(op->Name.size()) - { - os << "</para>\n"; - } - - if(op->Full.size()) - { - // a line break seems to be simply a line break with docbook - os << "\n "; - this->PrintFormatted(os, op->Full.c_str()); - } - os << "\n"; + os << "</para>\n</abstract>\n"; + this->PrintFormatted(os, op->Full.c_str()); } + else + { + this->PrintFormatted(os, op->Brief.c_str()); + } + os << "</sect2>\n"; } else { + if(hasSubSections && op == entries.begin()) + { + os << "<abstract>\n"; + inAbstract = true; + } this->PrintFormatted(os, op->Brief.c_str()); - os << "\n"; - ++op; } } - if(name) + + // empty sections are not allowed in docbook. + if(entries.empty()) { - os << "</sect1>\n"; + os << "<para/>\n"; } + + os << "</sect1>\n"; } -void cmDocumentationFormatterDocbook::PrintPreformatted(std::ostream& os, - const char* text) +//---------------------------------------------------------------------------- +void cmDocumentationFormatterDocbook +::PrintPreformatted(std::ostream& os, const char* text) { - os << "<literallayout>"; + os << "<para>\n<programlisting>"; cmDocumentationPrintDocbookEscapes(os, text); - os << "</literallayout>\n "; + os << "</programlisting>\n</para>\n"; } -void cmDocumentationFormatterDocbook::PrintParagraph(std::ostream& os, - const char* text) +void cmDocumentationFormatterDocbook +::PrintParagraph(std::ostream& os, const char* text) { os << "<para>"; cmDocumentationPrintDocbookEscapes(os, text); - os << "</para>"; + os << "</para>\n"; } //---------------------------------------------------------------------------- -void cmDocumentationFormatterDocbook::PrintHeader(const char* docname, - const char* appname, - std::ostream& os) +void cmDocumentationFormatterDocbook +::PrintHeader(const char* docname, const char* appname, std::ostream& os) { + this->Docname = docname; + // this one is used to ensure that we don't create multiple link targets // with the same name. We can clear it here since we are at the // start of a document here. this->EmittedLinkIds.clear(); os << "<?xml version=\"1.0\" ?>\n" - "<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook V4.2//EN\" " - "\"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd\" [\n" + "<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook V4.5//EN\" " + "\"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\" [\n" "<!ENTITY % addindex \"IGNORE\">\n" "<!ENTITY % English \"INCLUDE\"> ]>\n" "<article>\n" @@ -253,3 +226,29 @@ void cmDocumentationFormatterDocbook::PrintFooter(std::ostream& os) os << "</article>\n"; } +//---------------------------------------------------------------------------- +void cmDocumentationFormatterDocbook +::PrintId(std::ostream& os, const char* prefix, std::string id) +{ + std::replace_if(id.begin(), id.end(), + std::not1(std::ptr_fun(cmIsAlnum)), '_'); + if(prefix) + { + id = std::string(prefix) + "." + id; + } + os << this->Docname << '.' << id; + + // make sure that each id exists only once. Since it seems + // not easily possible to determine which link refers to which id, + // we have at least to make sure that the duplicated id's get a + // different name (by appending an increasing number), Alex + if (this->EmittedLinkIds.find(id) == this->EmittedLinkIds.end()) + { + this->EmittedLinkIds.insert(id); + } + else + { + static unsigned int i=0; + os << i++; + } +} diff --git a/Source/cmDocumentationFormatterDocbook.h b/Source/cmDocumentationFormatterDocbook.h index 213948d..0352d34 100644 --- a/Source/cmDocumentationFormatterDocbook.h +++ b/Source/cmDocumentationFormatterDocbook.h @@ -35,7 +35,9 @@ public: virtual void PrintPreformatted(std::ostream& os, const char* text); virtual void PrintParagraph(std::ostream& os, const char* text); private: + void PrintId(std::ostream& os, const char* prefix, std::string id); std::set<std::string> EmittedLinkIds; + std::string Docname; }; #endif diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index ad4ab76..b1bbd90 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -636,9 +636,11 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, // the include directories for this target std::set<std::string> uniqIncludeDirs; + cmGeneratorTarget *gtgt = this->GlobalGenerator + ->GetGeneratorTarget(target); std::vector<std::string> includes; target->GetMakefile()->GetLocalGenerator()-> - GetIncludeDirectories(includes, target); + GetIncludeDirectories(includes, gtgt); for(std::vector<std::string>::const_iterator dirIt=includes.begin(); dirIt != includes.end(); ++dirIt) diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 1f976f7..f1d9c31 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -884,11 +884,13 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const it != this->GlobalGenerator->GetLocalGenerators().end(); ++it) { - cmTargets & targets = (*it)->GetMakefile()->GetTargets(); - for (cmTargets::iterator l = targets.begin(); l != targets.end(); ++l) + cmGeneratorTargetsType targets = (*it)->GetMakefile() + ->GetGeneratorTargets(); + for (cmGeneratorTargetsType::iterator l = targets.begin(); + l != targets.end(); ++l) { std::vector<std::string> includeDirs; - (*it)->GetIncludeDirectories(includeDirs, &l->second); + (*it)->GetIncludeDirectories(includeDirs, l->second); this->AppendIncludeDirectories(fout, includeDirs, emmited); } } diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 5103d39..4d9eb79 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmFileCommand.h" +#include "cmCryptoHash.h" #include "cmake.h" #include "cmHexFileConverter.h" #include "cmInstallType.h" @@ -2666,7 +2667,11 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) long inactivity_timeout = 0; std::string verboseLog; std::string statusVar; - std::string expectedMD5sum; + bool tls_verify = this->Makefile->IsOn("CMAKE_TLS_VERIFY"); + const char* cainfo = this->Makefile->GetDefinition("CMAKE_TLS_CAINFO"); + std::string expectedHash; + std::string hashMatchMSG; + cmsys::auto_ptr<cmCryptoHash> hash; bool showProgress = false; while(i != args.end()) @@ -2717,6 +2722,32 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) } statusVar = *i; } + else if(*i == "TLS_VERIFY") + { + ++i; + if(i != args.end()) + { + tls_verify = cmSystemTools::IsOn(i->c_str()); + } + else + { + this->SetError("TLS_VERIFY missing bool value."); + return false; + } + } + else if(*i == "TLS_CAINFO") + { + ++i; + if(i != args.end()) + { + cainfo = i->c_str(); + } + else + { + this->SetError("TLS_CAFILE missing file value."); + return false; + } + } else if(*i == "EXPECTED_MD5") { ++i; @@ -2725,48 +2756,67 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) this->SetError("DOWNLOAD missing sum value for EXPECTED_MD5."); return false; } - expectedMD5sum = cmSystemTools::LowerCase(*i); + hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New("MD5")); + hashMatchMSG = "MD5 sum"; + expectedHash = cmSystemTools::LowerCase(*i); } else if(*i == "SHOW_PROGRESS") { showProgress = true; } + else if(*i == "EXPECTED_HASH") + { + ++i; + if(i != args.end()) + { + hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New(i->c_str())); + if(!hash.get()) + { + std::string err = "DOWNLOAD bad SHA type: "; + err += *i; + this->SetError(err.c_str()); + return false; + } + hashMatchMSG = *i; + hashMatchMSG += " hash"; + + ++i; + } + if(i != args.end()) + { + expectedHash = cmSystemTools::LowerCase(*i); + } + else + { + this->SetError("DOWNLOAD missing time for EXPECTED_HASH."); + return false; + } + } ++i; } - - // If file exists already, and caller specified an expected md5 sum, - // and the existing file already has the expected md5 sum, then simply + // If file exists already, and caller specified an expected md5 or sha, + // and the existing file already has the expected hash, then simply // return. // - if(cmSystemTools::FileExists(file.c_str()) && - !expectedMD5sum.empty()) + if(cmSystemTools::FileExists(file.c_str()) && hash.get()) { - char computedMD5[32]; - - if (!cmSystemTools::ComputeFileMD5(file.c_str(), computedMD5)) - { - this->SetError("DOWNLOAD cannot compute MD5 sum on pre-existing file"); - return false; - } - - std::string actualMD5sum = cmSystemTools::LowerCase( - std::string(computedMD5, 32)); - - if (expectedMD5sum == actualMD5sum) + std::string msg; + std::string actualHash = hash->HashFile(file.c_str()); + if(actualHash == expectedHash) { + msg = "returning early; file already exists with expected "; + msg += hashMatchMSG; + msg += "\""; if(statusVar.size()) { cmOStringStream result; - result << (int)0 << ";\"" - "returning early: file already exists with expected MD5 sum\""; + result << (int)0 << ";\"" << msg; this->Makefile->AddDefinition(statusVar.c_str(), result.str().c_str()); } - return true; } } - // Make sure parent directory exists so we can write to the file // as we receive downloaded bits from curl... // @@ -2798,7 +2848,6 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) } cURLEasyGuard g_curl(curl); - ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); check_curl_result(res, "DOWNLOAD cannot set url: "); @@ -2814,6 +2863,25 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) cmFileCommandCurlDebugCallback); check_curl_result(res, "DOWNLOAD cannot set debug function: "); + // check to see if TLS verification is requested + if(tls_verify) + { + res = ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1); + check_curl_result(res, "Unable to set TLS/SSL Verify on: "); + } + else + { + res = ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); + check_curl_result(res, "Unable to set TLS/SSL Verify off: "); + } + // check to see if a CAINFO file has been specified + // command arg comes first + if(cainfo && *cainfo) + { + res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cainfo); + check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: "); + } + cmFileCommandVectorOfChar chunkDebug; res = ::curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&fout); @@ -2888,26 +2956,22 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) // Verify MD5 sum if requested: // - if (!expectedMD5sum.empty()) + if (hash.get()) { - char computedMD5[32]; - - if (!cmSystemTools::ComputeFileMD5(file.c_str(), computedMD5)) + std::string actualHash = hash->HashFile(file.c_str()); + if (actualHash.size() == 0) { - this->SetError("DOWNLOAD cannot compute MD5 sum on downloaded file"); + this->SetError("DOWNLOAD cannot compute hash on downloaded file"); return false; } - std::string actualMD5sum = cmSystemTools::LowerCase( - std::string(computedMD5, 32)); - - if (expectedMD5sum != actualMD5sum) + if (expectedHash != actualHash) { cmOStringStream oss; - oss << "DOWNLOAD MD5 mismatch" << std::endl + oss << "DOWNLOAD HASH mismatch" << std::endl << " for file: [" << file << "]" << std::endl - << " expected MD5 sum: [" << expectedMD5sum << "]" << std::endl - << " actual MD5 sum: [" << actualMD5sum << "]" << std::endl + << " expected hash: [" << expectedHash << "]" << std::endl + << " actual hash: [" << actualHash << "]" << std::endl ; this->SetError(oss.str().c_str()); return false; diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h index ced26c4..bd6f612 100644 --- a/Source/cmFileCommand.h +++ b/Source/cmFileCommand.h @@ -83,7 +83,9 @@ public: " file(TO_NATIVE_PATH path result)\n" " file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout]\n" " [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS]\n" - " [EXPECTED_MD5 sum])\n" + " [EXPECTED_HASH MD5|SHA1|SHA224|SHA256|SHA384|SHA512 hash]\n" + " [EXPECTED_MD5 sum]\n" + " [TLS_VERIFY on|off] [TLS_CAINFO file])\n" " file(UPLOAD filename url [INACTIVITY_TIMEOUT timeout]\n" " [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS])\n" "WRITE will write a message into a file called 'filename'. It " @@ -168,11 +170,20 @@ public: "timeout after time seconds, time should be specified as an integer. " "The INACTIVITY_TIMEOUT specifies an integer number of seconds of " "inactivity after which the operation should terminate. " - "If EXPECTED_MD5 sum is specified, the operation will verify that the " - "downloaded file's actual md5 sum matches the expected value. If it " + "If EXPECTED_HASH is specified, the operation will verify that the " + "downloaded file's actual hash matches the expected value. If it " "does not match, the operation fails with an error. " + "(EXPECTED_MD5 is short-hand for EXPECTED_HASH MD5.) " "If SHOW_PROGRESS is specified, progress information will be printed " - "as status messages until the operation is complete." + "as status messages until the operation is complete. " + "For https URLs CMake must be built with OpenSSL. " + "TLS/SSL certificates are not checked by default. " + "Set TLS_VERIFY to ON to check certificates and/or use " + "EXPECTED_HASH to verify downloaded content. " + "Set TLS_CAINFO to specify a custom Certificate Authority file. " + "If either TLS option is not given CMake will check variables " + "CMAKE_TLS_VERIFY and CMAKE_TLS_CAINFO, " + "respectively." "\n" "UPLOAD will upload the given file to the given URL. " "If LOG var is specified a log of the upload will be put in var. " diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 92bbf1d..0885616 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -16,233 +16,112 @@ #include <cmsys/String.h> +#include "cmGeneratorExpressionEvaluator.h" +#include "cmGeneratorExpressionLexer.h" +#include "cmGeneratorExpressionParser.h" + //---------------------------------------------------------------------------- cmGeneratorExpression::cmGeneratorExpression( - cmMakefile* mf, const char* config, - cmListFileBacktrace const& backtrace, bool quiet): - Makefile(mf), Config(config), Backtrace(backtrace), Quiet(quiet) + cmListFileBacktrace const& backtrace): + Backtrace(backtrace), CompiledExpression(0) { - this->TargetInfo.compile("^\\$<TARGET" - "(|_SONAME|_LINKER)" // File with what purpose? - "_FILE(|_NAME|_DIR):" // Filename component. - "([A-Za-z0-9_.-]+)" // Target name. - ">$"); - this->TestConfig.compile("^\\$<CONFIG:([A-Za-z0-9_]*)>$"); } //---------------------------------------------------------------------------- -const char* cmGeneratorExpression::Process(std::string const& input) +const cmCompiledGeneratorExpression & +cmGeneratorExpression::Parse(std::string const& input) { - return this->Process(input.c_str()); + return this->Parse(input.c_str()); } //---------------------------------------------------------------------------- -const char* cmGeneratorExpression::Process(const char* input) +const cmCompiledGeneratorExpression & +cmGeneratorExpression::Parse(const char* input) { - this->Data.clear(); + cmGeneratorExpressionLexer l; + std::vector<cmGeneratorExpressionToken> tokens = l.Tokenize(input); + bool needsParsing = l.GetSawGeneratorExpression(); + std::vector<cmGeneratorExpressionEvaluator*> evaluators; - // We construct and evaluate expressions directly in the output - // buffer. Each expression is replaced by its own output value - // after evaluation. A stack of barriers records the starting - // indices of open (pending) expressions. - for(const char* c = input; *c; ++c) + if (needsParsing) { - if(c[0] == '$' && c[1] == '<') - { - this->Barriers.push(this->Data.size()); - this->Data.push_back('$'); - this->Data.push_back('<'); - c += 1; - } - else if(c[0] == '>' && !this->Barriers.empty()) - { - this->Data.push_back('>'); - if(!this->Evaluate()) { break; } - this->Barriers.pop(); - } - else - { - this->Data.push_back(c[0]); - } + cmGeneratorExpressionParser p(tokens); + p.Parse(evaluators); } - // Return a null-terminated output value. - this->Data.push_back('\0'); - return &*this->Data.begin(); + delete this->CompiledExpression; + this->CompiledExpression = new cmCompiledGeneratorExpression( + this->Backtrace, + evaluators, + input, + needsParsing); + return *this->CompiledExpression; } -//---------------------------------------------------------------------------- -bool cmGeneratorExpression::Evaluate() +cmGeneratorExpression::~cmGeneratorExpression() { - // The top-most barrier points at the beginning of the expression. - size_t barrier = this->Barriers.top(); - - // Construct a null-terminated representation of the expression. - this->Data.push_back('\0'); - const char* expr = &*(this->Data.begin()+barrier); - - // Evaluate the expression. - std::string result; - if(this->Evaluate(expr, result)) - { - // Success. Replace the expression with its evaluation result. - this->Data.erase(this->Data.begin()+barrier, this->Data.end()); - this->Data.insert(this->Data.end(), result.begin(), result.end()); - return true; - } - else if(!this->Quiet) - { - // Failure. Report the error message. - cmOStringStream e; - e << "Error evaluating generator expression:\n" - << " " << expr << "\n" - << result; - this->Makefile->GetCMakeInstance() - ->IssueMessage(cmake::FATAL_ERROR, e.str().c_str(), - this->Backtrace); - return false; - } - return true; + delete this->CompiledExpression; } //---------------------------------------------------------------------------- -static bool cmGeneratorExpressionBool(const char* c, std::string& result, - const char* name, - const char* a, const char* b) +const char *cmCompiledGeneratorExpression::Evaluate( + cmMakefile* mf, const char* config, bool quiet) const { - result = a; - while((c[0] == '0' || c[0] == '1') && (c[1] == ',' || c[1] == '>')) - { - if(c[0] == b[0]) { result = b; } - c += 2; - } - if(c[0]) + if (!this->NeedsParsing) { - result = name; - result += " requires one or more comma-separated '0' or '1' values."; - return false; + return this->Input; } - return true; -} -//---------------------------------------------------------------------------- -bool cmGeneratorExpression::Evaluate(const char* expr, std::string& result) -{ - if(this->TargetInfo.find(expr)) - { - if(!this->EvaluateTargetInfo(result)) - { - return false; - } - } - else if(strcmp(expr, "$<CONFIGURATION>") == 0) - { - result = this->Config? this->Config : ""; - } - else if(strncmp(expr, "$<0:",4) == 0) - { - result = ""; - } - else if(strncmp(expr, "$<1:",4) == 0) - { - result = std::string(expr+4, strlen(expr)-5); - } - else if(strncmp(expr, "$<NOT:",6) == 0) + this->Output = ""; + + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it + = this->Evaluators.begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end + = this->Evaluators.end(); + + cmGeneratorExpressionContext context; + context.Makefile = mf; + context.Config = config; + context.Quiet = quiet; + context.HadError = false; + context.Backtrace = this->Backtrace; + + for ( ; it != end; ++it) { - const char* c = expr+6; - if((c[0] != '0' && c[0] != '1') || c[1] != '>' || c[2]) + this->Output += (*it)->Evaluate(&context); + if (context.HadError) { - result = "NOT requires exactly one '0' or '1' value."; - return false; + this->Output = ""; + break; } - result = c[0] == '1'? "0" : "1"; } - else if(strncmp(expr, "$<AND:",6) == 0) - { - return cmGeneratorExpressionBool(expr+6, result, "AND", "1", "0"); - } - else if(strncmp(expr, "$<OR:",5) == 0) - { - return cmGeneratorExpressionBool(expr+5, result, "OR", "0", "1"); - } - else if(this->TestConfig.find(expr)) - { - result = cmsysString_strcasecmp(this->TestConfig.match(1).c_str(), - this->Config? this->Config:"") == 0 - ? "1":"0"; - } - else - { - result = "Expression syntax not recognized."; - return false; - } - return true; + + this->Targets = context.Targets; + // TODO: Return a std::string from here instead? + return this->Output.c_str(); } -//---------------------------------------------------------------------------- -bool cmGeneratorExpression::EvaluateTargetInfo(std::string& result) +cmCompiledGeneratorExpression::cmCompiledGeneratorExpression( + cmListFileBacktrace const& backtrace, + const std::vector<cmGeneratorExpressionEvaluator*> &evaluators, + const char *input, bool needsParsing) + : Backtrace(backtrace), Evaluators(evaluators), Input(input), + NeedsParsing(needsParsing) { - // Lookup the referenced target. - std::string name = this->TargetInfo.match(3); - cmTarget* target = this->Makefile->FindTargetToUse(name.c_str()); - if(!target) - { - result = "No target \"" + name + "\""; - return false; - } - if(target->GetType() >= cmTarget::UTILITY && - target->GetType() != cmTarget::UNKNOWN_LIBRARY) - { - result = "Target \"" + name + "\" is not an executable or library."; - return false; - } - this->Targets.insert(target); - // Lookup the target file with the given purpose. - std::string purpose = this->TargetInfo.match(1); - if(purpose == "") - { - // The target implementation file (.so.1.2, .dll, .exe, .a). - result = target->GetFullPath(this->Config, false, true); - } - else if(purpose == "_LINKER") - { - // The file used to link to the target (.so, .lib, .a). - if(!target->IsLinkable()) - { - result = ("TARGET_LINKER_FILE is allowed only for libraries and " - "executables with ENABLE_EXPORTS."); - return false; - } - result = target->GetFullPath(this->Config, target->HasImportLibrary()); - } - else if(purpose == "_SONAME") - { - // The target soname file (.so.1). - if(target->IsDLLPlatform()) - { - result = "TARGET_SONAME_FILE is not allowed for DLL target platforms."; - return false; - } - if(target->GetType() != cmTarget::SHARED_LIBRARY) - { - result = "TARGET_SONAME_FILE is allowed only for SHARED libraries."; - return false; - } - result = target->GetDirectory(this->Config); - result += "/"; - result += target->GetSOName(this->Config); - } +} - // Extract the requested portion of the full path. - std::string part = this->TargetInfo.match(2); - if(part == "_NAME") - { - result = cmSystemTools::GetFilenameName(result); - } - else if(part == "_DIR") + +//---------------------------------------------------------------------------- +cmCompiledGeneratorExpression::~cmCompiledGeneratorExpression() +{ + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it + = this->Evaluators.begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end + = this->Evaluators.end(); + + for ( ; it != end; ++it) { - result = cmSystemTools::GetFilenamePath(result); + delete *it; } - return true; } diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h index a023eb0..b8467c2 100644 --- a/Source/cmGeneratorExpression.h +++ b/Source/cmGeneratorExpression.h @@ -19,6 +19,10 @@ class cmTarget; class cmMakefile; class cmListFileBacktrace; +struct cmGeneratorExpressionEvaluator; + +class cmCompiledGeneratorExpression; + /** \class cmGeneratorExpression * \brief Evaluate generate-time query expression syntax. * @@ -31,29 +35,48 @@ class cmListFileBacktrace; class cmGeneratorExpression { public: - /** Construct with an evaluation context and configuration. */ - cmGeneratorExpression(cmMakefile* mf, const char* config, - cmListFileBacktrace const& backtrace, - bool quiet = false); + /** Construct. */ + cmGeneratorExpression(cmListFileBacktrace const& backtrace); + ~cmGeneratorExpression(); + + const cmCompiledGeneratorExpression& Parse(std::string const& input); + const cmCompiledGeneratorExpression& Parse(const char* input); + +private: + cmGeneratorExpression(const cmGeneratorExpression &); + void operator=(const cmGeneratorExpression &); + + cmListFileBacktrace const& Backtrace; + cmCompiledGeneratorExpression *CompiledExpression; +}; - /** Evaluate generator expressions in a string. */ - const char* Process(std::string const& input); - const char* Process(const char* input); +class cmCompiledGeneratorExpression +{ +public: + const char* Evaluate(cmMakefile* mf, const char* config, + bool quiet = false) const; /** Get set of targets found during evaluations. */ std::set<cmTarget*> const& GetTargets() const { return this->Targets; } + + ~cmCompiledGeneratorExpression(); + private: - cmMakefile* Makefile; - const char* Config; + cmCompiledGeneratorExpression(cmListFileBacktrace const& backtrace, + const std::vector<cmGeneratorExpressionEvaluator*> &evaluators, + const char *input, bool needsParsing); + + friend class cmGeneratorExpression; + + cmCompiledGeneratorExpression(const cmCompiledGeneratorExpression &); + void operator=(const cmCompiledGeneratorExpression &); + cmListFileBacktrace const& Backtrace; - bool Quiet; - std::vector<char> Data; - std::stack<size_t> Barriers; - cmsys::RegularExpression TargetInfo; - cmsys::RegularExpression TestConfig; - std::set<cmTarget*> Targets; - bool Evaluate(); - bool Evaluate(const char* expr, std::string& result); - bool EvaluateTargetInfo(std::string& result); + const std::vector<cmGeneratorExpressionEvaluator*> Evaluators; + const char* const Input; + const bool NeedsParsing; + + mutable std::set<cmTarget*> Targets; + mutable std::string Output; }; diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx new file mode 100644 index 0000000..acc844a --- /dev/null +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -0,0 +1,568 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmMakefile.h" + +#include "cmGeneratorExpressionEvaluator.h" +#include "cmGeneratorExpressionParser.h" + +//---------------------------------------------------------------------------- +static void reportError(cmGeneratorExpressionContext *context, + const std::string &expr, const std::string &result) +{ + context->HadError = true; + if (context->Quiet) + { + return; + } + + cmOStringStream e; + e << "Error evaluating generator expression:\n" + << " " << expr << "\n" + << result; + context->Makefile->GetCMakeInstance() + ->IssueMessage(cmake::FATAL_ERROR, e.str().c_str(), + context->Backtrace); +} + +//---------------------------------------------------------------------------- +struct cmGeneratorExpressionNode +{ + virtual ~cmGeneratorExpressionNode() {} + + virtual bool GeneratesContent() const { return true; } + + virtual bool AcceptsSingleArbitraryContentParameter() const + { return false; } + + virtual int NumExpectedParameters() const { return 1; } + + virtual std::string Evaluate(const std::vector<std::string> ¶meters, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content + ) const = 0; +}; + +//---------------------------------------------------------------------------- +static const struct ZeroNode : public cmGeneratorExpressionNode +{ + ZeroNode() {} + + virtual bool GeneratesContent() const { return false; } + + std::string Evaluate(const std::vector<std::string> &, + cmGeneratorExpressionContext *, + const GeneratorExpressionContent *) const + { + // Unreachable + return std::string(); + } +} zeroNode; + +//---------------------------------------------------------------------------- +static const struct OneNode : public cmGeneratorExpressionNode +{ + OneNode() {} + + virtual bool AcceptsSingleArbitraryContentParameter() const { return true; } + + std::string Evaluate(const std::vector<std::string> &, + cmGeneratorExpressionContext *, + const GeneratorExpressionContent *) const + { + // Unreachable + return std::string(); + } +} oneNode; + +//---------------------------------------------------------------------------- +#define BOOLEAN_OP_NODE(OPNAME, OP, SUCCESS_VALUE, FAILURE_VALUE) \ +static const struct OP ## Node : public cmGeneratorExpressionNode \ +{ \ + OP ## Node () {} \ +/* We let -1 carry the meaning 'at least one' */ \ + virtual int NumExpectedParameters() const { return -1; } \ + \ + std::string Evaluate(const std::vector<std::string> ¶meters, \ + cmGeneratorExpressionContext *context, \ + const GeneratorExpressionContent *content) const \ + { \ + std::vector<std::string>::const_iterator it = parameters.begin(); \ + const std::vector<std::string>::const_iterator end = parameters.end(); \ + for ( ; it != end; ++it) \ + { \ + if (*it == #FAILURE_VALUE) \ + { \ + return #FAILURE_VALUE; \ + } \ + else if (*it != #SUCCESS_VALUE) \ + { \ + reportError(context, content->GetOriginalExpression(), \ + "Parameters to $<" #OP "> must resolve to either '0' or '1'."); \ + return std::string(); \ + } \ + } \ + return #SUCCESS_VALUE; \ + } \ +} OPNAME; + +BOOLEAN_OP_NODE(andNode, AND, 1, 0) +BOOLEAN_OP_NODE(orNode, OR, 0, 1) + +#undef BOOLEAN_OP_NODE + +//---------------------------------------------------------------------------- +static const struct NotNode : public cmGeneratorExpressionNode +{ + NotNode() {} + std::string Evaluate(const std::vector<std::string> ¶meters, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content) const + { + if (*parameters.begin() != "0" && *parameters.begin() != "1") + { + reportError(context, content->GetOriginalExpression(), + "$<NOT> parameter must resolve to exactly one '0' or '1' value."); + return std::string(); + } + return *parameters.begin() == "0" ? "1" : "0"; + } +} notNode; + +//---------------------------------------------------------------------------- +static const struct ConfigurationNode : public cmGeneratorExpressionNode +{ + ConfigurationNode() {} + virtual int NumExpectedParameters() const { return 0; } + + std::string Evaluate(const std::vector<std::string> &, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *) const + { + return context->Config ? context->Config : ""; + } +} configurationNode; + +//---------------------------------------------------------------------------- +static const struct ConfigurationTestNode : public cmGeneratorExpressionNode +{ + ConfigurationTestNode() {} + + virtual int NumExpectedParameters() const { return 1; } + + std::string Evaluate(const std::vector<std::string> ¶meters, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content) const + { + if (!context->Config) + { + return std::string(); + } + + cmsys::RegularExpression configValidator; + configValidator.compile("^[A-Za-z0-9_]*$"); + if (!configValidator.find(parameters.begin()->c_str())) + { + reportError(context, content->GetOriginalExpression(), + "Expression syntax not recognized."); + return std::string(); + } + return *parameters.begin() == context->Config ? "1" : "0"; + } +} configurationTestNode; + +//---------------------------------------------------------------------------- +template<bool linker, bool soname> +struct TargetFilesystemArtifactResultCreator +{ + static std::string Create(cmTarget* target, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content); +}; + +//---------------------------------------------------------------------------- +template<> +struct TargetFilesystemArtifactResultCreator<false, true> +{ + static std::string Create(cmTarget* target, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content) + { + // The target soname file (.so.1). + if(target->IsDLLPlatform()) + { + ::reportError(context, content->GetOriginalExpression(), + "TARGET_SONAME_FILE is not allowed " + "for DLL target platforms."); + return std::string(); + } + if(target->GetType() != cmTarget::SHARED_LIBRARY) + { + ::reportError(context, content->GetOriginalExpression(), + "TARGET_SONAME_FILE is allowed only for " + "SHARED libraries."); + return std::string(); + } + std::string result = target->GetDirectory(context->Config); + result += "/"; + result += target->GetSOName(context->Config); + return result; + } +}; + +//---------------------------------------------------------------------------- +template<> +struct TargetFilesystemArtifactResultCreator<true, false> +{ + static std::string Create(cmTarget* target, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content) + { + // The file used to link to the target (.so, .lib, .a). + if(!target->IsLinkable()) + { + ::reportError(context, content->GetOriginalExpression(), + "TARGET_LINKER_FILE is allowed only for libraries and " + "executables with ENABLE_EXPORTS."); + return std::string(); + } + return target->GetFullPath(context->Config, + target->HasImportLibrary()); + } +}; + +//---------------------------------------------------------------------------- +template<> +struct TargetFilesystemArtifactResultCreator<false, false> +{ + static std::string Create(cmTarget* target, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *) + { + return target->GetFullPath(context->Config, false, true); + } +}; + + +//---------------------------------------------------------------------------- +template<bool dirQual, bool nameQual> +struct TargetFilesystemArtifactResultGetter +{ + static std::string Get(const std::string &result); +}; + +//---------------------------------------------------------------------------- +template<> +struct TargetFilesystemArtifactResultGetter<false, true> +{ + static std::string Get(const std::string &result) + { return cmSystemTools::GetFilenameName(result); } +}; + +//---------------------------------------------------------------------------- +template<> +struct TargetFilesystemArtifactResultGetter<true, false> +{ + static std::string Get(const std::string &result) + { return cmSystemTools::GetFilenamePath(result); } +}; + +//---------------------------------------------------------------------------- +template<> +struct TargetFilesystemArtifactResultGetter<false, false> +{ + static std::string Get(const std::string &result) + { return result; } +}; + +//---------------------------------------------------------------------------- +template<bool linker, bool soname, bool dirQual, bool nameQual> +struct TargetFilesystemArtifact : public cmGeneratorExpressionNode +{ + TargetFilesystemArtifact() {} + + virtual int NumExpectedParameters() const { return 1; } + + std::string Evaluate(const std::vector<std::string> ¶meters, + cmGeneratorExpressionContext *context, + const GeneratorExpressionContent *content) const + { + // Lookup the referenced target. + std::string name = *parameters.begin(); + + cmsys::RegularExpression targetValidator; + targetValidator.compile("^[A-Za-z0-9_]+$"); + if (!targetValidator.find(name.c_str())) + { + ::reportError(context, content->GetOriginalExpression(), + "Expression syntax not recognized."); + return std::string(); + } + cmTarget* target = context->Makefile->FindTargetToUse(name.c_str()); + if(!target) + { + ::reportError(context, content->GetOriginalExpression(), + "No target \"" + name + "\""); + return std::string(); + } + if(target->GetType() >= cmTarget::UTILITY && + target->GetType() != cmTarget::UNKNOWN_LIBRARY) + { + ::reportError(context, content->GetOriginalExpression(), + "Target \"" + name + "\" is not an executable or library."); + return std::string(); + } + context->Targets.insert(target); + + std::string result = + TargetFilesystemArtifactResultCreator<linker, soname>::Create( + target, + context, + content); + if (context->HadError) + { + return std::string(); + } + return + TargetFilesystemArtifactResultGetter<dirQual, nameQual>::Get(result); + } +}; + +//---------------------------------------------------------------------------- +static const +TargetFilesystemArtifact<false, false, false, false> targetFileNode; +static const +TargetFilesystemArtifact<true, false, false, false> targetLinkerFileNode; +static const +TargetFilesystemArtifact<false, true, false, false> targetSoNameFileNode; +static const +TargetFilesystemArtifact<false, false, false, true> targetFileNameNode; +static const +TargetFilesystemArtifact<true, false, false, true> targetLinkerFileNameNode; +static const +TargetFilesystemArtifact<false, true, false, true> targetSoNameFileNameNode; +static const +TargetFilesystemArtifact<false, false, true, false> targetFileDirNode; +static const +TargetFilesystemArtifact<true, false, true, false> targetLinkerFileDirNode; +static const +TargetFilesystemArtifact<false, true, true, false> targetSoNameFileDirNode; + +//---------------------------------------------------------------------------- +static const +cmGeneratorExpressionNode* GetNode(const std::string &identifier) +{ + if (identifier == "0") + return &zeroNode; + if (identifier == "1") + return &oneNode; + if (identifier == "AND") + return &andNode; + if (identifier == "OR") + return &orNode; + if (identifier == "NOT") + return ¬Node; + else if (identifier == "CONFIGURATION") + return &configurationNode; + else if (identifier == "CONFIG") + return &configurationTestNode; + else if (identifier == "TARGET_FILE") + return &targetFileNode; + else if (identifier == "TARGET_LINKER_FILE") + return &targetLinkerFileNode; + else if (identifier == "TARGET_SONAME_FILE") + return &targetSoNameFileNode; + else if (identifier == "TARGET_FILE_NAME") + return &targetFileNameNode; + else if (identifier == "TARGET_LINKER_FILE_NAME") + return &targetLinkerFileNameNode; + else if (identifier == "TARGET_SONAME_FILE_NAME") + return &targetSoNameFileNameNode; + else if (identifier == "TARGET_FILE_DIR") + return &targetFileDirNode; + else if (identifier == "TARGET_LINKER_FILE_DIR") + return &targetLinkerFileDirNode; + else if (identifier == "TARGET_SONAME_FILE_DIR") + return &targetSoNameFileDirNode; + return 0; +} + +//---------------------------------------------------------------------------- +GeneratorExpressionContent::GeneratorExpressionContent( + const char *startContent, + unsigned int length) + : StartContent(startContent), ContentLength(length) +{ + +} + +//---------------------------------------------------------------------------- +std::string GeneratorExpressionContent::GetOriginalExpression() const +{ + return std::string(this->StartContent, this->ContentLength); +} + +//---------------------------------------------------------------------------- +std::string GeneratorExpressionContent::Evaluate( + cmGeneratorExpressionContext *context) const +{ + std::string identifier; + { + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it + = this->IdentifierChildren.begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end + = this->IdentifierChildren.end(); + for ( ; it != end; ++it) + { + identifier += (*it)->Evaluate(context); + if (context->HadError) + { + return std::string(); + } + } + } + + const cmGeneratorExpressionNode *node = GetNode(identifier); + + if (!node) + { + reportError(context, this->GetOriginalExpression(), + "Expression did not evaluate to a known generator expression"); + return std::string(); + } + + if (!node->GeneratesContent()) + { + return std::string(); + } + + if (node->AcceptsSingleArbitraryContentParameter()) + { + std::string result; + std::vector<std::vector<cmGeneratorExpressionEvaluator*> >::const_iterator + pit = this->ParamChildren.begin(); + const + std::vector<std::vector<cmGeneratorExpressionEvaluator*> >::const_iterator + pend = this->ParamChildren.end(); + for ( ; pit != pend; ++pit) + { + if (!result.empty()) + { + result += ","; + } + + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it + = pit->begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end + = pit->end(); + for ( ; it != end; ++it) + { + result += (*it)->Evaluate(context); + if (context->HadError) + { + return std::string(); + } + } + } + return result; + } + + std::vector<std::string> parameters; + { + std::vector<std::vector<cmGeneratorExpressionEvaluator*> >::const_iterator + pit = this->ParamChildren.begin(); + const + std::vector<std::vector<cmGeneratorExpressionEvaluator*> >::const_iterator + pend = this->ParamChildren.end(); + for ( ; pit != pend; ++pit) + { + std::string parameter; + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it = + pit->begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end = + pit->end(); + for ( ; it != end; ++it) + { + parameter += (*it)->Evaluate(context); + if (context->HadError) + { + return std::string(); + } + } + parameters.push_back(parameter); + } + } + + int numExpected = node->NumExpectedParameters(); + if ((numExpected != -1 && (unsigned int)numExpected != parameters.size())) + { + if (numExpected == 0) + { + reportError(context, this->GetOriginalExpression(), + "$<" + identifier + "> expression requires no parameters."); + } + else if (numExpected == 1) + { + reportError(context, this->GetOriginalExpression(), + "$<" + identifier + "> expression requires " + "exactly one parameter."); + } + else + { + cmOStringStream e; + e << "$<" + identifier + "> expression requires " + << numExpected + << " comma separated parameters, but got " + << parameters.size() << " instead."; + reportError(context, this->GetOriginalExpression(), e.str()); + } + return std::string(); + } + + if (numExpected == -1 && parameters.empty()) + { + reportError(context, this->GetOriginalExpression(), "$<" + identifier + + "> expression requires at least one parameter."); + return std::string(); + } + + return node->Evaluate(parameters, context, this); +} + +//---------------------------------------------------------------------------- +static void deleteAll(const std::vector<cmGeneratorExpressionEvaluator*> &c) +{ + std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it + = c.begin(); + const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end + = c.end(); + for ( ; it != end; ++it) + { + delete *it; + } +} + +//---------------------------------------------------------------------------- +GeneratorExpressionContent::~GeneratorExpressionContent() +{ + deleteAll(this->IdentifierChildren); + + typedef std::vector<cmGeneratorExpressionEvaluator*> EvaluatorVector; + typedef std::vector<cmGeneratorExpressionToken> TokenVector; + std::vector<EvaluatorVector>::const_iterator pit = + this->ParamChildren.begin(); + const std::vector<EvaluatorVector>::const_iterator pend = + this->ParamChildren.end(); + for ( ; pit != pend; ++pit) + { + deleteAll(*pit); + } +} diff --git a/Source/cmGeneratorExpressionEvaluator.h b/Source/cmGeneratorExpressionEvaluator.h new file mode 100644 index 0000000..5163ca0 --- /dev/null +++ b/Source/cmGeneratorExpressionEvaluator.h @@ -0,0 +1,118 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmGeneratorExpressionEvaluator_h +#define cmGeneratorExpressionEvaluator_h + +#include <vector> +#include <string> + +//---------------------------------------------------------------------------- +struct cmGeneratorExpressionContext +{ + cmListFileBacktrace Backtrace; + std::set<cmTarget*> Targets; + cmMakefile *Makefile; + const char *Config; + cmTarget *Target; + bool Quiet; + bool HadError; +}; + +//---------------------------------------------------------------------------- +struct cmGeneratorExpressionEvaluator +{ + cmGeneratorExpressionEvaluator() {} + virtual ~cmGeneratorExpressionEvaluator() {} + + enum Type + { + Text, + Generator + }; + + virtual Type GetType() const = 0; + + virtual std::string Evaluate(cmGeneratorExpressionContext *context + ) const = 0; + +private: + cmGeneratorExpressionEvaluator(const cmGeneratorExpressionEvaluator &); + void operator=(const cmGeneratorExpressionEvaluator &); +}; + +struct TextContent : public cmGeneratorExpressionEvaluator +{ + TextContent(const char *start, unsigned int length) + : Content(start), Length(length) + { + + } + + std::string Evaluate(cmGeneratorExpressionContext *) const + { + return std::string(this->Content, this->Length); + } + + Type GetType() const + { + return cmGeneratorExpressionEvaluator::Text; + } + + void Extend(unsigned int length) + { + this->Length += length; + } + + unsigned int GetLength() + { + return this->Length; + } + +private: + const char *Content; + unsigned int Length; +}; + +//---------------------------------------------------------------------------- +struct GeneratorExpressionContent : public cmGeneratorExpressionEvaluator +{ + GeneratorExpressionContent(const char *startContent, unsigned int length); + void SetIdentifier(std::vector<cmGeneratorExpressionEvaluator*> identifier) + { + this->IdentifierChildren = identifier; + } + + void SetParameters( + std::vector<std::vector<cmGeneratorExpressionEvaluator*> > parameters) + { + this->ParamChildren = parameters; + } + + Type GetType() const + { + return cmGeneratorExpressionEvaluator::Generator; + } + + std::string Evaluate(cmGeneratorExpressionContext *context) const; + + std::string GetOriginalExpression() const; + + ~GeneratorExpressionContent(); + +private: + std::vector<cmGeneratorExpressionEvaluator*> IdentifierChildren; + std::vector<std::vector<cmGeneratorExpressionEvaluator*> > ParamChildren; + const char *StartContent; + unsigned int ContentLength; +}; + +#endif diff --git a/Source/cmGeneratorExpressionLexer.cxx b/Source/cmGeneratorExpressionLexer.cxx new file mode 100644 index 0000000..cd71ec0 --- /dev/null +++ b/Source/cmGeneratorExpressionLexer.cxx @@ -0,0 +1,85 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmGeneratorExpressionLexer.h" + + +//---------------------------------------------------------------------------- +cmGeneratorExpressionLexer::cmGeneratorExpressionLexer() + : SawBeginExpression(false), SawGeneratorExpression(false) +{ + +} + +//---------------------------------------------------------------------------- +static void InsertText(const char *upto, const char *c, + std::vector<cmGeneratorExpressionToken> &result) +{ + if (upto != c) + { + result.push_back(cmGeneratorExpressionToken( + cmGeneratorExpressionToken::Text, upto, c - upto)); + } +} + +//---------------------------------------------------------------------------- +std::vector<cmGeneratorExpressionToken> +cmGeneratorExpressionLexer::Tokenize(const char *input) +{ + std::vector<cmGeneratorExpressionToken> result; + if (!input) + return result; + + const char *c = input; + const char *upto = c; + + for ( ; *c; ++c) + { + if(c[0] == '$' && c[1] == '<') + { + InsertText(upto, c, result); + upto = c; + result.push_back(cmGeneratorExpressionToken( + cmGeneratorExpressionToken::BeginExpression, upto, 2)); + upto = c + 2; + ++c; + SawBeginExpression = true; + } + else if(c[0] == '>') + { + InsertText(upto, c, result); + upto = c; + result.push_back(cmGeneratorExpressionToken( + cmGeneratorExpressionToken::EndExpression, upto, 1)); + upto = c + 1; + SawGeneratorExpression = SawBeginExpression; + } + else if(c[0] == ':') + { + InsertText(upto, c, result); + upto = c; + result.push_back(cmGeneratorExpressionToken( + cmGeneratorExpressionToken::ColonSeparator, upto, 1)); + upto = c + 1; + } + else if(c[0] == ',') + { + InsertText(upto, c, result); + upto = c; + result.push_back(cmGeneratorExpressionToken( + cmGeneratorExpressionToken::CommaSeparator, upto, 1)); + upto = c + 1; + } + } + InsertText(upto, c, result); + + return result; +} diff --git a/Source/cmGeneratorExpressionLexer.h b/Source/cmGeneratorExpressionLexer.h new file mode 100644 index 0000000..5f16712 --- /dev/null +++ b/Source/cmGeneratorExpressionLexer.h @@ -0,0 +1,58 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmGeneratorExpressionLexer_h +#define cmGeneratorExpressionLexer_h + +#include "cmStandardIncludes.h" + +#include <vector> + +//---------------------------------------------------------------------------- +struct cmGeneratorExpressionToken +{ + cmGeneratorExpressionToken(unsigned type, const char *c, unsigned l) + : TokenType(type), Content(c), Length(l) + { + } + enum { + Text, + BeginExpression, + EndExpression, + ColonSeparator, + CommaSeparator + }; + unsigned TokenType; + const char *Content; + unsigned Length; +}; + +/** \class cmGeneratorExpressionLexer + * + */ +class cmGeneratorExpressionLexer +{ +public: + cmGeneratorExpressionLexer(); + + std::vector<cmGeneratorExpressionToken> Tokenize(const char *input); + + bool GetSawGeneratorExpression() const + { + return this->SawGeneratorExpression; + } + +private: + bool SawBeginExpression; + bool SawGeneratorExpression; +}; + +#endif diff --git a/Source/cmGeneratorExpressionParser.cxx b/Source/cmGeneratorExpressionParser.cxx new file mode 100644 index 0000000..2a5cc7a --- /dev/null +++ b/Source/cmGeneratorExpressionParser.cxx @@ -0,0 +1,235 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ + +#include "cmGeneratorExpressionParser.h" + +#include "cmGeneratorExpressionEvaluator.h" + +//---------------------------------------------------------------------------- +cmGeneratorExpressionParser::cmGeneratorExpressionParser( + const std::vector<cmGeneratorExpressionToken> &tokens) + : Tokens(tokens), NestingLevel(0) +{ +} + +//---------------------------------------------------------------------------- +void cmGeneratorExpressionParser::Parse( + std::vector<cmGeneratorExpressionEvaluator*> &result) +{ + it = this->Tokens.begin(); + + while (this->it != this->Tokens.end()) + { + this->ParseContent(result); + } +} + +//---------------------------------------------------------------------------- +static void extendText(std::vector<cmGeneratorExpressionEvaluator*> &result, + std::vector<cmGeneratorExpressionToken>::const_iterator it) +{ + if (result.size() > 0 + && (*(result.end() - 1))->GetType() + == cmGeneratorExpressionEvaluator::Text) + { + TextContent *textContent = static_cast<TextContent*>(*(result.end() - 1)); + textContent->Extend(it->Length); + } + else + { + TextContent *textContent = new TextContent(it->Content, it->Length); + result.push_back(textContent); + } +} + +//---------------------------------------------------------------------------- +static void extendResult(std::vector<cmGeneratorExpressionEvaluator*> &result, + const std::vector<cmGeneratorExpressionEvaluator*> &contents) +{ + if (result.size() > 0 + && (*(result.end() - 1))->GetType() + == cmGeneratorExpressionEvaluator::Text + && (*contents.begin())->GetType() + == cmGeneratorExpressionEvaluator::Text) + { + TextContent *textContent = static_cast<TextContent*>(*(result.end() - 1)); + textContent->Extend( + static_cast<TextContent*>(*contents.begin())->GetLength()); + delete *contents.begin(); + result.insert(result.end(), contents.begin() + 1, contents.end()); + } else { + result.insert(result.end(), contents.begin(), contents.end()); + } +} + +//---------------------------------------------------------------------------- +void cmGeneratorExpressionParser::ParseGeneratorExpression( + std::vector<cmGeneratorExpressionEvaluator*> &result) +{ + unsigned int nestedLevel = this->NestingLevel; + ++this->NestingLevel; + + std::vector<cmGeneratorExpressionToken>::const_iterator startToken + = this->it - 1; + + std::vector<cmGeneratorExpressionEvaluator*> identifier; + while(this->it->TokenType != cmGeneratorExpressionToken::EndExpression + && this->it->TokenType != cmGeneratorExpressionToken::ColonSeparator) + { + this->ParseContent(identifier); + if (this->it == this->Tokens.end()) + { + break; + } + } + if (identifier.empty()) + { + // ERROR + } + + if (this->it->TokenType == cmGeneratorExpressionToken::EndExpression) + { + GeneratorExpressionContent *content = new GeneratorExpressionContent( + startToken->Content, this->it->Content + - startToken->Content + + this->it->Length); + ++this->it; + --this->NestingLevel; + content->SetIdentifier(identifier); + result.push_back(content); + return; + } + + std::vector<std::vector<cmGeneratorExpressionEvaluator*> > parameters; + std::vector<std::vector<cmGeneratorExpressionToken>::const_iterator> + commaTokens; + std::vector<cmGeneratorExpressionToken>::const_iterator colonToken; + if (this->it->TokenType == cmGeneratorExpressionToken::ColonSeparator) + { + colonToken = this->it; + parameters.resize(parameters.size() + 1); + ++this->it; + while(this->it->TokenType != cmGeneratorExpressionToken::EndExpression) + { + this->ParseContent(*(parameters.end() - 1)); + if (this->it->TokenType == cmGeneratorExpressionToken::CommaSeparator) + { + commaTokens.push_back(this->it); + parameters.resize(parameters.size() + 1); + ++this->it; + } + if (this->it == this->Tokens.end()) + { + break; + } + } + if(this->it->TokenType == cmGeneratorExpressionToken::EndExpression) + { + --this->NestingLevel; + ++this->it; + } + if (parameters.empty()) + { + // ERROR + } + } + + if (nestedLevel != this->NestingLevel) + { + // There was a '$<' in the text, but no corresponding '>'. Rebuild to + // treat the '$<' as having been plain text, along with the + // corresponding : and , tokens that might have been found. + extendText(result, startToken); + extendResult(result, identifier); + if (!parameters.empty()) + { + extendText(result, colonToken); + + typedef std::vector<cmGeneratorExpressionEvaluator*> EvaluatorVector; + typedef std::vector<cmGeneratorExpressionToken> TokenVector; + std::vector<EvaluatorVector>::const_iterator pit = parameters.begin(); + const std::vector<EvaluatorVector>::const_iterator pend = + parameters.end(); + std::vector<TokenVector::const_iterator>::const_iterator commaIt = + commaTokens.begin(); + for ( ; pit != pend; ++pit, ++commaIt) + { + extendResult(result, *pit); + if (commaIt != commaTokens.end()) + { + extendText(result, *commaIt); + } + } + } + return; + } + + int contentLength = ((this->it - 1)->Content + - startToken->Content) + + (this->it - 1)->Length; + GeneratorExpressionContent *content = new GeneratorExpressionContent( + startToken->Content, contentLength); + content->SetIdentifier(identifier); + content->SetParameters(parameters); + result.push_back(content); +} + +//---------------------------------------------------------------------------- +void cmGeneratorExpressionParser::ParseContent( + std::vector<cmGeneratorExpressionEvaluator*> &result) +{ + switch(this->it->TokenType) + { + case cmGeneratorExpressionToken::Text: + { + if (this->NestingLevel == 0) + { + if (result.size() > 0 + && (*(result.end() - 1))->GetType() + == cmGeneratorExpressionEvaluator::Text) + { + // A comma in 'plain text' could have split text that should + // otherwise be continuous. Extend the last text content instead of + // creating a new one. + TextContent *textContent = + static_cast<TextContent*>(*(result.end() - 1)); + textContent->Extend(this->it->Length); + ++this->it; + return; + } + } + cmGeneratorExpressionEvaluator* n = new TextContent(this->it->Content, + this->it->Length); + result.push_back(n); + ++this->it; + return ; + } + case cmGeneratorExpressionToken::BeginExpression: + ++this->it; + this->ParseGeneratorExpression(result); + return; + case cmGeneratorExpressionToken::EndExpression: + case cmGeneratorExpressionToken::ColonSeparator: + case cmGeneratorExpressionToken::CommaSeparator: + if (this->NestingLevel == 0) + { + extendText(result, this->it); + } + else + { + // TODO: Unreachable. Assert? + } + ++this->it; + return; + } + // Unreachable. Assert? +} diff --git a/Source/cmGeneratorExpressionParser.h b/Source/cmGeneratorExpressionParser.h new file mode 100644 index 0000000..28f1441 --- /dev/null +++ b/Source/cmGeneratorExpressionParser.h @@ -0,0 +1,45 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2012 Stephen Kelly <steveire@gmail.com> + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmGeneratorExpressionParser_h +#define cmGeneratorExpressionParser_h + +#include "cmGeneratorExpressionLexer.h" + +#include <set> +#include <vector> + +#include "cmListFileCache.h" + +class cmMakefile; +class cmTarget; +struct cmGeneratorExpressionEvaluator; + +//---------------------------------------------------------------------------- +struct cmGeneratorExpressionParser +{ + cmGeneratorExpressionParser( + const std::vector<cmGeneratorExpressionToken> &tokens); + + void Parse(std::vector<cmGeneratorExpressionEvaluator*> &result); + +private: + void ParseContent(std::vector<cmGeneratorExpressionEvaluator*> &); + void ParseGeneratorExpression( + std::vector<cmGeneratorExpressionEvaluator*> &); + +private: + std::vector<cmGeneratorExpressionToken>::const_iterator it; + const std::vector<cmGeneratorExpressionToken> Tokens; + unsigned int NestingLevel; +}; + +#endif diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 6e2e23d..db88834 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -14,9 +14,12 @@ #include "cmTarget.h" #include "cmMakefile.h" #include "cmLocalGenerator.h" +#include "cmComputeLinkInformation.h" #include "cmGlobalGenerator.h" #include "cmSourceFile.h" +#include <assert.h> + //---------------------------------------------------------------------------- cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t) { @@ -27,6 +30,45 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t) this->LookupObjectLibraries(); } +cmGeneratorTarget::~cmGeneratorTarget() +{ + for(std::map<cmStdString, cmComputeLinkInformation*>::iterator i + = LinkInformation.begin(); i != LinkInformation.end(); ++i) + { + delete i->second; + } +} + +//---------------------------------------------------------------------------- +int cmGeneratorTarget::GetType() const +{ + return this->Target->GetType(); +} + +//---------------------------------------------------------------------------- +const char *cmGeneratorTarget::GetName() const +{ + return this->Target->GetName(); +} + +//---------------------------------------------------------------------------- +const char *cmGeneratorTarget::GetProperty(const char *prop) +{ + return this->Target->GetProperty(prop); +} + +//---------------------------------------------------------------------------- +bool cmGeneratorTarget::GetPropertyAsBool(const char *prop) +{ + return this->Target->GetPropertyAsBool(prop); +} + +//---------------------------------------------------------------------------- +std::vector<cmSourceFile*> const& cmGeneratorTarget::GetSourceFiles() +{ + return this->Target->GetSourceFiles(); +} + //---------------------------------------------------------------------------- void cmGeneratorTarget::ClassifySources() { @@ -175,3 +217,179 @@ void cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs) } } } + +//---------------------------------------------------------------------------- +void cmGeneratorTarget::GenerateTargetManifest(const char* config) +{ + cmMakefile* mf = this->Target->GetMakefile(); + cmLocalGenerator* lg = mf->GetLocalGenerator(); + cmGlobalGenerator* gg = lg->GetGlobalGenerator(); + + // Get the names. + std::string name; + std::string soName; + std::string realName; + std::string impName; + std::string pdbName; + if(this->GetType() == cmTarget::EXECUTABLE) + { + this->Target->GetExecutableNames(name, realName, impName, pdbName, + config); + } + else if(this->GetType() == cmTarget::STATIC_LIBRARY || + this->GetType() == cmTarget::SHARED_LIBRARY || + this->GetType() == cmTarget::MODULE_LIBRARY) + { + this->Target->GetLibraryNames(name, soName, realName, impName, pdbName, + config); + } + else + { + return; + } + + // Get the directory. + std::string dir = this->Target->GetDirectory(config, false); + + // Add each name. + std::string f; + if(!name.empty()) + { + f = dir; + f += "/"; + f += name; + gg->AddToManifest(config? config:"", f); + } + if(!soName.empty()) + { + f = dir; + f += "/"; + f += soName; + gg->AddToManifest(config? config:"", f); + } + if(!realName.empty()) + { + f = dir; + f += "/"; + f += realName; + gg->AddToManifest(config? config:"", f); + } + if(!pdbName.empty()) + { + f = dir; + f += "/"; + f += pdbName; + gg->AddToManifest(config? config:"", f); + } + if(!impName.empty()) + { + f = this->Target->GetDirectory(config, true); + f += "/"; + f += impName; + gg->AddToManifest(config? config:"", f); + } +} + +//---------------------------------------------------------------------------- +cmComputeLinkInformation* +cmGeneratorTarget::GetLinkInformation(const char* config) +{ + // Lookup any existing information for this configuration. + std::map<cmStdString, cmComputeLinkInformation*>::iterator + i = this->LinkInformation.find(config?config:""); + if(i == this->LinkInformation.end()) + { + // Compute information for this configuration. + cmComputeLinkInformation* info = + new cmComputeLinkInformation(this->Target, config); + if(!info || !info->Compute()) + { + delete info; + info = 0; + } + + // Store the information for this configuration. + std::map<cmStdString, cmComputeLinkInformation*>::value_type + entry(config?config:"", info); + i = this->LinkInformation.insert(entry).first; + } + return i->second; +} + +//---------------------------------------------------------------------------- +void cmGeneratorTarget::GetAppleArchs(const char* config, + std::vector<std::string>& archVec) +{ + const char* archs = 0; + if(config && *config) + { + std::string defVarName = "OSX_ARCHITECTURES_"; + defVarName += cmSystemTools::UpperCase(config); + archs = this->Target->GetProperty(defVarName.c_str()); + } + if(!archs) + { + archs = this->Target->GetProperty("OSX_ARCHITECTURES"); + } + if(archs) + { + cmSystemTools::ExpandListArgument(std::string(archs), archVec); + } +} + +//---------------------------------------------------------------------------- +const char* cmGeneratorTarget::GetCreateRuleVariable() +{ + switch(this->GetType()) + { + case cmTarget::STATIC_LIBRARY: + return "_CREATE_STATIC_LIBRARY"; + case cmTarget::SHARED_LIBRARY: + return "_CREATE_SHARED_LIBRARY"; + case cmTarget::MODULE_LIBRARY: + return "_CREATE_SHARED_MODULE"; + case cmTarget::EXECUTABLE: + return "_LINK_EXECUTABLE"; + default: + break; + } + return ""; +} + +//---------------------------------------------------------------------------- +std::vector<std::string> cmGeneratorTarget::GetIncludeDirectories() +{ + std::vector<std::string> includes; + const char *prop = this->Target->GetProperty("INCLUDE_DIRECTORIES"); + if(prop) + { + cmSystemTools::ExpandListArgument(prop, includes); + } + + std::set<std::string> uniqueIncludes; + std::vector<std::string> orderedAndUniqueIncludes; + for(std::vector<std::string>::const_iterator + li = includes.begin(); li != includes.end(); ++li) + { + if(uniqueIncludes.insert(*li).second) + { + orderedAndUniqueIncludes.push_back(*li); + } + } + + return orderedAndUniqueIncludes; +} + +//---------------------------------------------------------------------------- +const char *cmGeneratorTarget::GetCompileDefinitions(const char *config) +{ + if (!config) + { + return this->Target->GetProperty("COMPILE_DEFINITIONS"); + } + std::string defPropName = "COMPILE_DEFINITIONS_"; + defPropName += + cmSystemTools::UpperCase(config); + + return this->Target->GetProperty(defPropName.c_str()); +} diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 5c7578d..060e25a 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -14,6 +14,7 @@ #include "cmStandardIncludes.h" +class cmComputeLinkInformation; class cmCustomCommand; class cmGlobalGenerator; class cmLocalGenerator; @@ -25,6 +26,13 @@ class cmGeneratorTarget { public: cmGeneratorTarget(cmTarget*); + ~cmGeneratorTarget(); + + int GetType() const; + const char *GetName() const; + const char *GetProperty(const char *prop); + bool GetPropertyAsBool(const char *prop); + std::vector<cmSourceFile*> const& GetSourceFiles(); cmTarget* Target; cmMakefile* Makefile; @@ -52,6 +60,25 @@ public: void UseObjectLibraries(std::vector<std::string>& objs); + /** Add the target output files to the global generator manifest. */ + void GenerateTargetManifest(const char* config); + + std::map<cmStdString, cmComputeLinkInformation*> LinkInformation; + + cmComputeLinkInformation* GetLinkInformation(const char* config); + + void GetAppleArchs(const char* config, + std::vector<std::string>& archVec); + + ///! Return the rule variable used to create this type of target, + // need to add CMAKE_(LANG) for full name. + const char* GetCreateRuleVariable(); + + /** Get the include directories for this target. */ + std::vector<std::string> GetIncludeDirectories(); + + const char *GetCompileDefinitions(const char *config = 0); + private: void ClassifySources(); void LookupObjectLibraries(); @@ -60,4 +87,6 @@ private: void operator=(cmGeneratorTarget const&); }; +typedef std::map<cmTarget*, cmGeneratorTarget*> cmGeneratorTargetsType; + #endif diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index a47ca36..ac75933 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -315,9 +315,11 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages, { rootBin = this->ConfiguredFilesPath; } + rootBin += "/"; + rootBin += cmVersion::GetCMakeVersion(); // set the dir for parent files so they can be used by modules - mf->AddDefinition("CMAKE_PLATFORM_ROOT_BIN",rootBin.c_str()); + mf->AddDefinition("CMAKE_PLATFORM_INFO_DIR",rootBin.c_str()); // find and make sure CMAKE_MAKE_PROGRAM is defined this->FindMakeProgram(mf); @@ -376,21 +378,16 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages, std::string loadedLang = "CMAKE_"; loadedLang += lang; loadedLang += "_COMPILER_LOADED"; - // If the existing build tree was already configured with this - // version of CMake then try to load the configured file first - // to avoid duplicate compiler tests. - unsigned int cacheMajor = mf->GetCacheMajorVersion(); - unsigned int cacheMinor = mf->GetCacheMinorVersion(); - unsigned int selfMajor = cmVersion::GetMajorVersion(); - unsigned int selfMinor = cmVersion::GetMinorVersion(); - if((this->CMakeInstance->GetIsInTryCompile() || - (selfMajor == cacheMajor && selfMinor == cacheMinor)) - && !mf->GetDefinition(loadedLang.c_str())) + if(!mf->GetDefinition(loadedLang.c_str())) { fpath = rootBin; fpath += "/CMake"; fpath += lang; fpath += "Compiler.cmake"; + + // If the existing build tree was already configured with this + // version of CMake then try to load the configured file first + // to avoid duplicate compiler tests. if(cmSystemTools::FileExists(fpath.c_str())) { if(!mf->ReadListFile(0,fpath.c_str())) @@ -1078,23 +1075,46 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - cmTargets& targets = - this->LocalGenerators[i]->GetMakefile()->GetTargets(); + cmGeneratorTargetsType generatorTargets; + + cmMakefile *mf = this->LocalGenerators[i]->GetMakefile(); + const char *noconfig_compile_definitions = + mf->GetProperty("COMPILE_DEFINITIONS"); + + std::vector<std::string> configs; + mf->GetConfigurations(configs); + + cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) { cmTarget* t = &ti->second; + + { + t->AppendProperty("COMPILE_DEFINITIONS", noconfig_compile_definitions); + for(std::vector<std::string>::const_iterator ci = configs.begin(); + ci != configs.end(); ++ci) + { + std::string defPropName = "COMPILE_DEFINITIONS_"; + defPropName += cmSystemTools::UpperCase(*ci); + t->AppendProperty(defPropName.c_str(), + mf->GetProperty(defPropName.c_str())); + } + } + cmGeneratorTarget* gt = new cmGeneratorTarget(t); this->GeneratorTargets[t] = gt; this->ComputeTargetObjects(gt); + generatorTargets[t] = gt; } + mf->SetGeneratorTargets(generatorTargets); } } //---------------------------------------------------------------------------- void cmGlobalGenerator::ClearGeneratorTargets() { - for(GeneratorTargetsType::iterator i = this->GeneratorTargets.begin(); + for(cmGeneratorTargetsType::iterator i = this->GeneratorTargets.begin(); i != this->GeneratorTargets.end(); ++i) { delete i->second; @@ -1105,7 +1125,7 @@ void cmGlobalGenerator::ClearGeneratorTargets() //---------------------------------------------------------------------------- cmGeneratorTarget* cmGlobalGenerator::GetGeneratorTarget(cmTarget* t) const { - GeneratorTargetsType::const_iterator ti = this->GeneratorTargets.find(t); + cmGeneratorTargetsType::const_iterator ti = this->GeneratorTargets.find(t); if(ti == this->GeneratorTargets.end()) { this->CMakeInstance->IssueMessage( @@ -1132,13 +1152,13 @@ void cmGlobalGenerator::CheckLocalGenerators() { manager = this->LocalGenerators[i]->GetMakefile()->GetCacheManager(); this->LocalGenerators[i]->ConfigureFinalPass(); - cmTargets & targets = - this->LocalGenerators[i]->GetMakefile()->GetTargets(); - for (cmTargets::iterator l = targets.begin(); + cmGeneratorTargetsType targets = + this->LocalGenerators[i]->GetMakefile()->GetGeneratorTargets(); + for (cmGeneratorTargetsType::iterator l = targets.begin(); l != targets.end(); l++) { const cmTarget::LinkLibraryVectorType& libs = - l->second.GetOriginalLinkLibraries(); + l->second->Target->GetOriginalLinkLibraries(); for(cmTarget::LinkLibraryVectorType::const_iterator lib = libs.begin(); lib != libs.end(); ++lib) { @@ -1154,14 +1174,14 @@ void cmGlobalGenerator::CheckLocalGenerators() } std::string text = notFoundMap[varName]; text += "\n linked by target \""; - text += l->second.GetName(); + text += l->second->GetName(); text += "\" in directory "; text+=this->LocalGenerators[i]->GetMakefile()->GetCurrentDirectory(); notFoundMap[varName] = text; } } std::vector<std::string> incs; - this->LocalGenerators[i]->GetIncludeDirectories(incs, &l->second); + this->LocalGenerators[i]->GetIncludeDirectories(incs, l->second); for( std::vector<std::string>::const_iterator incDir = incs.begin(); incDir != incs.end(); ++incDir) diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index ce91793..2f4ebc3 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -18,6 +18,7 @@ #include "cmTarget.h" // For cmTargets #include "cmTargetDepend.h" // For cmTargetDependSet #include "cmSystemTools.h" // for cmSystemTools::OutputOption +#include "cmGeneratorTarget.h" class cmake; class cmGeneratorTarget; class cmMakefile; @@ -383,8 +384,7 @@ private: TargetDependMap TargetDependencies; // Per-target generator information. - typedef std::map<cmTarget*, cmGeneratorTarget*> GeneratorTargetsType; - GeneratorTargetsType GeneratorTargets; + cmGeneratorTargetsType GeneratorTargets; void CreateGeneratorTargets(); void ClearGeneratorTargets(); virtual void ComputeTargetObjects(cmGeneratorTarget* gt) const; diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 48ead25..d188980 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -29,9 +29,12 @@ cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator() //---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator::AddPlatformDefinitions(cmMakefile* mf) { - mf->AddDefinition("MSVC10", "1"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "X86"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "X86"); + cmGlobalVisualStudio8Generator::AddPlatformDefinitions(mf); + if(!this->PlatformToolset.empty()) + { + mf->AddDefinition("CMAKE_VS_PLATFORM_TOOLSET", + this->PlatformToolset.c_str()); + } } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalVisualStudio10IA64Generator.cxx b/Source/cmGlobalVisualStudio10IA64Generator.cxx index 5f70f6b..25dd88f 100644 --- a/Source/cmGlobalVisualStudio10IA64Generator.cxx +++ b/Source/cmGlobalVisualStudio10IA64Generator.cxx @@ -16,6 +16,7 @@ //---------------------------------------------------------------------------- cmGlobalVisualStudio10IA64Generator::cmGlobalVisualStudio10IA64Generator() { + this->ArchitectureId = "x64"; } //---------------------------------------------------------------------------- @@ -33,8 +34,6 @@ void cmGlobalVisualStudio10IA64Generator { this->cmGlobalVisualStudio10Generator::AddPlatformDefinitions(mf); mf->AddDefinition("CMAKE_FORCE_IA64", "TRUE"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "x64"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "x64"); } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalVisualStudio10Win64Generator.cxx b/Source/cmGlobalVisualStudio10Win64Generator.cxx index 49dc473..d0a0c49 100644 --- a/Source/cmGlobalVisualStudio10Win64Generator.cxx +++ b/Source/cmGlobalVisualStudio10Win64Generator.cxx @@ -16,6 +16,7 @@ //---------------------------------------------------------------------------- cmGlobalVisualStudio10Win64Generator::cmGlobalVisualStudio10Win64Generator() { + this->ArchitectureId = "x64"; } //---------------------------------------------------------------------------- @@ -33,8 +34,6 @@ void cmGlobalVisualStudio10Win64Generator { this->cmGlobalVisualStudio10Generator::AddPlatformDefinitions(mf); mf->AddDefinition("CMAKE_FORCE_WIN64", "TRUE"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "x64"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "x64"); } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalVisualStudio11ARMGenerator.cxx b/Source/cmGlobalVisualStudio11ARMGenerator.cxx index fef1aba..efd71c6 100644 --- a/Source/cmGlobalVisualStudio11ARMGenerator.cxx +++ b/Source/cmGlobalVisualStudio11ARMGenerator.cxx @@ -14,19 +14,16 @@ #include "cmake.h" //---------------------------------------------------------------------------- -void cmGlobalVisualStudio11ARMGenerator -::GetDocumentation(cmDocumentationEntry& entry) const +cmGlobalVisualStudio11ARMGenerator::cmGlobalVisualStudio11ARMGenerator() { - entry.Name = this->GetName(); - entry.Brief = "Generates Visual Studio 11 ARM project files."; - entry.Full = ""; + this->ArchitectureId = "ARM"; } //---------------------------------------------------------------------------- void cmGlobalVisualStudio11ARMGenerator -::AddPlatformDefinitions(cmMakefile* mf) +::GetDocumentation(cmDocumentationEntry& entry) const { - this->cmGlobalVisualStudio11Generator::AddPlatformDefinitions(mf); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "ARM"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "ARM"); + entry.Name = this->GetName(); + entry.Brief = "Generates Visual Studio 11 ARM project files."; + entry.Full = ""; } diff --git a/Source/cmGlobalVisualStudio11ARMGenerator.h b/Source/cmGlobalVisualStudio11ARMGenerator.h index 77e1429..71dbf2e 100644 --- a/Source/cmGlobalVisualStudio11ARMGenerator.h +++ b/Source/cmGlobalVisualStudio11ARMGenerator.h @@ -18,7 +18,7 @@ class cmGlobalVisualStudio11ARMGenerator : public cmGlobalVisualStudio11Generator { public: - cmGlobalVisualStudio11ARMGenerator() {} + cmGlobalVisualStudio11ARMGenerator(); static cmGlobalGenerator* New() { return new cmGlobalVisualStudio11ARMGenerator; } @@ -31,7 +31,5 @@ public: /** Get the documentation entry for this generator. */ virtual void GetDocumentation(cmDocumentationEntry& entry) const; - - virtual void AddPlatformDefinitions(cmMakefile* mf); }; #endif diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx index be7fd55..7bb4d0c 100644 --- a/Source/cmGlobalVisualStudio11Generator.cxx +++ b/Source/cmGlobalVisualStudio11Generator.cxx @@ -22,14 +22,6 @@ cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator() } //---------------------------------------------------------------------------- -void cmGlobalVisualStudio11Generator::AddPlatformDefinitions(cmMakefile* mf) -{ - mf->AddDefinition("MSVC11", "1"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "X86"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "X86"); -} - -//---------------------------------------------------------------------------- void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 12.00\n"; diff --git a/Source/cmGlobalVisualStudio11Generator.h b/Source/cmGlobalVisualStudio11Generator.h index 7e8f6aa..56337a4 100644 --- a/Source/cmGlobalVisualStudio11Generator.h +++ b/Source/cmGlobalVisualStudio11Generator.h @@ -28,7 +28,6 @@ public: virtual const char* GetName() const { return cmGlobalVisualStudio11Generator::GetActualName();} static const char* GetActualName() {return "Visual Studio 11";} - virtual void AddPlatformDefinitions(cmMakefile* mf); virtual void WriteSLNHeader(std::ostream& fout); diff --git a/Source/cmGlobalVisualStudio11Win64Generator.cxx b/Source/cmGlobalVisualStudio11Win64Generator.cxx index 10c9027..94e07bf 100644 --- a/Source/cmGlobalVisualStudio11Win64Generator.cxx +++ b/Source/cmGlobalVisualStudio11Win64Generator.cxx @@ -14,6 +14,12 @@ #include "cmake.h" //---------------------------------------------------------------------------- +cmGlobalVisualStudio11Win64Generator::cmGlobalVisualStudio11Win64Generator() +{ + this->ArchitectureId = "x64"; +} + +//---------------------------------------------------------------------------- void cmGlobalVisualStudio11Win64Generator ::GetDocumentation(cmDocumentationEntry& entry) const { @@ -28,6 +34,4 @@ void cmGlobalVisualStudio11Win64Generator { this->cmGlobalVisualStudio11Generator::AddPlatformDefinitions(mf); mf->AddDefinition("CMAKE_FORCE_WIN64", "TRUE"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "x64"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "x64"); } diff --git a/Source/cmGlobalVisualStudio11Win64Generator.h b/Source/cmGlobalVisualStudio11Win64Generator.h index 53f1953..9445d15 100644 --- a/Source/cmGlobalVisualStudio11Win64Generator.h +++ b/Source/cmGlobalVisualStudio11Win64Generator.h @@ -18,7 +18,7 @@ class cmGlobalVisualStudio11Win64Generator : public cmGlobalVisualStudio11Generator { public: - cmGlobalVisualStudio11Win64Generator() {} + cmGlobalVisualStudio11Win64Generator(); static cmGlobalGenerator* New() { return new cmGlobalVisualStudio11Win64Generator; } diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index cc70341..e8ca788 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -40,14 +40,12 @@ void cmGlobalVisualStudio6Generator cmMakefile *mf, bool optional) { + cmGlobalVisualStudioGenerator::AddPlatformDefinitions(mf); mf->AddDefinition("CMAKE_GENERATOR_CC", "cl"); mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl"); mf->AddDefinition("CMAKE_GENERATOR_RC", "rc"); mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1"); mf->AddDefinition("CMAKE_GENERATOR_Fortran", "ifort"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "X86"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "X86"); - mf->AddDefinition("MSVC60", "1"); this->GenerateConfigurations(mf); this->cmGlobalGenerator::EnableLanguage(lang, mf, optional); } diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index 1da575e..ab2308f 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -34,14 +34,6 @@ cmLocalGenerator *cmGlobalVisualStudio71Generator::CreateLocalGenerator() } //---------------------------------------------------------------------------- -void cmGlobalVisualStudio71Generator::AddPlatformDefinitions(cmMakefile* mf) -{ - this->cmGlobalVisualStudio7Generator::AddPlatformDefinitions(mf); - mf->RemoveDefinition("MSVC70"); - mf->AddDefinition("MSVC71", "1"); -} - -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio71Generator::GetUserMacrosDirectory() { // Macros not supported on Visual Studio 7.1 and earlier because diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h index 285f202..a8daad6 100644 --- a/Source/cmGlobalVisualStudio71Generator.h +++ b/Source/cmGlobalVisualStudio71Generator.h @@ -53,7 +53,6 @@ public: protected: virtual const char* GetIDEVersion() { return "7.1"; } - virtual void AddPlatformDefinitions(cmMakefile* mf); virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root, std::vector<cmLocalGenerator*>& generators); diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index d485d6e..b6eea5d 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -55,13 +55,6 @@ void cmGlobalVisualStudio7Generator } -void cmGlobalVisualStudio7Generator::AddPlatformDefinitions(cmMakefile* mf) -{ - mf->AddDefinition("MSVC70", "1"); - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "X86"); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "X86"); -} - std::string cmGlobalVisualStudio7Generator ::GenerateBuildCommand(const char* makeProgram, const char *projectName, diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index 9b9107d..1df58f9 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -112,7 +112,6 @@ protected: virtual void WriteSLNFooter(std::ostream& fout); virtual void WriteSLNHeader(std::ostream& fout); virtual std::string WriteUtilityDepend(cmTarget* target); - virtual void AddPlatformDefinitions(cmMakefile* mf); virtual void WriteTargetsToSolution( std::ostream& fout, diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index a74a4ee..2e3b530 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -21,7 +21,6 @@ cmGlobalVisualStudio8Generator::cmGlobalVisualStudio8Generator() { this->FindMakeProgramFile = "CMakeVS8FindMake.cmake"; this->ProjectConfigurationSectionName = "ProjectConfigurationPlatforms"; - this->ArchitectureId = "X86"; } //---------------------------------------------------------------------------- @@ -54,14 +53,6 @@ void cmGlobalVisualStudio8Generator } //---------------------------------------------------------------------------- -void cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf) -{ - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", this->ArchitectureId); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", this->ArchitectureId); - mf->AddDefinition("MSVC80", "1"); -} - -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator::Configure() { this->cmGlobalVisualStudio7Generator::Configure(); diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h index 31501bc..5009f29 100644 --- a/Source/cmGlobalVisualStudio8Generator.h +++ b/Source/cmGlobalVisualStudio8Generator.h @@ -72,7 +72,6 @@ protected: void AddCheckTarget(); static cmIDEFlagTable const* GetExtraFlagTableVS8(); - virtual void AddPlatformDefinitions(cmMakefile* mf); virtual void WriteSLNHeader(std::ostream& fout); virtual void WriteSolutionConfigurations(std::ostream& fout); virtual void WriteProjectConfigurations(std::ostream& fout, @@ -82,7 +81,5 @@ protected: virtual bool ComputeTargetDepends(); virtual void WriteProjectDepends(std::ostream& fout, const char* name, const char* path, cmTarget &t); - - const char* ArchitectureId; }; #endif diff --git a/Source/cmGlobalVisualStudio8Win64Generator.cxx b/Source/cmGlobalVisualStudio8Win64Generator.cxx index 60e45b8..164d116 100644 --- a/Source/cmGlobalVisualStudio8Win64Generator.cxx +++ b/Source/cmGlobalVisualStudio8Win64Generator.cxx @@ -22,17 +22,6 @@ cmGlobalVisualStudio8Win64Generator::cmGlobalVisualStudio8Win64Generator() this->ArchitectureId = "x64"; } -///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio8Win64Generator::CreateLocalGenerator() -{ - cmLocalVisualStudio7Generator *lg - = new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS8); - lg->SetPlatformName(this->GetPlatformName()); - lg->SetExtraFlagTable(this->GetExtraFlagTableVS8()); - lg->SetGlobalGenerator(this); - return lg; -} - //---------------------------------------------------------------------------- void cmGlobalVisualStudio8Win64Generator ::GetDocumentation(cmDocumentationEntry& entry) const diff --git a/Source/cmGlobalVisualStudio8Win64Generator.h b/Source/cmGlobalVisualStudio8Win64Generator.h index 136cdb8..12f8012 100644 --- a/Source/cmGlobalVisualStudio8Win64Generator.h +++ b/Source/cmGlobalVisualStudio8Win64Generator.h @@ -38,9 +38,6 @@ public: /** Get the documentation entry for this generator. */ virtual void GetDocumentation(cmDocumentationEntry& entry) const; - ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); - /** * Try to determine system infomation such as shared library * extension, pthreads, byte order etc. diff --git a/Source/cmGlobalVisualStudio9Generator.cxx b/Source/cmGlobalVisualStudio9Generator.cxx index fcf00d5..70af50d 100644 --- a/Source/cmGlobalVisualStudio9Generator.cxx +++ b/Source/cmGlobalVisualStudio9Generator.cxx @@ -23,14 +23,6 @@ cmGlobalVisualStudio9Generator::cmGlobalVisualStudio9Generator() } //---------------------------------------------------------------------------- -void cmGlobalVisualStudio9Generator::AddPlatformDefinitions(cmMakefile* mf) -{ - mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", this->ArchitectureId); - mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", this->ArchitectureId); - mf->AddDefinition("MSVC90", "1"); -} - -//---------------------------------------------------------------------------- void cmGlobalVisualStudio9Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 10.00\n"; diff --git a/Source/cmGlobalVisualStudio9Generator.h b/Source/cmGlobalVisualStudio9Generator.h index 361b58c..0b0d143 100644 --- a/Source/cmGlobalVisualStudio9Generator.h +++ b/Source/cmGlobalVisualStudio9Generator.h @@ -32,7 +32,6 @@ public: virtual const char* GetName() const { return cmGlobalVisualStudio9Generator::GetActualName();} static const char* GetActualName() {return "Visual Studio 9 2008";} - virtual void AddPlatformDefinitions(cmMakefile* mf); /** Get the documentation entry for this generator. */ virtual void GetDocumentation(cmDocumentationEntry& entry) const; diff --git a/Source/cmGlobalVisualStudio9IA64Generator.cxx b/Source/cmGlobalVisualStudio9IA64Generator.cxx index 993340a..38dbfac 100644 --- a/Source/cmGlobalVisualStudio9IA64Generator.cxx +++ b/Source/cmGlobalVisualStudio9IA64Generator.cxx @@ -19,17 +19,6 @@ cmGlobalVisualStudio9IA64Generator::cmGlobalVisualStudio9IA64Generator() this->ArchitectureId = "Itanium"; } -///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio9IA64Generator::CreateLocalGenerator() -{ - cmLocalVisualStudio7Generator *lg = - new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9); - lg->SetPlatformName(this->GetPlatformName()); - lg->SetExtraFlagTable(this->GetExtraFlagTableVS8()); - lg->SetGlobalGenerator(this); - return lg; -} - //---------------------------------------------------------------------------- void cmGlobalVisualStudio9IA64Generator ::GetDocumentation(cmDocumentationEntry& entry) const diff --git a/Source/cmGlobalVisualStudio9IA64Generator.h b/Source/cmGlobalVisualStudio9IA64Generator.h index e33ee15..989b0d1 100644 --- a/Source/cmGlobalVisualStudio9IA64Generator.h +++ b/Source/cmGlobalVisualStudio9IA64Generator.h @@ -38,9 +38,6 @@ public: /** Get the documentation entry for this generator. */ virtual void GetDocumentation(cmDocumentationEntry& entry) const; - ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); - /** * Try to determine system infomation such as shared library * extension, pthreads, byte order etc. diff --git a/Source/cmGlobalVisualStudio9Win64Generator.cxx b/Source/cmGlobalVisualStudio9Win64Generator.cxx index 08f537d..4d8a646 100644 --- a/Source/cmGlobalVisualStudio9Win64Generator.cxx +++ b/Source/cmGlobalVisualStudio9Win64Generator.cxx @@ -19,17 +19,6 @@ cmGlobalVisualStudio9Win64Generator::cmGlobalVisualStudio9Win64Generator() this->ArchitectureId = "x64"; } -///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio9Win64Generator::CreateLocalGenerator() -{ - cmLocalVisualStudio7Generator *lg = - new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9); - lg->SetPlatformName(this->GetPlatformName()); - lg->SetExtraFlagTable(this->GetExtraFlagTableVS8()); - lg->SetGlobalGenerator(this); - return lg; -} - //---------------------------------------------------------------------------- void cmGlobalVisualStudio9Win64Generator ::GetDocumentation(cmDocumentationEntry& entry) const diff --git a/Source/cmGlobalVisualStudio9Win64Generator.h b/Source/cmGlobalVisualStudio9Win64Generator.h index 0ce1afe..7c20cf4 100644 --- a/Source/cmGlobalVisualStudio9Win64Generator.h +++ b/Source/cmGlobalVisualStudio9Win64Generator.h @@ -38,9 +38,6 @@ public: /** Get the documentation entry for this generator. */ virtual void GetDocumentation(cmDocumentationEntry& entry) const; - ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); - /** * Try to determine system infomation such as shared library * extension, pthreads, byte order etc. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index a2b4c65..0968b77 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -21,6 +21,7 @@ //---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::cmGlobalVisualStudioGenerator() { + this->ArchitectureId = "X86"; } //---------------------------------------------------------------------------- @@ -489,6 +490,13 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) } //---------------------------------------------------------------------------- +void cmGlobalVisualStudioGenerator::AddPlatformDefinitions(cmMakefile* mf) +{ + mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", this->ArchitectureId); + mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", this->ArchitectureId); +} + +//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetUtilityDepend(cmTarget* target) { UtilityDependsMap::iterator i = this->UtilityDepends.find(target); diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 27fc8cf..cebf7d7 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -84,6 +84,8 @@ protected: virtual const char* GetIDEVersion() = 0; + virtual void AddPlatformDefinitions(cmMakefile* mf); + virtual bool ComputeTargetDepends(); class VSDependSet: public std::set<cmStdString> {}; class VSDependMap: public std::map<cmTarget*, VSDependSet> {}; @@ -96,6 +98,8 @@ protected: std::string GetUtilityDepend(cmTarget* target); typedef std::map<cmTarget*, cmStdString> UtilityDependsMap; UtilityDependsMap UtilityDepends; + const char* ArchitectureId; + private: void ComputeTargetObjects(cmGeneratorTarget* gt) const; diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index e8ab38f..f9a1503 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -1713,7 +1713,10 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target, // Set target-specific architectures. std::vector<std::string> archs; - target.GetAppleArchs(configName, archs); + { + cmGeneratorTarget *gtgt = this->GetGeneratorTarget(&target); + gtgt->GetAppleArchs(configName, archs); + } if(!archs.empty()) { // Enable ARCHS attribute. @@ -1950,7 +1953,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target, BuildObjectListOrString dirs(this, this->XcodeVersion >= 30); BuildObjectListOrString fdirs(this, this->XcodeVersion >= 30); std::vector<std::string> includes; - this->CurrentLocalGenerator->GetIncludeDirectories(includes, &target); + cmGeneratorTarget *gtgt = this->GetGeneratorTarget(&target); + this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt); std::set<cmStdString> emitted; emitted.insert("/System/Library/Frameworks"); for(std::vector<std::string>::iterator i = includes.begin(); @@ -2625,7 +2629,8 @@ void cmGlobalXCodeGenerator } // Compute the link library and directory information. - cmComputeLinkInformation* pcli = cmtarget->GetLinkInformation(configName); + cmGeneratorTarget* gtgt = this->GetGeneratorTarget(cmtarget); + cmComputeLinkInformation* pcli = gtgt->GetLinkInformation(configName); if(!pcli) { continue; diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index ffc0f35..56d7170 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -409,14 +409,18 @@ namespace enum Op { OpLess, OpEqual, OpGreater }; bool HandleVersionCompare(Op op, const char* lhs_str, const char* rhs_str) { - // Parse out up to 4 components. - unsigned int lhs[4] = {0,0,0,0}; - unsigned int rhs[4] = {0,0,0,0}; - sscanf(lhs_str, "%u.%u.%u.%u", &lhs[0], &lhs[1], &lhs[2], &lhs[3]); - sscanf(rhs_str, "%u.%u.%u.%u", &rhs[0], &rhs[1], &rhs[2], &rhs[3]); + // Parse out up to 8 components. + unsigned int lhs[8] = {0,0,0,0,0,0,0,0}; + unsigned int rhs[8] = {0,0,0,0,0,0,0,0}; + sscanf(lhs_str, "%u.%u.%u.%u.%u.%u.%u.%u", + &lhs[0], &lhs[1], &lhs[2], &lhs[3], + &lhs[4], &lhs[5], &lhs[6], &lhs[7]); + sscanf(rhs_str, "%u.%u.%u.%u.%u.%u.%u.%u", + &rhs[0], &rhs[1], &rhs[2], &rhs[3], + &rhs[4], &rhs[5], &rhs[6], &rhs[7]); // Do component-wise comparison. - for(unsigned int i=0; i < 4; ++i) + for(unsigned int i=0; i < 8; ++i) { if(lhs[i] < rhs[i]) { diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 5f9b658..347ad3e 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -16,6 +16,7 @@ #include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmake.h" +#include "cmGeneratorTarget.h" #include <assert.h> @@ -26,7 +27,8 @@ cmInstallTargetGenerator std::vector<std::string> const& configurations, const char* component, bool optional): cmInstallGenerator(dest, configurations, component), Target(&t), - ImportLibrary(implib), FilePermissions(file_permissions), Optional(optional) + ImportLibrary(implib), FilePermissions(file_permissions), + Optional(optional), GeneratorTarget(0) { this->ActionsPerConfig = true; this->NamelinkMode = NamelinkModeNone; @@ -484,6 +486,17 @@ void cmInstallTargetGenerator::PostReplacementTweaks(std::ostream& os, this->AddStripRule(os, indent, file); } +void cmInstallTargetGenerator::CreateGeneratorTarget() +{ + if (!this->GeneratorTarget) + { + this->GeneratorTarget = this->Target->GetMakefile() + ->GetLocalGenerator() + ->GetGlobalGenerator() + ->GetGeneratorTarget(this->Target); + } +} + //---------------------------------------------------------------------------- void cmInstallTargetGenerator @@ -507,10 +520,13 @@ cmInstallTargetGenerator return; } + this->CreateGeneratorTarget(); + // Build a map of build-tree install_name to install-tree install_name for // shared libraries linked to this target. std::map<cmStdString, cmStdString> install_name_remap; - if(cmComputeLinkInformation* cli = this->Target->GetLinkInformation(config)) + if(cmComputeLinkInformation* cli = + this->GeneratorTarget->GetLinkInformation(config)) { std::set<cmTarget*> const& sharedLibs = cli->GetSharedLibrariesLinked(); for(std::set<cmTarget*>::const_iterator j = sharedLibs.begin(); @@ -608,9 +624,12 @@ cmInstallTargetGenerator return; } + this->CreateGeneratorTarget(); + // Get the link information for this target. // It can provide the RPATH. - cmComputeLinkInformation* cli = this->Target->GetLinkInformation(config); + cmComputeLinkInformation* cli = + this->GeneratorTarget->GetLinkInformation(config); if(!cli) { return; @@ -639,9 +658,12 @@ cmInstallTargetGenerator return; } + this->CreateGeneratorTarget(); + // Get the link information for this target. // It can provide the RPATH. - cmComputeLinkInformation* cli = this->Target->GetLinkInformation(config); + cmComputeLinkInformation* cli = + this->GeneratorTarget->GetLinkInformation(config); if(!cli) { return; diff --git a/Source/cmInstallTargetGenerator.h b/Source/cmInstallTargetGenerator.h index 5d158b8..cab3e90 100644 --- a/Source/cmInstallTargetGenerator.h +++ b/Source/cmInstallTargetGenerator.h @@ -15,6 +15,8 @@ #include "cmInstallGenerator.h" #include "cmTarget.h" +class cmGeneratorTarget; + /** \class cmInstallTargetGenerator * \brief Generate target installation rules. */ @@ -92,11 +94,14 @@ protected: void AddRanlibRule(std::ostream& os, Indent const& indent, const std::string& toDestDirPath); + void CreateGeneratorTarget(); + cmTarget* Target; bool ImportLibrary; std::string FilePermissions; bool Optional; NamelinkModeType NamelinkMode; + cmGeneratorTarget* GeneratorTarget; }; #endif diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 0cfb36b..662f876 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -533,10 +533,11 @@ void cmLocalGenerator::GenerateTargetManifest() this->Makefile->GetConfigurations(configNames); // Add our targets to the manifest for each configuration. - cmTargets& targets = this->Makefile->GetTargets(); - for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) + cmGeneratorTargetsType targets = this->Makefile->GetGeneratorTargets(); + for(cmGeneratorTargetsType::iterator t = targets.begin(); + t != targets.end(); ++t) { - cmTarget& target = t->second; + cmGeneratorTarget& target = *t->second; if(configNames.empty()) { target.GenerateTargetManifest(0); @@ -554,9 +555,9 @@ void cmLocalGenerator::GenerateTargetManifest() } void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, - const char* lang, - cmSourceFile& source, - cmTarget& target) + const char* lang, + cmSourceFile& source, + cmGeneratorTarget& target) { std::string objectDir = cmSystemTools::GetFilenamePath(std::string(ofname)); objectDir = this->Convert(objectDir.c_str(),START_OUTPUT,SHELL); @@ -635,7 +636,8 @@ void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, ); } -void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) +void cmLocalGenerator::AddBuildTargetRule(const char* llang, + cmGeneratorTarget& target) { cmStdString objs; std::vector<std::string> objVector; @@ -669,7 +671,7 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) std::string createRule = "CMAKE_"; createRule += llang; createRule += target.GetCreateRuleVariable(); - std::string targetName = target.GetFullName(); + std::string targetName = target.Target->GetFullName(); // Executable : // Shared Library: // Static Library: @@ -677,7 +679,7 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) std::string linkLibs; // should be set std::string flags; // should be set std::string linkFlags; // should be set - this->GetTargetFlags(linkLibs, flags, linkFlags, target); + this->GetTargetFlags(linkLibs, flags, linkFlags, &target); cmLocalGenerator::RuleVariables vars; vars.Language = llang; vars.Objects = objs.c_str(); @@ -714,7 +716,7 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) // Store this command line. commandLines.push_back(commandLine); } - std::string targetFullPath = target.GetFullPath(); + std::string targetFullPath = target.Target->GetFullPath(); // Generate a meaningful comment for the command. std::string comment = "Linking "; comment += llang; @@ -728,7 +730,7 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) comment.c_str(), this->Makefile->GetStartOutputDirectory() ); - target.AddSourceFile + target.Target->AddSourceFile (this->Makefile->GetSource(targetFullPath.c_str())); } @@ -736,11 +738,11 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) void cmLocalGenerator ::CreateCustomTargetsAndCommands(std::set<cmStdString> const& lang) { - cmTargets &tgts = this->Makefile->GetTargets(); - for(cmTargets::iterator l = tgts.begin(); + cmGeneratorTargetsType tgts = this->Makefile->GetGeneratorTargets(); + for(cmGeneratorTargetsType::iterator l = tgts.begin(); l != tgts.end(); l++) { - cmTarget& target = l->second; + cmGeneratorTarget& target = *l->second; switch(target.GetType()) { case cmTarget::STATIC_LIBRARY: @@ -748,12 +750,12 @@ void cmLocalGenerator case cmTarget::MODULE_LIBRARY: case cmTarget::EXECUTABLE: { - const char* llang = target.GetLinkerLanguage(); + const char* llang = target.Target->GetLinkerLanguage(); if(!llang) { cmSystemTools::Error ("CMake can not determine linker language for target:", - target.GetName()); + target.Target->GetName()); return; } // if the language is not in the set lang then create custom @@ -1318,7 +1320,7 @@ std::string cmLocalGenerator::GetIncludeFlags( //---------------------------------------------------------------------------- void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs, - cmTarget* target, + cmGeneratorTarget* target, const char* lang) { // Need to decide whether to automatically include the source and @@ -1449,7 +1451,7 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs, void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, std::string& flags, std::string& linkFlags, - cmTarget& target) + cmGeneratorTarget* target) { std::string buildType = this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE"); @@ -1457,12 +1459,12 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, const char* libraryLinkVariable = "CMAKE_SHARED_LINKER_FLAGS"; // default to shared library - switch(target.GetType()) + switch(target->GetType()) { case cmTarget::STATIC_LIBRARY: { const char* targetLinkFlags = - target.GetProperty("STATIC_LIBRARY_FLAGS"); + target->GetProperty("STATIC_LIBRARY_FLAGS"); if(targetLinkFlags) { linkFlags += targetLinkFlags; @@ -1472,7 +1474,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, { std::string build = "STATIC_LIBRARY_FLAGS_"; build += buildType; - targetLinkFlags = target.GetProperty(build.c_str()); + targetLinkFlags = target->GetProperty(build.c_str()); if(targetLinkFlags) { linkFlags += targetLinkFlags; @@ -1498,7 +1500,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, if(this->Makefile->IsOn("WIN32") && !(this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW"))) { - const std::vector<cmSourceFile*>& sources = target.GetSourceFiles(); + const std::vector<cmSourceFile*>& sources = target->GetSourceFiles(); for(std::vector<cmSourceFile*>::const_iterator i = sources.begin(); i != sources.end(); ++i) { @@ -1513,7 +1515,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, } } } - const char* targetLinkFlags = target.GetProperty("LINK_FLAGS"); + const char* targetLinkFlags = target->GetProperty("LINK_FLAGS"); if(targetLinkFlags) { linkFlags += targetLinkFlags; @@ -1523,7 +1525,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, { std::string configLinkFlags = "LINK_FLAGS_"; configLinkFlags += buildType; - targetLinkFlags = target.GetProperty(configLinkFlags.c_str()); + targetLinkFlags = target->GetProperty(configLinkFlags.c_str()); if(targetLinkFlags) { linkFlags += targetLinkFlags; @@ -1531,7 +1533,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, } } cmOStringStream linklibsStr; - this->OutputLinkLibraries(linklibsStr, target, false); + this->OutputLinkLibraries(linklibsStr, *target, false); linkLibs = linklibsStr.str(); } break; @@ -1547,17 +1549,17 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, linkFlags += this->Makefile->GetSafeDefinition(build.c_str()); linkFlags += " "; } - const char* linkLanguage = target.GetLinkerLanguage(); + const char* linkLanguage = target->Target->GetLinkerLanguage(); if(!linkLanguage) { cmSystemTools::Error ("CMake can not determine linker language for target:", - target.GetName()); + target->Target->GetName()); return; } this->AddLanguageFlags(flags, linkLanguage, buildType.c_str()); cmOStringStream linklibs; - this->OutputLinkLibraries(linklibs, target, false); + this->OutputLinkLibraries(linklibs, *target, false); linkLibs = linklibs.str(); if(cmSystemTools::IsOn (this->Makefile->GetDefinition("BUILD_SHARED_LIBS"))) @@ -1567,7 +1569,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, linkFlags += this->Makefile->GetSafeDefinition(sFlagVar.c_str()); linkFlags += " "; } - if ( target.GetPropertyAsBool("WIN32_EXECUTABLE") ) + if ( target->GetPropertyAsBool("WIN32_EXECUTABLE") ) { linkFlags += this->Makefile->GetSafeDefinition("CMAKE_CREATE_WIN32_EXE"); @@ -1579,7 +1581,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, this->Makefile->GetSafeDefinition("CMAKE_CREATE_CONSOLE_EXE"); linkFlags += " "; } - if (target.IsExecutableWithExports()) + if (target->Target->IsExecutableWithExports()) { std::string exportFlagVar = "CMAKE_EXE_EXPORTS_"; exportFlagVar += linkLanguage; @@ -1589,7 +1591,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, this->Makefile->GetSafeDefinition(exportFlagVar.c_str()); linkFlags += " "; } - const char* targetLinkFlags = target.GetProperty("LINK_FLAGS"); + const char* targetLinkFlags = target->GetProperty("LINK_FLAGS"); if(targetLinkFlags) { linkFlags += targetLinkFlags; @@ -1599,7 +1601,7 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs, { std::string configLinkFlags = "LINK_FLAGS_"; configLinkFlags += buildType; - targetLinkFlags = target.GetProperty(configLinkFlags.c_str()); + targetLinkFlags = target->GetProperty(configLinkFlags.c_str()); if(targetLinkFlags) { linkFlags += targetLinkFlags; @@ -1651,7 +1653,7 @@ std::string cmLocalGenerator::ConvertToLinkReference(std::string const& lib) * to the name of the library. This will not link a library against itself. */ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout, - cmTarget& tgt, + cmGeneratorTarget& tgt, bool relink) { const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE"); @@ -1778,7 +1780,7 @@ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout, //---------------------------------------------------------------------------- void cmLocalGenerator::AddArchitectureFlags(std::string& flags, - cmTarget* target, + cmGeneratorTarget* target, const char *lang, const char* config) { @@ -2101,9 +2103,8 @@ void cmLocalGenerator::AppendFlags(std::string& flags, } //---------------------------------------------------------------------------- -void cmLocalGenerator::AppendDefines(std::string& defines, - const char* defines_list, - const char* lang) +void cmLocalGenerator::AppendDefines(std::set<std::string>& defines, + const char* defines_list) { // Short-circuit if there are no definitions. if(!defines_list) @@ -2115,12 +2116,23 @@ void cmLocalGenerator::AppendDefines(std::string& defines, std::vector<std::string> defines_vec; cmSystemTools::ExpandListArgument(defines_list, defines_vec); - // Short-circuit if there are no definitions. - if(defines_vec.empty()) + for(std::vector<std::string>::const_iterator di = defines_vec.begin(); + di != defines_vec.end(); ++di) { - return; + // Skip unsupported definitions. + if(!this->CheckDefinition(*di)) + { + continue; + } + defines.insert(*di); } +} +//---------------------------------------------------------------------------- +void cmLocalGenerator::JoinDefines(const std::set<std::string>& defines, + std::string &definesString, + const char* lang) +{ // Lookup the define flag for the current language. std::string dflag = "-D"; if(lang) @@ -2135,23 +2147,13 @@ void cmLocalGenerator::AppendDefines(std::string& defines, } } - // Add each definition to the command line with appropriate escapes. - const char* dsep = defines.empty()? "" : " "; - for(std::vector<std::string>::const_iterator di = defines_vec.begin(); - di != defines_vec.end(); ++di) + std::set<std::string>::const_iterator defineIt = defines.begin(); + const std::set<std::string>::const_iterator defineEnd = defines.end(); + const char* itemSeparator = definesString.empty() ? "" : " "; + for( ; defineIt != defineEnd; ++defineIt) { - // Skip unsupported definitions. - if(!this->CheckDefinition(*di)) - { - continue; - } - - // Separate from previous definitions. - defines += dsep; - dsep = " "; - // Append the definition with proper escaping. - defines += dflag; + std::string def = dflag; if(this->WatcomWMake) { // The Watcom compiler does its own command line parsing instead @@ -2164,27 +2166,30 @@ void cmLocalGenerator::AppendDefines(std::string& defines, // command line without any escapes. However we still have to // get the '$' and '#' characters through WMake as '$$' and // '$#'. - for(const char* c = di->c_str(); *c; ++c) + for(const char* c = defineIt->c_str(); *c; ++c) { if(*c == '$' || *c == '#') { - defines += '$'; + def += '$'; } - defines += *c; + def += *c; } } else { // Make the definition appear properly on the command line. Use // -DNAME="value" instead of -D"NAME=value" to help VS6 parser. - std::string::size_type eq = di->find("="); - defines += di->substr(0, eq); - if(eq != di->npos) + std::string::size_type eq = defineIt->find("="); + def += defineIt->substr(0, eq); + if(eq != defineIt->npos) { - defines += "="; - defines += this->EscapeForShell(di->c_str() + eq + 1, true); + def += "="; + def += this->EscapeForShell(defineIt->c_str() + eq + 1, true); } } + definesString += itemSeparator; + itemSeparator = " "; + definesString += def; } } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 39b493f..0916d44 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -16,6 +16,7 @@ class cmMakefile; class cmGlobalGenerator; +class cmGeneratorTarget; class cmTarget; class cmTargetManifest; class cmSourceFile; @@ -135,7 +136,7 @@ public: std::vector<cmLocalGenerator*>& GetChildren() { return this->Children; }; - void AddArchitectureFlags(std::string& flags, cmTarget* target, + void AddArchitectureFlags(std::string& flags, cmGeneratorTarget* target, const char *lang, const char* config); void AddLanguageFlags(std::string& flags, const char* lang, @@ -154,8 +155,14 @@ public: * Encode a list of preprocessor definitions for the compiler * command line. */ - void AppendDefines(std::string& defines, const char* defines_list, - const char* lang); + void AppendDefines(std::set<std::string>& defines, + const char* defines_list); + /** + * Join a set of defines into a definesString with a space separator. + */ + void JoinDefines(const std::set<std::string>& defines, + std::string &definesString, + const char* lang); /** Lookup and append options associated with a particular feature. */ void AppendFeatureOptions(std::string& flags, const char* lang, @@ -199,7 +206,7 @@ public: /** Get the include flags for the current makefile and language. */ void GetIncludeDirectories(std::vector<std::string>& dirs, - cmTarget* target, + cmGeneratorTarget* target, const char* lang = "C"); /** Compute the language used to compile the given source file. */ @@ -328,11 +335,12 @@ public: void GetTargetFlags(std::string& linkLibs, std::string& flags, std::string& linkFlags, - cmTarget&target); + cmGeneratorTarget* target); protected: ///! put all the libraries for a target on into the given stream - virtual void OutputLinkLibraries(std::ostream&, cmTarget&, bool relink); + virtual void OutputLinkLibraries(std::ostream&, cmGeneratorTarget&, + bool relink); // Expand rule variables in CMake of the type found in language rules void ExpandRuleVariables(std::string& string, @@ -348,12 +356,12 @@ protected: /** Convert a target to a utility target for unsupported * languages of a generator */ - void AddBuildTargetRule(const char* llang, cmTarget& target); + void AddBuildTargetRule(const char* llang, cmGeneratorTarget& target); ///! add a custom command to build a .o file that is part of a target void AddCustomCommandToCreateObject(const char* ofname, const char* lang, cmSourceFile& source, - cmTarget& target); + cmGeneratorTarget& target); // Create Custom Targets and commands for unsupported languages // The set passed in should contain the languages supported by the // generator directly. Any targets containing files that are not diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index 1a7e611..72b56e7 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -418,25 +418,42 @@ void cmLocalVisualStudio6Generator // Add per-source and per-configuration preprocessor definitions. std::map<cmStdString, cmStdString> cdmap; - this->AppendDefines(compileFlags, - (*sf)->GetProperty("COMPILE_DEFINITIONS"), lang); + + { + std::set<std::string> targetCompileDefinitions; + + this->AppendDefines(targetCompileDefinitions, + (*sf)->GetProperty("COMPILE_DEFINITIONS")); + this->JoinDefines(targetCompileDefinitions, compileFlags, lang); + } + if(const char* cdefs = (*sf)->GetProperty("COMPILE_DEFINITIONS_DEBUG")) { - this->AppendDefines(cdmap["DEBUG"], cdefs, lang); + std::set<std::string> debugCompileDefinitions; + this->AppendDefines(debugCompileDefinitions, cdefs); + this->JoinDefines(debugCompileDefinitions, cdmap["DEBUG"], lang); } if(const char* cdefs = (*sf)->GetProperty("COMPILE_DEFINITIONS_RELEASE")) { - this->AppendDefines(cdmap["RELEASE"], cdefs, lang); + std::set<std::string> releaseCompileDefinitions; + this->AppendDefines(releaseCompileDefinitions, cdefs); + this->JoinDefines(releaseCompileDefinitions, cdmap["RELEASE"], lang); } if(const char* cdefs = (*sf)->GetProperty("COMPILE_DEFINITIONS_MINSIZEREL")) { - this->AppendDefines(cdmap["MINSIZEREL"], cdefs, lang); + std::set<std::string> minsizerelCompileDefinitions; + this->AppendDefines(minsizerelCompileDefinitions, cdefs); + this->JoinDefines(minsizerelCompileDefinitions, cdmap["MINSIZEREL"], + lang); } if(const char* cdefs = (*sf)->GetProperty("COMPILE_DEFINITIONS_RELWITHDEBINFO")) { - this->AppendDefines(cdmap["RELWITHDEBINFO"], cdefs, lang); + std::set<std::string> relwithdebinfoCompileDefinitions; + this->AppendDefines(relwithdebinfoCompileDefinitions, cdefs); + this->JoinDefines(relwithdebinfoCompileDefinitions, + cdmap["RELWITHDEBINFO"], lang); } bool excludedFromBuild = @@ -845,10 +862,13 @@ cmLocalVisualStudio6Generator::GetTargetIncludeOptions(cmTarget &target) // the length threatens this problem. unsigned int maxIncludeLength = 3000; bool useShortPath = false; + + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); for(int j=0; j < 2; ++j) { std::vector<std::string> includes; - this->GetIncludeDirectories(includes, &target); + this->GetIncludeDirectories(includes, gt); std::vector<std::string>::iterator i; for(i = includes.begin(); i != includes.end(); ++i) @@ -1653,43 +1673,44 @@ void cmLocalVisualStudio6Generator } // Add per-target and per-configuration preprocessor definitions. - std::string defines = " "; - std::string debugDefines = " "; - std::string releaseDefines = " "; - std::string minsizeDefines = " "; - std::string debugrelDefines = " "; + std::set<std::string> definesSet; + std::set<std::string> debugDefinesSet; + std::set<std::string> releaseDefinesSet; + std::set<std::string> minsizeDefinesSet; + std::set<std::string> debugrelDefinesSet; - this->AppendDefines( - defines, - this->Makefile->GetProperty("COMPILE_DEFINITIONS"), 0); - this->AppendDefines( - debugDefines, - this->Makefile->GetProperty("COMPILE_DEFINITIONS_DEBUG"),0); - this->AppendDefines( - releaseDefines, - this->Makefile->GetProperty("COMPILE_DEFINITIONS_RELEASE"), 0); - this->AppendDefines( - minsizeDefines, - this->Makefile->GetProperty("COMPILE_DEFINITIONS_MINSIZEREL"), 0); - this->AppendDefines( - debugrelDefines, - this->Makefile->GetProperty("COMPILE_DEFINITIONS_RELWITHDEBINFO"), 0); + + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); this->AppendDefines( - defines, - target.GetProperty("COMPILE_DEFINITIONS"), 0); + definesSet, + gt->GetCompileDefinitions()); this->AppendDefines( - debugDefines, - target.GetProperty("COMPILE_DEFINITIONS_DEBUG"), 0); + debugDefinesSet, + gt->GetCompileDefinitions("DEBUG")); this->AppendDefines( - releaseDefines, - target.GetProperty("COMPILE_DEFINITIONS_RELEASE"), 0); + releaseDefinesSet, + gt->GetCompileDefinitions("RELEASE")); this->AppendDefines( - minsizeDefines, - target.GetProperty("COMPILE_DEFINITIONS_MINSIZEREL"), 0); + minsizeDefinesSet, + gt->GetCompileDefinitions("MINSIZEREL")); this->AppendDefines( - debugrelDefines, - target.GetProperty("COMPILE_DEFINITIONS_RELWITHDEBINFO"), 0); + debugrelDefinesSet, + gt->GetCompileDefinitions("RELWITHDEBINFO")); + + std::string defines = " "; + std::string debugDefines = " "; + std::string releaseDefines = " "; + std::string minsizeDefines = " "; + std::string debugrelDefines = " "; + + this->JoinDefines(definesSet, defines, 0); + this->JoinDefines(debugDefinesSet, debugDefines, 0); + this->JoinDefines(releaseDefinesSet, releaseDefines, 0); + this->JoinDefines(minsizeDefinesSet, minsizeDefines, 0); + this->JoinDefines(debugrelDefinesSet, debugrelDefines, 0); + flags += defines; flagsDebug += debugDefines; flagsRelease += releaseDefines; @@ -1746,8 +1767,10 @@ void cmLocalVisualStudio6Generator const std::string extraOptions, std::string& options) { + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); // Compute the link information for this configuration. - cmComputeLinkInformation* pcli = target.GetLinkInformation(configName); + cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName); if(!pcli) { return; diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 2dfca02..2ededfe 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -819,7 +819,9 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, targetOptions.OutputAdditionalOptions(fout, "\t\t\t\t", "\n"); fout << "\t\t\t\tAdditionalIncludeDirectories=\""; std::vector<std::string> includes; - this->GetIncludeDirectories(includes, &target); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); + this->GetIncludeDirectories(includes, gt); std::vector<std::string>::iterator i = includes.begin(); for(;i != includes.end(); ++i) { @@ -1079,7 +1081,9 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, targetNameImport, targetNamePDB, configName); // Compute the link library and directory information. - cmComputeLinkInformation* pcli = target.GetLinkInformation(configName); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); + cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName); if(!pcli) { return; @@ -1164,7 +1168,9 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, targetNameImport, targetNamePDB, configName); // Compute the link library and directory information. - cmComputeLinkInformation* pcli = target.GetLinkInformation(configName); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); + cmComputeLinkInformation* pcli = gt->GetLinkInformation(configName); if(!pcli) { return; diff --git a/Source/cmMakeDepend.cxx b/Source/cmMakeDepend.cxx index a68b57c..75a76a4 100644 --- a/Source/cmMakeDepend.cxx +++ b/Source/cmMakeDepend.cxx @@ -58,11 +58,12 @@ void cmMakeDepend::SetMakefile(cmMakefile* makefile) // Now extract any include paths from the targets std::set<std::string> uniqueIncludes; std::vector<std::string> orderedAndUniqueIncludes; - cmTargets & targets = this->Makefile->GetTargets(); - for (cmTargets::iterator l = targets.begin(); l != targets.end(); ++l) + cmGeneratorTargetsType targets = this->Makefile->GetGeneratorTargets(); + for (cmGeneratorTargetsType::iterator l = targets.begin(); + l != targets.end(); ++l) { const std::vector<std::string>& includes = - l->second.GetIncludeDirectories(); + l->second->GetIncludeDirectories(); for(std::vector<std::string>::const_iterator j = includes.begin(); j != includes.end(); ++j) { diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7b6c450..f067da4 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -46,6 +46,7 @@ public: std::stack<cmDefinitions, std::list<cmDefinitions> > VarStack; std::stack<std::set<cmStdString> > VarInitStack; std::stack<std::set<cmStdString> > VarUsageStack; + bool IsSourceFileTryCompile; }; // default is not to be building executables @@ -56,6 +57,7 @@ cmMakefile::cmMakefile(): Internal(new Internals) this->Internal->VarStack.push(defs); this->Internal->VarInitStack.push(globalKeys); this->Internal->VarUsageStack.push(globalKeys); + this->Internal->IsSourceFileTryCompile = false; // Initialize these first since AddDefaultDefinitions calls AddDefinition this->WarnUnused = false; @@ -2912,6 +2914,7 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir, const std::vector<std::string> *cmakeArgs, std::string *output) { + this->Internal->IsSourceFileTryCompile = fast; // does the binary directory exist ? If not create it... if (!cmSystemTools::FileIsDirectory(bindir)) { @@ -2937,6 +2940,7 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir, "Internal CMake error, TryCompile bad GlobalGenerator"); // return to the original directory cmSystemTools::ChangeDirectory(cwd.c_str()); + this->Internal->IsSourceFileTryCompile = false; return 1; } cm.SetGlobalGenerator(gg); @@ -3009,6 +3013,7 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir, "Internal CMake error, TryCompile configure of cmake failed"); // return to the original directory cmSystemTools::ChangeDirectory(cwd.c_str()); + this->Internal->IsSourceFileTryCompile = false; return 1; } @@ -3018,6 +3023,7 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir, "Internal CMake error, TryCompile generation of cmake failed"); // return to the original directory cmSystemTools::ChangeDirectory(cwd.c_str()); + this->Internal->IsSourceFileTryCompile = false; return 1; } @@ -3031,9 +3037,15 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir, this); cmSystemTools::ChangeDirectory(cwd.c_str()); + this->Internal->IsSourceFileTryCompile = false; return ret; } +bool cmMakefile::GetIsSourceFileTryCompile() const +{ + return this->Internal->IsSourceFileTryCompile; +} + cmake *cmMakefile::GetCMakeInstance() const { if ( this->LocalGenerator && this->LocalGenerator->GetGlobalGenerator() ) @@ -3972,6 +3984,12 @@ cmTarget* cmMakefile::FindTargetToUse(const char* name) return this->LocalGenerator->GetGlobalGenerator()->FindTarget(0, name); } +cmGeneratorTarget* cmMakefile::FindGeneratorTargetToUse(const char* name) +{ + cmTarget *t = this->FindTargetToUse(name); + return this->LocalGenerator->GetGlobalGenerator()->GetGeneratorTarget(t); +} + //---------------------------------------------------------------------------- bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg, bool isCustom) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 8a0088b..80a50d6 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -20,6 +20,7 @@ #include "cmSystemTools.h" #include "cmTarget.h" #include "cmNewLineStyle.h" +#include "cmGeneratorTarget.h" #include "cmake.h" #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -128,6 +129,8 @@ public: const std::vector<std::string> *cmakeArgs, std::string *output); + bool GetIsSourceFileTryCompile() const; + /** * Specify the makefile generator. This is platform/compiler * dependent, although the interface is through a generic @@ -517,11 +520,22 @@ public: */ const cmTargets &GetTargets() const { return this->Targets; } + const cmGeneratorTargetsType &GetGeneratorTargets() const + { + return this->GeneratorTargets; + } + + void SetGeneratorTargets(const cmGeneratorTargetsType &targets) + { + this->GeneratorTargets = targets; + } + cmTarget* FindTarget(const char* name); /** Find a target to use in place of the given name. The target returned may be imported or built within the project. */ cmTarget* FindTargetToUse(const char* name); + cmGeneratorTarget* FindGeneratorTargetToUse(const char* name); /** * Mark include directories as system directories. @@ -863,6 +877,7 @@ protected: // libraries, classes, and executables cmTargets Targets; + cmGeneratorTargetsType GeneratorTargets; std::vector<cmSourceFile*> SourceFiles; // Tests diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index ab5150a..ca5f26a 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -210,7 +210,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) // Add language feature flags. this->AddFeatureFlags(flags, linkLanguage); - this->LocalGenerator->AddArchitectureFlags(flags, this->Target, + this->LocalGenerator->AddArchitectureFlags(flags, this->GeneratorTarget, linkLanguage, this->ConfigName); // Add target-specific linker flags. @@ -319,7 +319,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) // Collect up flags to link in needed libraries. cmOStringStream linklibs; - this->LocalGenerator->OutputLinkLibraries(linklibs, *this->Target, relink); + this->LocalGenerator->OutputLinkLibraries(linklibs, *this->GeneratorTarget, + relink); // Construct object file lists that may be needed to expand the // rule. diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 577e5fd..368d6fc 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -546,7 +546,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules if(this->Target->GetType() != cmTarget::STATIC_LIBRARY) { this->LocalGenerator - ->OutputLinkLibraries(linklibs, *this->Target, relink); + ->OutputLinkLibraries(linklibs, *this->GeneratorTarget, relink); } // Construct object file lists that may be needed to expand the @@ -625,7 +625,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules std::string langFlags; this->AddFeatureFlags(langFlags, linkLanguage); - this->LocalGenerator->AddArchitectureFlags(langFlags, this->Target, + this->LocalGenerator->AddArchitectureFlags(langFlags, this->GeneratorTarget, linkLanguage, this->ConfigName); // remove any language flags that might not work with the diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 0de182e..9560c10 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -259,7 +259,7 @@ std::string cmMakefileTargetGenerator::GetFlags(const std::string &l) // Add language feature flags. this->AddFeatureFlags(flags, lang); - this->LocalGenerator->AddArchitectureFlags(flags, this->Target, + this->LocalGenerator->AddArchitectureFlags(flags, this->GeneratorTarget, lang, this->ConfigName); // Fortran-specific flags computed for this target. @@ -292,28 +292,26 @@ std::string cmMakefileTargetGenerator::GetDefines(const std::string &l) ByLanguageMap::iterator i = this->DefinesByLanguage.find(l); if (i == this->DefinesByLanguage.end()) { - std::string defines; + std::set<std::string> defines; const char *lang = l.c_str(); // Add the export symbol definition for shared library objects. if(const char* exportMacro = this->Target->GetExportMacro()) { - this->LocalGenerator->AppendDefines(defines, exportMacro, lang); + this->LocalGenerator->AppendDefines(defines, exportMacro); } // Add preprocessor definitions for this target and configuration. this->LocalGenerator->AppendDefines - (defines, this->Makefile->GetProperty("COMPILE_DEFINITIONS"), lang); - this->LocalGenerator->AppendDefines - (defines, this->Target->GetProperty("COMPILE_DEFINITIONS"), lang); - std::string defPropName = "COMPILE_DEFINITIONS_"; - defPropName += - cmSystemTools::UpperCase(this->LocalGenerator->ConfigurationName); - this->LocalGenerator->AppendDefines - (defines, this->Makefile->GetProperty(defPropName.c_str()), lang); + (defines, this->GeneratorTarget->GetCompileDefinitions()); + this->LocalGenerator->AppendDefines - (defines, this->Target->GetProperty(defPropName.c_str()), lang); + (defines, this->GeneratorTarget->GetCompileDefinitions( + this->LocalGenerator->ConfigurationName.c_str())); + + std::string definesString; + this->LocalGenerator->JoinDefines(defines, definesString, lang); - ByLanguageMap::value_type entry(l, defines); + ByLanguageMap::value_type entry(l, definesString); i = this->DefinesByLanguage.insert(entry).first; } return i->second; @@ -587,14 +585,12 @@ cmMakefileTargetGenerator } // Add language-specific defines. - std::string defines = "$("; - defines += lang; - defines += "_DEFINES)"; + std::set<std::string> defines; // Add source-sepcific preprocessor definitions. if(const char* compile_defs = source.GetProperty("COMPILE_DEFINITIONS")) { - this->LocalGenerator->AppendDefines(defines, compile_defs, lang); + this->LocalGenerator->AppendDefines(defines, compile_defs); *this->FlagFileStream << "# Custom defines: " << relativeObj << "_DEFINES = " << compile_defs << "\n" @@ -607,7 +603,7 @@ cmMakefileTargetGenerator if(const char* config_compile_defs = source.GetProperty(defPropName.c_str())) { - this->LocalGenerator->AppendDefines(defines, config_compile_defs, lang); + this->LocalGenerator->AppendDefines(defines, config_compile_defs); *this->FlagFileStream << "# Custom defines: " << relativeObj << "_DEFINES_" << configUpper @@ -676,7 +672,14 @@ cmMakefileTargetGenerator cmLocalGenerator::SHELL); vars.ObjectDir = objectDir.c_str(); vars.Flags = flags.c_str(); - vars.Defines = defines.c_str(); + + std::string definesString = "$("; + definesString += lang; + definesString += "_DEFINES)"; + + this->LocalGenerator->JoinDefines(defines, definesString, lang); + + vars.Defines = definesString.c_str(); bool lang_is_c_or_cxx = ((strcmp(lang, "C") == 0) || (strcmp(lang, "CXX") == 0)); @@ -1014,7 +1017,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() << "SET(CMAKE_TARGET_LINKED_INFO_FILES\n"; std::set<cmTarget const*> emitted; const char* cfg = this->LocalGenerator->ConfigurationName.c_str(); - if(cmComputeLinkInformation* cli = this->Target->GetLinkInformation(cfg)) + if(cmComputeLinkInformation* cli = + this->GeneratorTarget->GetLinkInformation(cfg)) { cmComputeLinkInformation::ItemVector const& items = cli->GetItems(); for(cmComputeLinkInformation::ItemVector::const_iterator @@ -1053,7 +1057,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() *this->InfoFileStream << "SET(CMAKE_C_TARGET_INCLUDE_PATH\n"; std::vector<std::string> includes; - this->LocalGenerator->GetIncludeDirectories(includes, this->Target); + this->LocalGenerator->GetIncludeDirectories(includes, + this->GeneratorTarget); for(std::vector<std::string>::iterator i = includes.begin(); i != includes.end(); ++i) { @@ -1538,7 +1543,8 @@ std::string cmMakefileTargetGenerator::GetFrameworkFlags() emitted.insert("/System/Library/Frameworks"); #endif std::vector<std::string> includes; - this->LocalGenerator->GetIncludeDirectories(includes, this->Target); + this->LocalGenerator->GetIncludeDirectories(includes, + this->GeneratorTarget); std::vector<std::string>::iterator i; // check all include directories for frameworks as this // will already have added a -F for the framework @@ -1582,7 +1588,8 @@ void cmMakefileTargetGenerator // Loop over all library dependencies. const char* cfg = this->LocalGenerator->ConfigurationName.c_str(); - if(cmComputeLinkInformation* cli = this->Target->GetLinkInformation(cfg)) + if(cmComputeLinkInformation* cli = + this->GeneratorTarget->GetLinkInformation(cfg)) { std::vector<std::string> const& libDeps = cli->GetDepends(); for(std::vector<std::string>::const_iterator j = libDeps.begin(); @@ -1842,7 +1849,8 @@ void cmMakefileTargetGenerator::AddIncludeFlags(std::string& flags, std::vector<std::string> includes; - this->LocalGenerator->GetIncludeDirectories(includes, this->Target, lang); + this->LocalGenerator->GetIncludeDirectories(includes, + this->GeneratorTarget, lang); std::string includeFlags = this->LocalGenerator->GetIncludeFlags(includes, lang, useResponseFile); @@ -1945,7 +1953,8 @@ void cmMakefileTargetGenerator::AddFortranFlags(std::string& flags) this->Makefile->GetDefinition("CMAKE_Fortran_MODPATH_FLAG")) { std::vector<std::string> includes; - this->LocalGenerator->GetIncludeDirectories(includes, this->Target); + this->LocalGenerator->GetIncludeDirectories(includes, + this->GeneratorTarget); for(std::vector<std::string>::const_iterator idi = includes.begin(); idi != includes.end(); ++idi) { diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index a923d60..6f991e2 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -423,7 +423,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() this->GetLocalGenerator()->GetTargetFlags(vars["LINK_LIBRARIES"], vars["FLAGS"], vars["LINK_FLAGS"], - *this->GetTarget()); + this->GetGeneratorTarget()); this->AddModuleDefinitionFlag(vars["LINK_FLAGS"]); @@ -434,7 +434,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() ? vars["FLAGS"] : vars["ARCH_FLAGS"]); this->GetLocalGenerator()->AddArchitectureFlags(flags, - this->GetTarget(), + this->GetGeneratorTarget(), this->TargetLinkLanguage, this->GetConfigName()); if (targetType == cmTarget::EXECUTABLE) { @@ -459,25 +459,16 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() } } - std::string path; if (!this->TargetNameImport.empty()) { - path = this->GetLocalGenerator()->ConvertToOutputFormat( - targetOutputImplib.c_str(), cmLocalGenerator::SHELL); - vars["TARGET_IMPLIB"] = path; - EnsureParentDirectoryExists(path); + const std::string impLibPath = this->GetLocalGenerator() + ->ConvertToOutputFormat(targetOutputImplib.c_str(), + cmLocalGenerator::SHELL); + vars["TARGET_IMPLIB"] = impLibPath; + EnsureParentDirectoryExists(impLibPath); } cmMakefile* mf = this->GetMakefile(); - if (mf->GetDefinition("MSVC_C_ARCHITECTURE_ID") || - mf->GetDefinition("MSVC_CXX_ARCHITECTURE_ID")) - { - path = this->GetTargetPDB(); - vars["TARGET_PDB"] = this->GetLocalGenerator()->ConvertToOutputFormat( - ConvertToNinjaPath(path.c_str()).c_str(), - cmLocalGenerator::SHELL); - EnsureParentDirectoryExists(path); - } - else + if (!this->SetMsvcTargetPdbVariable(vars)) { // It is common to place debug symbols at a specific place, // so we need a plain target name in the rule available. @@ -494,9 +485,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() if (mf->IsOn("CMAKE_COMPILER_IS_MINGW")) { - path = GetTarget()->GetSupportDirectory(); - vars["OBJECT_DIR"] = ConvertToNinjaPath(path.c_str()); - EnsureDirectoryExists(path); + const std::string objPath = GetTarget()->GetSupportDirectory(); + vars["OBJECT_DIR"] = ConvertToNinjaPath(objPath.c_str()); + EnsureDirectoryExists(objPath); // ar.exe can't handle backslashes in rsp files (implictly used by gcc) std::string& linkLibraries = vars["LINK_LIBRARIES"]; std::replace(linkLibraries.begin(), linkLibraries.end(), '\\', '/'); @@ -527,10 +518,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() // If we have any PRE_LINK commands, we need to go back to HOME_OUTPUT for // the link commands. if (!preLinkCmdLines.empty()) { - path = this->GetLocalGenerator()->ConvertToOutputFormat( - this->GetMakefile()->GetHomeOutputDirectory(), - cmLocalGenerator::SHELL); - preLinkCmdLines.push_back("cd " + path); + const std::string homeOutDir = this->GetLocalGenerator() + ->ConvertToOutputFormat(this->GetMakefile()->GetHomeOutputDirectory(), + cmLocalGenerator::SHELL); + preLinkCmdLines.push_back("cd " + homeOutDir); } vars["PRE_LINK"] = diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index b6bdfdc..1d11aca 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -134,7 +134,7 @@ cmNinjaTargetGenerator::ComputeFlagsForObject(cmSourceFile *source, this->AddFeatureFlags(flags, language.c_str()); this->GetLocalGenerator()->AddArchitectureFlags(flags, - this->GetTarget(), + this->GeneratorTarget, language.c_str(), this->GetConfigName()); @@ -152,7 +152,7 @@ cmNinjaTargetGenerator::ComputeFlagsForObject(cmSourceFile *source, // Add include directory flags. { std::vector<std::string> includes; - this->LocalGenerator->GetIncludeDirectories(includes, this->Target, + this->LocalGenerator->GetIncludeDirectories(includes, this->GeneratorTarget, language.c_str()); std::string includeFlags = this->LocalGenerator->GetIncludeFlags(includes, language.c_str(), @@ -184,46 +184,37 @@ std::string cmNinjaTargetGenerator:: ComputeDefines(cmSourceFile *source, const std::string& language) { - std::string defines; + std::set<std::string> defines; // Add the export symbol definition for shared library objects. if(const char* exportMacro = this->Target->GetExportMacro()) { - this->LocalGenerator->AppendDefines(defines, exportMacro, - language.c_str()); + this->LocalGenerator->AppendDefines(defines, exportMacro); } // Add preprocessor definitions for this target and configuration. this->LocalGenerator->AppendDefines (defines, - this->Makefile->GetProperty("COMPILE_DEFINITIONS"), - language.c_str()); + this->GeneratorTarget->GetCompileDefinitions()); this->LocalGenerator->AppendDefines (defines, - this->Target->GetProperty("COMPILE_DEFINITIONS"), - language.c_str()); - this->LocalGenerator->AppendDefines - (defines, - source->GetProperty("COMPILE_DEFINITIONS"), - language.c_str()); + source->GetProperty("COMPILE_DEFINITIONS")); { std::string defPropName = "COMPILE_DEFINITIONS_"; defPropName += cmSystemTools::UpperCase(this->GetConfigName()); this->LocalGenerator->AppendDefines (defines, - this->Makefile->GetProperty(defPropName.c_str()), - language.c_str()); - this->LocalGenerator->AppendDefines - (defines, - this->Target->GetProperty(defPropName.c_str()), - language.c_str()); + this->GeneratorTarget->GetCompileDefinitions(this->GetConfigName())); this->LocalGenerator->AppendDefines (defines, - source->GetProperty(defPropName.c_str()), - language.c_str()); + source->GetProperty(defPropName.c_str())); } - return defines; + std::string definesString; + this->LocalGenerator->JoinDefines(defines, definesString, + language.c_str()); + + return definesString; } cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps() const @@ -234,7 +225,7 @@ cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps() const return cmNinjaDeps(); cmComputeLinkInformation* cli = - this->Target->GetLinkInformation(this->GetConfigName()); + this->GeneratorTarget->GetLinkInformation(this->GetConfigName()); if(!cli) return cmNinjaDeps(); @@ -295,23 +286,33 @@ std::string cmNinjaTargetGenerator::GetTargetName() const return this->Target->GetName(); } -std::string cmNinjaTargetGenerator::GetTargetPDB() const + +bool cmNinjaTargetGenerator::SetMsvcTargetPdbVariable(cmNinjaVars& vars) const { - std::string targetFullPathPDB; - if(this->Target->GetType() == cmTarget::EXECUTABLE || - this->Target->GetType() == cmTarget::STATIC_LIBRARY || - this->Target->GetType() == cmTarget::SHARED_LIBRARY || - this->Target->GetType() == cmTarget::MODULE_LIBRARY) + cmMakefile* mf = this->GetMakefile(); + if (mf->GetDefinition("MSVC_C_ARCHITECTURE_ID") || + mf->GetDefinition("MSVC_CXX_ARCHITECTURE_ID")) { - targetFullPathPDB = this->Target->GetDirectory(this->GetConfigName()); - targetFullPathPDB += "/"; - targetFullPathPDB += this->Target->GetPDBName(this->GetConfigName()); + std::string pdbPath; + if(this->Target->GetType() == cmTarget::EXECUTABLE || + this->Target->GetType() == cmTarget::STATIC_LIBRARY || + this->Target->GetType() == cmTarget::SHARED_LIBRARY || + this->Target->GetType() == cmTarget::MODULE_LIBRARY) + { + pdbPath = this->Target->GetDirectory(this->GetConfigName()); + pdbPath += "/"; + pdbPath += this->Target->GetPDBName(this->GetConfigName()); } - return targetFullPathPDB.c_str(); + vars["TARGET_PDB"] = this->GetLocalGenerator()->ConvertToOutputFormat( + ConvertToNinjaPath(pdbPath.c_str()).c_str(), + cmLocalGenerator::SHELL); + EnsureParentDirectoryExists(pdbPath); + return true; + } + return false; } - void cmNinjaTargetGenerator ::WriteLanguageRules(const std::string& language) @@ -348,8 +349,7 @@ cmNinjaTargetGenerator if (lang == "C" || lang == "CXX" || lang == "RC") { clDepsBinary = mf->GetSafeDefinition("CMAKE_CMCLDEPS_EXECUTABLE"); - if (!clDepsBinary.empty() && - !this->GetGlobalGenerator()->GetCMakeInstance()->GetIsInTryCompile()) + if (!clDepsBinary.empty() && !mf->GetIsSourceFileTryCompile()) { clShowPrefix = mf->GetSafeDefinition("CMAKE_CL_SHOWINCLUDE_PREFIX"); clBinary = mf->GetDefinition("CMAKE_C_COMPILER") ? @@ -537,15 +537,7 @@ cmNinjaTargetGenerator vars["DEP_FILE"] = objectFileName + ".d";; EnsureParentDirectoryExists(objectFileName); - // TODO move to GetTargetPDB - cmMakefile* mf = this->GetMakefile(); - if (mf->GetDefinition("MSVC_C_ARCHITECTURE_ID") || - mf->GetDefinition("MSVC_CXX_ARCHITECTURE_ID")) - { - vars["TARGET_PDB"] = this->GetLocalGenerator()->ConvertToOutputFormat( - ConvertToNinjaPath(GetTargetPDB().c_str()).c_str(), - cmLocalGenerator::SHELL); - } + this->SetMsvcTargetPdbVariable(vars); if(this->Makefile->IsOn("CMAKE_EXPORT_COMPILE_COMMANDS")) { @@ -641,14 +633,14 @@ cmNinjaTargetGenerator void cmNinjaTargetGenerator -::EnsureDirectoryExists(const std::string& dir) +::EnsureDirectoryExists(const std::string& dir) const { cmSystemTools::MakeDirectory(dir.c_str()); } void cmNinjaTargetGenerator -::EnsureParentDirectoryExists(const std::string& path) +::EnsureParentDirectoryExists(const std::string& path) const { EnsureDirectoryExists(cmSystemTools::GetParentDirectory(path.c_str())); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 84573ce..cf06bfd 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -40,16 +40,21 @@ public: virtual void Generate() = 0; - std::string GetTargetPDB() const; std::string GetTargetName() const; protected: + + bool SetMsvcTargetPdbVariable(cmNinjaVars&) const; + cmGeneratedFileStream& GetBuildFileStream() const; cmGeneratedFileStream& GetRulesFileStream() const; cmTarget* GetTarget() const { return this->Target; } + cmGeneratorTarget* GetGeneratorTarget() const + { return this->GeneratorTarget; } + cmLocalNinjaGenerator* GetLocalGenerator() const { return this->LocalGenerator; } @@ -112,8 +117,8 @@ protected: // Helper to add flag for windows .def file. void AddModuleDefinitionFlag(std::string& flags); - void EnsureDirectoryExists(const std::string& dir); - void EnsureParentDirectoryExists(const std::string& path); + void EnsureDirectoryExists(const std::string& dir) const; + void EnsureParentDirectoryExists(const std::string& path) const; // write rules for Mac OS X Application Bundle content. struct MacOSXContentGeneratorType : diff --git a/Source/cmQTWrapCPPCommand.h b/Source/cmQTWrapCPPCommand.h index 1af0840..4863402 100644 --- a/Source/cmQTWrapCPPCommand.h +++ b/Source/cmQTWrapCPPCommand.h @@ -17,9 +17,9 @@ #include "cmSourceFile.h" /** \class cmQTWrapCPPCommand - * \brief Create moc file rules for QT classes + * \brief Create moc file rules for Qt classes * - * cmQTWrapCPPCommand is used to create wrappers for QT classes into + * cmQTWrapCPPCommand is used to create wrappers for Qt classes into * normal C++ */ class cmQTWrapCPPCommand : public cmCommand diff --git a/Source/cmQTWrapUICommand.h b/Source/cmQTWrapUICommand.h index 1fff041..b15c5cd 100644 --- a/Source/cmQTWrapUICommand.h +++ b/Source/cmQTWrapUICommand.h @@ -17,9 +17,9 @@ #include "cmSourceFile.h" /** \class cmQTWrapUICommand - * \brief Create .h and .cxx files rules for QT user interfaces files + * \brief Create .h and .cxx files rules for Qt user interfaces files * - * cmQTWrapUICommand is used to create wrappers for QT classes into normal C++ + * cmQTWrapUICommand is used to create wrappers for Qt classes into normal C++ */ class cmQTWrapUICommand : public cmCommand { diff --git a/Source/cmSetTargetPropertiesCommand.h b/Source/cmSetTargetPropertiesCommand.h index e04f7eb..65c89fa 100644 --- a/Source/cmSetTargetPropertiesCommand.h +++ b/Source/cmSetTargetPropertiesCommand.h @@ -138,7 +138,7 @@ public: "are used to initialize these properties.\n" "PROJECT_LABEL can be used to change the name of " "the target in an IDE like visual studio. VS_KEYWORD can be set " - "to change the visual studio keyword, for example QT integration " + "to change the visual studio keyword, for example Qt integration " "works better if this is set to Qt4VSv1.0.\n" "VS_SCC_PROJECTNAME, VS_SCC_LOCALPATH, VS_SCC_PROVIDER and " "VS_SCC_AUXPATH can be set " diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 69673c9..0b2def2 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -92,7 +92,8 @@ public: static bool GetErrorOccuredFlag() { return cmSystemTools::s_ErrorOccured || - cmSystemTools::s_FatalErrorOccured; + cmSystemTools::s_FatalErrorOccured || + GetInterruptFlag(); } ///! If this is set to true, cmake stops processing commands. static void SetFatalErrorOccured() diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 775662c..5a47d17 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -15,7 +15,6 @@ #include "cmSourceFile.h" #include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" -#include "cmComputeLinkInformation.h" #include "cmDocumentCompileDefinitions.h" #include "cmDocumentLocationUndefined.h" #include "cmListFileCache.h" @@ -761,7 +760,10 @@ void cmTarget::DefineProperties(cmake *cm) "The POSITION_INDEPENDENT_CODE property determines whether position " "independent executables or shared libraries will be created. " "This property is true by default for SHARED and MODULE library " - "targets and false otherwise."); + "targets and false otherwise. " + "This property is initialized by the value of the variable " + "CMAKE_POSITION_INDEPENDENT_CODE if it is set when a target is " + "created."); cm->DefineProperty ("POST_INSTALL_SCRIPT", cmProperty::TARGET, @@ -903,7 +905,7 @@ void cmTarget::DefineProperties(cmake *cm) "Build an executable with a WinMain entry point on windows.", "When this property is set to true the executable when linked " "on Windows will be created with a WinMain() entry point instead " - "of of just main()." + "of just main(). " "This makes it a GUI executable instead of a console application. " "See the CMAKE_MFC_FLAG variable documentation to configure use " "of MFC for WinMain executables. " @@ -1068,7 +1070,7 @@ void cmTarget::DefineProperties(cmake *cm) ("VS_KEYWORD", cmProperty::TARGET, "Visual Studio project keyword.", "Can be set to change the visual studio keyword, for example " - "QT integration works better if this is set to Qt4VSv1.0. "); + "Qt integration works better if this is set to Qt4VSv1.0. "); cm->DefineProperty ("VS_SCC_PROVIDER", cmProperty::TARGET, "Visual Studio Source Code Control Provider.", @@ -1620,7 +1622,11 @@ cmTargetTraceDependencies { // Transform command names that reference targets built in this // project to corresponding target-level dependencies. - cmGeneratorExpression ge(this->Makefile, 0, cc.GetBacktrace(), true); + cmGeneratorExpression ge(cc.GetBacktrace()); + + // Add target-level dependencies referenced by generator expressions. + std::set<cmTarget*> targets; + for(cmCustomCommandLines::const_iterator cit = cc.GetCommandLines().begin(); cit != cc.GetCommandLines().end(); ++cit) { @@ -1642,12 +1648,17 @@ cmTargetTraceDependencies for(cmCustomCommandLine::const_iterator cli = cit->begin(); cli != cit->end(); ++cli) { - ge.Process(*cli); + const cmCompiledGeneratorExpression &cge = ge.Parse(*cli); + cge.Evaluate(this->Makefile, 0, true); + std::set<cmTarget*> geTargets = cge.GetTargets(); + for(std::set<cmTarget*>::const_iterator it = geTargets.begin(); + it != geTargets.end(); ++it) + { + targets.insert(*it); + } } } - // Add target-level dependencies referenced by generator expressions. - std::set<cmTarget*> targets = ge.GetTargets(); for(std::set<cmTarget*>::iterator ti = targets.begin(); ti != targets.end(); ++ti) { @@ -2942,25 +2953,6 @@ void cmTarget::ComputeLinkClosure(const char* config, LinkClosure& lc) } //---------------------------------------------------------------------------- -const char* cmTarget::GetCreateRuleVariable() -{ - switch(this->GetType()) - { - case cmTarget::STATIC_LIBRARY: - return "_CREATE_STATIC_LIBRARY"; - case cmTarget::SHARED_LIBRARY: - return "_CREATE_SHARED_LIBRARY"; - case cmTarget::MODULE_LIBRARY: - return "_CREATE_SHARED_MODULE"; - case cmTarget::EXECUTABLE: - return "_LINK_EXECUTABLE"; - default: - break; - } - return ""; -} - -//---------------------------------------------------------------------------- const char* cmTarget::GetSuffixVariableInternal(bool implib) { switch(this->GetType()) @@ -3503,76 +3495,6 @@ bool cmTarget::GetImplibGNUtoMS(std::string const& gnuName, } //---------------------------------------------------------------------------- -void cmTarget::GenerateTargetManifest(const char* config) -{ - cmMakefile* mf = this->Makefile; - cmLocalGenerator* lg = mf->GetLocalGenerator(); - cmGlobalGenerator* gg = lg->GetGlobalGenerator(); - - // Get the names. - std::string name; - std::string soName; - std::string realName; - std::string impName; - std::string pdbName; - if(this->GetType() == cmTarget::EXECUTABLE) - { - this->GetExecutableNames(name, realName, impName, pdbName, config); - } - else if(this->GetType() == cmTarget::STATIC_LIBRARY || - this->GetType() == cmTarget::SHARED_LIBRARY || - this->GetType() == cmTarget::MODULE_LIBRARY) - { - this->GetLibraryNames(name, soName, realName, impName, pdbName, config); - } - else - { - return; - } - - // Get the directory. - std::string dir = this->GetDirectory(config, false); - - // Add each name. - std::string f; - if(!name.empty()) - { - f = dir; - f += "/"; - f += name; - gg->AddToManifest(config? config:"", f); - } - if(!soName.empty()) - { - f = dir; - f += "/"; - f += soName; - gg->AddToManifest(config? config:"", f); - } - if(!realName.empty()) - { - f = dir; - f += "/"; - f += realName; - gg->AddToManifest(config? config:"", f); - } - if(!pdbName.empty()) - { - f = dir; - f += "/"; - f += pdbName; - gg->AddToManifest(config? config:"", f); - } - if(!impName.empty()) - { - f = this->GetDirectory(config, true); - f += "/"; - f += impName; - gg->AddToManifest(config? config:"", f); - } -} - -//---------------------------------------------------------------------------- void cmTarget::SetPropertyDefault(const char* property, const char* default_value) { @@ -3968,27 +3890,6 @@ void cmTarget::GetLanguages(std::set<cmStdString>& languages) const } //---------------------------------------------------------------------------- -void cmTarget::GetAppleArchs(const char* config, - std::vector<std::string>& archVec) -{ - const char* archs = 0; - if(config && *config) - { - std::string defVarName = "OSX_ARCHITECTURES_"; - defVarName += cmSystemTools::UpperCase(config); - archs = this->GetProperty(defVarName.c_str()); - } - if(!archs) - { - archs = this->GetProperty("OSX_ARCHITECTURES"); - } - if(archs) - { - cmSystemTools::ExpandListArgument(std::string(archs), archVec); - } -} - -//---------------------------------------------------------------------------- bool cmTarget::IsChrpathUsed(const char* config) { #if defined(CMAKE_USE_ELF_PARSER) @@ -4659,56 +4560,6 @@ std::string cmTarget::CheckCMP0004(std::string const& item) } //---------------------------------------------------------------------------- -cmComputeLinkInformation* -cmTarget::GetLinkInformation(const char* config) -{ - // Lookup any existing information for this configuration. - std::map<cmStdString, cmComputeLinkInformation*>::iterator - i = this->LinkInformation.find(config?config:""); - if(i == this->LinkInformation.end()) - { - // Compute information for this configuration. - cmComputeLinkInformation* info = - new cmComputeLinkInformation(this, config); - if(!info || !info->Compute()) - { - delete info; - info = 0; - } - - // Store the information for this configuration. - std::map<cmStdString, cmComputeLinkInformation*>::value_type - entry(config?config:"", info); - i = this->LinkInformation.insert(entry).first; - } - return i->second; -} - -//---------------------------------------------------------------------------- -std::vector<std::string> cmTarget::GetIncludeDirectories() -{ - std::vector<std::string> includes; - const char *prop = this->GetProperty("INCLUDE_DIRECTORIES"); - if(prop) - { - cmSystemTools::ExpandListArgument(prop, includes); - } - - std::set<std::string> uniqueIncludes; - std::vector<std::string> orderedAndUniqueIncludes; - for(std::vector<std::string>::const_iterator - li = includes.begin(); li != includes.end(); ++li) - { - if(uniqueIncludes.insert(*li).second) - { - orderedAndUniqueIncludes.push_back(*li); - } - } - - return orderedAndUniqueIncludes; -} - -//---------------------------------------------------------------------------- std::string cmTarget::GetFrameworkDirectory(const char* config) { std::string fpath; @@ -4766,29 +4617,6 @@ std::string cmTarget::GetMacContentDirectory(const char* config, } //---------------------------------------------------------------------------- -cmTargetLinkInformationMap -::cmTargetLinkInformationMap(cmTargetLinkInformationMap const& r): derived() -{ - // Ideally cmTarget instances should never be copied. However until - // we can make a sweep to remove that, this copy constructor avoids - // allowing the resources (LinkInformation) from getting copied. In - // the worst case this will lead to extra cmComputeLinkInformation - // instances. We also enforce in debug mode that the map be emptied - // when copied. - static_cast<void>(r); - assert(r.empty()); -} - -//---------------------------------------------------------------------------- -cmTargetLinkInformationMap::~cmTargetLinkInformationMap() -{ - for(derived::iterator i = this->begin(); i != this->end(); ++i) - { - delete i->second; - } -} - -//---------------------------------------------------------------------------- cmTargetInternalPointer::cmTargetInternalPointer() { this->Pointer = new cmTargetInternals; diff --git a/Source/cmTarget.h b/Source/cmTarget.h index a89c5d9..a025eea 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -22,18 +22,8 @@ class cmake; class cmMakefile; class cmSourceFile; class cmGlobalGenerator; -class cmComputeLinkInformation; class cmListFileBacktrace; -struct cmTargetLinkInformationMap: - public std::map<cmStdString, cmComputeLinkInformation*> -{ - typedef std::map<cmStdString, cmComputeLinkInformation*> derived; - cmTargetLinkInformationMap() {} - cmTargetLinkInformationMap(cmTargetLinkInformationMap const& r); - ~cmTargetLinkInformationMap(); -}; - class cmTargetInternals; class cmTargetInternalPointer { @@ -158,9 +148,6 @@ public: void AddSources(std::vector<std::string> const& srcs); cmSourceFile* AddSource(const char* src); - /** - * Get the list of the source files used by this target - */ enum LinkLibraryType {GENERAL, DEBUG, OPTIMIZED}; //* how we identify a library, by name and type @@ -333,10 +320,6 @@ public: ///! Return the preferred linker language for this target const char* GetLinkerLanguage(const char* config = 0); - ///! Return the rule variable used to create this type of target, - // need to add CMAKE_(LANG) for full name. - const char* GetCreateRuleVariable(); - /** Get the full name of the target according to the settings in its makefile. */ std::string GetFullName(const char* config=0, bool implib = false); @@ -384,9 +367,6 @@ public: bool GetImplibGNUtoMS(std::string const& gnuName, std::string& out, const char* newExt = 0); - /** Add the target output files to the global generator manifest. */ - void GenerateTargetManifest(const char* config); - /** * Compute whether this target must be relinked before installing. */ @@ -403,8 +383,6 @@ public: std::string GetInstallNameDirForInstallTree(const char* config, bool for_xcode = false); - cmComputeLinkInformation* GetLinkInformation(const char* config); - // Get the properties cmPropertyMap &GetProperties() { return this->Properties; }; @@ -422,9 +400,6 @@ public: // until we have per-target object file properties. void GetLanguages(std::set<cmStdString>& languages) const; - /** Get the list of OS X target architectures to be built. */ - void GetAppleArchs(const char* config, std::vector<std::string>& archVec); - /** Return whether this target is an executable with symbol exports enabled. */ bool IsExecutableWithExports(); @@ -462,9 +437,6 @@ public: directory. */ bool UsesDefaultOutputDir(const char* config, bool implib); - /** Get the include directories for this target. */ - std::vector<std::string> GetIncludeDirectories(); - /** Append to @a base the mac content directory and return it. */ std::string BuildMacContentDirectory(const std::string& base, const char* config = 0, @@ -602,8 +574,6 @@ private: ImportInfo const* GetImportInfo(const char* config); void ComputeImportInfo(std::string const& desired_config, ImportInfo& info); - cmTargetLinkInformationMap LinkInformation; - bool ComputeLinkInterface(const char* config, LinkInterface& iface); void ComputeLinkImplementation(const char* config, diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index e0892b2..2f650e7 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -91,8 +91,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, this->TestGenerated = true; // Set up generator expression evaluation context. - cmMakefile* mf = this->Test->GetMakefile(); - cmGeneratorExpression ge(mf, config, this->Test->GetBacktrace()); + cmGeneratorExpression ge(this->Test->GetBacktrace()); // Start the test command. os << indent << "ADD_TEST(" << this->Test->GetName() << " "; @@ -103,6 +102,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, // Check whether the command executable is a target whose name is to // be translated. std::string exe = command[0]; + cmMakefile* mf = this->Test->GetMakefile(); cmTarget* target = mf->FindTargetToUse(exe.c_str()); if(target && target->GetType() == cmTarget::EXECUTABLE) { @@ -112,7 +112,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, else { // Use the command name given. - exe = ge.Process(exe.c_str()); + exe = ge.Parse(exe.c_str()).Evaluate(mf, config); cmSystemTools::ConvertToUnixSlashes(exe); } @@ -122,7 +122,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, for(std::vector<std::string>::const_iterator ci = command.begin()+1; ci != command.end(); ++ci) { - os << " " << lg->EscapeForCMake(ge.Process(*ci)); + os << " " << lg->EscapeForCMake(ge.Parse(*ci).Evaluate(mf, config)); } // Finish the test command. diff --git a/Source/cmVS11CLFlagTable.h b/Source/cmVS11CLFlagTable.h new file mode 100644 index 0000000..5ab8ebb --- /dev/null +++ b/Source/cmVS11CLFlagTable.h @@ -0,0 +1,291 @@ +static cmVS7FlagTable cmVS11CLFlagTable[] = +{ + + //Enum Properties + {"DebugInformationFormat", "", + "None", "None", 0}, + {"DebugInformationFormat", "Z7", + "C7 compatible", "OldStyle", 0}, + {"DebugInformationFormat", "Zi", + "Program Database", "ProgramDatabase", 0}, + {"DebugInformationFormat", "ZI", + "Program Database for Edit And Continue", "EditAndContinue", 0}, + + {"WarningLevel", "W0", + "Turn Off All Warnings", "TurnOffAllWarnings", 0}, + {"WarningLevel", "W1", + "Level1", "Level1", 0}, + {"WarningLevel", "W2", + "Level2", "Level2", 0}, + {"WarningLevel", "W3", + "Level3", "Level3", 0}, + {"WarningLevel", "W4", + "Level4", "Level4", 0}, + {"WarningLevel", "Wall", + "EnableAllWarnings", "EnableAllWarnings", 0}, + + {"Optimization", "Od", + "Disabled", "Disabled", 0}, + {"Optimization", "O1", + "Minimize Size", "MinSpace", 0}, + {"Optimization", "O2", + "Maximize Speed", "MaxSpeed", 0}, + {"Optimization", "Ox", + "Full Optimization", "Full", 0}, + + {"InlineFunctionExpansion", "", + "Default", "Default", 0}, + {"InlineFunctionExpansion", "Ob0", + "Disabled", "Disabled", 0}, + {"InlineFunctionExpansion", "Ob1", + "Only __inline", "OnlyExplicitInline", 0}, + {"InlineFunctionExpansion", "Ob2", + "Any Suitable", "AnySuitable", 0}, + + {"FavorSizeOrSpeed", "Os", + "Favor small code", "Size", 0}, + {"FavorSizeOrSpeed", "Ot", + "Favor fast code", "Speed", 0}, + {"FavorSizeOrSpeed", "", + "Neither", "Neither", 0}, + + {"ExceptionHandling", "EHa", + "Yes with SEH Exceptions", "Async", 0}, + {"ExceptionHandling", "EHsc", + "Yes", "Sync", 0}, + {"ExceptionHandling", "EHs", + "Yes with Extern C functions", "SyncCThrow", 0}, + {"ExceptionHandling", "", + "No", "false", 0}, + + {"BasicRuntimeChecks", "RTCs", + "Stack Frames", "StackFrameRuntimeCheck", 0}, + {"BasicRuntimeChecks", "RTCu", + "Uninitialized variables", "UninitializedLocalUsageCheck", 0}, + {"BasicRuntimeChecks", "RTC1", + "Both (/RTC1, equiv. to /RTCsu)", "EnableFastChecks", 0}, + {"BasicRuntimeChecks", "", + "Default", "Default", 0}, + + {"RuntimeLibrary", "MT", + "Multi-threaded", "MultiThreaded", 0}, + {"RuntimeLibrary", "MTd", + "Multi-threaded Debug", "MultiThreadedDebug", 0}, + {"RuntimeLibrary", "MD", + "Multi-threaded DLL", "MultiThreadedDLL", 0}, + {"RuntimeLibrary", "MDd", + "Multi-threaded Debug DLL", "MultiThreadedDebugDLL", 0}, + + {"StructMemberAlignment", "Zp1", + "1 Byte", "1Byte", 0}, + {"StructMemberAlignment", "Zp2", + "2 Bytes", "2Bytes", 0}, + {"StructMemberAlignment", "Zp4", + "4 Byte", "4Bytes", 0}, + {"StructMemberAlignment", "Zp8", + "8 Bytes", "8Bytes", 0}, + {"StructMemberAlignment", "Zp16", + "16 Bytes", "16Bytes", 0}, + {"StructMemberAlignment", "", + "Default", "Default", 0}, + + {"EnableEnhancedInstructionSet", "arch:SSE", + "Streaming SIMD Extensions", "StreamingSIMDExtensions", 0}, + {"EnableEnhancedInstructionSet", "arch:SSE2", + "Streaming SIMD Extensions 2", "StreamingSIMDExtensions2", 0}, + {"EnableEnhancedInstructionSet", "arch:AVX", + "Advanced Vector Extensions", "AdvancedVectorExtensions", 0}, + {"EnableEnhancedInstructionSet", "arch:IA32", + "No Enhanced Instructions", "NoExtensions", 0}, + {"EnableEnhancedInstructionSet", "", + "Not Set", "NotSet", 0}, + + {"FloatingPointModel", "fp:precise", + "Precise", "Precise", 0}, + {"FloatingPointModel", "fp:strict", + "Strict", "Strict", 0}, + {"FloatingPointModel", "fp:fast", + "Fast", "Fast", 0}, + + {"PrecompiledHeader", "Yc", + "Create", "Create", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"PrecompiledHeader", "Yu", + "Use", "Use", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"PrecompiledHeader", "", + "Not Using Precompiled Headers", "NotUsing", 0}, + + {"AssemblerOutput", "", + "No Listing", "NoListing", 0}, + {"AssemblerOutput", "FA", + "Assembly-Only Listing", "AssemblyCode", 0}, + {"AssemblerOutput", "FAc", + "Assembly With Machine Code", "AssemblyAndMachineCode", 0}, + {"AssemblerOutput", "FAs", + "Assembly With Source Code", "AssemblyAndSourceCode", 0}, + {"AssemblerOutput", "FAcs", + "Assembly, Machine Code and Source", "All", 0}, + + {"CallingConvention", "Gd", + "__cdecl", "Cdecl", 0}, + {"CallingConvention", "Gr", + "__fastcall", "FastCall", 0}, + {"CallingConvention", "Gz", + "__stdcall", "StdCall", 0}, + + {"CompileAs", "", + "Default", "Default", 0}, + {"CompileAs", "TC", + "Compile as C Code", "CompileAsC", 0}, + {"CompileAs", "TP", + "Compile as C++ Code", "CompileAsCpp", 0}, + + {"ErrorReporting", "errorReport:none", + "Do Not Send Report", "None", 0}, + {"ErrorReporting", "errorReport:prompt", + "Prompt Immediately", "Prompt", 0}, + {"ErrorReporting", "errorReport:queue", + "Queue For Next Login", "Queue", 0}, + {"ErrorReporting", "errorReport:send", + "Send Automatically", "Send", 0}, + + {"CompileAsManaged", "", + "No Common Language RunTime Support", "false", 0}, + {"CompileAsManaged", "clr", + "Common Language RunTime Support", "true", 0}, + {"CompileAsManaged", "clr:pure", + "Pure MSIL Common Language RunTime Support", "Pure", 0}, + {"CompileAsManaged", "clr:safe", + "Safe MSIL Common Language RunTime Support", "Safe", 0}, + {"CompileAsManaged", "clr:oldSyntax", + "Common Language RunTime Support, Old Syntax", "OldSyntax", 0}, + + + //Bool Properties + {"CompileAsWinRT", "ZW", "", "true", 0}, + {"WinRTNoStdLib", "ZW:nostdlib", "", "true", 0}, + {"SuppressStartupBanner", "nologo-", "", "false", 0}, + {"SuppressStartupBanner", "nologo", "", "true", 0}, + {"TreatWarningAsError", "WX-", "", "false", 0}, + {"TreatWarningAsError", "WX", "", "true", 0}, + {"SDLCheck", "sdl-", "", "false", 0}, + {"SDLCheck", "sdl", "", "true", 0}, + {"IntrinsicFunctions", "Oi", "", "true", 0}, + {"OmitFramePointers", "Oy-", "", "false", 0}, + {"OmitFramePointers", "Oy", "", "true", 0}, + {"EnableFiberSafeOptimizations", "GT", "", "true", 0}, + {"WholeProgramOptimization", "GL", "", "true", 0}, + {"UndefineAllPreprocessorDefinitions", "u", "", "true", 0}, + {"IgnoreStandardIncludePath", "X", "", "true", 0}, + {"PreprocessToFile", "P", "", "true", 0}, + {"PreprocessSuppressLineNumbers", "EP", "", "true", 0}, + {"PreprocessKeepComments", "C", "", "true", 0}, + {"StringPooling", "GF-", "", "false", 0}, + {"StringPooling", "GF", "", "true", 0}, + {"MinimalRebuild", "Gm-", "", "false", 0}, + {"MinimalRebuild", "Gm", "", "true", 0}, + {"SmallerTypeCheck", "RTCc", "", "true", 0}, + {"BufferSecurityCheck", "GS-", "", "false", 0}, + {"BufferSecurityCheck", "GS", "", "true", 0}, + {"FunctionLevelLinking", "Gy-", "", "false", 0}, + {"FunctionLevelLinking", "Gy", "", "true", 0}, + {"EnableParallelCodeGeneration", "Qpar-", "", "false", 0}, + {"EnableParallelCodeGeneration", "Qpar", "", "true", 0}, + {"FloatingPointExceptions", "fp:except-", "", "false", 0}, + {"FloatingPointExceptions", "fp:except", "", "true", 0}, + {"CreateHotpatchableImage", "hotpatch", "", "true", 0}, + {"DisableLanguageExtensions", "Za", "", "true", 0}, + {"TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0}, + {"TreatWChar_tAsBuiltInType", "Zc:wchar_t", "", "true", 0}, + {"ForceConformanceInForLoopScope", "Zc:forScope-", "", "false", 0}, + {"ForceConformanceInForLoopScope", "Zc:forScope", "", "true", 0}, + {"RuntimeTypeInfo", "GR-", "", "false", 0}, + {"RuntimeTypeInfo", "GR", "", "true", 0}, + {"OpenMPSupport", "openmp-", "", "false", 0}, + {"OpenMPSupport", "openmp", "", "true", 0}, + {"ExpandAttributedSource", "Fx", "", "true", 0}, + {"UseUnicodeForAssemblerListing", "FAu", "", "true", 0}, + {"ShowIncludes", "showIncludes", "", "true", 0}, + {"EnablePREfast", "analyze-", "", "false", 0}, + {"EnablePREfast", "analyze", "", "true", 0}, + {"UseFullPaths", "FC", "", "true", 0}, + {"OmitDefaultLibName", "Zl", "", "true", 0}, + + //Bool Properties With Argument + {"MultiProcessorCompilation", "MP", "", "true", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"ProcessorNumber", "MP", "Multi-processor Compilation", "", + cmVS7FlagTable::UserValueRequired}, + {"GenerateXMLDocumentationFiles", "doc", "", "true", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "", + cmVS7FlagTable::UserValueRequired}, + {"BrowseInformation", "FR", "", "true", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"BrowseInformationFile", "FR", "Enable Browse Information", "", + cmVS7FlagTable::UserValueRequired}, + + //String List Properties + {"AdditionalIncludeDirectories", "I", + "Additional Include Directories", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"AdditionalUsingDirectories", "AI", + "Additional #using Directories", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"PreprocessorDefinitions", "D ", + "Preprocessor Definitions", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"UndefinePreprocessorDefinitions", "U", + "Undefine Preprocessor Definitions", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"DisableSpecificWarnings", "wd", + "Disable Specific Warnings", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"ForcedIncludeFiles", "FI", + "Forced Include File", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"ForcedUsingFiles", "FU", + "Forced #using File", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"PREfastAdditionalOptions", "analyze:", + "Additional Code Analysis Native options", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"PREfastAdditionalPlugins", "analyze:plugin", + "Additional Code Analysis Native plugins", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"TreatSpecificWarningsAsErrors", "we", + "Treat Specific Warnings As Errors", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + + //String Properties + // Skip [TrackerLogDirectory] - no command line Switch. + {"PreprocessOutputPath", "Fi", + "Preprocess Output Path", + "", cmVS7FlagTable::UserValue}, + {"PrecompiledHeaderFile", "Yc", + "Precompiled Header Name", + "", cmVS7FlagTable::UserValueRequired}, + {"PrecompiledHeaderFile", "Yu", + "Precompiled Header Name", + "", cmVS7FlagTable::UserValueRequired}, + {"PrecompiledHeaderOutputFile", "Fp", + "Precompiled Header Output File", + "", cmVS7FlagTable::UserValue}, + {"AssemblerListingLocation", "Fa", + "ASM List Location", + "", cmVS7FlagTable::UserValue}, + {"ObjectFileName", "Fo", + "Object File Name", + "", cmVS7FlagTable::UserValue}, + {"ProgramDataBaseFileName", "Fd", + "Program Database File Name", + "", cmVS7FlagTable::UserValue}, + // Skip [XMLDocumentationFileName] - no command line Switch. + // Skip [BrowseInformationFile] - no command line Switch. + {"PREfastLog", "analyze:log ", + "Code Analysis Log", + "", cmVS7FlagTable::UserValue}, + // Skip [AdditionalOptions] - no command line Switch. + {0,0,0,0,0} +}; diff --git a/Source/cmVS11LibFlagTable.h b/Source/cmVS11LibFlagTable.h new file mode 100644 index 0000000..9429442 --- /dev/null +++ b/Source/cmVS11LibFlagTable.h @@ -0,0 +1,102 @@ +static cmVS7FlagTable cmVS11LibFlagTable[] = +{ + + //Enum Properties + {"ErrorReporting", "ERRORREPORT:PROMPT", + "PromptImmediately", "PromptImmediately", 0}, + {"ErrorReporting", "ERRORREPORT:QUEUE", + "Queue For Next Login", "QueueForNextLogin", 0}, + {"ErrorReporting", "ERRORREPORT:SEND", + "Send Error Report", "SendErrorReport", 0}, + {"ErrorReporting", "ERRORREPORT:NONE", + "No Error Report", "NoErrorReport", 0}, + + {"TargetMachine", "MACHINE:ARM", + "MachineARM", "MachineARM", 0}, + {"TargetMachine", "MACHINE:EBC", + "MachineEBC", "MachineEBC", 0}, + {"TargetMachine", "MACHINE:IA64", + "MachineIA64", "MachineIA64", 0}, + {"TargetMachine", "MACHINE:MIPS", + "MachineMIPS", "MachineMIPS", 0}, + {"TargetMachine", "MACHINE:MIPS16", + "MachineMIPS16", "MachineMIPS16", 0}, + {"TargetMachine", "MACHINE:MIPSFPU", + "MachineMIPSFPU", "MachineMIPSFPU", 0}, + {"TargetMachine", "MACHINE:MIPSFPU16", + "MachineMIPSFPU16", "MachineMIPSFPU16", 0}, + {"TargetMachine", "MACHINE:SH4", + "MachineSH4", "MachineSH4", 0}, + {"TargetMachine", "MACHINE:THUMB", + "MachineTHUMB", "MachineTHUMB", 0}, + {"TargetMachine", "MACHINE:X64", + "MachineX64", "MachineX64", 0}, + {"TargetMachine", "MACHINE:X86", + "MachineX86", "MachineX86", 0}, + + {"SubSystem", "SUBSYSTEM:CONSOLE", + "Console", "Console", 0}, + {"SubSystem", "SUBSYSTEM:WINDOWS", + "Windows", "Windows", 0}, + {"SubSystem", "SUBSYSTEM:NATIVE", + "Native", "Native", 0}, + {"SubSystem", "SUBSYSTEM:EFI_APPLICATION", + "EFI Application", "EFI Application", 0}, + {"SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER", + "EFI Boot Service Driver", "EFI Boot Service Driver", 0}, + {"SubSystem", "SUBSYSTEM:EFI_ROM", + "EFI ROM", "EFI ROM", 0}, + {"SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", + "EFI Runtime", "EFI Runtime", 0}, + {"SubSystem", "SUBSYSTEM:WINDOWSCE", + "WindowsCE", "WindowsCE", 0}, + {"SubSystem", "SUBSYSTEM:POSIX", + "POSIX", "POSIX", 0}, + + + //Bool Properties + {"SuppressStartupBanner", "NOLOGO", "", "true", 0}, + {"IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0}, + {"TreatLibWarningAsErrors", "WX:NO", "", "false", 0}, + {"TreatLibWarningAsErrors", "WX", "", "true", 0}, + {"Verbose", "VERBOSE", "", "true", 0}, + {"LinkTimeCodeGeneration", "LTCG", "", "true", 0}, + + //Bool Properties With Argument + + //String List Properties + // Skip [AdditionalDependencies] - no command line Switch. + {"AdditionalLibraryDirectories", "LIBPATH:", + "Additional Library Directories", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"IgnoreSpecificDefaultLibraries", "NODEFAULTLIB:", + "Ignore Specific Default Libraries", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"ExportNamedFunctions", "EXPORT:", + "Export Named Functions", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"RemoveObjects", "REMOVE:", + "Remove Objects", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + + //String Properties + {"OutputFile", "OUT:", + "Output File", + "", cmVS7FlagTable::UserValue}, + {"ModuleDefinitionFile", "DEF:", + "Module Definition File Name", + "", cmVS7FlagTable::UserValue}, + {"ForceSymbolReferences", "INCLUDE:", + "Force Symbol References", + "", cmVS7FlagTable::UserValue}, + {"DisplayLibrary", "LIST:", + "Display Library to standard output", + "", cmVS7FlagTable::UserValue}, + // Skip [MinimumRequiredVersion] - no command line Switch. + {"Name", "NAME:", + "Name", + "", cmVS7FlagTable::UserValue}, + // Skip [AdditionalOptions] - no command line Switch. + // Skip [TrackerLogDirectory] - no command line Switch. + {0,0,0,0,0} +}; diff --git a/Source/cmVS11LinkFlagTable.h b/Source/cmVS11LinkFlagTable.h new file mode 100644 index 0000000..ea0d0f0 --- /dev/null +++ b/Source/cmVS11LinkFlagTable.h @@ -0,0 +1,343 @@ +static cmVS7FlagTable cmVS11LinkFlagTable[] = +{ + + //Enum Properties + {"ShowProgress", "", + "Not Set", "NotSet", 0}, + {"ShowProgress", "VERBOSE", + "Display all progress messages", "LinkVerbose", 0}, + {"ShowProgress", "VERBOSE:Lib", + "For Libraries Searched", "LinkVerboseLib", 0}, + {"ShowProgress", "VERBOSE:ICF", + "About COMDAT folding during optimized linking", "LinkVerboseICF", 0}, + {"ShowProgress", "VERBOSE:REF", + "About data removed during optimized linking", "LinkVerboseREF", 0}, + {"ShowProgress", "VERBOSE:SAFESEH", + "About Modules incompatible with SEH", "LinkVerboseSAFESEH", 0}, + {"ShowProgress", "VERBOSE:CLR", + "About linker activity related to managed code", "LinkVerboseCLR", 0}, + + {"ForceFileOutput", "FORCE", + "Enabled", "Enabled", 0}, + {"ForceFileOutput", "FORCE:MULTIPLE", + "Multiply Defined Symbol Only", "MultiplyDefinedSymbolOnly", 0}, + {"ForceFileOutput", "FORCE:UNRESOLVED", + "Undefined Symbol Only", "UndefinedSymbolOnly", 0}, + + {"CreateHotPatchableImage", "FUNCTIONPADMIN", + "Enabled", "Enabled", 0}, + {"CreateHotPatchableImage", "FUNCTIONPADMIN:5", + "X86 Image Only", "X86Image", 0}, + {"CreateHotPatchableImage", "FUNCTIONPADMIN:6", + "X64 Image Only", "X64Image", 0}, + {"CreateHotPatchableImage", "FUNCTIONPADMIN:16", + "Itanium Image Only", "ItaniumImage", 0}, + + {"UACExecutionLevel", "level='asInvoker'", + "asInvoker", "AsInvoker", 0}, + {"UACExecutionLevel", "level='highestAvailable'", + "highestAvailable", "HighestAvailable", 0}, + {"UACExecutionLevel", "level='requireAdministrator'", + "requireAdministrator", "RequireAdministrator", 0}, + + {"SubSystem", "", + "Not Set", "NotSet", 0}, + {"SubSystem", "SUBSYSTEM:CONSOLE", + "Console", "Console", 0}, + {"SubSystem", "SUBSYSTEM:WINDOWS", + "Windows", "Windows", 0}, + {"SubSystem", "SUBSYSTEM:NATIVE", + "Native", "Native", 0}, + {"SubSystem", "SUBSYSTEM:EFI_APPLICATION", + "EFI Application", "EFI Application", 0}, + {"SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER", + "EFI Boot Service Driver", "EFI Boot Service Driver", 0}, + {"SubSystem", "SUBSYSTEM:EFI_ROM", + "EFI ROM", "EFI ROM", 0}, + {"SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", + "EFI Runtime", "EFI Runtime", 0}, + {"SubSystem", "SUBSYSTEM:POSIX", + "POSIX", "POSIX", 0}, + + {"Driver", "", + "Not Set", "NotSet", 0}, + {"Driver", "Driver", + "Driver", "Driver", 0}, + {"Driver", "DRIVER:UPONLY", + "UP Only", "UpOnly", 0}, + {"Driver", "DRIVER:WDM", + "WDM", "WDM", 0}, + + {"LinkTimeCodeGeneration", "", + "Default", "Default", 0}, + {"LinkTimeCodeGeneration", "LTCG", + "Use Link Time Code Generation", "UseLinkTimeCodeGeneration", 0}, + {"LinkTimeCodeGeneration", "LTCG:PGInstrument", + "Profile Guided Optimization - Instrument", "PGInstrument", 0}, + {"LinkTimeCodeGeneration", "LTCG:PGOptimize", + "Profile Guided Optimization - Optimization", "PGOptimization", 0}, + {"LinkTimeCodeGeneration", "LTCG:PGUpdate", + "Profile Guided Optimization - Update", "PGUpdate", 0}, + + {"GenerateWindowsMetadata", "WINMD", + "Yes", "true", 0}, + {"GenerateWindowsMetadata", "WINMD:NO", + "No", "false", 0}, + + {"WindowsMetadataSignHash", "WINMDSIGNHASH:SHA1", + "SHA1", "SHA1", 0}, + {"WindowsMetadataSignHash", "WINMDSIGNHASH:SHA256", + "SHA256", "SHA256", 0}, + {"WindowsMetadataSignHash", "WINMDSIGNHASH:SHA384", + "SHA384", "SHA384", 0}, + {"WindowsMetadataSignHash", "WINMDSIGNHASH:SHA512", + "SHA512", "SHA512", 0}, + + {"TargetMachine", "", + "Not Set", "NotSet", 0}, + {"TargetMachine", "MACHINE:ARM", + "MachineARM", "MachineARM", 0}, + {"TargetMachine", "MACHINE:EBC", + "MachineEBC", "MachineEBC", 0}, + {"TargetMachine", "MACHINE:IA64", + "MachineIA64", "MachineIA64", 0}, + {"TargetMachine", "MACHINE:MIPS", + "MachineMIPS", "MachineMIPS", 0}, + {"TargetMachine", "MACHINE:MIPS16", + "MachineMIPS16", "MachineMIPS16", 0}, + {"TargetMachine", "MACHINE:MIPSFPU", + "MachineMIPSFPU", "MachineMIPSFPU", 0}, + {"TargetMachine", "MACHINE:MIPSFPU16", + "MachineMIPSFPU16", "MachineMIPSFPU16", 0}, + {"TargetMachine", "MACHINE:SH4", + "MachineSH4", "MachineSH4", 0}, + {"TargetMachine", "MACHINE:THUMB", + "MachineTHUMB", "MachineTHUMB", 0}, + {"TargetMachine", "MACHINE:X64", + "MachineX64", "MachineX64", 0}, + {"TargetMachine", "MACHINE:X86", + "MachineX86", "MachineX86", 0}, + + {"CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", + "MTA threading attribute", "MTAThreadingAttribute", 0}, + {"CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", + "STA threading attribute", "STAThreadingAttribute", 0}, + {"CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE", + "Default threading attribute", "DefaultThreadingAttribute", 0}, + + {"CLRImageType", "CLRIMAGETYPE:IJW", + "Force IJW image", "ForceIJWImage", 0}, + {"CLRImageType", "CLRIMAGETYPE:PURE", + "Force Pure IL Image", "ForcePureILImage", 0}, + {"CLRImageType", "CLRIMAGETYPE:SAFE", + "Force Safe IL Image", "ForceSafeILImage", 0}, + {"CLRImageType", "", + "Default image type", "Default", 0}, + + {"SignHash", "CLRSIGNHASH:SHA1", + "SHA1", "SHA1", 0}, + {"SignHash", "CLRSIGNHASH:SHA256", + "SHA256", "SHA256", 0}, + {"SignHash", "CLRSIGNHASH:SHA384", + "SHA384", "SHA384", 0}, + {"SignHash", "CLRSIGNHASH:SHA512", + "SHA512", "SHA512", 0}, + + {"LinkErrorReporting", "ERRORREPORT:PROMPT", + "PromptImmediately", "PromptImmediately", 0}, + {"LinkErrorReporting", "ERRORREPORT:QUEUE", + "Queue For Next Login", "QueueForNextLogin", 0}, + {"LinkErrorReporting", "ERRORREPORT:SEND", + "Send Error Report", "SendErrorReport", 0}, + {"LinkErrorReporting", "ERRORREPORT:NONE", + "No Error Report", "NoErrorReport", 0}, + + {"CLRSupportLastError", "CLRSupportLastError", + "Enabled", "Enabled", 0}, + {"CLRSupportLastError", "CLRSupportLastError:NO", + "Disabled", "Disabled", 0}, + {"CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", + "System Dlls Only", "SystemDlls", 0}, + + + //Bool Properties + {"LinkIncremental", "INCREMENTAL:NO", "", "false", 0}, + {"LinkIncremental", "INCREMENTAL", "", "true", 0}, + {"SuppressStartupBanner", "NOLOGO", "", "true", 0}, + {"LinkStatus", "LTCG:NOSTATUS", "", "false", 0}, + {"LinkStatus", "LTCG:STATUS", "", "true", 0}, + {"PreventDllBinding", "ALLOWBIND:NO", "", "false", 0}, + {"PreventDllBinding", "ALLOWBIND", "", "true", 0}, + {"TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0}, + {"TreatLinkerWarningAsErrors", "WX", "", "true", 0}, + {"IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0}, + {"GenerateManifest", "MANIFEST:NO", "", "false", 0}, + {"GenerateManifest", "MANIFEST", "", "true", 0}, + {"AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0}, + {"UACUIAccess", "uiAccess='false'", "", "false", 0}, + {"UACUIAccess", "uiAccess='true'", "", "true", 0}, + {"ManifestEmbed", "manifest:embed", "", "true", 0}, + {"GenerateDebugInformation", "DEBUG", "", "true", 0}, + {"MapExports", "MAPINFO:EXPORTS", "", "true", 0}, + {"AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0}, + {"AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0}, + {"LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0}, + {"LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0}, + {"TerminalServerAware", "TSAWARE:NO", "", "false", 0}, + {"TerminalServerAware", "TSAWARE", "", "true", 0}, + {"SwapRunFromCD", "SWAPRUN:CD", "", "true", 0}, + {"SwapRunFromNET", "SWAPRUN:NET", "", "true", 0}, + {"OptimizeReferences", "OPT:NOREF", "", "false", 0}, + {"OptimizeReferences", "OPT:REF", "", "true", 0}, + {"EnableCOMDATFolding", "OPT:NOICF", "", "false", 0}, + {"EnableCOMDATFolding", "OPT:ICF", "", "true", 0}, + {"IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0}, + {"AppContainer", "APPCONTAINER", "", "true", 0}, + {"WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN:NO", "", "false", 0}, + {"WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN", "", "true", 0}, + {"NoEntryPoint", "NOENTRY", "", "true", 0}, + {"SetChecksum", "RELEASE", "", "true", 0}, + {"RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0}, + {"RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0}, + {"FixedBaseAddress", "FIXED:NO", "", "false", 0}, + {"FixedBaseAddress", "FIXED", "", "true", 0}, + {"DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0}, + {"DataExecutionPrevention", "NXCOMPAT", "", "true", 0}, + {"TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0}, + {"SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0}, + {"SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0}, + {"Profile", "PROFILE", "", "true", 0}, + {"LinkDelaySign", "DELAYSIGN:NO", "", "false", 0}, + {"LinkDelaySign", "DELAYSIGN", "", "true", 0}, + {"CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0}, + {"CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0}, + {"DetectOneDefinitionRule", "ODR", "", "true", 0}, + {"ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0}, + {"ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0}, + {"LinkDLL", "DLL", "", "true", 0}, + + //Bool Properties With Argument + {"EnableUAC", "MANIFESTUAC:NO", "", "false", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"EnableUAC", "MANIFESTUAC:NO", "Enable User Account Control (UAC)", "", + cmVS7FlagTable::UserValueRequired}, + {"EnableUAC", "MANIFESTUAC:", "", "true", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"UACUIAccess", "MANIFESTUAC:", "Enable User Account Control (UAC)", "", + cmVS7FlagTable::UserValueRequired}, + {"GenerateMapFile", "MAP", "", "true", + cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue}, + {"MapFileName", "MAP", "Generate Map File", "", + cmVS7FlagTable::UserValueRequired}, + + //String List Properties + {"AdditionalLibraryDirectories", "LIBPATH:", + "Additional Library Directories", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + // Skip [AdditionalDependencies] - no command line Switch. + {"IgnoreSpecificDefaultLibraries", "NODEFAULTLIB:", + "Ignore Specific Default Libraries", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"AddModuleNamesToAssembly", "ASSEMBLYMODULE:", + "Add Module to Assembly", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"EmbedManagedResourceFile", "ASSEMBLYRESOURCE:", + "Embed Managed Resource File", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"ForceSymbolReferences", "INCLUDE:", + "Force Symbol References", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"DelayLoadDLLs", "DELAYLOAD:", + "Delay Loaded Dlls", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", + "Assembly Link Resource", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"AdditionalManifestDependencies", "MANIFESTDEPENDENCY:", + "Additional Manifest Dependencies", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + {"ManifestInput", "manifestinput:", + "Manifest Input", + "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable}, + + //String Properties + {"OutputFile", "OUT:", + "Output File", + "", cmVS7FlagTable::UserValue}, + {"Version", "VERSION:", + "Version", + "", cmVS7FlagTable::UserValue}, + {"SpecifySectionAttributes", "SECTION:", + "Specify Section Attributes", + "", cmVS7FlagTable::UserValue}, + {"MSDOSStubFileName", "STUB:", + "MS-DOS Stub File Name", + "", cmVS7FlagTable::UserValue}, + // Skip [TrackerLogDirectory] - no command line Switch. + {"ModuleDefinitionFile", "DEF:", + "Module Definition File", + "", cmVS7FlagTable::UserValue}, + {"ManifestFile", "ManifestFile:", + "Manifest File", + "", cmVS7FlagTable::UserValue}, + {"ProgramDatabaseFile", "PDB:", + "Generate Program Database File", + "", cmVS7FlagTable::UserValue}, + {"StripPrivateSymbols", "PDBSTRIPPED:", + "Strip Private Symbols", + "", cmVS7FlagTable::UserValue}, + // Skip [MapFileName] - no command line Switch. + // Skip [MinimumRequiredVersion] - no command line Switch. + {"HeapReserveSize", "HEAP:", + "Heap Reserve Size", + "", cmVS7FlagTable::UserValue}, + // Skip [HeapCommitSize] - no command line Switch. + {"StackReserveSize", "STACK:", + "Stack Reserve Size", + "", cmVS7FlagTable::UserValue}, + // Skip [StackCommitSize] - no command line Switch. + {"FunctionOrder", "ORDER:@", + "Function Order", + "", cmVS7FlagTable::UserValue}, + {"ProfileGuidedDatabase", "PGD:", + "Profile Guided Database", + "", cmVS7FlagTable::UserValue}, + {"MidlCommandFile", "MIDL:@", + "MIDL Commands", + "", cmVS7FlagTable::UserValue}, + {"MergedIDLBaseFileName", "IDLOUT:", + "Merged IDL Base File Name", + "", cmVS7FlagTable::UserValue}, + {"TypeLibraryFile", "TLBOUT:", + "Type Library", + "", cmVS7FlagTable::UserValue}, + {"WindowsMetadataFile", "WINMDFILE:", + "Windows Metadata File", + "", cmVS7FlagTable::UserValue}, + {"WindowsMetadataLinkKeyFile", "WINMDKEYFILE:", + "Windows Metadata Key File", + "", cmVS7FlagTable::UserValue}, + {"WindowsMetadataKeyContainer", "WINMDKEYCONTAINER:", + "Windows Metadata Key Container", + "", cmVS7FlagTable::UserValue}, + {"EntryPointSymbol", "ENTRY:", + "Entry Point", + "", cmVS7FlagTable::UserValue}, + {"BaseAddress", "BASE:", + "Base Address", + "", cmVS7FlagTable::UserValue}, + {"ImportLibrary", "IMPLIB:", + "Import Library", + "", cmVS7FlagTable::UserValue}, + {"MergeSections", "MERGE:", + "Merge Sections", + "", cmVS7FlagTable::UserValue}, + {"LinkKeyFile", "KEYFILE:", + "Key File", + "", cmVS7FlagTable::UserValue}, + {"KeyContainer", "KEYCONTAINER:", + "Key Container", + "", cmVS7FlagTable::UserValue}, + // Skip [AdditionalOptions] - no command line Switch. + {0,0,0,0,0} +}; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 53b6a9b..fea117a 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -22,9 +22,36 @@ #include "cmVS10CLFlagTable.h" #include "cmVS10LinkFlagTable.h" #include "cmVS10LibFlagTable.h" +#include "cmVS11CLFlagTable.h" +#include "cmVS11LinkFlagTable.h" +#include "cmVS11LibFlagTable.h" #include <cmsys/auto_ptr.hxx> +static cmVS7FlagTable const* +cmVSGetCLFlagTable(cmLocalVisualStudioGenerator* lg) +{ + if(lg->GetVersion() >= cmLocalVisualStudioGenerator::VS11) + { return cmVS11CLFlagTable; } + return cmVS10CLFlagTable; +} + +static cmVS7FlagTable const* +cmVSGetLibFlagTable(cmLocalVisualStudioGenerator* lg) +{ + if(lg->GetVersion() >= cmLocalVisualStudioGenerator::VS11) + { return cmVS11LibFlagTable; } + return cmVS10LibFlagTable; +} + +static cmVS7FlagTable const* +cmVSGetLinkFlagTable(cmLocalVisualStudioGenerator* lg) +{ + if(lg->GetVersion() >= cmLocalVisualStudioGenerator::VS11) + { return cmVS11LinkFlagTable; } + return cmVS10LinkFlagTable; +} + static std::string cmVS10EscapeXML(std::string arg) { cmSystemTools::ReplaceString(arg, "&", "&"); @@ -413,7 +440,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues() } if(this->Target->GetPropertyAsBool("VS_WINRT_EXTENSIONS")) { - this->WriteString("<Immersive>true</Immersive>\n", 2); + this->WriteString("<WindowsAppContainer>true" + "</WindowsAppContainer>\n", 2); } this->WriteString("</PropertyGroup>\n", 1); } @@ -957,7 +985,7 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags( cmVisualStudioGeneratorOptions clOptions(this->LocalGenerator, cmVisualStudioGeneratorOptions::Compiler, - cmVS10CLFlagTable, 0, this); + cmVSGetCLFlagTable(this->LocalGenerator), 0, this); clOptions.Parse(flags.c_str()); clOptions.AddDefines(configDefines.c_str()); clOptions.SetConfiguration((*config).c_str()); @@ -1151,7 +1179,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( cmsys::auto_ptr<Options> pOptions( new Options(this->LocalGenerator, Options::Compiler, - cmVS10CLFlagTable)); + cmVSGetCLFlagTable(this->LocalGenerator))); Options& clOptions = *pOptions; std::string flags; @@ -1204,6 +1232,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( // Get preprocessor definitions for this directory. std::string defineFlags = this->Target->GetMakefile()->GetDefineFlags(); clOptions.FixExceptionHandlingDefault(); + clOptions.AddFlag("PrecompiledHeader", "NotUsing"); clOptions.Parse(flags.c_str()); clOptions.Parse(defineFlags.c_str()); clOptions.AddDefines @@ -1311,7 +1340,7 @@ cmVisualStudio10TargetGenerator::WriteLibOptions(std::string const& config) cmVisualStudioGeneratorOptions libOptions(this->LocalGenerator, cmVisualStudioGeneratorOptions::Linker, - cmVS10LibFlagTable, 0, this); + cmVSGetLibFlagTable(this->LocalGenerator), 0, this); libOptions.Parse(libflags?libflags:""); libOptions.Parse(libflagsConfig?libflagsConfig:""); libOptions.OutputAdditionalOptions(*this->BuildFileStream, " ", ""); @@ -1391,7 +1420,7 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const& cmVisualStudioGeneratorOptions linkOptions(this->LocalGenerator, cmVisualStudioGeneratorOptions::Linker, - cmVS10LinkFlagTable, 0, this); + cmVSGetLinkFlagTable(this->LocalGenerator), 0, this); if ( this->Target->GetPropertyAsBool("WIN32_EXECUTABLE") ) { flags += " /SUBSYSTEM:WINDOWS"; @@ -1423,7 +1452,7 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const& // Replace spaces in libs with ; cmSystemTools::ReplaceString(libs, " ", ";"); cmComputeLinkInformation* pcli = - this->Target->GetLinkInformation(config.c_str()); + this->GeneratorTarget->GetLinkInformation(config.c_str()); if(!pcli) { cmSystemTools::Error @@ -1565,7 +1594,8 @@ void cmVisualStudio10TargetGenerator::WriteItemDefinitionGroups() static_cast<cmGlobalVisualStudio7Generator *> (this->GlobalGenerator)->GetConfigurations(); std::vector<std::string> includes; - this->LocalGenerator->GetIncludeDirectories(includes, this->Target); + this->LocalGenerator->GetIncludeDirectories(includes, + this->GeneratorTarget); for(std::vector<std::string>::iterator i = configs->begin(); i != configs->end(); ++i) { diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 75aa471..e559fe0 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -630,7 +630,8 @@ bool cmake::FindPackage(const std::vector<std::string>& args) std::string linkLibs; std::string flags; std::string linkFlags; - lg->GetTargetFlags(linkLibs, flags, linkFlags, *tgt); + cmGeneratorTarget gtgt(tgt); + lg->GetTargetFlags(linkLibs, flags, linkFlags, >gt); printf("%s\n", linkLibs.c_str() ); @@ -2326,6 +2327,17 @@ int cmake::ActualConfigure() this->CacheManager->RemoveCacheEntry("CMAKE_GENERATOR"); this->CacheManager->RemoveCacheEntry("CMAKE_EXTRA_GENERATOR"); } + + cmMakefile* mf=this->GlobalGenerator->GetLocalGenerators()[0]->GetMakefile(); + if (mf->IsOn("CTEST_USE_LAUNCHERS") + && !this->GetProperty("RULE_LAUNCH_COMPILE", cmProperty::GLOBAL)) + { + cmSystemTools::Error("CTEST_USE_LAUNCHERS is enabled, but the " + "RULE_LAUNCH_COMPILE global property is not defined.\n" + "Did you forget to include(CTest) in the toplevel " + "CMakeLists.txt ?"); + } + // only save the cache if there were no fatal errors if ( this->GetWorkingMode() == NORMAL_MODE ) { @@ -2438,9 +2450,6 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure) this->PreLoadCMakeFiles(); - std::string systemFile = this->GetHomeOutputDirectory(); - systemFile += "/CMakeSystem.cmake"; - if ( noconfigure ) { return 0; diff --git a/Source/cmcldeps.cxx b/Source/cmcldeps.cxx index 69df88d..34350bf 100644 --- a/Source/cmcldeps.cxx +++ b/Source/cmcldeps.cxx @@ -238,7 +238,9 @@ int main() { // needed to suppress filename output of msvc tools std::string srcfilename; std::string::size_type pos = srcfile.rfind("\\"); - if (pos != std::string::npos) { + if (pos == std::string::npos) { + srcfilename = srcfile; + } else { srcfilename = srcfile.substr(pos + 1); } diff --git a/Source/cmparseMSBuildXML.py b/Source/cmparseMSBuildXML.py index a0c7ec4..35b55ca 100755 --- a/Source/cmparseMSBuildXML.py +++ b/Source/cmparseMSBuildXML.py @@ -6,6 +6,9 @@ # "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/1033/cl.xml" # "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/1033/lib.xml" # "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/1033/link.xml" +# "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/V110/1033/cl.xml" +# "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/V110/1033/lib.xml" +# "${PROGRAMFILES}/MSBuild/Microsoft.Cpp/v4.0/V110/1033/link.xml" # # BoolProperty <Name>true|false</Name> # simple example: @@ -148,7 +151,7 @@ class Property: self.argumentProperty = child.getAttribute("Property") self.argumentIsRequired = child.getAttribute("IsRequired") if child.nodeName == self.prefix_type+"Value": - va = Property(self.prefix_type,["Name","Switch"]) + va = Property(self.prefix_type,["Name","DisplayName","Switch"]) va.suffix_type = "Value" va.populate(child) self.values.append(va) @@ -203,11 +206,11 @@ class MSBuildToCMake: if child.nodeName == "EnumProperty": self.enumProperties.append(Property("Enum",["Name","Category"],child)) if child.nodeName == "StringProperty": - self.stringProperties.append(Property("String",["Name","Subtype","Separator","Category","Visible","IncludeInCommandLine","Switch","ReadOnly"],child)) + self.stringProperties.append(Property("String",["Name","Subtype","Separator","Category","Visible","IncludeInCommandLine","Switch","DisplayName","ReadOnly"],child)) if child.nodeName == "StringListProperty": - self.stringListProperties.append(Property("StringList",["Name","Category","Switch","Subtype"],child)) + self.stringListProperties.append(Property("StringList",["Name","Category","Switch","DisplayName","Subtype"],child)) if child.nodeName == "BoolProperty": - self.boolProperties.append(Property("Bool",["ReverseSwitch","Name","Category","Switch","SwitchPrefix","IncludeInCommandLine"],child)) + self.boolProperties.append(Property("Bool",["ReverseSwitch","Name","Category","Switch","DisplayName","SwitchPrefix","IncludeInCommandLine"],child)) if child.nodeName == "IntProperty": self.intProperties.append(Property("Int",["Name","Category","Visible"],child)) self.populate(child,spaces+"----") @@ -226,15 +229,15 @@ class MSBuildToCMake: for j in i.values: #hardcore Brad King's manual fixes for cmVS10CLFlagTable.h if i.attributes["Name"] == "PrecompiledHeader" and j.attributes["Switch"] != "": - toReturn+=" {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\",\n cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n" + toReturn+=" {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n \""+j.attributes["DisplayName"]+"\", \""+j.attributes["Name"]+"\",\n cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n" else: #default (normal, non-hardcoded) case - toReturn+=" {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\", 0},\n" + toReturn+=" {\""+i.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n \""+j.attributes["DisplayName"]+"\", \""+j.attributes["Name"]+"\", 0},\n" toReturn += "\n" if lastProp != {}: for j in lastProp.values: - toReturn+=" {\""+lastProp.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n \""+j.DisplayName+"\", \""+j.attributes["Name"]+"\", 0},\n" + toReturn+=" {\""+lastProp.attributes["Name"]+"\", \""+j.attributes["Switch"]+"\",\n \""+j.attributes["DisplayName"]+"\", \""+j.attributes["Name"]+"\", 0},\n" toReturn += "\n" toReturn += "\n //Bool Properties\n" @@ -250,17 +253,17 @@ class MSBuildToCMake: if i.argumentProperty != "": if i.attributes["ReverseSwitch"] != "": toReturn += " {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \"\", \"false\",\n cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n" - toReturn += " {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \""+i.DisplayName+"\", \"\",\n cmVS7FlagTable::UserValueRequired},\n" + toReturn += " {\""+i.attributes["Name"]+"\", \""+i.attributes["ReverseSwitch"]+"\", \""+i.attributes["DisplayName"]+"\", \"\",\n cmVS7FlagTable::UserValueRequired},\n" if i.attributes["Switch"] != "": toReturn += " {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+"\", \"\", \"true\",\n cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},\n" - toReturn += " {\""+i.argumentProperty+"\", \""+i.attributes["Switch"]+"\", \""+i.DisplayName+"\", \"\",\n cmVS7FlagTable::UserValueRequired},\n" + toReturn += " {\""+i.argumentProperty+"\", \""+i.attributes["Switch"]+"\", \""+i.attributes["DisplayName"]+"\", \"\",\n cmVS7FlagTable::UserValueRequired},\n" toReturn += "\n //String List Properties\n" for i in self.stringListProperties: if i.attributes["Switch"] == "": toReturn += " // Skip [" + i.attributes["Name"] + "] - no command line Switch.\n"; else: - toReturn +=" {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+"\",\n \""+i.DisplayName+"\",\n \"\", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable},\n" + toReturn +=" {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+"\",\n \""+i.attributes["DisplayName"]+"\",\n \"\", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable},\n" toReturn += "\n //String Properties\n" for i in self.stringProperties: @@ -276,7 +279,7 @@ class MSBuildToCMake: else: toReturn += " // Skip [" + i.attributes["Name"] + "] - no command line Switch.\n"; else: - toReturn +=" {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+i.attributes["Separator"]+"\",\n \""+i.DisplayName+"\",\n \"\", cmVS7FlagTable::UserValue},\n" + toReturn +=" {\""+i.attributes["Name"]+"\", \""+i.attributes["Switch"]+i.attributes["Separator"]+"\",\n \""+i.attributes["DisplayName"]+"\",\n \"\", cmVS7FlagTable::UserValue},\n" toReturn += " {0,0,0,0,0}\n};" return toReturn diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 35a8d41..e03b926 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -213,6 +213,7 @@ if(BUILD_TESTING) ADD_TEST_MACRO(Unset Unset) ADD_TEST_MACRO(PolicyScope PolicyScope) ADD_TEST_MACRO(EmptyLibrary EmptyLibrary) + ADD_TEST_MACRO(CompileDefinitions CompileDefinitions) set_tests_properties(EmptyLibrary PROPERTIES PASS_REGULAR_EXPRESSION "CMake Error: CMake can not determine linker language for target:test") ADD_TEST_MACRO(CrossCompile CrossCompile) diff --git a/Tests/CMakeOnly/CMakeLists.txt b/Tests/CMakeOnly/CMakeLists.txt index 6fe91c7..ba681d8 100644 --- a/Tests/CMakeOnly/CMakeLists.txt +++ b/Tests/CMakeOnly/CMakeLists.txt @@ -19,6 +19,12 @@ add_CMakeOnly_test(CheckCXXCompilerFlag) add_CMakeOnly_test(CheckLanguage) +add_CMakeOnly_test(CompilerIdC) +add_CMakeOnly_test(CompilerIdCXX) +if(CMAKE_Fortran_COMPILER) + add_CMakeOnly_test(CompilerIdFortran) +endif() + add_CMakeOnly_test(AllFindModules) add_CMakeOnly_test(TargetScope) diff --git a/Tests/CMakeOnly/CompilerIdC/CMakeLists.txt b/Tests/CMakeOnly/CompilerIdC/CMakeLists.txt new file mode 100644 index 0000000..848ffdd --- /dev/null +++ b/Tests/CMakeOnly/CompilerIdC/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 2.8.9) +project(CompilerIdC C) + +foreach(v + CMAKE_C_COMPILER + CMAKE_C_COMPILER_ID + CMAKE_C_COMPILER_VERSION + ) + if(${v}) + message(STATUS "${v}=[${${v}}]") + else() + message(SEND_ERROR "${v} not set!") + endif() +endforeach() diff --git a/Tests/CMakeOnly/CompilerIdCXX/CMakeLists.txt b/Tests/CMakeOnly/CompilerIdCXX/CMakeLists.txt new file mode 100644 index 0000000..94ac31e --- /dev/null +++ b/Tests/CMakeOnly/CompilerIdCXX/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 2.8.9) +project(CompilerIdCXX CXX) + +foreach(v + CMAKE_CXX_COMPILER + CMAKE_CXX_COMPILER_ID + CMAKE_CXX_COMPILER_VERSION + ) + if(${v}) + message(STATUS "${v}=[${${v}}]") + else() + message(SEND_ERROR "${v} not set!") + endif() +endforeach() diff --git a/Tests/CMakeOnly/CompilerIdFortran/CMakeLists.txt b/Tests/CMakeOnly/CompilerIdFortran/CMakeLists.txt new file mode 100644 index 0000000..3a2bdeb --- /dev/null +++ b/Tests/CMakeOnly/CompilerIdFortran/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 2.8.9) +project(CompilerIdFortran Fortran) + +foreach(v + CMAKE_Fortran_COMPILER + CMAKE_Fortran_COMPILER_ID + ) + if(${v}) + message(STATUS "${v}=[${${v}}]") + else() + message(SEND_ERROR "${v} not set!") + endif() +endforeach() +foreach(v + CMAKE_Fortran_COMPILER_VERSION + ) + if(${v}) + message(STATUS "${v}=[${${v}}]") + else() + message(WARNING "${v} not set!") + endif() +endforeach() diff --git a/Tests/CMakeTests/FileDownloadTest.cmake.in b/Tests/CMakeTests/FileDownloadTest.cmake.in index 9dc2ebb..3f0ab50 100644 --- a/Tests/CMakeTests/FileDownloadTest.cmake.in +++ b/Tests/CMakeTests/FileDownloadTest.cmake.in @@ -38,6 +38,59 @@ file(DOWNLOAD ${dir}/file3.png TIMEOUT 2 STATUS status + EXPECTED_HASH SHA1 50c614fc28b39c1281d0517bb6d5858b4359c9b7 + ) + +message(STATUS "FileDownload:5") +file(DOWNLOAD + ${url} + ${dir}/file3.png + TIMEOUT 2 + STATUS status + EXPECTED_HASH SHA224 73cd5f442b04e8320e4f907f8e1b21d4befff98b5bd77bc32526ea68 + ) + +message(STATUS "FileDownload:6") +file(DOWNLOAD + ${url} + ${dir}/file3.png + TIMEOUT 2 + STATUS status + EXPECTED_HASH SHA256 2e067f6c09cbc7cd619c8fbcc44eb64cd6b45a95e4cddb3a585eee1f731c4da9 + ) + +message(STATUS "FileDownload:7") +file(DOWNLOAD + ${url} + ${dir}/file3.png + TIMEOUT 2 + STATUS status + EXPECTED_HASH SHA384 398bf41902a7251c30e522b307e3e41e3fb617c765b3feaa99b2f7d063894708ad399267ccc25d877437a10e5e890d35 + ) + +message(STATUS "FileDownload:8") +file(DOWNLOAD + ${url} + ${dir}/file3.png + TIMEOUT 2 + STATUS status + EXPECTED_HASH SHA512 c51854d21052713968b849c2b4263cf54be03bc3a7e9847a6c71c6c8d1d13cd805fe1b9fa95f9ba1d0a5631513974f6fae21e34ab5b171d94bad48df5f073e48 + ) +message(STATUS "FileDownload:9") +file(DOWNLOAD + ${url} + ${dir}/file3.png + TIMEOUT 2 + STATUS status + EXPECTED_HASH MD5 d16778650db435bda3a8c3435c3ff5d1 + ) + +message(STATUS "FileDownload:10") +file(DOWNLOAD + ${url} + ${dir}/file3.png + TIMEOUT 2 + STATUS status EXPECTED_MD5 d16778650db435bda3a8c3435c3ff5d1 ) message(STATUS "${status}") diff --git a/Tests/CMakeTests/ToolchainTest.cmake.in b/Tests/CMakeTests/ToolchainTest.cmake.in index c010fca..96e7196 100644 --- a/Tests/CMakeTests/ToolchainTest.cmake.in +++ b/Tests/CMakeTests/ToolchainTest.cmake.in @@ -6,7 +6,7 @@ macro(MARK_AS_ADVANCED) endmacro() # set this to a place where we are allowed to write -set(CMAKE_PLATFORM_ROOT_BIN "${CMAKE_CURRENT_BINARY_DIR}") +set(CMAKE_PLATFORM_INFO_DIR "${CMAKE_CURRENT_BINARY_DIR}") # don't run the compiler detection set(CMAKE_C_COMPILER_ID_RUN 1) diff --git a/Tests/CMakeTests/VersionTest.cmake.in b/Tests/CMakeTests/VersionTest.cmake.in index 215bb2b..9e31cb4 100644 --- a/Tests/CMakeTests/VersionTest.cmake.in +++ b/Tests/CMakeTests/VersionTest.cmake.in @@ -7,3 +7,10 @@ if("${CMAKE_VERSION}" VERSION_LESS "${min_ver}") else() message("CMAKE_VERSION=[${CMAKE_VERSION}] is not less than [${min_ver}]") endif() + +set(v 1.2.3.4.5.6.7) +if("${v}.8" VERSION_LESS "${v}.9") + message(STATUS "${v}.8 is less than ${v}.9") +else() + message(FATAL_ERROR "${v}.8 is not less than ${v}.9?") +endif() diff --git a/Tests/CheckCompilerRelatedVariables/CMakeLists.txt b/Tests/CheckCompilerRelatedVariables/CMakeLists.txt index 8b279a5..20001e6 100644 --- a/Tests/CheckCompilerRelatedVariables/CMakeLists.txt +++ b/Tests/CheckCompilerRelatedVariables/CMakeLists.txt @@ -46,6 +46,7 @@ echo_var(MSVC80) echo_var(MSVC90) echo_var(MSVC10) echo_var(MSVC11) +echo_var(MSVC_IDE) if(MSVC) # @@ -60,6 +61,13 @@ if(MSVC) else() message(FATAL_ERROR "error: ${msvc_total} MSVC** variables are defined -- exactly 1 expected") endif() + if(NOT DEFINED MSVC_IDE) + message(FATAL_ERROR "MSVC_IDE not defined but should be!") + elseif("${CMAKE_GENERATOR}" MATCHES "Visual Studio" AND NOT MSVC_IDE) + message(FATAL_ERROR "MSVC_IDE is not true but should be (${CMAKE_GENERATOR})!") + elseif(NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio" AND MSVC_IDE) + message(FATAL_ERROR "MSVC_IDE is true but should not be (${CMAKE_GENERATOR})!") + endif() else() # # The compiler is something other than cl... None of the MSVC** variables @@ -70,6 +78,9 @@ else() else() message(FATAL_ERROR "error: ${msvc_total} MSVC** variables are defined -- exactly 0 expected") endif() + if(DEFINED MSVC_IDE) + message(FATAL_ERROR "MSVC_IDE is defined but should not be!") + endif() endif() diff --git a/Tests/CompileDefinitions/CMakeLists.txt b/Tests/CompileDefinitions/CMakeLists.txt new file mode 100644 index 0000000..e7d91bf --- /dev/null +++ b/Tests/CompileDefinitions/CMakeLists.txt @@ -0,0 +1,16 @@ + +cmake_minimum_required(VERSION 2.8) + +project(CompileDefinitions) + +if ("${CMAKE_GENERATOR}" STREQUAL "Visual Studio 6") + add_definitions(-DNO_SPACES_IN_DEFINE_VALUES) +endif() + +add_subdirectory(add_definitions_command) +add_subdirectory(target_prop) +add_subdirectory(add_definitions_command_with_target_prop) + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummyexecutable.cpp" "int main(int, char **) { return 0; }\n") + +add_executable(CompileDefinitions "${CMAKE_CURRENT_BINARY_DIR}/dummyexecutable.cpp") diff --git a/Tests/CompileDefinitions/add_definitions_command/CMakeLists.txt b/Tests/CompileDefinitions/add_definitions_command/CMakeLists.txt new file mode 100644 index 0000000..a6372af --- /dev/null +++ b/Tests/CompileDefinitions/add_definitions_command/CMakeLists.txt @@ -0,0 +1,7 @@ + +project(add_definitions_command) + +add_definitions(-DCMAKE_IS_FUN -DCMAKE_IS=Fun -DCMAKE_IS_="Fun" -DCMAKE_IS_REALLY="Very Fun") +add_definitions(-DCMAKE_IS_="Fun" -DCMAKE_IS_REALLY="Very Fun" -DCMAKE_IS_FUN -DCMAKE_IS=Fun) + +add_executable(add_definitions_command_executable ../compiletest.cpp) diff --git a/Tests/CompileDefinitions/add_definitions_command_with_target_prop/CMakeLists.txt b/Tests/CompileDefinitions/add_definitions_command_with_target_prop/CMakeLists.txt new file mode 100644 index 0000000..e415390 --- /dev/null +++ b/Tests/CompileDefinitions/add_definitions_command_with_target_prop/CMakeLists.txt @@ -0,0 +1,14 @@ + +project(add_definitions_command_with_target_prop) + +add_definitions(-DCMAKE_IS_FUN -DCMAKE_IS=Fun) + +add_executable(add_definitions_command_with_target_prop_executable ../compiletest.cpp) + +set_target_properties(add_definitions_command_with_target_prop_executable PROPERTIES COMPILE_DEFINITIONS CMAKE_IS_="Fun") + +set_property(TARGET add_definitions_command_with_target_prop_executable APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_IS_REALLY="Very Fun") + +add_definitions(-DCMAKE_IS_FUN) + +set_property(TARGET add_definitions_command_with_target_prop_executable APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_IS=Fun CMAKE_IS_="Fun") diff --git a/Tests/CompileDefinitions/compiletest.cpp b/Tests/CompileDefinitions/compiletest.cpp new file mode 100644 index 0000000..6db6f3f --- /dev/null +++ b/Tests/CompileDefinitions/compiletest.cpp @@ -0,0 +1,33 @@ + +#ifndef CMAKE_IS_FUN +#error Expect CMAKE_IS_FUN definition +#endif + +#if CMAKE_IS != Fun +#error Expect CMAKE_IS=Fun definition +#endif + + +template<bool test> +struct CMakeStaticAssert; + +template<> +struct CMakeStaticAssert<true> {}; + +static const char fun_string[] = CMAKE_IS_; +#ifndef NO_SPACES_IN_DEFINE_VALUES +static const char very_fun_string[] = CMAKE_IS_REALLY; +#endif + +enum { + StringLiteralTest1 = sizeof(CMakeStaticAssert<sizeof(CMAKE_IS_) == sizeof("Fun")>) +#ifndef NO_SPACES_IN_DEFINE_VALUES + , + StringLiteralTest2 = sizeof(CMakeStaticAssert<sizeof(CMAKE_IS_REALLY) == sizeof("Very Fun")>) +#endif +}; + +int main(int argc, char **argv) +{ + return 0; +} diff --git a/Tests/CompileDefinitions/target_prop/CMakeLists.txt b/Tests/CompileDefinitions/target_prop/CMakeLists.txt new file mode 100644 index 0000000..e2b6ba9 --- /dev/null +++ b/Tests/CompileDefinitions/target_prop/CMakeLists.txt @@ -0,0 +1,9 @@ + +project(target_prop) + +add_executable(target_prop_executable ../compiletest.cpp) + +set_target_properties(target_prop_executable PROPERTIES COMPILE_DEFINITIONS CMAKE_IS_FUN) + +set_property(TARGET target_prop_executable APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_IS_REALLY="Very Fun" CMAKE_IS=Fun) +set_property(TARGET target_prop_executable APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_IS_FUN CMAKE_IS_="Fun") diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt index 33ffe2e..3f8e827 100644 --- a/Tests/ExternalProject/CMakeLists.txt +++ b/Tests/ExternalProject/CMakeLists.txt @@ -189,7 +189,7 @@ set_property(TARGET ${proj} PROPERTY FOLDER "Local/TGZ") set(proj TutorialStep1-LocalNoDirTGZ) ExternalProject_Add(${proj} URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tgz" - URL_MD5 0b8182edcecdf40bf1c9d71d7d259f78 + URL_HASH SHA256=496229e2a5ed620a37c385ad9406004a18026beab8b55dd2c4565d4b7f1d5383 CMAKE_GENERATOR "${CMAKE_GENERATOR}" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> INSTALL_COMMAND "" diff --git a/Tests/ObjectLibrary/A/CMakeLists.txt b/Tests/ObjectLibrary/A/CMakeLists.txt index 04ab02f..36c86e7 100644 --- a/Tests/ObjectLibrary/A/CMakeLists.txt +++ b/Tests/ObjectLibrary/A/CMakeLists.txt @@ -1,4 +1,4 @@ -project(ObjectLibraryA) +project(ObjectLibraryA C) # Add -fPIC so objects can be used in shared libraries. # TODO: Need property for this. if(CMAKE_SHARED_LIBRARY_C_FLAGS AND NOT WATCOM) diff --git a/Tests/ObjectLibrary/B/CMakeLists.txt b/Tests/ObjectLibrary/B/CMakeLists.txt index 4b0b07d..32d8ceb 100644 --- a/Tests/ObjectLibrary/B/CMakeLists.txt +++ b/Tests/ObjectLibrary/B/CMakeLists.txt @@ -1,4 +1,4 @@ -project(ObjectLibraryB) +project(ObjectLibraryB C) if("${CMAKE_GENERATOR}" MATCHES "Visual Studio 6") # VS 6 generator does not use per-target object locations. set(vs6 _vs6) diff --git a/Tests/RunCMake/GeneratorExpression/BadAND-stderr.txt b/Tests/RunCMake/GeneratorExpression/BadAND-stderr.txt index ced21d8..36302db 100644 --- a/Tests/RunCMake/GeneratorExpression/BadAND-stderr.txt +++ b/Tests/RunCMake/GeneratorExpression/BadAND-stderr.txt @@ -1,9 +1,18 @@ CMake Error at BadAND.cmake:1 \(add_custom_target\): Error evaluating generator expression: + \$<AND> + + \$<AND> expression requires at least one parameter. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadAND.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + \$<AND:> - AND requires one or more comma-separated '0' or '1' values. + Parameters to \$<AND> must resolve to either '0' or '1'. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + @@ -12,6 +21,24 @@ CMake Error at BadAND.cmake:1 \(add_custom_target\): \$<AND:,> - AND requires one or more comma-separated '0' or '1' values. + Parameters to \$<AND> must resolve to either '0' or '1'. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadAND.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<AND:01> + + Parameters to \$<AND> must resolve to either '0' or '1'. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadAND.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<AND:nothing> + + Parameters to \$<AND> must resolve to either '0' or '1'. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/GeneratorExpression/BadAND.cmake b/Tests/RunCMake/GeneratorExpression/BadAND.cmake index 7926540..265e414 100644 --- a/Tests/RunCMake/GeneratorExpression/BadAND.cmake +++ b/Tests/RunCMake/GeneratorExpression/BadAND.cmake @@ -1,4 +1,7 @@ add_custom_target(check ALL COMMAND check + $<AND> $<AND:> $<AND:,> + $<AND:01> + $<AND:nothing> VERBATIM) diff --git a/Tests/RunCMake/GeneratorExpression/BadCONFIG-stderr.txt b/Tests/RunCMake/GeneratorExpression/BadCONFIG-stderr.txt index 7c86b25..1cfbf40 100644 --- a/Tests/RunCMake/GeneratorExpression/BadCONFIG-stderr.txt +++ b/Tests/RunCMake/GeneratorExpression/BadCONFIG-stderr.txt @@ -1,8 +1,44 @@ CMake Error at BadCONFIG.cmake:1 \(add_custom_target\): Error evaluating generator expression: + \$<CONFIG> + + \$<CONFIG> expression requires exactly one parameter. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadCONFIG.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + \$<CONFIG:.> Expression syntax not recognized. Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadCONFIG.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<CONFIG:Foo,Bar> + + \$<CONFIG> expression requires exactly one parameter. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadCONFIG.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<CONFIG:Foo-Bar> + + Expression syntax not recognized. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadCONFIG.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<CONFIG:Foo-Nested> + + Expression syntax not recognized. +Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/GeneratorExpression/BadCONFIG.cmake b/Tests/RunCMake/GeneratorExpression/BadCONFIG.cmake index 0c13f89..c27ea5f 100644 --- a/Tests/RunCMake/GeneratorExpression/BadCONFIG.cmake +++ b/Tests/RunCMake/GeneratorExpression/BadCONFIG.cmake @@ -1,3 +1,7 @@ add_custom_target(check ALL COMMAND check + $<CONFIG> $<CONFIG:.> + $<CONFIG:Foo,Bar> + $<CONFIG:Foo-Bar> + $<$<CONFIG:Foo-Nested>:foo> VERBATIM) diff --git a/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt b/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt index 5721f5f..32169c5 100644 --- a/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt +++ b/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt @@ -1,9 +1,17 @@ CMake Error at BadNOT.cmake:1 \(add_custom_target\): Error evaluating generator expression: + \$<NOT> + + \$<NOT> expression requires exactly one parameter. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++CMake Error at BadNOT.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + \$<NOT:> - NOT requires exactly one '0' or '1' value. + \$<NOT> parameter must resolve to exactly one '0' or '1' value. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + @@ -12,7 +20,7 @@ CMake Error at BadNOT.cmake:1 \(add_custom_target\): \$<NOT:,> - NOT requires exactly one '0' or '1' value. + \$<NOT> parameter must resolve to exactly one '0' or '1' value. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + @@ -21,6 +29,24 @@ CMake Error at BadNOT.cmake:1 \(add_custom_target\): \$<NOT:0,1> - NOT requires exactly one '0' or '1' value. + \$<NOT> expression requires exactly one parameter. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadNOT.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<NOT:01> + + \$<NOT> parameter must resolve to exactly one '0' or '1' value. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadNOT.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<NOT:nothing> + + \$<NOT> parameter must resolve to exactly one '0' or '1' value. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/GeneratorExpression/BadNOT.cmake b/Tests/RunCMake/GeneratorExpression/BadNOT.cmake index 452293b..c2dada3 100644 --- a/Tests/RunCMake/GeneratorExpression/BadNOT.cmake +++ b/Tests/RunCMake/GeneratorExpression/BadNOT.cmake @@ -1,5 +1,8 @@ add_custom_target(check ALL COMMAND check + $<NOT> $<NOT:> $<NOT:,> $<NOT:0,1> + $<NOT:01> + $<NOT:nothing> VERBATIM) diff --git a/Tests/RunCMake/GeneratorExpression/BadOR-stderr.txt b/Tests/RunCMake/GeneratorExpression/BadOR-stderr.txt index 72ef2dd..d4ccab7 100644 --- a/Tests/RunCMake/GeneratorExpression/BadOR-stderr.txt +++ b/Tests/RunCMake/GeneratorExpression/BadOR-stderr.txt @@ -1,9 +1,18 @@ CMake Error at BadOR.cmake:1 \(add_custom_target\): Error evaluating generator expression: + \$<OR> + + \$<OR> expression requires at least one parameter. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadOR.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + \$<OR:> - OR requires one or more comma-separated '0' or '1' values. + Parameters to \$<OR> must resolve to either '0' or '1'. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + @@ -12,6 +21,24 @@ CMake Error at BadOR.cmake:1 \(add_custom_target\): \$<OR:,> - OR requires one or more comma-separated '0' or '1' values. + Parameters to \$<OR> must resolve to either '0' or '1'. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadOR.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<OR:01> + + Parameters to \$<OR> must resolve to either '0' or '1'. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadOR.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<OR:nothing> + + Parameters to \$<OR> must resolve to either '0' or '1'. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/GeneratorExpression/BadOR.cmake b/Tests/RunCMake/GeneratorExpression/BadOR.cmake index f16f56a..0813400 100644 --- a/Tests/RunCMake/GeneratorExpression/BadOR.cmake +++ b/Tests/RunCMake/GeneratorExpression/BadOR.cmake @@ -1,4 +1,7 @@ add_custom_target(check ALL COMMAND check + $<OR> $<OR:> $<OR:,> + $<OR:01> + $<OR:nothing> VERBATIM) diff --git a/Tests/Wrapping/CMakeLists.txt b/Tests/Wrapping/CMakeLists.txt index 22233df..58e9c32 100644 --- a/Tests/Wrapping/CMakeLists.txt +++ b/Tests/Wrapping/CMakeLists.txt @@ -40,7 +40,7 @@ endif() set(WRAP ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/Wrap${EXE_EXT}) # -# QT Wrappers +# Qt Wrappers # set (QT_WRAP_CPP "On") @@ -48,7 +48,7 @@ set (QT_MOC_EXE "echo") include( FindQt3 ) if (QT_FOUND AND QT_WRAP_UI) - message("found qt 3 test it...") + message("found Qt 3 test it...") include_directories( ${QT_INCLUDE_DIR} ) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) @@ -67,8 +67,8 @@ if (QT_FOUND AND QT_WRAP_UI) qt_wrap_ui (myqtlib QTUI_H_SRCS QTUI_S_SRCS ${QTUI_SRCS}) qt_wrap_cpp (myqtlib QT_MOC_SRCS ${SRCS} vtkTestMoc.h) - message("QT files are ${QTUI_S_SRCS}") - message("QT other files are ${QTUI_H_SRCS}") + message("Qt files are ${QTUI_S_SRCS}") + message("Qt other files are ${QTUI_H_SRCS}") add_definitions(${QT_DEFINITIONS}) add_library(myqtlib ${QTUI_S_SRCS} ${QT_MOC_SRCS}) add_executable (qtwrapping qtwrappingmain.cxx) diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt index 233d5e2..b8f6b3c 100644 --- a/Utilities/CMakeLists.txt +++ b/Utilities/CMakeLists.txt @@ -27,7 +27,6 @@ set(MAN_FILES ) set(TEXT_FILES ${CMake_BINARY_DIR}/Docs/cmake.txt - ${CMake_BINARY_DIR}/Docs/cmake.docbook ${CMake_BINARY_DIR}/Docs/cmake-policies.txt ${CMake_BINARY_DIR}/Docs/cmake-properties.txt ${CMake_BINARY_DIR}/Docs/cmake-variables.txt @@ -44,6 +43,9 @@ set(HTML_FILES ${CMake_BINARY_DIR}/Docs/cmake-commands.html ${CMake_BINARY_DIR}/Docs/cmake-compatcommands.html ) +set(DOCBOOK_FILES + ${CMake_BINARY_DIR}/Docs/cmake.docbook + ) macro(ADD_DOCS target dependency) # Generate documentation for "ctest" executable. @@ -63,11 +65,9 @@ macro(ADD_DOCS target dependency) ) set(DOC_FILES ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/${target}.txt) list(APPEND MAN_FILES ${CMake_BINARY_DIR}/Docs/${target}.1) - list(APPEND TEXT_FILES - ${CMake_BINARY_DIR}/Docs/${target}.txt - ${CMake_BINARY_DIR}/Docs/${target}.docbook - ) + list(APPEND TEXT_FILES ${CMake_BINARY_DIR}/Docs/${target}.txt) list(APPEND HTML_FILES ${CMake_BINARY_DIR}/Docs/${target}.html) + list(APPEND DOCBOOK_FILES ${CMake_BINARY_DIR}/Docs/${target}.docbook) endif() endmacro() @@ -124,7 +124,11 @@ add_custom_command( ) install_files(${CMAKE_MAN_DIR}/man1 FILES ${MAN_FILES}) -install_files(${CMAKE_DOC_DIR} FILES ${HTML_FILES} ${TEXT_FILES}) +install_files(${CMAKE_DOC_DIR} FILES + ${TEXT_FILES} + ${HTML_FILES} + ${DOCBOOK_FILES} + ) install(FILES cmake.m4 DESTINATION share/aclocal) # Drive documentation generation. @@ -141,17 +145,22 @@ if(BUILD_TESTING) execute_process(COMMAND ${LIBXML2_XMLLINT_EXECUTABLE} --help OUTPUT_VARIABLE _help ERROR_VARIABLE _err) if("${_help}" MATCHES "--path" AND "${_help}" MATCHES "--nonet") - # We provide the XHTML DTD and its dependencies in the 'xml' - # directory so that xmllint can run without network access. - # However, it's --path option accepts a space-separated list of - # paths so it cannot handle spaces in the path to the source tree. - # Therefore we run the tool with the current work directory set to - # the 'xml' directory and use '.' as the path. + # We provide DTDs in the 'xml' directory so that xmllint can run without + # network access. Note that xmllints's --path option accepts a + # space-separated list of url-encoded paths. + set(_dtd_dir "${CMAKE_CURRENT_SOURCE_DIR}/xml") + string(REPLACE " " "%20" _dtd_dir "${_dtd_dir}") + string(REPLACE ":" "%3A" _dtd_dir "${_dtd_dir}") add_test(CMake.HTML - ${CMAKE_CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_SOURCE_DIR}/xml - ${LIBXML2_XMLLINT_EXECUTABLE} --valid --noout --nonet --path . + ${LIBXML2_XMLLINT_EXECUTABLE} --valid --noout --nonet + --path ${_dtd_dir}/xhtml1 ${HTML_FILES} ) + add_test(CMake.DocBook + ${LIBXML2_XMLLINT_EXECUTABLE} --valid --noout --nonet + --path ${_dtd_dir}/docbook-4.5 + ${DOCBOOK_FILES} + ) endif() endif() endif() diff --git a/Utilities/Release/dash2win64_release.cmake b/Utilities/Release/dash2win64_release.cmake index fb82de0..6d1ac76 100644 --- a/Utilities/Release/dash2win64_release.cmake +++ b/Utilities/Release/dash2win64_release.cmake @@ -8,6 +8,7 @@ set(CPACK_SOURCE_GENERATORS "ZIP") set(MAKE_PROGRAM "make") set(MAKE "${MAKE_PROGRAM} -j8") set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release +CMAKE_USE_OPENSSL:BOOL=ON CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CMAKE_Fortran_COMPILER:FILEPATH=FALSE CMAKE_GENERATOR:INTERNAL=Unix Makefiles diff --git a/Utilities/Release/dashmacmini2_release.cmake b/Utilities/Release/dashmacmini2_release.cmake index 3e6b049..5e57a70b 100644 --- a/Utilities/Release/dashmacmini2_release.cmake +++ b/Utilities/Release/dashmacmini2_release.cmake @@ -9,6 +9,10 @@ set(CPACK_BINARY_GENERATORS "PackageMaker TGZ TZ") set(INITIAL_CACHE " CMAKE_BUILD_TYPE:STRING=Release CMAKE_OSX_ARCHITECTURES:STRING=ppc;i386 +CMAKE_USE_OPENSSL:BOOL=ON +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/Users/kitware/openssl-1.0.1c-install/include +OPENSSL_SSL_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libssl.a CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CPACK_SYSTEM_NAME:STRING=Darwin-universal BUILD_QtDialog:BOOL=TRUE diff --git a/Utilities/Release/dashmacmini5_release.cmake b/Utilities/Release/dashmacmini5_release.cmake index bd93a87..36b0952 100644 --- a/Utilities/Release/dashmacmini5_release.cmake +++ b/Utilities/Release/dashmacmini5_release.cmake @@ -8,6 +8,10 @@ set(MAKE "${MAKE_PROGRAM} -j5") set(CPACK_BINARY_GENERATORS "PackageMaker TGZ TZ") set(CPACK_SOURCE_GENERATORS "TGZ TZ") set(INITIAL_CACHE " +CMAKE_USE_OPENSSL:BOOL=ON +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/Users/kitware/openssl-1.0.1c-install/include +OPENSSL_SSL_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libssl.a CMAKE_BUILD_TYPE:STRING=Release CMAKE_OSX_ARCHITECTURES:STRING=x86_64;i386 CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.5 diff --git a/Utilities/Release/magrathea_release.cmake b/Utilities/Release/magrathea_release.cmake index 1b2ae02..4783fda 100644 --- a/Utilities/Release/magrathea_release.cmake +++ b/Utilities/Release/magrathea_release.cmake @@ -3,11 +3,17 @@ set(HOST magrathea) set(MAKE_PROGRAM "make") set(CC gcc332s) set(CXX c++332s) +set(CFLAGS -DDT_RUNPATH=29) +set(CXXFLAGS -DDT_RUNPATH=29) set(INITIAL_CACHE " CMAKE_BUILD_TYPE:STRING=Release CURSES_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libncurses.a CURSES_INCLUDE_PATH:PATH=/usr/i686-gcc-332s/include/ncurses FORM_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libform.a +CMAKE_USE_OPENSSL:BOOL=ON +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1c-install/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.1c-install/include +OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1c-install/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-i386 BUILD_QtDialog:BOOL:=TRUE QT_QMAKE_EXECUTABLE:FILEPATH=/home/kitware/qt-4.43-install/bin/qmake diff --git a/Utilities/Release/v20n250_aix_release.cmake b/Utilities/Release/v20n250_aix_release.cmake index 53c34d7..cc8cd05 100644 --- a/Utilities/Release/v20n250_aix_release.cmake +++ b/Utilities/Release/v20n250_aix_release.cmake @@ -7,6 +7,7 @@ set(MAKE_PROGRAM "make") set(CC "xlc_r") set(CXX "xlC_r") set(FC "xlf") +set(LDFLAGS "-Wl,-bmaxdata:0x80000000") # Push "Segmentation fault in extend_brk" over horizon set(INITIAL_CACHE " CMAKE_BUILD_TYPE:STRING=Release CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE diff --git a/Utilities/cmcurl/CMakeLists.txt b/Utilities/cmcurl/CMakeLists.txt index caa44f1..ef000a1 100644 --- a/Utilities/cmcurl/CMakeLists.txt +++ b/Utilities/cmcurl/CMakeLists.txt @@ -169,27 +169,42 @@ IF(NOT CURL_SPECIAL_LIBZ) CHECK_LIBRARY_EXISTS_CONCAT("z" inflateEnd HAVE_LIBZ) ENDIF(NOT CURL_SPECIAL_LIBZ) -OPTION(CMAKE_USE_OPENSSL "Use OpenSSL code." OFF) +OPTION(CMAKE_USE_OPENSSL "Use OpenSSL code with curl." OFF) MARK_AS_ADVANCED(CMAKE_USE_OPENSSL) IF(CMAKE_USE_OPENSSL) SET(USE_SSLEAY TRUE) SET(USE_OPENSSL TRUE) - IF(WIN32) - FIND_PATH(SSLINCLUDE openssl/crypto.h - PATHS c:/hoffman/Tools/openssl_w32vc6-0.9.8g/inc32) - INCLUDE_DIRECTORIES(${SSLINCLUDE}) - FIND_LIBRARY(LIBEAY NAMES libeay32) - FIND_LIBRARY(SSLEAY NAMES ssleay32) - SET(CURL_LIBS ${CURL_LIBS} ${LIBEAY} ${SSLEAY} ) - ELSE(WIN32) - CHECK_LIBRARY_EXISTS_CONCAT("crypto" CRYPTO_lock HAVE_LIBCRYPTO) - CHECK_LIBRARY_EXISTS_CONCAT("ssl" SSL_connect HAVE_LIBSSL) - ENDIF(WIN32) + FIND_PACKAGE(OpenSSL REQUIRED) + INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) + SET(CURL_LIBS ${CURL_LIBS} ${OPENSSL_LIBRARIES}) SET(CURL_CA_BUNDLE "" CACHE FILEPATH "Path to SSL CA Certificate Bundle") MARK_AS_ADVANCED(CURL_CA_BUNDLE) IF(CURL_CA_BUNDLE) ADD_DEFINITIONS(-DCURL_CA_BUNDLE="${CURL_CA_BUNDLE}") ENDIF(CURL_CA_BUNDLE) + # for windows we want to install OPENSSL_LIBRARIES dlls + # and also copy them into the build tree so that testing + # can find them. + IF(WIN32) + FIND_FILE(CMAKE_EAY_DLL NAME libeay32.dll HINTS ${OPENSSL_INCLUDE_DIR}/..) + FIND_FILE(CMAKE_SSL_DLL NAME ssleay32.dll HINTS ${OPENSSL_INCLUDE_DIR}/..) + MARK_AS_ADVANCED(CMAKE_EAY_DLL CMAKE_SSL_DLL) + IF(CMAKE_SSL_DLL AND CMAKE_EAY_DLL) + SET(CMAKE_CURL_SSL_DLLS ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/libeay32.dll + ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/ssleay32.dll) + ADD_CUSTOM_COMMAND(OUTPUT + ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/libeay32.dll + DEPENDS ${CMAKE_EAY_DLL} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_EAY_DLL} + ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/libeay32.dll) + ADD_CUSTOM_COMMAND(OUTPUT + ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/ssleay32.dll + DEPENDS ${CMAKE_SSL_DLL} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SSL_DLL} + ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/ssleay32.dll) + INSTALL(PROGRAMS ${CMAKE_EAY_DLL} ${CMAKE_SSL_DLL} DESTINATION bin) + ENDIF() + ENDIF() ENDIF(CMAKE_USE_OPENSSL) # Check for idn @@ -698,8 +713,7 @@ ENDFOREACH() CONFIGURE_FILE(${LIBCURL_SOURCE_DIR}/config.h.in ${LIBCURL_BINARY_DIR}/config.h) - -ADD_LIBRARY(cmcurl ${LIBRARY_TYPE} ${libCurl_SRCS}) +ADD_LIBRARY(cmcurl ${LIBRARY_TYPE} ${libCurl_SRCS} ${CMAKE_CURL_SSL_DLLS}) TARGET_LINK_LIBRARIES(cmcurl ${CURL_LIBS}) IF(CMAKE_BUILD_CURL_SHARED) SET_TARGET_PROPERTIES(cmcurl PROPERTIES DEFINE_SYMBOL BUILDING_LIBCURL diff --git a/Utilities/cmcurl/config.h.in b/Utilities/cmcurl/config.h.in index 6e74935..e18af8f 100644 --- a/Utilities/cmcurl/config.h.in +++ b/Utilities/cmcurl/config.h.in @@ -255,9 +255,6 @@ /* Define to 1 if you have the <libssh2.h> header file. */ #cmakedefine HAVE_LIBSSH2_H ${HAVE_LIBSSH2_H} -/* Define to 1 if you have the `ssl' library (-lssl). */ -#cmakedefine HAVE_LIBSSL ${HAVE_LIBSSL} - /* if zlib is available */ #cmakedefine HAVE_LIBZ ${HAVE_LIBZ} diff --git a/Utilities/cmcurl/curl/curl.h b/Utilities/cmcurl/curl/curl.h index 157c634..e586c4a 100644 --- a/Utilities/cmcurl/curl/curl.h +++ b/Utilities/cmcurl/curl/curl.h @@ -312,7 +312,7 @@ typedef enum { CURLE_UNSUPPORTED_PROTOCOL, /* 1 */ CURLE_FAILED_INIT, /* 2 */ CURLE_URL_MALFORMAT, /* 3 */ - CURLE_URL_MALFORMAT_USER, /* 4 - NOT USED */ + CURLE_NOT_BUILT_IN, /* 4 */ CURLE_COULDNT_RESOLVE_PROXY, /* 5 */ CURLE_COULDNT_RESOLVE_HOST, /* 6 */ CURLE_COULDNT_CONNECT, /* 7 */ diff --git a/Utilities/cmcurl/ssluse.c b/Utilities/cmcurl/ssluse.c index 55afb24..14d05ac 100644 --- a/Utilities/cmcurl/ssluse.c +++ b/Utilities/cmcurl/ssluse.c @@ -1285,8 +1285,13 @@ Curl_ossl_connect_step1(struct connectdata *conn, req_method = TLSv1_client_method(); break; case CURL_SSLVERSION_SSLv2: +#ifdef OPENSSL_NO_SSL2 + failf(data, "OpenSSL was built without SSLv2 support"); + return CURLE_NOT_BUILT_IN; +#else req_method = SSLv2_client_method(); break; +#endif case CURL_SSLVERSION_SSLv3: req_method = SSLv3_client_method(); break; diff --git a/Utilities/cmcurl/strerror.c b/Utilities/cmcurl/strerror.c index 6304fe8..74c3457 100644 --- a/Utilities/cmcurl/strerror.c +++ b/Utilities/cmcurl/strerror.c @@ -69,6 +69,10 @@ curl_easy_strerror(CURLcode error) case CURLE_URL_MALFORMAT: return "URL using bad/illegal format or missing URL"; + case CURLE_NOT_BUILT_IN: + return "A requested feature, protocol or option was not found built-in in" + " this libcurl due to a build-time decision."; + case CURLE_COULDNT_RESOLVE_PROXY: return "couldn't resolve proxy name"; @@ -287,7 +291,6 @@ curl_easy_strerror(CURLcode error) return "Error in the SSH layer"; /* error codes not used by current libcurl */ - case CURLE_URL_MALFORMAT_USER: case CURLE_FTP_USER_PASSWORD_INCORRECT: case CURLE_MALFORMAT_USER: case CURLE_BAD_CALLING_ORDER: diff --git a/Utilities/xml/.gitattributes b/Utilities/xml/.gitattributes new file mode 100644 index 0000000..562b12e --- /dev/null +++ b/Utilities/xml/.gitattributes @@ -0,0 +1 @@ +* -whitespace diff --git a/Utilities/xml/docbook-4.5/ChangeLog b/Utilities/xml/docbook-4.5/ChangeLog new file mode 100644 index 0000000..06f59ce --- /dev/null +++ b/Utilities/xml/docbook-4.5/ChangeLog @@ -0,0 +1,106 @@ +2006-10-03 13:23 nwalsh + + * trunk/docbook/sgml/catalog.xml, trunk/docbook/sgml/docbook.cat, + trunk/docbook/sgml/docbook.dcl, trunk/docbook/sgml/docbook.dtd, + calstblx.dtd, catalog.xml, dbcentx.mod, dbgenent.mod, + dbhierx.mod, dbnotnx.mod, dbpoolx.mod, docbook.cat, + docbookx.dtd, htmltblx.mod: DocBook V4.5 released + +2006-06-02 11:28 nwalsh + + * calstblx.dtd, catalog.xml, dbcentx.mod, dbgenent.mod, + dbhierx.mod, dbnotnx.mod, dbpoolx.mod, docbook.cat, + docbookx.dtd, freshmeat.xsl, htmltblx.mod: Changed copyright + dates and version numbers + +2006-05-30 20:58 nwalsh + + * htmltblx.mod: Supply tag omission markers in SGML; suppress + xml:lang in SGML + +2006-03-07 13:11 nwalsh + + * trunk/docbook/sgml/catalog.xml, trunk/docbook/sgml/docbook.cat, + trunk/docbook/sgml/docbook.dcl, trunk/docbook/sgml/docbook.dtd, + calstblx.dtd, catalog.xml, dbcentx.mod, dbgenent.mod, + dbhierx.mod, dbnotnx.mod, dbpoolx.mod, docbook.cat, + docbookx.dtd, freshmeat.xsl, htmltblx.mod: Change version + numbers to 4.5CR2 + +2006-03-07 13:03 nwalsh + + * dbpoolx.mod: Allow citebiblioid anywhere the other citation + elements are allowed + +2006-02-16 21:12 nwalsh + + * calstblx.dtd, catalog.xml, dbcentx.mod, dbgenent.mod, + dbhierx.mod, dbnotnx.mod, dbpoolx.mod, docbook.cat, + docbookx.dtd, freshmeat.xsl, htmltblx.mod: DocBook V4.5 released + +2005-06-29 10:59 nwalsh + + * trunk/docbook/sgml/docbook.dtd, docbookx.dtd: DocBook V4.5CR1 + Released + +2005-06-29 10:58 nwalsh + + * trunk/docbook/sgml/catalog.xml, trunk/docbook/sgml/docbook.cat, + trunk/docbook/sgml/docbook.dcl, calstblx.dtd, catalog.xml, + dbcentx.mod, dbgenent.mod, dbhierx.mod, dbnotnx.mod, + dbpoolx.mod, docbook.cat, htmltblx.mod: Updated version number + +2005-06-29 10:53 nwalsh + + * freshmeat.xsl: Tweaked freshmeat changes + +2005-06-24 21:09 nwalsh + + * calstblx.dtd, dbhierx.mod, dbpoolx.mod, htmltblx.mod, + soextblx.dtd: Added doc: structured comments + +2005-05-05 11:41 nwalsh + + * trunk/docbook/sgml/docbook.dtd, docbookx.dtd: DocBook V4.5b1 + Released + +2005-05-05 11:40 nwalsh + + * trunk/docbook/sgml/catalog.xml, trunk/docbook/sgml/docbook.cat, + trunk/docbook/sgml/docbook.dcl, calstblx.dtd, catalog.xml, + dbcentx.mod, dbgenent.mod, dbhierx.mod, dbnotnx.mod, + dbpoolx.mod, docbook.cat, htmltblx.mod: Updated version number + +2005-05-05 11:37 nwalsh + + * freshmeat.xsl: Prepare for 4.5b1 + +2005-05-05 10:59 nwalsh + + * dbpoolx.mod: RFE 1055480: Make revnumber optional + +2005-05-05 10:54 nwalsh + + * dbpoolx.mod, htmltblx.mod: Allow common attributes on HTML table + elements + +2005-05-05 10:48 nwalsh + + * dbpoolx.mod: Added termdef + +2005-05-05 10:39 nwalsh + + * dbpoolx.mod: Added mathphrase + +2005-05-05 10:33 nwalsh + + * dbhierx.mod: RFE 1070458: Allow colophon in article + +2005-05-05 10:32 nwalsh + + * dbpoolx.mod: RFE 1070770: Allow procedure in example + +2005-05-05 10:21 nwalsh + + * dbpoolx.mod: Add isrn to list of biblioid class attribute values + diff --git a/Utilities/xml/docbook-4.5/README b/Utilities/xml/docbook-4.5/README new file mode 100644 index 0000000..6fc60c4 --- /dev/null +++ b/Utilities/xml/docbook-4.5/README @@ -0,0 +1,8 @@ +README for the DocBook XML DTD + +For more information about DocBook, please see + + http://www.oasis-open.org/docbook/ + +Please send all questions, comments, concerns, and bug reports to the +DocBook mailing list: docbook@lists.oasis-open.org diff --git a/Utilities/xml/docbook-4.5/calstblx.dtd b/Utilities/xml/docbook-4.5/calstblx.dtd new file mode 100644 index 0000000..fac58d7 --- /dev/null +++ b/Utilities/xml/docbook-4.5/calstblx.dtd @@ -0,0 +1,215 @@ +<!-- ...................................................................... --> +<!-- DocBook CALS Table Model V4.5 ........................................ --> +<!-- File calstblx.mod .................................................... --> + +<!-- Copyright 1992-2002 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + This DTD is based on the CALS Table Model + PUBLIC "-//USA-DOD//DTD Table Model 951010//EN" + + $Id: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This module contains the definitions for the CALS Table Model + converted to XML. It has been modified slightly for use in the + combined HTML/CALS models supported by DocBook V4.5. +--> + +<!-- These definitions are not directly related to the table model, but are + used in the default CALS table model and are usually defined elsewhere + (and prior to the inclusion of this table module) in a CALS DTD. --> + +<!ENTITY % bodyatt ""> +<!ENTITY % secur ""> + +<!-- no if zero(s), + yes if any other digits value --> + +<!ENTITY % yesorno 'CDATA'> +<!ENTITY % titles 'title?'> + +<!-- default for use in entry content --> + +<!ENTITY % paracon '#PCDATA'> + +<!-- +The parameter entities as defined below provide the CALS table model +as published (as part of the Example DTD) in MIL-HDBK-28001. + +These following declarations provide the CALS-compliant default definitions +for these entities. However, these entities can and should be redefined +(by giving the appropriate parameter entity declaration(s) prior to the +reference to this Table Model declaration set entity) to fit the needs +of the current application. +--> + +<!ENTITY % tbl.table.name "(table|chart)"> +<!ENTITY % tbl.table-titles.mdl "%titles;,"> +<!ENTITY % tbl.table-main.mdl "(tgroup+|graphic+)"> +<!ENTITY % tbl.table.mdl "%tbl.table-titles.mdl; %tbl.table-main.mdl;"> +<!ENTITY % tbl.table.att ' + tabstyle CDATA #IMPLIED + tocentry %yesorno; #IMPLIED + shortentry %yesorno; #IMPLIED + orient (port|land) #IMPLIED + pgwide %yesorno; #IMPLIED '> +<!ENTITY % tbl.tgroup.mdl "colspec*,spanspec*,thead?,tfoot?,tbody"> +<!ENTITY % tbl.tgroup.att ' + tgroupstyle CDATA #IMPLIED '> +<!ENTITY % tbl.hdft.mdl "colspec*,row+"> +<!ENTITY % tbl.row.mdl "(entry|entrytbl)+"> +<!ENTITY % tbl.entrytbl.mdl "colspec*,spanspec*,thead?,tbody"> +<!ENTITY % tbl.entry.mdl "(para|warning|caution|note|legend|%paracon;)*"> + +<!ENTITY % tbl.frame.attval "top|bottom|topbot|all|sides|none"> +<!ENTITY % tbl.tbody.mdl "row+"> + +<!-- ===== Element and attribute declarations follow. ===== --> + +<!--doc:A formal table in a document.--> +<!ELEMENT table %ho; (%tbl.table.mdl;)> + +<!ATTLIST table + frame (%tbl.frame.attval;) #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + %tbl.table.att; + %bodyatt; + %secur; +> + +<!--doc:A wrapper for the main content of a table, or part of a table.--> +<!ELEMENT tgroup %ho; (%tbl.tgroup.mdl;) > + +<!ATTLIST tgroup + cols CDATA #REQUIRED + %tbl.tgroup.att; + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff CDATA #IMPLIED + %secur; +> + +<!--doc:Specifications for a column in a table.--> +<!ELEMENT colspec %ho; EMPTY > + +<!ATTLIST colspec + colnum CDATA #IMPLIED + colname CDATA #IMPLIED + colwidth CDATA #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff CDATA #IMPLIED +> + +<!--doc:Formatting information for a spanned column in a table.--> +<!ELEMENT spanspec %ho; EMPTY > + +<!ATTLIST spanspec + namest CDATA #REQUIRED + nameend CDATA #REQUIRED + spanname CDATA #REQUIRED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff CDATA #IMPLIED +> + +<!--doc:A table header consisting of one or more rows.--> +<!ELEMENT thead %ho; (%tbl.hdft.mdl;)> +<!ATTLIST thead + valign (top|middle|bottom) #IMPLIED + %secur; +> + +<!--doc:A table footer consisting of one or more rows.--> +<!ELEMENT tfoot %ho; (%tbl.hdft.mdl;)> +<!ATTLIST tfoot + valign (top|middle|bottom) #IMPLIED + %secur; +> + +<!--doc:A wrapper for the rows of a table or informal table.--> +<!ELEMENT tbody %ho; (%tbl.tbody.mdl;)> + +<!ATTLIST tbody + valign (top|middle|bottom) #IMPLIED + %secur; +> + +<!--doc:A row in a table.--> +<!ELEMENT row %ho; (%tbl.row.mdl;)> + +<!ATTLIST row + rowsep %yesorno; #IMPLIED + valign (top|middle|bottom) #IMPLIED + %secur; +> + +<!--doc:A subtable appearing in place of an Entry in a table.--> +<!ELEMENT entrytbl %ho; (%tbl.entrytbl.mdl;)> + +<!ATTLIST entrytbl + cols CDATA #REQUIRED + %tbl.tgroup.att; + colname CDATA #IMPLIED + spanname CDATA #IMPLIED + namest CDATA #IMPLIED + nameend CDATA #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff CDATA #IMPLIED + %secur; +> + +<!--doc:A cell in a table.--> +<!ELEMENT entry %ho; (%tbl.entry.mdl;)*> + +<!ATTLIST entry + colname CDATA #IMPLIED + namest CDATA #IMPLIED + nameend CDATA #IMPLIED + spanname CDATA #IMPLIED + morerows CDATA #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff CDATA #IMPLIED + rotate %yesorno; #IMPLIED + valign (top|middle|bottom) #IMPLIED + %secur; +> + +<!-- End of DocBook CALS Table Model V4.5 ................................. --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/catalog.xml b/Utilities/xml/docbook-4.5/catalog.xml new file mode 100644 index 0000000..f75c1d7 --- /dev/null +++ b/Utilities/xml/docbook-4.5/catalog.xml @@ -0,0 +1,124 @@ +<?xml version='1.0'?> +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public"> + +<!-- ...................................................................... --> +<!-- XML Catalog data for DocBook XML V4.5 ................................ --> +<!-- File catalog.xml ..................................................... --> + +<!-- Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/. + --> + +<!-- This is the catalog data file for DocBook V4.5. It is provided as + a convenience in building your own catalog files. You need not use + the filenames listed here, and need not use the filename method of + identifying storage objects at all. See the documentation for + detailed information on the files associated with the DocBook DTD. + See XML Catalogs at http://www.oasis-open.org/committees/entity/ for + detailed information on supplying and using catalog data. + --> + +<!-- ...................................................................... --> +<!-- DocBook driver file .................................................. --> + +<public publicId="-//OASIS//DTD DocBook XML V4.5//EN" + uri="docbookx.dtd"/> + +<system systemId="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" + uri="docbookx.dtd"/> + +<system systemId="http://docbook.org/xml/4.5/docbookx.dtd" + uri="docbookx.dtd"/> + +<!-- ...................................................................... --> +<!-- DocBook modules ...................................................... --> + +<public publicId="-//OASIS//DTD DocBook CALS Table Model V4.5//EN" + uri="calstblx.dtd"/> + +<public publicId="-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" + uri="htmltblx.mod"/> + +<public publicId="-//OASIS//DTD XML Exchange Table Model 19990315//EN" + uri="soextblx.dtd"/> + +<public publicId="-//OASIS//ELEMENTS DocBook Information Pool V4.5//EN" + uri="dbpoolx.mod"/> + +<public publicId="-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN" + uri="dbhierx.mod"/> + +<public publicId="-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN" + uri="dbgenent.mod"/> + +<public publicId="-//OASIS//ENTITIES DocBook Notations V4.5//EN" + uri="dbnotnx.mod"/> + +<public publicId="-//OASIS//ENTITIES DocBook Character Entities V4.5//EN" + uri="dbcentx.mod"/> + +<!-- ...................................................................... --> +<!-- ISO entity sets ...................................................... --> + +<public publicId="ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML" + uri="ent/isodia.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML" + uri="ent/isonum.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Publishing//EN//XML" + uri="ent/isopub.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES General Technical//EN//XML" + uri="ent/isotech.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Latin 1//EN//XML" + uri="ent/isolat1.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Latin 2//EN//XML" + uri="ent/isolat2.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Greek Letters//EN//XML" + uri="ent/isogrk1.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML" + uri="ent/isogrk2.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Greek Symbols//EN//XML" + uri="ent/isogrk3.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML" + uri="ent/isogrk4.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML" + uri="ent/isoamsa.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML" + uri="ent/isoamsb.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML" + uri="ent/isoamsc.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML" + uri="ent/isoamsn.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML" + uri="ent/isoamso.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML" + uri="ent/isoamsr.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML" + uri="ent/isobox.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML" + uri="ent/isocyr1.ent"/> + +<public publicId="ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML" + uri="ent/isocyr2.ent"/> + +<!-- End of catalog data for DocBook XML V4.5 ............................. --> +<!-- ...................................................................... --> + +</catalog> diff --git a/Utilities/xml/docbook-4.5/dbcentx.mod b/Utilities/xml/docbook-4.5/dbcentx.mod new file mode 100644 index 0000000..60de99f --- /dev/null +++ b/Utilities/xml/docbook-4.5/dbcentx.mod @@ -0,0 +1,384 @@ +<!-- ...................................................................... --> +<!-- DocBook character entities module V4.5 ............................... --> +<!-- File dbcentx.mod ..................................................... --> + +<!-- Copyright 1992-2004 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + $Id: dbcentx.mod 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This module contains the entity declarations for the standard ISO + entity sets used by DocBook. + + In DTD driver files referring to this module, please use an entity + declaration that uses the public identifier shown below: + + <!ENTITY % dbcent PUBLIC + "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN" + "dbcentx.mod"> + %dbcent; + + See the documentation for detailed information on the parameter + entity and module scheme used in DocBook, customizing DocBook and + planning for interchange, and changes made since the last release + of DocBook. +--> + +<!-- ...................................................................... --> + +<![%sgml.features;[ + +<!ENTITY % ISOamsa.module "INCLUDE"> +<![ %ISOamsa.module; [ +<!ENTITY % ISOamsa PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"> +<!--end of ISOamsa.module-->]]> + +<!ENTITY % ISOamsb.module "INCLUDE"> +<![ %ISOamsb.module; [ +<!ENTITY % ISOamsb PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"> +<!--end of ISOamsb.module-->]]> + +<!ENTITY % ISOamsc.module "INCLUDE"> +<![ %ISOamsc.module; [ +<!ENTITY % ISOamsc PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"> +<!--end of ISOamsc.module-->]]> + +<!ENTITY % ISOamsn.module "INCLUDE"> +<![ %ISOamsn.module; [ +<!ENTITY % ISOamsn PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"> +<!--end of ISOamsn.module-->]]> + +<!ENTITY % ISOamso.module "INCLUDE"> +<![ %ISOamso.module; [ +<!ENTITY % ISOamso PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"> +<!--end of ISOamso.module-->]]> + +<!ENTITY % ISOamsr.module "INCLUDE"> +<![ %ISOamsr.module; [ +<!ENTITY % ISOamsr PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"> +<!--end of ISOamsr.module-->]]> + +<!ENTITY % ISObox.module "INCLUDE"> +<![ %ISObox.module; [ +<!ENTITY % ISObox PUBLIC +"ISO 8879:1986//ENTITIES Box and Line Drawing//EN"> +<!--end of ISObox.module-->]]> + +<!ENTITY % ISOcyr1.module "INCLUDE"> +<![ %ISOcyr1.module; [ +<!ENTITY % ISOcyr1 PUBLIC +"ISO 8879:1986//ENTITIES Russian Cyrillic//EN"> +<!--end of ISOcyr1.module-->]]> + +<!ENTITY % ISOcyr2.module "INCLUDE"> +<![ %ISOcyr2.module; [ +<!ENTITY % ISOcyr2 PUBLIC +"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"> +<!--end of ISOcyr2.module-->]]> + +<!ENTITY % ISOdia.module "INCLUDE"> +<![ %ISOdia.module; [ +<!ENTITY % ISOdia PUBLIC +"ISO 8879:1986//ENTITIES Diacritical Marks//EN"> +<!--end of ISOdia.module-->]]> + +<!ENTITY % ISOgrk1.module "INCLUDE"> +<![ %ISOgrk1.module; [ +<!ENTITY % ISOgrk1 PUBLIC +"ISO 8879:1986//ENTITIES Greek Letters//EN"> +<!--end of ISOgrk1.module-->]]> + +<!ENTITY % ISOgrk2.module "INCLUDE"> +<![ %ISOgrk2.module; [ +<!ENTITY % ISOgrk2 PUBLIC +"ISO 8879:1986//ENTITIES Monotoniko Greek//EN"> +<!--end of ISOgrk2.module-->]]> + +<!ENTITY % ISOgrk3.module "INCLUDE"> +<![ %ISOgrk3.module; [ +<!ENTITY % ISOgrk3 PUBLIC +"ISO 8879:1986//ENTITIES Greek Symbols//EN"> +<!--end of ISOgrk3.module-->]]> + +<!ENTITY % ISOgrk4.module "INCLUDE"> +<![ %ISOgrk4.module; [ +<!ENTITY % ISOgrk4 PUBLIC +"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"> +<!--end of ISOgrk4.module-->]]> + +<!ENTITY % ISOlat1.module "INCLUDE"> +<![ %ISOlat1.module; [ +<!ENTITY % ISOlat1 PUBLIC +"ISO 8879:1986//ENTITIES Added Latin 1//EN"> +<!--end of ISOlat1.module-->]]> + +<!ENTITY % ISOlat2.module "INCLUDE"> +<![ %ISOlat2.module; [ +<!ENTITY % ISOlat2 PUBLIC +"ISO 8879:1986//ENTITIES Added Latin 2//EN"> +<!--end of ISOlat2.module-->]]> + +<!ENTITY % ISOnum.module "INCLUDE"> +<![ %ISOnum.module; [ +<!ENTITY % ISOnum PUBLIC +"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"> +<!--end of ISOnum.module-->]]> + +<!ENTITY % ISOpub.module "INCLUDE"> +<![ %ISOpub.module; [ +<!ENTITY % ISOpub PUBLIC +"ISO 8879:1986//ENTITIES Publishing//EN"> +<!--end of ISOpub.module-->]]> + +<!ENTITY % ISOtech.module "INCLUDE"> +<![ %ISOtech.module; [ +<!ENTITY % ISOtech PUBLIC +"ISO 8879:1986//ENTITIES General Technical//EN"> +<!--end of ISOtech.module-->]]> + +<!--end of sgml.features-->]]> + +<![%xml.features;[ + +<!ENTITY % ISOamsa.module "INCLUDE"> +<![%ISOamsa.module;[ +<!ENTITY % ISOamsa PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML" +"ent/isoamsa.ent"> +<!--end of ISOamsa.module-->]]> + +<!ENTITY % ISOamsb.module "INCLUDE"> +<![%ISOamsb.module;[ +<!ENTITY % ISOamsb PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML" +"ent/isoamsb.ent"> +<!--end of ISOamsb.module-->]]> + +<!ENTITY % ISOamsc.module "INCLUDE"> +<![%ISOamsc.module;[ +<!ENTITY % ISOamsc PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML" +"ent/isoamsc.ent"> +<!--end of ISOamsc.module-->]]> + +<!ENTITY % ISOamsn.module "INCLUDE"> +<![%ISOamsn.module;[ +<!ENTITY % ISOamsn PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML" +"ent/isoamsn.ent"> +<!--end of ISOamsn.module-->]]> + +<!ENTITY % ISOamso.module "INCLUDE"> +<![%ISOamso.module;[ +<!ENTITY % ISOamso PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML" +"ent/isoamso.ent"> +<!--end of ISOamso.module-->]]> + +<!ENTITY % ISOamsr.module "INCLUDE"> +<![%ISOamsr.module;[ +<!ENTITY % ISOamsr PUBLIC +"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML" +"ent/isoamsr.ent"> +<!--end of ISOamsr.module-->]]> + +<!ENTITY % ISObox.module "INCLUDE"> +<![%ISObox.module;[ +<!ENTITY % ISObox PUBLIC +"ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML" +"ent/isobox.ent"> +<!--end of ISObox.module-->]]> + +<!ENTITY % ISOcyr1.module "INCLUDE"> +<![%ISOcyr1.module;[ +<!ENTITY % ISOcyr1 PUBLIC +"ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML" +"ent/isocyr1.ent"> +<!--end of ISOcyr1.module-->]]> + +<!ENTITY % ISOcyr2.module "INCLUDE"> +<![%ISOcyr2.module;[ +<!ENTITY % ISOcyr2 PUBLIC +"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML" +"ent/isocyr2.ent"> +<!--end of ISOcyr2.module-->]]> + +<!ENTITY % ISOdia.module "INCLUDE"> +<![%ISOdia.module;[ +<!ENTITY % ISOdia PUBLIC +"ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML" +"ent/isodia.ent"> +<!--end of ISOdia.module-->]]> + +<!ENTITY % ISOgrk1.module "INCLUDE"> +<![%ISOgrk1.module;[ +<!ENTITY % ISOgrk1 PUBLIC +"ISO 8879:1986//ENTITIES Greek Letters//EN//XML" +"ent/isogrk1.ent"> +<!--end of ISOgrk1.module-->]]> + +<!ENTITY % ISOgrk2.module "INCLUDE"> +<![%ISOgrk2.module;[ +<!ENTITY % ISOgrk2 PUBLIC +"ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML" +"ent/isogrk2.ent"> +<!--end of ISOgrk2.module-->]]> + +<!ENTITY % ISOgrk3.module "INCLUDE"> +<![%ISOgrk3.module;[ +<!ENTITY % ISOgrk3 PUBLIC +"ISO 8879:1986//ENTITIES Greek Symbols//EN//XML" +"ent/isogrk3.ent"> +<!--end of ISOgrk3.module-->]]> + +<!ENTITY % ISOgrk4.module "INCLUDE"> +<![%ISOgrk4.module;[ +<!ENTITY % ISOgrk4 PUBLIC +"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML" +"ent/isogrk4.ent"> +<!--end of ISOgrk4.module-->]]> + +<!ENTITY % ISOlat1.module "INCLUDE"> +<![%ISOlat1.module;[ +<!ENTITY % ISOlat1 PUBLIC +"ISO 8879:1986//ENTITIES Added Latin 1//EN//XML" +"ent/isolat1.ent"> +<!--end of ISOlat1.module-->]]> + +<!ENTITY % ISOlat2.module "INCLUDE"> +<![%ISOlat2.module;[ +<!ENTITY % ISOlat2 PUBLIC +"ISO 8879:1986//ENTITIES Added Latin 2//EN//XML" +"ent/isolat2.ent"> +<!--end of ISOlat2.module-->]]> + +<!ENTITY % ISOnum.module "INCLUDE"> +<![%ISOnum.module;[ +<!ENTITY % ISOnum PUBLIC +"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML" +"ent/isonum.ent"> +<!--end of ISOnum.module-->]]> + +<!ENTITY % ISOpub.module "INCLUDE"> +<![%ISOpub.module;[ +<!ENTITY % ISOpub PUBLIC +"ISO 8879:1986//ENTITIES Publishing//EN//XML" +"ent/isopub.ent"> +<!--end of ISOpub.module-->]]> + +<!ENTITY % ISOtech.module "INCLUDE"> +<![%ISOtech.module;[ +<!ENTITY % ISOtech PUBLIC +"ISO 8879:1986//ENTITIES General Technical//EN//XML" +"ent/isotech.ent"> +<!--end of ISOtech.module-->]]> + +<!--end of xml.features-->]]> + +<![ %ISOamsa.module; [ +%ISOamsa; +]]> + +<![ %ISOamsb.module; [ +%ISOamsb; +]]> + +<![ %ISOamsc.module; [ +%ISOamsc; +]]> + +<![ %ISOamsn.module; [ +%ISOamsn; +]]> + +<![ %ISOamso.module; [ +%ISOamso; +]]> + +<![ %ISOamsr.module; [ +%ISOamsr; +]]> + +<![ %ISObox.module; [ +%ISObox; +]]> + +<![ %ISOcyr1.module; [ +%ISOcyr1; +]]> + +<![ %ISOcyr2.module; [ +%ISOcyr2; +]]> + +<![ %ISOdia.module; [ +%ISOdia; +]]> + +<![ %ISOgrk1.module; [ +%ISOgrk1; +]]> + +<![ %ISOgrk2.module; [ +%ISOgrk2; +]]> + +<![ %ISOgrk3.module; [ +%ISOgrk3; +]]> + +<![ %ISOgrk4.module; [ +%ISOgrk4; +]]> + +<![ %ISOlat1.module; [ +%ISOlat1; +]]> + +<![ %ISOlat2.module; [ +%ISOlat2; +]]> + +<![ %ISOnum.module; [ +%ISOnum; +]]> + +<![ %ISOpub.module; [ +%ISOpub; +]]> + +<![ %ISOtech.module; [ +%ISOtech; +]]> + +<!-- End of DocBook character entity sets module V4.5 ..................... --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/dbgenent.mod b/Utilities/xml/docbook-4.5/dbgenent.mod new file mode 100644 index 0000000..ff5ba90 --- /dev/null +++ b/Utilities/xml/docbook-4.5/dbgenent.mod @@ -0,0 +1,41 @@ +<!-- ...................................................................... --> +<!-- DocBook additional general entities V4.5 ............................. --> + +<!-- Copyright 1992-2004 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + In DTD driver files referring to this module, please use an entity + declaration that uses the public identifier shown below: + + <!ENTITY % dbgenent PUBLIC + "-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN" + "dbgenent.mod"> + %dbgenent; +--> + +<!-- File dbgenent.mod .................................................... --> + +<!-- You can edit this file to add the following: + + o General entity declarations of any kind. For example: + + <!ENTITY productname "WinWidget"> (small boilerplate) + <!ENTITY legal-notice SYSTEM "notice.sgm"> (large boilerplate) + + o Notation declarations. For example: + + <!NOTATION chicken-scratch SYSTEM> + + o Declarations for and references to external parameter entities + containing collections of any of the above. For example: + + <!ENTITY % all-titles PUBLIC "-//DocTools//ELEMENTS Book Titles//EN" + "booktitles.ent"> + %all-titles; +--> + +<!-- End of DocBook additional general entities V4.5 ...................... --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/dbhierx.mod b/Utilities/xml/docbook-4.5/dbhierx.mod new file mode 100644 index 0000000..5f839f5 --- /dev/null +++ b/Utilities/xml/docbook-4.5/dbhierx.mod @@ -0,0 +1,2193 @@ +<!-- ...................................................................... --> +<!-- DocBook document hierarchy module V4.5 ............................... --> +<!-- File dbhierx.mod ..................................................... --> + +<!-- Copyright 1992-2004 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This module contains the definitions for the overall document + hierarchies of DocBook documents. It covers computer documentation + manuals and manual fragments, as well as reference entries (such as + man pages) and technical journals or anthologies containing + articles. + + This module depends on the DocBook information pool module. All + elements and entities referenced but not defined here are assumed + to be defined in the information pool module. + + In DTD driver files referring to this module, please use an entity + declaration that uses the public identifier shown below: + + <!ENTITY % dbhier PUBLIC + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN" + "dbhierx.mod"> + %dbhier; + + See the documentation for detailed information on the parameter + entity and module scheme used in DocBook, customizing DocBook and + planning for interchange, and changes made since the last release + of DocBook. +--> + +<!-- ...................................................................... --> +<!-- Entities for module inclusions ....................................... --> + +<!ENTITY % dbhier.redecl.module "IGNORE"> +<!ENTITY % dbhier.redecl2.module "IGNORE"> + +<!-- ...................................................................... --> +<!-- Entities for element classes ......................................... --> + +<!ENTITY % local.appendix.class ""> +<!ENTITY % appendix.class "appendix %local.appendix.class;"> + +<!ENTITY % local.article.class ""> +<!ENTITY % article.class "article %local.article.class;"> + +<!ENTITY % local.book.class ""> +<!ENTITY % book.class "book %local.book.class;"> + +<!ENTITY % local.chapter.class ""> +<!ENTITY % chapter.class "chapter %local.chapter.class;"> + +<!ENTITY % local.index.class ""> +<!ENTITY % index.class "index|setindex %local.index.class;"> + +<!ENTITY % local.refentry.class ""> +<!ENTITY % refentry.class "refentry %local.refentry.class;"> + +<!ENTITY % local.section.class ""> +<!ENTITY % section.class "section %local.section.class;"> + +<!ENTITY % local.nav.class ""> +<!ENTITY % nav.class "toc|lot|index|glossary|bibliography + %local.nav.class;"> + +<!-- Redeclaration placeholder ............................................ --> + +<!-- For redeclaring entities that are declared after this point while + retaining their references to the entities that are declared before + this point --> + +<![%dbhier.redecl.module;[ +<!-- Defining rdbhier here makes some buggy XML parsers happy. --> +<!ENTITY % rdbhier ""> +%rdbhier; +<!--end of dbhier.redecl.module-->]]> + +<!-- ...................................................................... --> +<!-- Entities for element mixtures ........................................ --> + +<!ENTITY % local.divcomponent.mix ""> +<!ENTITY % divcomponent.mix + "%list.class; |%admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |%compound.class; + |%genobj.class; |%descobj.class; + |%ndxterm.class; |beginpage + %forms.hook; + %local.divcomponent.mix;"> + +<!ENTITY % local.refcomponent.mix ""> +<!ENTITY % refcomponent.mix + "%list.class; |%admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |%compound.class; + |%genobj.class; |%descobj.class; + |%ndxterm.class; |beginpage + %forms.hook; + %local.refcomponent.mix;"> + +<!ENTITY % local.indexdivcomponent.mix ""> +<!ENTITY % indexdivcomponent.mix + "itemizedlist|orderedlist|variablelist|simplelist + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |anchor|remark + |%link.char.class; + |beginpage + %local.indexdivcomponent.mix;"> + +<!ENTITY % local.refname.char.mix ""> +<!ENTITY % refname.char.mix + "#PCDATA + |%tech.char.class; + %local.refname.char.mix;"> + +<!ENTITY % local.partcontent.mix ""> +<!ENTITY % partcontent.mix + "%appendix.class;|%chapter.class;|%nav.class;|%article.class; + |preface|%refentry.class;|reference %local.partcontent.mix;"> + +<!ENTITY % local.refinline.char.mix ""> +<!ENTITY % refinline.char.mix + "#PCDATA + |%xref.char.class; |%gen.char.class; + |%link.char.class; |%tech.char.class; + |%base.char.class; |%docinfo.char.class; + |%other.char.class; + |%ndxterm.class; |beginpage + %local.refinline.char.mix;"> + +<!ENTITY % local.refclass.char.mix ""> +<!ENTITY % refclass.char.mix + "#PCDATA + |application + %local.refclass.char.mix;"> + +<!-- Redeclaration placeholder 2 .......................................... --> + +<!-- For redeclaring entities that are declared after this point while + retaining their references to the entities that are declared before + this point --> + +<![%dbhier.redecl2.module;[ +<!-- Defining rdbhier2 here makes some buggy XML parsers happy. --> +<!ENTITY % rdbhier2 ""> +%rdbhier2; +<!--end of dbhier.redecl2.module-->]]> + +<!-- ...................................................................... --> +<!-- Entities for content models .......................................... --> + +<!ENTITY % div.title.content + "title, subtitle?, titleabbrev?"> + +<!ENTITY % bookcomponent.title.content + "title, subtitle?, titleabbrev?"> + +<!ENTITY % sect.title.content + "title, subtitle?, titleabbrev?"> + +<!ENTITY % refsect.title.content + "title, subtitle?, titleabbrev?"> + +<!ENTITY % bookcomponent.content + "((%divcomponent.mix;)+, + (sect1*|(%refentry.class;)*|simplesect*|(%section.class;)*)) + | (sect1+|(%refentry.class;)+|simplesect+|(%section.class;)+)"> + +<!-- ...................................................................... --> +<!-- Set and SetInfo ...................................................... --> + +<!ENTITY % set.content.module "INCLUDE"> +<![%set.content.module;[ +<!ENTITY % set.module "INCLUDE"> +<![%set.module;[ +<!ENTITY % local.set.attrib ""> +<!ENTITY % set.role.attrib "%role.attrib;"> + +<!ENTITY % set.element "INCLUDE"> +<![%set.element;[ +<!--doc:A collection of books.--> +<!ELEMENT set %ho; ((%div.title.content;)?, setinfo?, toc?, (set|%book.class;)+, + setindex?) + %ubiq.inclusion;> +<!--end of set.element-->]]> + +<!-- FPI: SGML formal public identifier --> + + +<!ENTITY % set.attlist "INCLUDE"> +<![%set.attlist;[ +<!ATTLIST set + fpi CDATA #IMPLIED + %status.attrib; + %common.attrib; + %set.role.attrib; + %local.set.attrib; +> +<!--end of set.attlist-->]]> +<!--end of set.module-->]]> + +<!ENTITY % setinfo.module "INCLUDE"> +<![%setinfo.module;[ +<!ENTITY % local.setinfo.attrib ""> +<!ENTITY % setinfo.role.attrib "%role.attrib;"> + +<!ENTITY % setinfo.element "INCLUDE"> +<![%setinfo.element;[ +<!--doc:Meta-information for a Set.--> +<!ELEMENT setinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of setinfo.element-->]]> + +<!-- Contents: IDs of the ToC, Books, and SetIndex that comprise + the set, in the order of their appearance --> + + +<!ENTITY % setinfo.attlist "INCLUDE"> +<![%setinfo.attlist;[ +<!ATTLIST setinfo + contents IDREFS #IMPLIED + %common.attrib; + %setinfo.role.attrib; + %local.setinfo.attrib; +> +<!--end of setinfo.attlist-->]]> +<!--end of setinfo.module-->]]> +<!--end of set.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Book and BookInfo .................................................... --> + +<!ENTITY % book.content.module "INCLUDE"> +<![%book.content.module;[ +<!ENTITY % book.module "INCLUDE"> +<![%book.module;[ + +<!ENTITY % local.book.attrib ""> +<!ENTITY % book.role.attrib "%role.attrib;"> + +<!ENTITY % book.element "INCLUDE"> +<![%book.element;[ +<!--doc:A book.--> +<!ELEMENT book %ho; ((%div.title.content;)?, bookinfo?, + (dedication | toc | lot + | glossary | bibliography | preface + | %chapter.class; | reference | part + | %article.class; + | %appendix.class; + | %index.class; + | colophon)*) + %ubiq.inclusion;> +<!--end of book.element-->]]> + +<!-- FPI: SGML formal public identifier --> + + +<!ENTITY % book.attlist "INCLUDE"> +<![%book.attlist;[ +<!ATTLIST book fpi CDATA #IMPLIED + %label.attrib; + %status.attrib; + %common.attrib; + %book.role.attrib; + %local.book.attrib; +> +<!--end of book.attlist-->]]> +<!--end of book.module-->]]> + +<!ENTITY % bookinfo.module "INCLUDE"> +<![%bookinfo.module;[ +<!ENTITY % local.bookinfo.attrib ""> +<!ENTITY % bookinfo.role.attrib "%role.attrib;"> + +<!ENTITY % bookinfo.element "INCLUDE"> +<![%bookinfo.element;[ +<!--doc:Meta-information for a Book.--> +<!ELEMENT bookinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of bookinfo.element-->]]> + +<!-- Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters, + Appendixes, References, GLossary, Bibliography, and indexes + comprising the Book, in the order of their appearance --> + + +<!ENTITY % bookinfo.attlist "INCLUDE"> +<![%bookinfo.attlist;[ +<!ATTLIST bookinfo + contents IDREFS #IMPLIED + %common.attrib; + %bookinfo.role.attrib; + %local.bookinfo.attrib; +> +<!--end of bookinfo.attlist-->]]> +<!--end of bookinfo.module-->]]> +<!--end of book.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Dedication, ToC, and LoT ............................................. --> + +<!ENTITY % dedication.module "INCLUDE"> +<![%dedication.module;[ +<!ENTITY % local.dedication.attrib ""> +<!ENTITY % dedication.role.attrib "%role.attrib;"> + +<!ENTITY % dedication.element "INCLUDE"> +<![%dedication.element;[ +<!--doc:A wrapper for the dedication section of a book.--> +<!ELEMENT dedication %ho; ((%sect.title.content;)?, (%legalnotice.mix;)+)> +<!--end of dedication.element-->]]> + +<!ENTITY % dedication.attlist "INCLUDE"> +<![%dedication.attlist;[ +<!ATTLIST dedication + %status.attrib; + %common.attrib; + %dedication.role.attrib; + %local.dedication.attrib; +> +<!--end of dedication.attlist-->]]> +<!--end of dedication.module-->]]> + +<!ENTITY % colophon.module "INCLUDE"> +<![ %colophon.module; [ +<!ENTITY % local.colophon.attrib ""> +<!ENTITY % colophon.role.attrib "%role.attrib;"> + +<!ENTITY % colophon.element "INCLUDE"> +<![ %colophon.element; [ +<!--doc:Text at the back of a book describing facts about its production.--> +<!ELEMENT colophon %ho; ((%sect.title.content;)?, (%textobject.mix;)+)> +<!--end of colophon.element-->]]> + +<!ENTITY % colophon.attlist "INCLUDE"> +<![ %colophon.attlist; [ +<!ATTLIST colophon + %status.attrib; + %common.attrib; + %colophon.role.attrib; + %local.colophon.attrib;> +<!--end of colophon.attlist-->]]> +<!--end of colophon.module-->]]> + +<!ENTITY % toc.content.module "INCLUDE"> +<![%toc.content.module;[ +<!ENTITY % toc.module "INCLUDE"> +<![%toc.module;[ +<!ENTITY % local.toc.attrib ""> +<!ENTITY % toc.role.attrib "%role.attrib;"> + +<!ENTITY % toc.element "INCLUDE"> +<![%toc.element;[ +<!--doc:A table of contents.--> +<!ELEMENT toc %ho; (beginpage?, + (%bookcomponent.title.content;)?, + tocfront*, + (tocpart | tocchap)*, tocback*)> +<!--end of toc.element-->]]> + +<!ENTITY % toc.attlist "INCLUDE"> +<![%toc.attlist;[ +<!ATTLIST toc + %pagenum.attrib; + %common.attrib; + %toc.role.attrib; + %local.toc.attrib; +> +<!--end of toc.attlist-->]]> +<!--end of toc.module-->]]> + +<!ENTITY % tocfront.module "INCLUDE"> +<![%tocfront.module;[ +<!ENTITY % local.tocfront.attrib ""> +<!ENTITY % tocfront.role.attrib "%role.attrib;"> + +<!ENTITY % tocfront.element "INCLUDE"> +<![%tocfront.element;[ +<!--doc:An entry in a table of contents for a front matter component.--> +<!ELEMENT tocfront %ho; (%para.char.mix;)*> +<!--end of tocfront.element-->]]> + +<!-- to element that this entry represents --> + + +<!ENTITY % tocfront.attlist "INCLUDE"> +<![%tocfront.attlist;[ +<!ATTLIST tocfront + %label.attrib; + %linkend.attrib; %pagenum.attrib; + %common.attrib; + %tocfront.role.attrib; + %local.tocfront.attrib; +> +<!--end of tocfront.attlist-->]]> +<!--end of tocfront.module-->]]> + +<!ENTITY % tocentry.module "INCLUDE"> +<![%tocentry.module;[ +<!ENTITY % local.tocentry.attrib ""> +<!ENTITY % tocentry.role.attrib "%role.attrib;"> + +<!ENTITY % tocentry.element "INCLUDE"> +<![%tocentry.element;[ +<!--doc:A component title in a table of contents.--> +<!ELEMENT tocentry %ho; (%para.char.mix;)*> +<!--end of tocentry.element-->]]> + +<!-- to element that this entry represents --> + + +<!ENTITY % tocentry.attlist "INCLUDE"> +<![%tocentry.attlist;[ +<!ATTLIST tocentry + %linkend.attrib; %pagenum.attrib; + %common.attrib; + %tocentry.role.attrib; + %local.tocentry.attrib; +> +<!--end of tocentry.attlist-->]]> +<!--end of tocentry.module-->]]> + +<!ENTITY % tocpart.module "INCLUDE"> +<![%tocpart.module;[ +<!ENTITY % local.tocpart.attrib ""> +<!ENTITY % tocpart.role.attrib "%role.attrib;"> + +<!ENTITY % tocpart.element "INCLUDE"> +<![%tocpart.element;[ +<!--doc:An entry in a table of contents for a part of a book.--> +<!ELEMENT tocpart %ho; (tocentry+, tocchap*)> +<!--end of tocpart.element-->]]> + +<!ENTITY % tocpart.attlist "INCLUDE"> +<![%tocpart.attlist;[ +<!ATTLIST tocpart + %common.attrib; + %tocpart.role.attrib; + %local.tocpart.attrib; +> +<!--end of tocpart.attlist-->]]> +<!--end of tocpart.module-->]]> + +<!ENTITY % tocchap.module "INCLUDE"> +<![%tocchap.module;[ +<!ENTITY % local.tocchap.attrib ""> +<!ENTITY % tocchap.role.attrib "%role.attrib;"> + +<!ENTITY % tocchap.element "INCLUDE"> +<![%tocchap.element;[ +<!--doc:An entry in a table of contents for a component in the body of a document.--> +<!ELEMENT tocchap %ho; (tocentry+, toclevel1*)> +<!--end of tocchap.element-->]]> + +<!ENTITY % tocchap.attlist "INCLUDE"> +<![%tocchap.attlist;[ +<!ATTLIST tocchap + %label.attrib; + %common.attrib; + %tocchap.role.attrib; + %local.tocchap.attrib; +> +<!--end of tocchap.attlist-->]]> +<!--end of tocchap.module-->]]> + +<!ENTITY % toclevel1.module "INCLUDE"> +<![%toclevel1.module;[ +<!ENTITY % local.toclevel1.attrib ""> +<!ENTITY % toclevel1.role.attrib "%role.attrib;"> + +<!ENTITY % toclevel1.element "INCLUDE"> +<![%toclevel1.element;[ +<!--doc:A top-level entry within a table of contents entry for a chapter-like component.--> +<!ELEMENT toclevel1 %ho; (tocentry+, toclevel2*)> +<!--end of toclevel1.element-->]]> + +<!ENTITY % toclevel1.attlist "INCLUDE"> +<![%toclevel1.attlist;[ +<!ATTLIST toclevel1 + %common.attrib; + %toclevel1.role.attrib; + %local.toclevel1.attrib; +> +<!--end of toclevel1.attlist-->]]> +<!--end of toclevel1.module-->]]> + +<!ENTITY % toclevel2.module "INCLUDE"> +<![%toclevel2.module;[ +<!ENTITY % local.toclevel2.attrib ""> +<!ENTITY % toclevel2.role.attrib "%role.attrib;"> + +<!ENTITY % toclevel2.element "INCLUDE"> +<![%toclevel2.element;[ +<!--doc:A second-level entry within a table of contents entry for a chapter-like component.--> +<!ELEMENT toclevel2 %ho; (tocentry+, toclevel3*)> +<!--end of toclevel2.element-->]]> + +<!ENTITY % toclevel2.attlist "INCLUDE"> +<![%toclevel2.attlist;[ +<!ATTLIST toclevel2 + %common.attrib; + %toclevel2.role.attrib; + %local.toclevel2.attrib; +> +<!--end of toclevel2.attlist-->]]> +<!--end of toclevel2.module-->]]> + +<!ENTITY % toclevel3.module "INCLUDE"> +<![%toclevel3.module;[ +<!ENTITY % local.toclevel3.attrib ""> +<!ENTITY % toclevel3.role.attrib "%role.attrib;"> + +<!ENTITY % toclevel3.element "INCLUDE"> +<![%toclevel3.element;[ +<!--doc:A third-level entry within a table of contents entry for a chapter-like component.--> +<!ELEMENT toclevel3 %ho; (tocentry+, toclevel4*)> +<!--end of toclevel3.element-->]]> + +<!ENTITY % toclevel3.attlist "INCLUDE"> +<![%toclevel3.attlist;[ +<!ATTLIST toclevel3 + %common.attrib; + %toclevel3.role.attrib; + %local.toclevel3.attrib; +> +<!--end of toclevel3.attlist-->]]> +<!--end of toclevel3.module-->]]> + +<!ENTITY % toclevel4.module "INCLUDE"> +<![%toclevel4.module;[ +<!ENTITY % local.toclevel4.attrib ""> +<!ENTITY % toclevel4.role.attrib "%role.attrib;"> + +<!ENTITY % toclevel4.element "INCLUDE"> +<![%toclevel4.element;[ +<!--doc:A fourth-level entry within a table of contents entry for a chapter-like component.--> +<!ELEMENT toclevel4 %ho; (tocentry+, toclevel5*)> +<!--end of toclevel4.element-->]]> + +<!ENTITY % toclevel4.attlist "INCLUDE"> +<![%toclevel4.attlist;[ +<!ATTLIST toclevel4 + %common.attrib; + %toclevel4.role.attrib; + %local.toclevel4.attrib; +> +<!--end of toclevel4.attlist-->]]> +<!--end of toclevel4.module-->]]> + +<!ENTITY % toclevel5.module "INCLUDE"> +<![%toclevel5.module;[ +<!ENTITY % local.toclevel5.attrib ""> +<!ENTITY % toclevel5.role.attrib "%role.attrib;"> + +<!ENTITY % toclevel5.element "INCLUDE"> +<![%toclevel5.element;[ +<!--doc:A fifth-level entry within a table of contents entry for a chapter-like component.--> +<!ELEMENT toclevel5 %ho; (tocentry+)> +<!--end of toclevel5.element-->]]> + +<!ENTITY % toclevel5.attlist "INCLUDE"> +<![%toclevel5.attlist;[ +<!ATTLIST toclevel5 + %common.attrib; + %toclevel5.role.attrib; + %local.toclevel5.attrib; +> +<!--end of toclevel5.attlist-->]]> +<!--end of toclevel5.module-->]]> + +<!ENTITY % tocback.module "INCLUDE"> +<![%tocback.module;[ +<!ENTITY % local.tocback.attrib ""> +<!ENTITY % tocback.role.attrib "%role.attrib;"> + +<!ENTITY % tocback.element "INCLUDE"> +<![%tocback.element;[ +<!--doc:An entry in a table of contents for a back matter component.--> +<!ELEMENT tocback %ho; (%para.char.mix;)*> +<!--end of tocback.element-->]]> + +<!-- to element that this entry represents --> + + +<!ENTITY % tocback.attlist "INCLUDE"> +<![%tocback.attlist;[ +<!ATTLIST tocback + %label.attrib; + %linkend.attrib; %pagenum.attrib; + %common.attrib; + %tocback.role.attrib; + %local.tocback.attrib; +> +<!--end of tocback.attlist-->]]> +<!--end of tocback.module-->]]> +<!--end of toc.content.module-->]]> + +<!ENTITY % lot.content.module "INCLUDE"> +<![%lot.content.module;[ +<!ENTITY % lot.module "INCLUDE"> +<![%lot.module;[ +<!ENTITY % local.lot.attrib ""> +<!ENTITY % lot.role.attrib "%role.attrib;"> + +<!ENTITY % lot.element "INCLUDE"> +<![%lot.element;[ +<!--doc:A list of the titles of formal objects (as tables or figures) in a document.--> +<!ELEMENT lot %ho; (beginpage?, (%bookcomponent.title.content;)?, lotentry*)> +<!--end of lot.element-->]]> + +<!ENTITY % lot.attlist "INCLUDE"> +<![%lot.attlist;[ +<!ATTLIST lot + %label.attrib; + %common.attrib; + %lot.role.attrib; + %local.lot.attrib; +> +<!--end of lot.attlist-->]]> +<!--end of lot.module-->]]> + +<!ENTITY % lotentry.module "INCLUDE"> +<![%lotentry.module;[ +<!ENTITY % local.lotentry.attrib ""> +<!ENTITY % lotentry.role.attrib "%role.attrib;"> + +<!ENTITY % lotentry.element "INCLUDE"> +<![%lotentry.element;[ +<!--doc:An entry in a list of titles.--> +<!ELEMENT lotentry %ho; (%para.char.mix;)*> +<!--end of lotentry.element-->]]> + +<!-- SrcCredit: Information about the source of the entry, + as for a list of illustrations --> +<!-- linkend: to element that this entry represents--> +<!ENTITY % lotentry.attlist "INCLUDE"> +<![%lotentry.attlist;[ +<!ATTLIST lotentry + %linkend.attrib; + %pagenum.attrib; + srccredit CDATA #IMPLIED + %common.attrib; + %lotentry.role.attrib; + %local.lotentry.attrib; +> +<!--end of lotentry.attlist-->]]> +<!--end of lotentry.module-->]]> +<!--end of lot.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... --> + +<!ENTITY % appendix.module "INCLUDE"> +<![%appendix.module;[ +<!ENTITY % local.appendix.attrib ""> +<!ENTITY % appendix.role.attrib "%role.attrib;"> + +<!ENTITY % appendix.element "INCLUDE"> +<![%appendix.element;[ +<!--doc:An appendix in a Book or Article.--> +<!ELEMENT appendix %ho; (beginpage?, + appendixinfo?, + (%bookcomponent.title.content;), + (%nav.class;)*, + tocchap?, + (%bookcomponent.content;), + (%nav.class;)*) + %ubiq.inclusion;> +<!--end of appendix.element-->]]> + +<!ENTITY % appendix.attlist "INCLUDE"> +<![%appendix.attlist;[ +<!ATTLIST appendix + %label.attrib; + %status.attrib; + %common.attrib; + %appendix.role.attrib; + %local.appendix.attrib; +> +<!--end of appendix.attlist-->]]> +<!--end of appendix.module-->]]> + +<!ENTITY % chapter.module "INCLUDE"> +<![%chapter.module;[ +<!ENTITY % local.chapter.attrib ""> +<!ENTITY % chapter.role.attrib "%role.attrib;"> + +<!ENTITY % chapter.element "INCLUDE"> +<![%chapter.element;[ +<!--doc:A chapter, as of a book.--> +<!ELEMENT chapter %ho; (beginpage?, + chapterinfo?, + (%bookcomponent.title.content;), + (%nav.class;)*, + tocchap?, + (%bookcomponent.content;), + (%nav.class;)*) + %ubiq.inclusion;> +<!--end of chapter.element-->]]> + +<!ENTITY % chapter.attlist "INCLUDE"> +<![%chapter.attlist;[ +<!ATTLIST chapter + %label.attrib; + %status.attrib; + %common.attrib; + %chapter.role.attrib; + %local.chapter.attrib; +> +<!--end of chapter.attlist-->]]> +<!--end of chapter.module-->]]> + +<!ENTITY % part.module "INCLUDE"> +<![%part.module;[ + +<!-- Note that Part was to have its content model reduced in V4.5. This +change will not be made after all. --> + +<!ENTITY % local.part.attrib ""> +<!ENTITY % part.role.attrib "%role.attrib;"> + +<!ENTITY % part.element "INCLUDE"> +<![%part.element;[ +<!--doc:A division in a book.--> +<!ELEMENT part %ho; (beginpage?, + partinfo?, (%bookcomponent.title.content;), partintro?, + (%partcontent.mix;)+) + %ubiq.inclusion;> +<!--end of part.element-->]]> + +<!ENTITY % part.attlist "INCLUDE"> +<![%part.attlist;[ +<!ATTLIST part + %label.attrib; + %status.attrib; + %common.attrib; + %part.role.attrib; + %local.part.attrib; +> +<!--end of part.attlist-->]]> +<!--ELEMENT PartIntro (defined below)--> +<!--end of part.module-->]]> + +<!ENTITY % preface.module "INCLUDE"> +<![%preface.module;[ +<!ENTITY % local.preface.attrib ""> +<!ENTITY % preface.role.attrib "%role.attrib;"> + +<!ENTITY % preface.element "INCLUDE"> +<![%preface.element;[ +<!--doc:Introductory matter preceding the first chapter of a book.--> +<!ELEMENT preface %ho; (beginpage?, + prefaceinfo?, + (%bookcomponent.title.content;), + (%nav.class;)*, + tocchap?, + (%bookcomponent.content;), + (%nav.class;)*) + %ubiq.inclusion;> +<!--end of preface.element-->]]> + +<!ENTITY % preface.attlist "INCLUDE"> +<![%preface.attlist;[ +<!ATTLIST preface + %status.attrib; + %common.attrib; + %preface.role.attrib; + %local.preface.attrib; +> +<!--end of preface.attlist-->]]> +<!--end of preface.module-->]]> + +<!ENTITY % reference.module "INCLUDE"> +<![%reference.module;[ +<!ENTITY % local.reference.attrib ""> +<!ENTITY % reference.role.attrib "%role.attrib;"> + +<!ENTITY % reference.element "INCLUDE"> +<![%reference.element;[ +<!--doc:A collection of reference entries.--> +<!ELEMENT reference %ho; (beginpage?, + referenceinfo?, + (%bookcomponent.title.content;), partintro?, + (%refentry.class;)+) + %ubiq.inclusion;> +<!--end of reference.element-->]]> + +<!ENTITY % reference.attlist "INCLUDE"> +<![%reference.attlist;[ +<!ATTLIST reference + %label.attrib; + %status.attrib; + %common.attrib; + %reference.role.attrib; + %local.reference.attrib; +> +<!--end of reference.attlist-->]]> +<!--ELEMENT PartIntro (defined below)--> +<!--end of reference.module-->]]> + +<!ENTITY % partintro.module "INCLUDE"> +<![%partintro.module;[ +<!ENTITY % local.partintro.attrib ""> +<!ENTITY % partintro.role.attrib "%role.attrib;"> + +<!ENTITY % partintro.element "INCLUDE"> +<![%partintro.element;[ +<!--doc:An introduction to the contents of a part.--> +<!ELEMENT partintro %ho; ((%div.title.content;)?, (%bookcomponent.content;)) + %ubiq.inclusion;> +<!--end of partintro.element-->]]> + +<!ENTITY % partintro.attlist "INCLUDE"> +<![%partintro.attlist;[ +<!ATTLIST partintro + %label.attrib; + %common.attrib; + %partintro.role.attrib; + %local.partintro.attrib; +> +<!--end of partintro.attlist-->]]> +<!--end of partintro.module-->]]> + +<!-- ...................................................................... --> +<!-- Other Info elements .................................................. --> + +<!ENTITY % appendixinfo.module "INCLUDE"> +<![ %appendixinfo.module; [ +<!ENTITY % local.appendixinfo.attrib ""> +<!ENTITY % appendixinfo.role.attrib "%role.attrib;"> + +<!ENTITY % appendixinfo.element "INCLUDE"> +<![ %appendixinfo.element; [ +<!--doc:Meta-information for an Appendix.--> +<!ELEMENT appendixinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of appendixinfo.element-->]]> + +<!ENTITY % appendixinfo.attlist "INCLUDE"> +<![ %appendixinfo.attlist; [ +<!ATTLIST appendixinfo + %common.attrib; + %appendixinfo.role.attrib; + %local.appendixinfo.attrib; +> +<!--end of appendixinfo.attlist-->]]> +<!--end of appendixinfo.module-->]]> + +<!ENTITY % bibliographyinfo.module "INCLUDE"> +<![ %bibliographyinfo.module; [ +<!ENTITY % local.bibliographyinfo.attrib ""> +<!ENTITY % bibliographyinfo.role.attrib "%role.attrib;"> + +<!ENTITY % bibliographyinfo.element "INCLUDE"> +<![ %bibliographyinfo.element; [ +<!--doc:Meta-information for a Bibliography.--> +<!ELEMENT bibliographyinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of bibliographyinfo.element-->]]> + +<!ENTITY % bibliographyinfo.attlist "INCLUDE"> +<![ %bibliographyinfo.attlist; [ +<!ATTLIST bibliographyinfo + %common.attrib; + %bibliographyinfo.role.attrib; + %local.bibliographyinfo.attrib; +> +<!--end of bibliographyinfo.attlist-->]]> +<!--end of bibliographyinfo.module-->]]> + +<!ENTITY % chapterinfo.module "INCLUDE"> +<![ %chapterinfo.module; [ +<!ENTITY % local.chapterinfo.attrib ""> +<!ENTITY % chapterinfo.role.attrib "%role.attrib;"> + +<!ENTITY % chapterinfo.element "INCLUDE"> +<![ %chapterinfo.element; [ +<!--doc:Meta-information for a Chapter.--> +<!ELEMENT chapterinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of chapterinfo.element-->]]> + +<!ENTITY % chapterinfo.attlist "INCLUDE"> +<![ %chapterinfo.attlist; [ +<!ATTLIST chapterinfo + %common.attrib; + %chapterinfo.role.attrib; + %local.chapterinfo.attrib; +> +<!--end of chapterinfo.attlist-->]]> +<!--end of chapterinfo.module-->]]> + +<!ENTITY % glossaryinfo.module "INCLUDE"> +<![ %glossaryinfo.module; [ +<!ENTITY % local.glossaryinfo.attrib ""> +<!ENTITY % glossaryinfo.role.attrib "%role.attrib;"> + +<!ENTITY % glossaryinfo.element "INCLUDE"> +<![ %glossaryinfo.element; [ +<!--doc:Meta-information for a Glossary.--> +<!ELEMENT glossaryinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of glossaryinfo.element-->]]> + +<!ENTITY % glossaryinfo.attlist "INCLUDE"> +<![ %glossaryinfo.attlist; [ +<!ATTLIST glossaryinfo + %common.attrib; + %glossaryinfo.role.attrib; + %local.glossaryinfo.attrib; +> +<!--end of glossaryinfo.attlist-->]]> +<!--end of glossaryinfo.module-->]]> + +<!ENTITY % indexinfo.module "INCLUDE"> +<![ %indexinfo.module; [ +<!ENTITY % local.indexinfo.attrib ""> +<!ENTITY % indexinfo.role.attrib "%role.attrib;"> + +<!ENTITY % indexinfo.element "INCLUDE"> +<![ %indexinfo.element; [ +<!--doc:Meta-information for an Index.--> +<!ELEMENT indexinfo %ho; ((%info.class;)+)> +<!--end of indexinfo.element-->]]> + +<!ENTITY % indexinfo.attlist "INCLUDE"> +<![ %indexinfo.attlist; [ +<!ATTLIST indexinfo + %common.attrib; + %indexinfo.role.attrib; + %local.indexinfo.attrib; +> +<!--end of indexinfo.attlist-->]]> +<!--end of indexinfo.module-->]]> + +<!ENTITY % setindexinfo.module "INCLUDE"> +<![ %setindexinfo.module; [ +<!ENTITY % local.setindexinfo.attrib ""> +<!ENTITY % setindexinfo.role.attrib "%role.attrib;"> + +<!ENTITY % setindexinfo.element "INCLUDE"> +<![ %setindexinfo.element; [ +<!--doc:Meta-information for a SetIndex.--> +<!ELEMENT setindexinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of setindexinfo.element-->]]> + +<!ENTITY % setindexinfo.attlist "INCLUDE"> +<![ %setindexinfo.attlist; [ +<!ATTLIST setindexinfo + %common.attrib; + %setindexinfo.role.attrib; + %local.setindexinfo.attrib; +> +<!--end of setindexinfo.attlist-->]]> +<!--end of setindexinfo.module-->]]> + +<!ENTITY % partinfo.module "INCLUDE"> +<![ %partinfo.module; [ +<!ENTITY % local.partinfo.attrib ""> +<!ENTITY % partinfo.role.attrib "%role.attrib;"> + +<!ENTITY % partinfo.element "INCLUDE"> +<![ %partinfo.element; [ +<!--doc:Meta-information for a Part.--> +<!ELEMENT partinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of partinfo.element-->]]> + +<!ENTITY % partinfo.attlist "INCLUDE"> +<![ %partinfo.attlist; [ +<!ATTLIST partinfo + %common.attrib; + %partinfo.role.attrib; + %local.partinfo.attrib; +> +<!--end of partinfo.attlist-->]]> +<!--end of partinfo.module-->]]> + +<!ENTITY % prefaceinfo.module "INCLUDE"> +<![ %prefaceinfo.module; [ +<!ENTITY % local.prefaceinfo.attrib ""> +<!ENTITY % prefaceinfo.role.attrib "%role.attrib;"> + +<!ENTITY % prefaceinfo.element "INCLUDE"> +<![ %prefaceinfo.element; [ +<!--doc:Meta-information for a Preface.--> +<!ELEMENT prefaceinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of prefaceinfo.element-->]]> + +<!ENTITY % prefaceinfo.attlist "INCLUDE"> +<![ %prefaceinfo.attlist; [ +<!ATTLIST prefaceinfo + %common.attrib; + %prefaceinfo.role.attrib; + %local.prefaceinfo.attrib; +> +<!--end of prefaceinfo.attlist-->]]> +<!--end of prefaceinfo.module-->]]> + +<!ENTITY % refentryinfo.module "INCLUDE"> +<![ %refentryinfo.module; [ +<!ENTITY % local.refentryinfo.attrib ""> +<!ENTITY % refentryinfo.role.attrib "%role.attrib;"> + +<!ENTITY % refentryinfo.element "INCLUDE"> +<![ %refentryinfo.element; [ +<!--doc:Meta-information for a Refentry.--> +<!ELEMENT refentryinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of refentryinfo.element-->]]> + +<!ENTITY % refentryinfo.attlist "INCLUDE"> +<![ %refentryinfo.attlist; [ +<!ATTLIST refentryinfo + %common.attrib; + %refentryinfo.role.attrib; + %local.refentryinfo.attrib; +> +<!--end of refentryinfo.attlist-->]]> +<!--end of refentryinfo.module-->]]> + +<!ENTITY % refsectioninfo.module "INCLUDE"> +<![ %refsectioninfo.module; [ +<!ENTITY % local.refsectioninfo.attrib ""> +<!ENTITY % refsectioninfo.role.attrib "%role.attrib;"> + +<!ENTITY % refsectioninfo.element "INCLUDE"> +<![ %refsectioninfo.element; [ +<!--doc:Meta-information for a refsection.--> +<!ELEMENT refsectioninfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of refsectioninfo.element-->]]> + +<!ENTITY % refsectioninfo.attlist "INCLUDE"> +<![ %refsectioninfo.attlist; [ +<!ATTLIST refsectioninfo + %common.attrib; + %refsectioninfo.role.attrib; + %local.refsectioninfo.attrib; +> +<!--end of refsectioninfo.attlist-->]]> +<!--end of refsectioninfo.module-->]]> + +<!ENTITY % refsect1info.module "INCLUDE"> +<![ %refsect1info.module; [ +<!ENTITY % local.refsect1info.attrib ""> +<!ENTITY % refsect1info.role.attrib "%role.attrib;"> + +<!ENTITY % refsect1info.element "INCLUDE"> +<![ %refsect1info.element; [ +<!--doc:Meta-information for a RefSect1.--> +<!ELEMENT refsect1info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of refsect1info.element-->]]> + +<!ENTITY % refsect1info.attlist "INCLUDE"> +<![ %refsect1info.attlist; [ +<!ATTLIST refsect1info + %common.attrib; + %refsect1info.role.attrib; + %local.refsect1info.attrib; +> +<!--end of refsect1info.attlist-->]]> +<!--end of refsect1info.module-->]]> + +<!ENTITY % refsect2info.module "INCLUDE"> +<![ %refsect2info.module; [ +<!ENTITY % local.refsect2info.attrib ""> +<!ENTITY % refsect2info.role.attrib "%role.attrib;"> + +<!ENTITY % refsect2info.element "INCLUDE"> +<![ %refsect2info.element; [ +<!--doc:Meta-information for a RefSect2.--> +<!ELEMENT refsect2info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of refsect2info.element-->]]> + +<!ENTITY % refsect2info.attlist "INCLUDE"> +<![ %refsect2info.attlist; [ +<!ATTLIST refsect2info + %common.attrib; + %refsect2info.role.attrib; + %local.refsect2info.attrib; +> +<!--end of refsect2info.attlist-->]]> +<!--end of refsect2info.module-->]]> + +<!ENTITY % refsect3info.module "INCLUDE"> +<![ %refsect3info.module; [ +<!ENTITY % local.refsect3info.attrib ""> +<!ENTITY % refsect3info.role.attrib "%role.attrib;"> + +<!ENTITY % refsect3info.element "INCLUDE"> +<![ %refsect3info.element; [ +<!--doc:Meta-information for a RefSect3.--> +<!ELEMENT refsect3info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of refsect3info.element-->]]> + +<!ENTITY % refsect3info.attlist "INCLUDE"> +<![ %refsect3info.attlist; [ +<!ATTLIST refsect3info + %common.attrib; + %refsect3info.role.attrib; + %local.refsect3info.attrib; +> +<!--end of refsect3info.attlist-->]]> +<!--end of refsect3info.module-->]]> + +<!ENTITY % refsynopsisdivinfo.module "INCLUDE"> +<![ %refsynopsisdivinfo.module; [ +<!ENTITY % local.refsynopsisdivinfo.attrib ""> +<!ENTITY % refsynopsisdivinfo.role.attrib "%role.attrib;"> + +<!ENTITY % refsynopsisdivinfo.element "INCLUDE"> +<![ %refsynopsisdivinfo.element; [ +<!--doc:Meta-information for a RefSynopsisDiv.--> +<!ELEMENT refsynopsisdivinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of refsynopsisdivinfo.element-->]]> + +<!ENTITY % refsynopsisdivinfo.attlist "INCLUDE"> +<![ %refsynopsisdivinfo.attlist; [ +<!ATTLIST refsynopsisdivinfo + %common.attrib; + %refsynopsisdivinfo.role.attrib; + %local.refsynopsisdivinfo.attrib; +> +<!--end of refsynopsisdivinfo.attlist-->]]> +<!--end of refsynopsisdivinfo.module-->]]> + +<!ENTITY % referenceinfo.module "INCLUDE"> +<![ %referenceinfo.module; [ +<!ENTITY % local.referenceinfo.attrib ""> +<!ENTITY % referenceinfo.role.attrib "%role.attrib;"> + +<!ENTITY % referenceinfo.element "INCLUDE"> +<![ %referenceinfo.element; [ +<!--doc:Meta-information for a Reference.--> +<!ELEMENT referenceinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of referenceinfo.element-->]]> + +<!ENTITY % referenceinfo.attlist "INCLUDE"> +<![ %referenceinfo.attlist; [ +<!ATTLIST referenceinfo + %common.attrib; + %referenceinfo.role.attrib; + %local.referenceinfo.attrib; +> +<!--end of referenceinfo.attlist-->]]> +<!--end of referenceinfo.module-->]]> + +<!ENTITY % local.sect1info.attrib ""> +<!ENTITY % sect1info.role.attrib "%role.attrib;"> + +<!ENTITY % sect1info.element "INCLUDE"> +<![%sect1info.element;[ +<!--doc:Meta-information for a Sect1.--> +<!ELEMENT sect1info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sect1info.element-->]]> + +<!ENTITY % sect1info.attlist "INCLUDE"> +<![%sect1info.attlist;[ +<!ATTLIST sect1info + %common.attrib; + %sect1info.role.attrib; + %local.sect1info.attrib; +> +<!--end of sect1info.attlist-->]]> + +<!ENTITY % local.sect2info.attrib ""> +<!ENTITY % sect2info.role.attrib "%role.attrib;"> + +<!ENTITY % sect2info.element "INCLUDE"> +<![%sect2info.element;[ +<!--doc:Meta-information for a Sect2.--> +<!ELEMENT sect2info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sect2info.element-->]]> + +<!ENTITY % sect2info.attlist "INCLUDE"> +<![%sect2info.attlist;[ +<!ATTLIST sect2info + %common.attrib; + %sect2info.role.attrib; + %local.sect2info.attrib; +> +<!--end of sect2info.attlist-->]]> + +<!ENTITY % local.sect3info.attrib ""> +<!ENTITY % sect3info.role.attrib "%role.attrib;"> + +<!ENTITY % sect3info.element "INCLUDE"> +<![%sect3info.element;[ +<!--doc:Meta-information for a Sect3.--> +<!ELEMENT sect3info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sect3info.element-->]]> + +<!ENTITY % sect3info.attlist "INCLUDE"> +<![%sect3info.attlist;[ +<!ATTLIST sect3info + %common.attrib; + %sect3info.role.attrib; + %local.sect3info.attrib; +> +<!--end of sect3info.attlist-->]]> + +<!ENTITY % local.sect4info.attrib ""> +<!ENTITY % sect4info.role.attrib "%role.attrib;"> + +<!ENTITY % sect4info.element "INCLUDE"> +<![%sect4info.element;[ +<!--doc:Meta-information for a Sect4.--> +<!ELEMENT sect4info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sect4info.element-->]]> + +<!ENTITY % sect4info.attlist "INCLUDE"> +<![%sect4info.attlist;[ +<!ATTLIST sect4info + %common.attrib; + %sect4info.role.attrib; + %local.sect4info.attrib; +> +<!--end of sect4info.attlist-->]]> + +<!ENTITY % local.sect5info.attrib ""> +<!ENTITY % sect5info.role.attrib "%role.attrib;"> + +<!ENTITY % sect5info.element "INCLUDE"> +<![%sect5info.element;[ +<!--doc:Meta-information for a Sect5.--> +<!ELEMENT sect5info %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sect5info.element-->]]> + +<!ENTITY % sect5info.attlist "INCLUDE"> +<![%sect5info.attlist;[ +<!ATTLIST sect5info + %common.attrib; + %sect5info.role.attrib; + %local.sect5info.attrib; +> +<!--end of sect5info.attlist-->]]> + +<!-- ...................................................................... --> +<!-- Section (parallel to Sect*) ......................................... --> + +<!ENTITY % section.content.module "INCLUDE"> +<![ %section.content.module; [ +<!ENTITY % section.module "INCLUDE"> +<![ %section.module; [ +<!ENTITY % local.section.attrib ""> +<!ENTITY % section.role.attrib "%role.attrib;"> + +<!ENTITY % section.element "INCLUDE"> +<![ %section.element; [ +<!--doc:A recursive section.--> +<!ELEMENT section %ho; (sectioninfo?, + (%sect.title.content;), + (%nav.class;)*, + (((%divcomponent.mix;)+, + ((%refentry.class;)*|(%section.class;)*|simplesect*)) + | (%refentry.class;)+|(%section.class;)+|simplesect+), + (%nav.class;)*) + %ubiq.inclusion;> +<!--end of section.element-->]]> + +<!ENTITY % section.attlist "INCLUDE"> +<![ %section.attlist; [ +<!ATTLIST section + %label.attrib; + %status.attrib; + %common.attrib; + %section.role.attrib; + %local.section.attrib; +> +<!--end of section.attlist-->]]> +<!--end of section.module-->]]> + +<!ENTITY % sectioninfo.module "INCLUDE"> +<![ %sectioninfo.module; [ +<!ENTITY % sectioninfo.role.attrib "%role.attrib;"> +<!ENTITY % local.sectioninfo.attrib ""> + +<!ENTITY % sectioninfo.element "INCLUDE"> +<![ %sectioninfo.element; [ +<!--doc:Meta-information for a recursive section.--> +<!ELEMENT sectioninfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sectioninfo.element-->]]> + +<!ENTITY % sectioninfo.attlist "INCLUDE"> +<![ %sectioninfo.attlist; [ +<!ATTLIST sectioninfo + %common.attrib; + %sectioninfo.role.attrib; + %local.sectioninfo.attrib; +> +<!--end of sectioninfo.attlist-->]]> +<!--end of sectioninfo.module-->]]> +<!--end of section.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... --> + +<!ENTITY % sect1.module "INCLUDE"> +<![%sect1.module;[ +<!ENTITY % local.sect1.attrib ""> +<!ENTITY % sect1.role.attrib "%role.attrib;"> + +<!ENTITY % sect1.element "INCLUDE"> +<![%sect1.element;[ +<!--doc:A top-level section of document.--> +<!ELEMENT sect1 %ho; (sect1info?, (%sect.title.content;), (%nav.class;)*, + (((%divcomponent.mix;)+, + ((%refentry.class;)* | sect2* | simplesect*)) + | (%refentry.class;)+ | sect2+ | simplesect+), (%nav.class;)*) + %ubiq.inclusion;> +<!--end of sect1.element-->]]> + +<!-- Renderas: Indicates the format in which the heading should + appear --> + + +<!ENTITY % sect1.attlist "INCLUDE"> +<![%sect1.attlist;[ +<!ATTLIST sect1 + renderas (sect2 + |sect3 + |sect4 + |sect5) #IMPLIED + %label.attrib; + %status.attrib; + %common.attrib; + %sect1.role.attrib; + %local.sect1.attrib; +> +<!--end of sect1.attlist-->]]> +<!--end of sect1.module-->]]> + +<!ENTITY % sect2.module "INCLUDE"> +<![%sect2.module;[ +<!ENTITY % local.sect2.attrib ""> +<!ENTITY % sect2.role.attrib "%role.attrib;"> + +<!ENTITY % sect2.element "INCLUDE"> +<![%sect2.element;[ +<!--doc:A subsection within a Sect1.--> +<!ELEMENT sect2 %ho; (sect2info?, (%sect.title.content;), (%nav.class;)*, + (((%divcomponent.mix;)+, + ((%refentry.class;)* | sect3* | simplesect*)) + | (%refentry.class;)+ | sect3+ | simplesect+), (%nav.class;)*)> +<!--end of sect2.element-->]]> + +<!-- Renderas: Indicates the format in which the heading should + appear --> + + +<!ENTITY % sect2.attlist "INCLUDE"> +<![%sect2.attlist;[ +<!ATTLIST sect2 + renderas (sect1 + |sect3 + |sect4 + |sect5) #IMPLIED + %label.attrib; + %status.attrib; + %common.attrib; + %sect2.role.attrib; + %local.sect2.attrib; +> +<!--end of sect2.attlist-->]]> +<!--end of sect2.module-->]]> + +<!ENTITY % sect3.module "INCLUDE"> +<![%sect3.module;[ +<!ENTITY % local.sect3.attrib ""> +<!ENTITY % sect3.role.attrib "%role.attrib;"> + +<!ENTITY % sect3.element "INCLUDE"> +<![%sect3.element;[ +<!--doc:A subsection within a Sect2.--> +<!ELEMENT sect3 %ho; (sect3info?, (%sect.title.content;), (%nav.class;)*, + (((%divcomponent.mix;)+, + ((%refentry.class;)* | sect4* | simplesect*)) + | (%refentry.class;)+ | sect4+ | simplesect+), (%nav.class;)*)> +<!--end of sect3.element-->]]> + +<!-- Renderas: Indicates the format in which the heading should + appear --> + + +<!ENTITY % sect3.attlist "INCLUDE"> +<![%sect3.attlist;[ +<!ATTLIST sect3 + renderas (sect1 + |sect2 + |sect4 + |sect5) #IMPLIED + %label.attrib; + %status.attrib; + %common.attrib; + %sect3.role.attrib; + %local.sect3.attrib; +> +<!--end of sect3.attlist-->]]> +<!--end of sect3.module-->]]> + +<!ENTITY % sect4.module "INCLUDE"> +<![%sect4.module;[ +<!ENTITY % local.sect4.attrib ""> +<!ENTITY % sect4.role.attrib "%role.attrib;"> + +<!ENTITY % sect4.element "INCLUDE"> +<![%sect4.element;[ +<!--doc:A subsection within a Sect3.--> +<!ELEMENT sect4 %ho; (sect4info?, (%sect.title.content;), (%nav.class;)*, + (((%divcomponent.mix;)+, + ((%refentry.class;)* | sect5* | simplesect*)) + | (%refentry.class;)+ | sect5+ | simplesect+), (%nav.class;)*)> +<!--end of sect4.element-->]]> + +<!-- Renderas: Indicates the format in which the heading should + appear --> + + +<!ENTITY % sect4.attlist "INCLUDE"> +<![%sect4.attlist;[ +<!ATTLIST sect4 + renderas (sect1 + |sect2 + |sect3 + |sect5) #IMPLIED + %label.attrib; + %status.attrib; + %common.attrib; + %sect4.role.attrib; + %local.sect4.attrib; +> +<!--end of sect4.attlist-->]]> +<!--end of sect4.module-->]]> + +<!ENTITY % sect5.module "INCLUDE"> +<![%sect5.module;[ +<!ENTITY % local.sect5.attrib ""> +<!ENTITY % sect5.role.attrib "%role.attrib;"> + +<!ENTITY % sect5.element "INCLUDE"> +<![%sect5.element;[ +<!--doc:A subsection within a Sect4.--> +<!ELEMENT sect5 %ho; (sect5info?, (%sect.title.content;), (%nav.class;)*, + (((%divcomponent.mix;)+, ((%refentry.class;)* | simplesect*)) + | (%refentry.class;)+ | simplesect+), (%nav.class;)*)> +<!--end of sect5.element-->]]> + +<!-- Renderas: Indicates the format in which the heading should + appear --> + + +<!ENTITY % sect5.attlist "INCLUDE"> +<![%sect5.attlist;[ +<!ATTLIST sect5 + renderas (sect1 + |sect2 + |sect3 + |sect4) #IMPLIED + %label.attrib; + %status.attrib; + %common.attrib; + %sect5.role.attrib; + %local.sect5.attrib; +> +<!--end of sect5.attlist-->]]> +<!--end of sect5.module-->]]> + +<!ENTITY % simplesect.module "INCLUDE"> +<![%simplesect.module;[ +<!ENTITY % local.simplesect.attrib ""> +<!ENTITY % simplesect.role.attrib "%role.attrib;"> + +<!ENTITY % simplesect.element "INCLUDE"> +<![%simplesect.element;[ +<!--doc:A section of a document with no subdivisions.--> +<!ELEMENT simplesect %ho; ((%sect.title.content;), (%divcomponent.mix;)+) + %ubiq.inclusion;> +<!--end of simplesect.element-->]]> + +<!ENTITY % simplesect.attlist "INCLUDE"> +<![%simplesect.attlist;[ +<!ATTLIST simplesect + %common.attrib; + %simplesect.role.attrib; + %local.simplesect.attrib; +> +<!--end of simplesect.attlist-->]]> +<!--end of simplesect.module-->]]> + +<!-- ...................................................................... --> +<!-- Bibliography ......................................................... --> + +<!ENTITY % bibliography.content.module "INCLUDE"> +<![%bibliography.content.module;[ +<!ENTITY % bibliography.module "INCLUDE"> +<![%bibliography.module;[ +<!ENTITY % local.bibliography.attrib ""> +<!ENTITY % bibliography.role.attrib "%role.attrib;"> + +<!ENTITY % bibliography.element "INCLUDE"> +<![%bibliography.element;[ +<!--doc:A bibliography.--> +<!ELEMENT bibliography %ho; (bibliographyinfo?, + (%bookcomponent.title.content;)?, + (%component.mix;)*, + (bibliodiv+ | (biblioentry|bibliomixed)+))> +<!--end of bibliography.element-->]]> + +<!ENTITY % bibliography.attlist "INCLUDE"> +<![%bibliography.attlist;[ +<!ATTLIST bibliography + %status.attrib; + %common.attrib; + %bibliography.role.attrib; + %local.bibliography.attrib; +> +<!--end of bibliography.attlist-->]]> +<!--end of bibliography.module-->]]> + +<!ENTITY % bibliodiv.module "INCLUDE"> +<![%bibliodiv.module;[ +<!ENTITY % local.bibliodiv.attrib ""> +<!ENTITY % bibliodiv.role.attrib "%role.attrib;"> + +<!ENTITY % bibliodiv.element "INCLUDE"> +<![%bibliodiv.element;[ +<!--doc:A section of a Bibliography.--> +<!ELEMENT bibliodiv %ho; ((%sect.title.content;)?, (%component.mix;)*, + (biblioentry|bibliomixed)+)> +<!--end of bibliodiv.element-->]]> + +<!ENTITY % bibliodiv.attlist "INCLUDE"> +<![%bibliodiv.attlist;[ +<!ATTLIST bibliodiv + %status.attrib; + %common.attrib; + %bibliodiv.role.attrib; + %local.bibliodiv.attrib; +> +<!--end of bibliodiv.attlist-->]]> +<!--end of bibliodiv.module-->]]> +<!--end of bibliography.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Glossary ............................................................. --> + +<!ENTITY % glossary.content.module "INCLUDE"> +<![%glossary.content.module;[ +<!ENTITY % glossary.module "INCLUDE"> +<![%glossary.module;[ +<!ENTITY % local.glossary.attrib ""> +<!ENTITY % glossary.role.attrib "%role.attrib;"> + +<!ENTITY % glossary.element "INCLUDE"> +<![%glossary.element;[ +<!--doc:A glossary.--> +<!ELEMENT glossary %ho; (glossaryinfo?, + (%bookcomponent.title.content;)?, + (%component.mix;)*, + (glossdiv+ | glossentry+), bibliography?)> +<!--end of glossary.element-->]]> + +<!ENTITY % glossary.attlist "INCLUDE"> +<![%glossary.attlist;[ +<!ATTLIST glossary + %status.attrib; + %common.attrib; + %glossary.role.attrib; + %local.glossary.attrib; +> +<!--end of glossary.attlist-->]]> +<!--end of glossary.module-->]]> + +<!ENTITY % glossdiv.module "INCLUDE"> +<![%glossdiv.module;[ +<!ENTITY % local.glossdiv.attrib ""> +<!ENTITY % glossdiv.role.attrib "%role.attrib;"> + +<!ENTITY % glossdiv.element "INCLUDE"> +<![%glossdiv.element;[ +<!--doc:A division in a Glossary.--> +<!ELEMENT glossdiv %ho; ((%sect.title.content;), (%component.mix;)*, + glossentry+)> +<!--end of glossdiv.element-->]]> + +<!ENTITY % glossdiv.attlist "INCLUDE"> +<![%glossdiv.attlist;[ +<!ATTLIST glossdiv + %status.attrib; + %common.attrib; + %glossdiv.role.attrib; + %local.glossdiv.attrib; +> +<!--end of glossdiv.attlist-->]]> +<!--end of glossdiv.module-->]]> +<!--end of glossary.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Index and SetIndex ................................................... --> + +<!ENTITY % index.content.module "INCLUDE"> +<![%index.content.module;[ +<!ENTITY % indexes.module "INCLUDE"> +<![%indexes.module;[ +<!ENTITY % local.indexes.attrib ""> +<!ENTITY % indexes.role.attrib "%role.attrib;"> + +<!ENTITY % index.element "INCLUDE"> +<![%index.element;[ +<!--doc:An index.--> +<!ELEMENT index %ho; (indexinfo?, + (%bookcomponent.title.content;)?, + (%component.mix;)*, + (indexdiv* | indexentry*)) + %ndxterm.exclusion;> +<!--end of index.element-->]]> + +<!ENTITY % index.attlist "INCLUDE"> +<![%index.attlist;[ +<!ATTLIST index + type CDATA #IMPLIED + %common.attrib; + %indexes.role.attrib; + %local.indexes.attrib; +> +<!--end of index.attlist-->]]> + +<!ENTITY % setindex.element "INCLUDE"> +<![%setindex.element;[ +<!--doc:An index to a set of books.--> +<!ELEMENT setindex %ho; (setindexinfo?, + (%bookcomponent.title.content;)?, + (%component.mix;)*, + (indexdiv* | indexentry*)) + %ndxterm.exclusion;> +<!--end of setindex.element-->]]> + +<!ENTITY % setindex.attlist "INCLUDE"> +<![%setindex.attlist;[ +<!ATTLIST setindex + %common.attrib; + %indexes.role.attrib; + %local.indexes.attrib; +> +<!--end of setindex.attlist-->]]> +<!--end of indexes.module-->]]> + +<!ENTITY % indexdiv.module "INCLUDE"> +<![%indexdiv.module;[ + +<!-- SegmentedList in this content is useful for marking up permuted + indices. --> + +<!ENTITY % local.indexdiv.attrib ""> +<!ENTITY % indexdiv.role.attrib "%role.attrib;"> + +<!ENTITY % indexdiv.element "INCLUDE"> +<![%indexdiv.element;[ +<!--doc:A division in an index.--> +<!ELEMENT indexdiv %ho; ((%sect.title.content;)?, ((%indexdivcomponent.mix;)*, + (indexentry+ | segmentedlist)))> +<!--end of indexdiv.element-->]]> + +<!ENTITY % indexdiv.attlist "INCLUDE"> +<![%indexdiv.attlist;[ +<!ATTLIST indexdiv + %common.attrib; + %indexdiv.role.attrib; + %local.indexdiv.attrib; +> +<!--end of indexdiv.attlist-->]]> +<!--end of indexdiv.module-->]]> + +<!ENTITY % indexentry.module "INCLUDE"> +<![%indexentry.module;[ +<!-- Index entries appear in the index, not the text. --> + +<!ENTITY % local.indexentry.attrib ""> +<!ENTITY % indexentry.role.attrib "%role.attrib;"> + +<!ENTITY % indexentry.element "INCLUDE"> +<![%indexentry.element;[ +<!--doc:An entry in an index.--> +<!ELEMENT indexentry %ho; (primaryie, (seeie|seealsoie)*, + (secondaryie, (seeie|seealsoie|tertiaryie)*)*)> +<!--end of indexentry.element-->]]> + +<!ENTITY % indexentry.attlist "INCLUDE"> +<![%indexentry.attlist;[ +<!ATTLIST indexentry + %common.attrib; + %indexentry.role.attrib; + %local.indexentry.attrib; +> +<!--end of indexentry.attlist-->]]> +<!--end of indexentry.module-->]]> + +<!ENTITY % primsecterie.module "INCLUDE"> +<![%primsecterie.module;[ +<!ENTITY % local.primsecterie.attrib ""> +<!ENTITY % primsecterie.role.attrib "%role.attrib;"> + +<!ENTITY % primaryie.element "INCLUDE"> +<![%primaryie.element;[ +<!--doc:A primary term in an index entry, not in the text.--> +<!ELEMENT primaryie %ho; (%ndxterm.char.mix;)*> +<!--end of primaryie.element-->]]> + +<!-- to IndexTerms that these entries represent --> + +<!ENTITY % primaryie.attlist "INCLUDE"> +<![%primaryie.attlist;[ +<!ATTLIST primaryie + %linkends.attrib; %common.attrib; + %primsecterie.role.attrib; + %local.primsecterie.attrib; +> +<!--end of primaryie.attlist-->]]> + +<!ENTITY % secondaryie.element "INCLUDE"> +<![%secondaryie.element;[ +<!--doc:A secondary term in an index entry, rather than in the text.--> +<!ELEMENT secondaryie %ho; (%ndxterm.char.mix;)*> +<!--end of secondaryie.element-->]]> + +<!-- to IndexTerms that these entries represent --> + +<!ENTITY % secondaryie.attlist "INCLUDE"> +<![%secondaryie.attlist;[ +<!ATTLIST secondaryie + %linkends.attrib; %common.attrib; + %primsecterie.role.attrib; + %local.primsecterie.attrib; +> +<!--end of secondaryie.attlist-->]]> + +<!ENTITY % tertiaryie.element "INCLUDE"> +<![%tertiaryie.element;[ +<!--doc:A tertiary term in an index entry, rather than in the text.--> +<!ELEMENT tertiaryie %ho; (%ndxterm.char.mix;)*> +<!--end of tertiaryie.element-->]]> + +<!-- to IndexTerms that these entries represent --> + +<!ENTITY % tertiaryie.attlist "INCLUDE"> +<![%tertiaryie.attlist;[ +<!ATTLIST tertiaryie + %linkends.attrib; %common.attrib; + %primsecterie.role.attrib; + %local.primsecterie.attrib; +> +<!--end of tertiaryie.attlist-->]]> + +<!--end of primsecterie.module-->]]> + +<!ENTITY % seeie.module "INCLUDE"> +<![%seeie.module;[ +<!ENTITY % local.seeie.attrib ""> +<!ENTITY % seeie.role.attrib "%role.attrib;"> + +<!ENTITY % seeie.element "INCLUDE"> +<![%seeie.element;[ +<!--doc:A See entry in an index, rather than in the text.--> +<!ELEMENT seeie %ho; (%ndxterm.char.mix;)*> +<!--end of seeie.element-->]]> + +<!-- to IndexEntry to look up --> + + +<!ENTITY % seeie.attlist "INCLUDE"> +<![%seeie.attlist;[ +<!ATTLIST seeie + %linkend.attrib; %common.attrib; + %seeie.role.attrib; + %local.seeie.attrib; +> +<!--end of seeie.attlist-->]]> +<!--end of seeie.module-->]]> + +<!ENTITY % seealsoie.module "INCLUDE"> +<![%seealsoie.module;[ +<!ENTITY % local.seealsoie.attrib ""> +<!ENTITY % seealsoie.role.attrib "%role.attrib;"> + +<!ENTITY % seealsoie.element "INCLUDE"> +<![%seealsoie.element;[ +<!--doc:A See also entry in an index, rather than in the text.--> +<!ELEMENT seealsoie %ho; (%ndxterm.char.mix;)*> +<!--end of seealsoie.element-->]]> + +<!-- to related IndexEntries --> + + +<!ENTITY % seealsoie.attlist "INCLUDE"> +<![%seealsoie.attlist;[ +<!ATTLIST seealsoie + %linkends.attrib; %common.attrib; + %seealsoie.role.attrib; + %local.seealsoie.attrib; +> +<!--end of seealsoie.attlist-->]]> +<!--end of seealsoie.module-->]]> +<!--end of index.content.module-->]]> + +<!-- ...................................................................... --> +<!-- RefEntry ............................................................. --> + +<!ENTITY % refentry.content.module "INCLUDE"> +<![%refentry.content.module;[ +<!ENTITY % refentry.module "INCLUDE"> +<![%refentry.module;[ +<!ENTITY % local.refentry.attrib ""> +<!ENTITY % refentry.role.attrib "%role.attrib;"> + +<!ENTITY % refentry.element "INCLUDE"> +<![%refentry.element;[ +<!--doc:A reference page (originally a UNIX man-style reference page).--> +<!ELEMENT refentry %ho; (beginpage?, + (%ndxterm.class;)*, + refentryinfo?, refmeta?, (remark|%link.char.class;)*, + refnamediv+, refsynopsisdiv?, (refsect1+|refsection+)) + %ubiq.inclusion;> +<!--end of refentry.element-->]]> + +<!ENTITY % refentry.attlist "INCLUDE"> +<![%refentry.attlist;[ +<!ATTLIST refentry + %status.attrib; + %common.attrib; + %refentry.role.attrib; + %local.refentry.attrib; +> +<!--end of refentry.attlist-->]]> +<!--end of refentry.module-->]]> + +<!ENTITY % refmeta.module "INCLUDE"> +<![%refmeta.module;[ +<!ENTITY % local.refmeta.attrib ""> +<!ENTITY % refmeta.role.attrib "%role.attrib;"> + +<!ENTITY % refmeta.element "INCLUDE"> +<![%refmeta.element;[ +<!--doc:Meta-information for a reference entry.--> +<!ELEMENT refmeta %ho; ((%ndxterm.class;)*, + refentrytitle, manvolnum?, refmiscinfo*, + (%ndxterm.class;)*) + %beginpage.exclusion;> +<!--end of refmeta.element-->]]> + +<!ENTITY % refmeta.attlist "INCLUDE"> +<![%refmeta.attlist;[ +<!ATTLIST refmeta + %common.attrib; + %refmeta.role.attrib; + %local.refmeta.attrib; +> +<!--end of refmeta.attlist-->]]> +<!--end of refmeta.module-->]]> + +<!ENTITY % refmiscinfo.module "INCLUDE"> +<![%refmiscinfo.module;[ +<!ENTITY % local.refmiscinfo.attrib ""> +<!ENTITY % refmiscinfo.role.attrib "%role.attrib;"> + +<!ENTITY % refmiscinfo.element "INCLUDE"> +<![%refmiscinfo.element;[ +<!--doc:Meta-information for a reference entry other than the title and volume number.--> +<!ELEMENT refmiscinfo %ho; (%docinfo.char.mix;)*> +<!--end of refmiscinfo.element-->]]> + +<!-- Class: Freely assignable parameter; no default --> + + +<!ENTITY % refmiscinfo.attlist "INCLUDE"> +<![%refmiscinfo.attlist;[ +<!ATTLIST refmiscinfo + class CDATA #IMPLIED + %common.attrib; + %refmiscinfo.role.attrib; + %local.refmiscinfo.attrib; +> +<!--end of refmiscinfo.attlist-->]]> +<!--end of refmiscinfo.module-->]]> + +<!ENTITY % refnamediv.module "INCLUDE"> +<![%refnamediv.module;[ +<!ENTITY % local.refnamediv.attrib ""> +<!ENTITY % refnamediv.role.attrib "%role.attrib;"> + +<!ENTITY % refnamediv.element "INCLUDE"> +<![%refnamediv.element;[ +<!--doc:The name, purpose, and classification of a reference page.--> +<!ELEMENT refnamediv %ho; (refdescriptor?, refname+, refpurpose, refclass*, + (remark|%link.char.class;)*)> +<!--end of refnamediv.element-->]]> + +<!ENTITY % refnamediv.attlist "INCLUDE"> +<![%refnamediv.attlist;[ +<!ATTLIST refnamediv + %common.attrib; + %refnamediv.role.attrib; + %local.refnamediv.attrib; +> +<!--end of refnamediv.attlist-->]]> +<!--end of refnamediv.module-->]]> + +<!ENTITY % refdescriptor.module "INCLUDE"> +<![%refdescriptor.module;[ +<!ENTITY % local.refdescriptor.attrib ""> +<!ENTITY % refdescriptor.role.attrib "%role.attrib;"> + +<!ENTITY % refdescriptor.element "INCLUDE"> +<![%refdescriptor.element;[ +<!--doc:A description of the topic of a reference page.--> +<!ELEMENT refdescriptor %ho; (%refname.char.mix;)*> +<!--end of refdescriptor.element-->]]> + +<!ENTITY % refdescriptor.attlist "INCLUDE"> +<![%refdescriptor.attlist;[ +<!ATTLIST refdescriptor + %common.attrib; + %refdescriptor.role.attrib; + %local.refdescriptor.attrib; +> +<!--end of refdescriptor.attlist-->]]> +<!--end of refdescriptor.module-->]]> + +<!ENTITY % refname.module "INCLUDE"> +<![%refname.module;[ +<!ENTITY % local.refname.attrib ""> +<!ENTITY % refname.role.attrib "%role.attrib;"> + +<!ENTITY % refname.element "INCLUDE"> +<![%refname.element;[ +<!--doc:The name of (one of) the subject(s) of a reference page.--> +<!ELEMENT refname %ho; (%refname.char.mix;)*> +<!--end of refname.element-->]]> + +<!ENTITY % refname.attlist "INCLUDE"> +<![%refname.attlist;[ +<!ATTLIST refname + %common.attrib; + %refname.role.attrib; + %local.refname.attrib; +> +<!--end of refname.attlist-->]]> +<!--end of refname.module-->]]> + +<!ENTITY % refpurpose.module "INCLUDE"> +<![%refpurpose.module;[ +<!ENTITY % local.refpurpose.attrib ""> +<!ENTITY % refpurpose.role.attrib "%role.attrib;"> + +<!ENTITY % refpurpose.element "INCLUDE"> +<![%refpurpose.element;[ +<!--doc:A short (one sentence) synopsis of the topic of a reference page.--> +<!ELEMENT refpurpose %ho; (%refinline.char.mix;)*> +<!--end of refpurpose.element-->]]> + +<!ENTITY % refpurpose.attlist "INCLUDE"> +<![%refpurpose.attlist;[ +<!ATTLIST refpurpose + %common.attrib; + %refpurpose.role.attrib; + %local.refpurpose.attrib; +> +<!--end of refpurpose.attlist-->]]> +<!--end of refpurpose.module-->]]> + +<!ENTITY % refclass.module "INCLUDE"> +<![%refclass.module;[ +<!ENTITY % local.refclass.attrib ""> +<!ENTITY % refclass.role.attrib "%role.attrib;"> + +<!ENTITY % refclass.element "INCLUDE"> +<![%refclass.element;[ +<!--doc:The scope or other indication of applicability of a reference entry.--> +<!ELEMENT refclass %ho; (%refclass.char.mix;)*> +<!--end of refclass.element-->]]> + +<!ENTITY % refclass.attlist "INCLUDE"> +<![%refclass.attlist;[ +<!ATTLIST refclass + %common.attrib; + %refclass.role.attrib; + %local.refclass.attrib; +> +<!--end of refclass.attlist-->]]> +<!--end of refclass.module-->]]> + +<!ENTITY % refsynopsisdiv.module "INCLUDE"> +<![%refsynopsisdiv.module;[ +<!ENTITY % local.refsynopsisdiv.attrib ""> +<!ENTITY % refsynopsisdiv.role.attrib "%role.attrib;"> + +<!ENTITY % refsynopsisdiv.element "INCLUDE"> +<![%refsynopsisdiv.element;[ +<!--doc:A syntactic synopsis of the subject of the reference page.--> +<!ELEMENT refsynopsisdiv %ho; (refsynopsisdivinfo?, (%refsect.title.content;)?, + (((%refcomponent.mix;)+, refsect2*) | (refsect2+)))> +<!--end of refsynopsisdiv.element-->]]> + +<!ENTITY % refsynopsisdiv.attlist "INCLUDE"> +<![%refsynopsisdiv.attlist;[ +<!ATTLIST refsynopsisdiv + %common.attrib; + %refsynopsisdiv.role.attrib; + %local.refsynopsisdiv.attrib; +> +<!--end of refsynopsisdiv.attlist-->]]> +<!--end of refsynopsisdiv.module-->]]> + +<!ENTITY % refsection.module "INCLUDE"> +<![%refsection.module;[ +<!ENTITY % local.refsection.attrib ""> +<!ENTITY % refsection.role.attrib "%role.attrib;"> + +<!ENTITY % refsection.element "INCLUDE"> +<![%refsection.element;[ +<!--doc:A recursive section in a refentry.--> +<!ELEMENT refsection %ho; (refsectioninfo?, (%refsect.title.content;), + (((%refcomponent.mix;)+, refsection*) | refsection+))> +<!--end of refsection.element-->]]> + +<!ENTITY % refsection.attlist "INCLUDE"> +<![%refsection.attlist;[ +<!ATTLIST refsection + %status.attrib; + %common.attrib; + %refsection.role.attrib; + %local.refsection.attrib; +> +<!--end of refsection.attlist-->]]> +<!--end of refsection.module-->]]> + +<!ENTITY % refsect1.module "INCLUDE"> +<![%refsect1.module;[ +<!ENTITY % local.refsect1.attrib ""> +<!ENTITY % refsect1.role.attrib "%role.attrib;"> + +<!ENTITY % refsect1.element "INCLUDE"> +<![%refsect1.element;[ +<!--doc:A major subsection of a reference entry.--> +<!ELEMENT refsect1 %ho; (refsect1info?, (%refsect.title.content;), + (((%refcomponent.mix;)+, refsect2*) | refsect2+))> +<!--end of refsect1.element-->]]> + +<!ENTITY % refsect1.attlist "INCLUDE"> +<![%refsect1.attlist;[ +<!ATTLIST refsect1 + %status.attrib; + %common.attrib; + %refsect1.role.attrib; + %local.refsect1.attrib; +> +<!--end of refsect1.attlist-->]]> +<!--end of refsect1.module-->]]> + +<!ENTITY % refsect2.module "INCLUDE"> +<![%refsect2.module;[ +<!ENTITY % local.refsect2.attrib ""> +<!ENTITY % refsect2.role.attrib "%role.attrib;"> + +<!ENTITY % refsect2.element "INCLUDE"> +<![%refsect2.element;[ +<!--doc:A subsection of a RefSect1.--> +<!ELEMENT refsect2 %ho; (refsect2info?, (%refsect.title.content;), + (((%refcomponent.mix;)+, refsect3*) | refsect3+))> +<!--end of refsect2.element-->]]> + +<!ENTITY % refsect2.attlist "INCLUDE"> +<![%refsect2.attlist;[ +<!ATTLIST refsect2 + %status.attrib; + %common.attrib; + %refsect2.role.attrib; + %local.refsect2.attrib; +> +<!--end of refsect2.attlist-->]]> +<!--end of refsect2.module-->]]> + +<!ENTITY % refsect3.module "INCLUDE"> +<![%refsect3.module;[ +<!ENTITY % local.refsect3.attrib ""> +<!ENTITY % refsect3.role.attrib "%role.attrib;"> + +<!ENTITY % refsect3.element "INCLUDE"> +<![%refsect3.element;[ +<!--doc:A subsection of a RefSect2.--> +<!ELEMENT refsect3 %ho; (refsect3info?, (%refsect.title.content;), + (%refcomponent.mix;)+)> +<!--end of refsect3.element-->]]> + +<!ENTITY % refsect3.attlist "INCLUDE"> +<![%refsect3.attlist;[ +<!ATTLIST refsect3 + %status.attrib; + %common.attrib; + %refsect3.role.attrib; + %local.refsect3.attrib; +> +<!--end of refsect3.attlist-->]]> +<!--end of refsect3.module-->]]> +<!--end of refentry.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Article .............................................................. --> + +<!ENTITY % article.module "INCLUDE"> +<![%article.module;[ +<!-- An Article is a chapter-level, stand-alone document that is often, + but need not be, collected into a Book. --> + +<!ENTITY % local.article.attrib ""> +<!ENTITY % article.role.attrib "%role.attrib;"> + +<!ENTITY % article.element "INCLUDE"> +<![%article.element;[ +<!--doc:An article.--> +<!ELEMENT article %ho; ((%div.title.content;)?, articleinfo?, tocchap?, lot*, + (%bookcomponent.content;), + (%nav.class;|%appendix.class;|colophon|ackno)*) + %ubiq.inclusion;> +<!--end of article.element-->]]> + +<!-- Class: Indicates the type of a particular article; + all articles have the same structure and general purpose. + No default. --> +<!-- ParentBook: ID of the enclosing Book --> + + +<!ENTITY % article.attlist "INCLUDE"> +<![%article.attlist;[ +<!ATTLIST article + class (journalarticle + |productsheet + |whitepaper + |techreport + |specification + |faq) #IMPLIED + parentbook IDREF #IMPLIED + %status.attrib; + %common.attrib; + %article.role.attrib; + %local.article.attrib; +> +<!--end of article.attlist-->]]> +<!--end of article.module-->]]> + +<!-- End of DocBook document hierarchy module V4.5 ........................ --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/dbnotnx.mod b/Utilities/xml/docbook-4.5/dbnotnx.mod new file mode 100644 index 0000000..2416049 --- /dev/null +++ b/Utilities/xml/docbook-4.5/dbnotnx.mod @@ -0,0 +1,101 @@ +<!-- ...................................................................... --> +<!-- DocBook notations module V4.5 ........................................ --> +<!-- File dbnotnx.mod ..................................................... --> + +<!-- Copyright 1992-2004 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This module contains the notation declarations used by DocBook. + + In DTD driver files referring to this module, please use an entity + declaration that uses the public identifier shown below: + + <!ENTITY % dbnotn PUBLIC + "-//OASIS//ENTITIES DocBook Notations V4.5//EN" + "dbnotnx.mod"> + %dbnotn; + + See the documentation for detailed information on the parameter + entity and module scheme used in DocBook, customizing DocBook and + planning for interchange, and changes made since the last release + of DocBook. +--> + +<!ENTITY % local.notation.class ""> +<!ENTITY % notation.class + "BMP| CGM-CHAR | CGM-BINARY | CGM-CLEAR | DITROFF | DVI + | EPS | EQN | FAX | GIF | GIF87a | GIF89a + | JPG | JPEG | IGES | PCX + | PIC | PNG | PS | SGML | TBL | TEX | TIFF | WMF | WPG + | SVG | PDF | SWF + | linespecific + %local.notation.class;"> + +<!NOTATION BMP PUBLIC +"+//ISBN 0-7923-94.2-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN"> +<!NOTATION CGM-CHAR PUBLIC "ISO 8632/2//NOTATION Character encoding//EN"> +<!NOTATION CGM-BINARY PUBLIC "ISO 8632/3//NOTATION Binary encoding//EN"> +<!NOTATION CGM-CLEAR PUBLIC "ISO 8632/4//NOTATION Clear text encoding//EN"> +<!NOTATION DITROFF SYSTEM "DITROFF"> +<!NOTATION DVI SYSTEM "DVI"> +<!NOTATION EPS PUBLIC +"+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref. Manual//EN"> +<!NOTATION EQN SYSTEM "EQN"> +<!NOTATION FAX PUBLIC +"-//USA-DOD//NOTATION CCITT Group 4 Facsimile Type 1 Untiled Raster//EN"> +<!NOTATION GIF SYSTEM "GIF"> +<!NOTATION GIF87a PUBLIC +"-//CompuServe//NOTATION Graphics Interchange Format 87a//EN"> + +<!NOTATION GIF89a PUBLIC +"-//CompuServe//NOTATION Graphics Interchange Format 89a//EN"> +<!NOTATION JPG SYSTEM "JPG"> +<!NOTATION JPEG SYSTEM "JPG"> +<!NOTATION IGES PUBLIC +"-//USA-DOD//NOTATION (ASME/ANSI Y14.26M-1987) Initial Graphics Exchange Specification//EN"> +<!NOTATION PCX PUBLIC +"+//ISBN 0-7923-94.2-1::Graphic Notation//NOTATION ZSoft PCX bitmap//EN"> +<!NOTATION PIC SYSTEM "PIC"> +<!NOTATION PNG SYSTEM "http://www.w3.org/TR/REC-png"> +<!NOTATION PS SYSTEM "PS"> +<!NOTATION SGML PUBLIC +"ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN"> +<!NOTATION TBL SYSTEM "TBL"> +<!NOTATION TEX PUBLIC +"+//ISBN 0-201-13448-9::Knuth//NOTATION The TeXbook//EN"> +<!NOTATION TIFF SYSTEM "TIFF"> +<!NOTATION WMF PUBLIC +"+//ISBN 0-7923-94.2-1::Graphic Notation//NOTATION Microsoft Windows Metafile//EN"> +<!NOTATION WPG SYSTEM "WPG"> <!--WordPerfect Graphic format--> +<!NOTATION SVG SYSTEM "http://www.w3.org/TR/SVG/"> +<!NOTATION PDF SYSTEM "http://www.adobe.com/products/acrobat/adobepdf.html"> +<!NOTATION SWF SYSTEM "http://www.macromedia.com/software/flash"> +<!NOTATION linespecific SYSTEM "linespecific"> + +<!-- End of DocBook notations module V4.5 ................................. --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/dbpoolx.mod b/Utilities/xml/docbook-4.5/dbpoolx.mod new file mode 100644 index 0000000..53b0704 --- /dev/null +++ b/Utilities/xml/docbook-4.5/dbpoolx.mod @@ -0,0 +1,8701 @@ +<!-- ...................................................................... --> +<!-- DocBook XML information pool module V4.5 ............................. --> +<!-- File dbpoolx.mod ..................................................... --> + +<!-- Copyright 1992-2004 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook XML DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook XML DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This module contains the definitions for the objects, inline + elements, and so on that are available to be used as the main + content of DocBook documents. Some elements are useful for general + publishing, and others are useful specifically for computer + documentation. + + This module has the following dependencies on other modules: + + o It assumes that a %notation.class; entity is defined by the + driver file or other high-level module. This entity is + referenced in the NOTATION attributes for the graphic-related and + ModeSpec elements. + + o It assumes that an appropriately parameterized table module is + available for use with the table-related elements. + + In DTD driver files referring to this module, please use an entity + declaration that uses the public identifier shown below: + + <!ENTITY % dbpool PUBLIC + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" + "dbpoolx.mod"> + %dbpool; + + See the documentation for detailed information on the parameter + entity and module scheme used in DocBook, customizing DocBook and + planning for interchange, and changes made since the last release + of DocBook. +--> + +<!-- ...................................................................... --> +<!-- Forms entities ....................................................... --> +<!-- These PEs provide the hook by which the forms module can be inserted --> +<!-- into the DTD. --> +<!ENTITY % forminlines.hook ""> +<!ENTITY % forms.hook ""> + +<!-- ...................................................................... --> +<!-- General-purpose semantics entities ................................... --> + +<!ENTITY % yesorno.attvals "CDATA"> + +<!-- ...................................................................... --> +<!-- Entities for module inclusions ....................................... --> + +<!ENTITY % dbpool.redecl.module "IGNORE"> + +<!-- ...................................................................... --> +<!-- Entities for element classes and mixtures ............................ --> + +<!-- "Ubiquitous" classes: ndxterm.class and beginpage --> + +<!ENTITY % local.ndxterm.class ""> +<!ENTITY % ndxterm.class + "indexterm %local.ndxterm.class;"> + +<!-- Object-level classes ................................................. --> + +<!ENTITY % local.list.class ""> +<!ENTITY % list.class + "calloutlist|glosslist|bibliolist|itemizedlist|orderedlist|segmentedlist + |simplelist|variablelist %local.list.class;"> + +<!ENTITY % local.admon.class ""> +<!ENTITY % admon.class + "caution|important|note|tip|warning %local.admon.class;"> + +<!ENTITY % local.linespecific.class ""> +<!ENTITY % linespecific.class + "literallayout|programlisting|programlistingco|screen + |screenco|screenshot %local.linespecific.class;"> + +<!ENTITY % local.method.synop.class ""> +<!ENTITY % method.synop.class + "constructorsynopsis + |destructorsynopsis + |methodsynopsis %local.method.synop.class;"> + +<!ENTITY % local.synop.class ""> +<!ENTITY % synop.class + "synopsis|cmdsynopsis|funcsynopsis + |classsynopsis|fieldsynopsis + |%method.synop.class; %local.synop.class;"> + +<!ENTITY % local.para.class ""> +<!ENTITY % para.class + "formalpara|para|simpara %local.para.class;"> + +<!ENTITY % local.informal.class ""> +<!ENTITY % informal.class + "address|blockquote + |graphic|graphicco|mediaobject|mediaobjectco + |informalequation + |informalexample + |informalfigure + |informaltable %local.informal.class;"> + +<!ENTITY % local.formal.class ""> +<!ENTITY % formal.class + "equation|example|figure|table %local.formal.class;"> + +<!-- The DocBook TC may produce an official EBNF module for DocBook. --> +<!-- This PE provides the hook by which it can be inserted into the DTD. --> +<!ENTITY % ebnf.block.hook ""> + +<!ENTITY % local.compound.class ""> +<!ENTITY % compound.class + "msgset|procedure|sidebar|qandaset|task + %ebnf.block.hook; + %local.compound.class;"> + +<!ENTITY % local.genobj.class ""> +<!ENTITY % genobj.class + "anchor|bridgehead|remark|highlights + %local.genobj.class;"> + +<!ENTITY % local.descobj.class ""> +<!ENTITY % descobj.class + "abstract|authorblurb|epigraph + %local.descobj.class;"> + +<!-- Character-level classes .............................................. --> + +<!ENTITY % local.xref.char.class ""> +<!ENTITY % xref.char.class + "footnoteref|xref|biblioref %local.xref.char.class;"> + +<!ENTITY % local.gen.char.class ""> +<!ENTITY % gen.char.class + "abbrev|acronym|citation|citerefentry|citetitle|citebiblioid|emphasis + |firstterm|foreignphrase|glossterm|termdef|footnote|phrase + |orgname|quote|trademark|wordasword + |personname %local.gen.char.class;"> + +<!ENTITY % local.link.char.class ""> +<!ENTITY % link.char.class + "link|olink|ulink %local.link.char.class;"> + +<!-- The DocBook TC may produce an official EBNF module for DocBook. --> +<!-- This PE provides the hook by which it can be inserted into the DTD. --> +<!ENTITY % ebnf.inline.hook ""> + +<!ENTITY % local.tech.char.class ""> +<!ENTITY % tech.char.class + "action|application + |classname|methodname|interfacename|exceptionname + |ooclass|oointerface|ooexception + |package + |command|computeroutput + |database|email|envar|errorcode|errorname|errortype|errortext|filename + |function|guibutton|guiicon|guilabel|guimenu|guimenuitem + |guisubmenu|hardware|interface|keycap + |keycode|keycombo|keysym|literal|code|constant|markup|medialabel + |menuchoice|mousebutton|option|optional|parameter + |prompt|property|replaceable|returnvalue|sgmltag|structfield + |structname|symbol|systemitem|uri|token|type|userinput|varname + %ebnf.inline.hook; + %local.tech.char.class;"> + +<!ENTITY % local.base.char.class ""> +<!ENTITY % base.char.class + "anchor %local.base.char.class;"> + +<!ENTITY % local.docinfo.char.class ""> +<!ENTITY % docinfo.char.class + "author|authorinitials|corpauthor|corpcredit|modespec|othercredit + |productname|productnumber|revhistory + %local.docinfo.char.class;"> + +<!ENTITY % local.other.char.class ""> +<!ENTITY % other.char.class + "remark|subscript|superscript %local.other.char.class;"> + +<!ENTITY % local.inlineobj.char.class ""> +<!ENTITY % inlineobj.char.class + "inlinegraphic|inlinemediaobject|inlineequation %local.inlineobj.char.class;"> + +<!-- ...................................................................... --> +<!-- Entities for content models .......................................... --> + +<!ENTITY % formalobject.title.content "title, titleabbrev?"> + +<!-- Redeclaration placeholder ............................................ --> + +<!-- For redeclaring entities that are declared after this point while + retaining their references to the entities that are declared before + this point --> + +<![%dbpool.redecl.module;[ +<!-- Defining rdbpool here makes some buggy XML parsers happy. --> +<!ENTITY % rdbpool ""> +%rdbpool; +<!--end of dbpool.redecl.module-->]]> + +<!-- Object-level mixtures ................................................ --> + +<!-- + list admn line synp para infm form cmpd gen desc +Component mixture X X X X X X X X X X +Sidebar mixture X X X X X X X a X +Footnote mixture X X X X X +Example mixture X X X X X +Highlights mixture X X X +Paragraph mixture X X X X +Admonition mixture X X X X X X b c +Figure mixture X X X +Table entry mixture X X X X d +Glossary def mixture X X X X X e +Legal notice mixture X X X X f + +a. Just Procedure; not Sidebar itself or MsgSet. +b. No MsgSet. +c. No Highlights. +d. Just Graphic; no other informal objects. +e. No Anchor, BridgeHead, or Highlights. +f. Just BlockQuote; no other informal objects. +--> + +<!ENTITY % local.component.mix ""> +<!ENTITY % component.mix + "%list.class; |%admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |%compound.class; + |%genobj.class; |%descobj.class; + |%ndxterm.class; |beginpage + %forms.hook; + %local.component.mix;"> + +<!ENTITY % local.sidebar.mix ""> +<!ENTITY % sidebar.mix + "%list.class; |%admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |procedure + |%genobj.class; + |%ndxterm.class; |beginpage + %forms.hook; + %local.sidebar.mix;"> + +<!ENTITY % local.qandaset.mix ""> +<!ENTITY % qandaset.mix + "%list.class; |%admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |procedure + |%genobj.class; + |%ndxterm.class; + %forms.hook; + %local.qandaset.mix;"> + +<!ENTITY % local.revdescription.mix ""> +<!ENTITY % revdescription.mix + "%list.class; |%admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |procedure + |%genobj.class; + |%ndxterm.class; + %local.revdescription.mix;"> + +<!ENTITY % local.footnote.mix ""> +<!ENTITY % footnote.mix + "%list.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + %local.footnote.mix;"> + +<!ENTITY % local.example.mix ""> +<!ENTITY % example.mix + "%list.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%ndxterm.class; |beginpage + |procedure + %forms.hook; + %local.example.mix;"> + +<!ENTITY % local.highlights.mix ""> +<!ENTITY % highlights.mix + "%list.class; |%admon.class; + |%para.class; + |%ndxterm.class; + %local.highlights.mix;"> + +<!-- %formal.class; is explicitly excluded from many contexts in which + paragraphs are used --> +<!ENTITY % local.para.mix ""> +<!ENTITY % para.mix + "%list.class; |%admon.class; + |%linespecific.class; + |%informal.class; + |%formal.class; + %local.para.mix;"> + +<!ENTITY % local.admon.mix ""> +<!ENTITY % admon.mix + "%list.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; |procedure|sidebar + |anchor|bridgehead|remark + |%ndxterm.class; |beginpage + %forms.hook; + %local.admon.mix;"> + +<!ENTITY % local.figure.mix ""> +<!ENTITY % figure.mix + "%linespecific.class; |%synop.class; + |%informal.class; + |%ndxterm.class; |beginpage + %forms.hook; + %local.figure.mix;"> + +<!ENTITY % local.tabentry.mix ""> +<!ENTITY % tabentry.mix + "%list.class; |%admon.class; + |%linespecific.class; + |%para.class; |graphic|mediaobject + %forms.hook; + %local.tabentry.mix;"> + +<!ENTITY % local.glossdef.mix ""> +<!ENTITY % glossdef.mix + "%list.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%formal.class; + |remark + |%ndxterm.class; |beginpage + %local.glossdef.mix;"> + +<!ENTITY % local.legalnotice.mix ""> +<!ENTITY % legalnotice.mix + "%list.class; |%admon.class; + |%linespecific.class; + |%para.class; |blockquote + |%ndxterm.class; |beginpage + %local.legalnotice.mix;"> + +<!ENTITY % local.textobject.mix ""> +<!ENTITY % textobject.mix + "%list.class; |%admon.class; + |%linespecific.class; + |%para.class; |blockquote + %local.textobject.mix;"> + +<!ENTITY % local.mediaobject.mix ""> +<!ENTITY % mediaobject.mix + "videoobject|audioobject|imageobject|imageobjectco|textobject %local.mediaobject.mix;"> + +<!ENTITY % local.listpreamble.mix ""> +<!ENTITY % listpreamble.mix + " %admon.class; + |%linespecific.class; |%synop.class; + |%para.class; |%informal.class; + |%genobj.class; |%descobj.class; + |%ndxterm.class; |beginpage + %forms.hook; + %local.listpreamble.mix;"> + +<!-- Character-level mixtures ............................................. --> + +<![%sgml.features;[ +<!ENTITY % local.ubiq.mix ""> +<!ENTITY % ubiq.mix "%ndxterm.class;|beginpage %local.ubiq.mix;"> + +<!ENTITY % ubiq.exclusion "-(%ubiq.mix)"> +<!ENTITY % ubiq.inclusion "+(%ubiq.mix)"> + +<!ENTITY % footnote.exclusion "-(footnote|%formal.class;)"> +<!ENTITY % highlights.exclusion "-(%ubiq.mix;|%formal.class;)"> +<!ENTITY % admon.exclusion "-(%admon.class;)"> +<!ENTITY % formal.exclusion "-(%formal.class;)"> +<!ENTITY % acronym.exclusion "-(acronym)"> +<!ENTITY % beginpage.exclusion "-(beginpage)"> +<!ENTITY % ndxterm.exclusion "-(%ndxterm.class;)"> +<!ENTITY % blockquote.exclusion "-(epigraph)"> +<!ENTITY % remark.exclusion "-(remark|%ubiq.mix;)"> +<!ENTITY % glossterm.exclusion "-(glossterm)"> +<!ENTITY % links.exclusion "-(link|olink|ulink|xref|biblioref)"> +]]><!-- sgml.features --> + +<!-- not [sgml.features[ --> +<!ENTITY % local.ubiq.mix ""> +<!ENTITY % ubiq.mix ""> + +<!ENTITY % ubiq.exclusion ""> +<!ENTITY % ubiq.inclusion ""> + +<!ENTITY % footnote.exclusion ""> +<!ENTITY % highlights.exclusion ""> +<!ENTITY % admon.exclusion ""> +<!ENTITY % formal.exclusion ""> +<!ENTITY % acronym.exclusion ""> +<!ENTITY % beginpage.exclusion ""> +<!ENTITY % ndxterm.exclusion ""> +<!ENTITY % blockquote.exclusion ""> +<!ENTITY % remark.exclusion ""> +<!ENTITY % glossterm.exclusion ""> +<!ENTITY % links.exclusion ""> +<!-- ]] not sgml.features --> + +<!-- + #PCD xref word link cptr base dnfo othr inob (synop) +para.char.mix X X X X X X X X X +title.char.mix X X X X X X X X X +ndxterm.char.mix X X X X X X X X a +cptr.char.mix X X X X X a +smallcptr.char.mix X b a +word.char.mix X c X X X a +docinfo.char.mix X d X b X a + +a. Just InlineGraphic; no InlineEquation. +b. Just Replaceable; no other computer terms. +c. Just Emphasis and Trademark; no other word elements. +d. Just Acronym, Emphasis, and Trademark; no other word elements. +--> + +<!ENTITY % local.para.char.mix ""> +<!ENTITY % para.char.mix + "#PCDATA + |%xref.char.class; |%gen.char.class; + |%link.char.class; |%tech.char.class; + |%base.char.class; |%docinfo.char.class; + |%other.char.class; |%inlineobj.char.class; + |%synop.class; + |%ndxterm.class; |beginpage + %forminlines.hook; + %local.para.char.mix;"> + +<!ENTITY % local.title.char.mix ""> +<!ENTITY % title.char.mix + "#PCDATA + |%xref.char.class; |%gen.char.class; + |%link.char.class; |%tech.char.class; + |%base.char.class; |%docinfo.char.class; + |%other.char.class; |%inlineobj.char.class; + |%ndxterm.class; + %local.title.char.mix;"> + +<!ENTITY % local.ndxterm.char.mix ""> +<!ENTITY % ndxterm.char.mix + "#PCDATA + |%xref.char.class; |%gen.char.class; + |%link.char.class; |%tech.char.class; + |%base.char.class; |%docinfo.char.class; + |%other.char.class; |inlinegraphic|inlinemediaobject + %local.ndxterm.char.mix;"> + +<!ENTITY % local.cptr.char.mix ""> +<!ENTITY % cptr.char.mix + "#PCDATA + |%link.char.class; |%tech.char.class; + |%base.char.class; + |%other.char.class; |inlinegraphic|inlinemediaobject + |%ndxterm.class; |beginpage + %local.cptr.char.mix;"> + +<!ENTITY % local.smallcptr.char.mix ""> +<!ENTITY % smallcptr.char.mix + "#PCDATA + |replaceable + |inlinegraphic|inlinemediaobject + |%ndxterm.class; |beginpage + %local.smallcptr.char.mix;"> + +<!ENTITY % local.word.char.mix ""> +<!ENTITY % word.char.mix + "#PCDATA + |acronym|emphasis|trademark + |%link.char.class; + |%base.char.class; + |%other.char.class; |inlinegraphic|inlinemediaobject + |%ndxterm.class; |beginpage + %local.word.char.mix;"> + +<!ENTITY % local.docinfo.char.mix ""> +<!ENTITY % docinfo.char.mix + "#PCDATA + |%link.char.class; + |emphasis|trademark + |replaceable + |%other.char.class; |inlinegraphic|inlinemediaobject + |%ndxterm.class; + %local.docinfo.char.mix;"> +<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)--> +<!--ENTITY % person.ident.mix (see Bibliographic section, below)--> + +<!-- ...................................................................... --> +<!-- Entities for attributes and attribute components ..................... --> + +<!-- Effectivity attributes ............................................... --> + + +<!-- Arch: Computer or chip architecture to which element applies; no + default --> + +<!ENTITY % arch.attrib + "arch CDATA #IMPLIED"> + +<!-- Condition: General-purpose effectivity attribute --> + +<!ENTITY % condition.attrib + "condition CDATA #IMPLIED"> + +<!-- Conformance: Standards conformance characteristics --> + +<!ENTITY % conformance.attrib + "conformance NMTOKENS #IMPLIED"> + + +<!-- OS: Operating system to which element applies; no default --> + +<!ENTITY % os.attrib + "os CDATA #IMPLIED"> + + +<!-- Revision: Editorial revision to which element belongs; no default --> + +<!ENTITY % revision.attrib + "revision CDATA #IMPLIED"> + +<!-- Security: Security classification; no default --> + +<!ENTITY % security.attrib + "security CDATA #IMPLIED"> + +<!-- UserLevel: Level of user experience to which element applies; no + default --> + +<!ENTITY % userlevel.attrib + "userlevel CDATA #IMPLIED"> + +<!-- Vendor: Computer vendor to which element applies; no default --> + +<!ENTITY % vendor.attrib + "vendor CDATA #IMPLIED"> + +<!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default --> + +<!ENTITY % wordsize.attrib + "wordsize CDATA #IMPLIED"> + +<!ENTITY % local.effectivity.attrib ""> +<!ENTITY % effectivity.attrib + "%arch.attrib; + %condition.attrib; + %conformance.attrib; + %os.attrib; + %revision.attrib; + %security.attrib; + %userlevel.attrib; + %vendor.attrib; + %wordsize.attrib; + %local.effectivity.attrib;" +> + +<!-- Common attributes .................................................... --> + + +<!-- Id: Unique identifier of element; no default --> + +<!ENTITY % id.attrib + "id ID #IMPLIED"> + + +<!-- Id: Unique identifier of element; a value must be supplied; no + default --> + +<!ENTITY % idreq.attrib + "id ID #REQUIRED"> + + +<!-- Lang: Indicator of language in which element is written, for + translation, character set management, etc.; no default --> + +<!ENTITY % lang.attrib + "lang CDATA #IMPLIED"> + + +<!-- Remap: Previous role of element before conversion; no default --> + +<!ENTITY % remap.attrib + "remap CDATA #IMPLIED"> + + +<!-- Role: New role of element in local environment; no default --> + +<!ENTITY % role.attrib + "role CDATA #IMPLIED"> + + +<!-- XRefLabel: Alternate labeling string for XRef text generation; + default is usually title or other appropriate label text already + contained in element --> + +<!ENTITY % xreflabel.attrib + "xreflabel CDATA #IMPLIED"> + + +<!-- RevisionFlag: Revision status of element; default is that element + wasn't revised --> + +<!ENTITY % revisionflag.attrib + "revisionflag (changed + |added + |deleted + |off) #IMPLIED"> + +<!ENTITY % local.common.attrib ""> + +<!-- dir: Bidirectional override --> + +<!ENTITY % dir.attrib + "dir (ltr + |rtl + |lro + |rlo) #IMPLIED"> + +<!-- xml:base: base URI --> + +<![%sgml.features;[ +<!ENTITY % xml-base.attrib ""> +]]> +<!ENTITY % xml-base.attrib + "xml:base CDATA #IMPLIED"> + +<!-- Role is included explicitly on each element --> + +<!ENTITY % common.attrib + "%id.attrib; + %lang.attrib; + %remap.attrib; + %xreflabel.attrib; + %revisionflag.attrib; + %effectivity.attrib; + %dir.attrib; + %xml-base.attrib; + %local.common.attrib;" +> + +<!-- Role is included explicitly on each element --> + +<!ENTITY % idreq.common.attrib + "%idreq.attrib; + %lang.attrib; + %remap.attrib; + %xreflabel.attrib; + %revisionflag.attrib; + %effectivity.attrib; + %dir.attrib; + %xml-base.attrib; + %local.common.attrib;" +> + +<!-- Semi-common attributes and other attribute entities .................. --> + +<!ENTITY % local.graphics.attrib ""> + +<!-- EntityRef: Name of an external entity containing the content + of the graphic --> +<!-- FileRef: Filename, qualified by a pathname if desired, + designating the file containing the content of the graphic --> +<!-- Format: Notation of the element content, if any --> +<!-- SrcCredit: Information about the source of the Graphic --> +<!-- Width: Same as CALS reprowid (desired width) --> +<!-- Depth: Same as CALS reprodep (desired depth) --> +<!-- Align: Same as CALS hplace with 'none' removed; #IMPLIED means + application-specific --> +<!-- Scale: Conflation of CALS hscale and vscale --> +<!-- Scalefit: Same as CALS scalefit --> + +<!ENTITY % graphics.attrib + " + entityref ENTITY #IMPLIED + fileref CDATA #IMPLIED + format (%notation.class;) #IMPLIED + srccredit CDATA #IMPLIED + width CDATA #IMPLIED + contentwidth CDATA #IMPLIED + depth CDATA #IMPLIED + contentdepth CDATA #IMPLIED + align (left + |right + |center) #IMPLIED + valign (top + |middle + |bottom) #IMPLIED + scale CDATA #IMPLIED + scalefit %yesorno.attvals; + #IMPLIED + %local.graphics.attrib;" +> + +<!ENTITY % local.keyaction.attrib ""> + +<!-- Action: Key combination type; default is unspecified if one + child element, Simul if there is more than one; if value is + Other, the OtherAction attribute must have a nonempty value --> +<!-- OtherAction: User-defined key combination type --> + +<!ENTITY % keyaction.attrib + " + action (click + |double-click + |press + |seq + |simul + |other) #IMPLIED + otheraction CDATA #IMPLIED + %local.keyaction.attrib;" +> + + +<!-- Label: Identifying number or string; default is usually the + appropriate number or string autogenerated by a formatter --> + +<!ENTITY % label.attrib + "label CDATA #IMPLIED"> + + +<!-- xml:space: whitespace treatment --> + +<![%sgml.features;[ +<!ENTITY % xml-space.attrib ""> +]]> +<!ENTITY % xml-space.attrib + "xml:space (preserve) #IMPLIED"> + +<!-- Format: whether element is assumed to contain significant white + space --> + +<!ENTITY % linespecific.attrib + "format NOTATION + (linespecific) 'linespecific' + %xml-space.attrib; + linenumbering (numbered|unnumbered) #IMPLIED + continuation (continues|restarts) #IMPLIED + startinglinenumber CDATA #IMPLIED + language CDATA #IMPLIED"> + +<!-- Linkend: link to related information; no default --> + +<!ENTITY % linkend.attrib + "linkend IDREF #IMPLIED"> + + +<!-- Linkend: required link to related information --> + +<!ENTITY % linkendreq.attrib + "linkend IDREF #REQUIRED"> + + +<!-- Linkends: link to one or more sets of related information; no + default --> + +<!ENTITY % linkends.attrib + "linkends IDREFS #IMPLIED"> + + +<!ENTITY % local.mark.attrib ""> +<!ENTITY % mark.attrib + "mark CDATA #IMPLIED + %local.mark.attrib;" +> + + +<!-- MoreInfo: whether element's content has an associated RefEntry --> + +<!ENTITY % moreinfo.attrib + "moreinfo (refentry|none) 'none'"> + + +<!-- Pagenum: number of page on which element appears; no default --> + +<!ENTITY % pagenum.attrib + "pagenum CDATA #IMPLIED"> + +<!ENTITY % local.status.attrib ""> + +<!-- Status: Editorial or publication status of the element + it applies to, such as "in review" or "approved for distribution" --> + +<!ENTITY % status.attrib + "status CDATA #IMPLIED + %local.status.attrib;" +> + + +<!-- Width: width of the longest line in the element to which it + pertains, in number of characters --> + +<!ENTITY % width.attrib + "width CDATA #IMPLIED"> + +<!-- ...................................................................... --> +<!-- Title elements ....................................................... --> + +<!ENTITY % title.module "INCLUDE"> +<![%title.module;[ +<!ENTITY % local.title.attrib ""> +<!ENTITY % title.role.attrib "%role.attrib;"> + +<!ENTITY % title.element "INCLUDE"> +<![%title.element;[ +<!--doc:The text of the title of a section of a document or of a formal block-level element.--> +<!ELEMENT title %ho; (%title.char.mix;)*> +<!--end of title.element-->]]> + +<!ENTITY % title.attlist "INCLUDE"> +<![%title.attlist;[ +<!ATTLIST title + %pagenum.attrib; + %common.attrib; + %title.role.attrib; + %local.title.attrib; +> +<!--end of title.attlist-->]]> +<!--end of title.module-->]]> + +<!ENTITY % titleabbrev.module "INCLUDE"> +<![%titleabbrev.module;[ +<!ENTITY % local.titleabbrev.attrib ""> +<!ENTITY % titleabbrev.role.attrib "%role.attrib;"> + +<!ENTITY % titleabbrev.element "INCLUDE"> +<![%titleabbrev.element;[ +<!--doc:The abbreviation of a Title.--> +<!ELEMENT titleabbrev %ho; (%title.char.mix;)*> +<!--end of titleabbrev.element-->]]> + +<!ENTITY % titleabbrev.attlist "INCLUDE"> +<![%titleabbrev.attlist;[ +<!ATTLIST titleabbrev + %common.attrib; + %titleabbrev.role.attrib; + %local.titleabbrev.attrib; +> +<!--end of titleabbrev.attlist-->]]> +<!--end of titleabbrev.module-->]]> + +<!ENTITY % subtitle.module "INCLUDE"> +<![%subtitle.module;[ +<!ENTITY % local.subtitle.attrib ""> +<!ENTITY % subtitle.role.attrib "%role.attrib;"> + +<!ENTITY % subtitle.element "INCLUDE"> +<![%subtitle.element;[ +<!--doc:The subtitle of a document.--> +<!ELEMENT subtitle %ho; (%title.char.mix;)*> +<!--end of subtitle.element-->]]> + +<!ENTITY % subtitle.attlist "INCLUDE"> +<![%subtitle.attlist;[ +<!ATTLIST subtitle + %common.attrib; + %subtitle.role.attrib; + %local.subtitle.attrib; +> +<!--end of subtitle.attlist-->]]> +<!--end of subtitle.module-->]]> + +<!-- ...................................................................... --> +<!-- Bibliographic entities and elements .................................. --> + +<!-- The bibliographic elements are typically used in the document + hierarchy. They do not appear in content models of information + pool elements. See also the document information elements, + below. --> + +<!ENTITY % local.person.ident.mix ""> +<!ENTITY % person.ident.mix + "honorific|firstname|surname|lineage|othername|affiliation + |authorblurb|contrib %local.person.ident.mix;"> + +<!ENTITY % local.bibliocomponent.mix ""> +<!ENTITY % bibliocomponent.mix + "abbrev|abstract|address|artpagenums|author + |authorgroup|authorinitials|bibliomisc|biblioset + |collab|confgroup|contractnum|contractsponsor + |copyright|corpauthor|corpname|corpcredit|date|edition + |editor|invpartnumber|isbn|issn|issuenum|orgname + |biblioid|citebiblioid|bibliosource|bibliorelation|bibliocoverage + |othercredit|pagenums|printhistory|productname + |productnumber|pubdate|publisher|publishername + |pubsnumber|releaseinfo|revhistory|seriesvolnums + |subtitle|title|titleabbrev|volumenum|citetitle + |personname|%person.ident.mix; + |%ndxterm.class; + %local.bibliocomponent.mix;"> + +<!-- I don't think this is well placed, but it needs to be here because of --> +<!-- the reference to bibliocomponent.mix --> +<!ENTITY % local.info.class ""> +<!ENTITY % info.class + "graphic | mediaobject | legalnotice | modespec + | subjectset | keywordset | itermset | %bibliocomponent.mix; + %local.info.class;"> + + +<!-- BiblioList ........................ --> + +<!ENTITY % bibliolist.module "INCLUDE"> +<![%bibliolist.module;[ +<!ENTITY % local.bibliolist.attrib ""> +<!ENTITY % bibliolist.role.attrib "%role.attrib;"> + +<!ENTITY % bibliolist.element "INCLUDE"> +<![%bibliolist.element;[ +<!--doc:A wrapper for a set of bibliography entries.--> +<!ELEMENT bibliolist %ho; (blockinfo?, (%formalobject.title.content;)?, + (biblioentry|bibliomixed)+)> +<!--end of bibliolist.element-->]]> + +<!ENTITY % bibliolist.attlist "INCLUDE"> +<![%bibliolist.attlist;[ +<!ATTLIST bibliolist + %common.attrib; + %bibliolist.role.attrib; + %local.bibliolist.attrib; +> +<!--end of bibliolist.attlist-->]]> +<!--end of bibliolist.module-->]]> + +<!ENTITY % biblioentry.module "INCLUDE"> +<![%biblioentry.module;[ +<!ENTITY % local.biblioentry.attrib ""> +<!ENTITY % biblioentry.role.attrib "%role.attrib;"> + +<!ENTITY % biblioentry.element "INCLUDE"> +<![%biblioentry.element;[ +<!--doc:An entry in a Bibliography.--> +<!ELEMENT biblioentry %ho; ((articleinfo | (%bibliocomponent.mix;))+) + %ubiq.exclusion;> +<!--end of biblioentry.element-->]]> + +<!ENTITY % biblioentry.attlist "INCLUDE"> +<![%biblioentry.attlist;[ +<!ATTLIST biblioentry + %common.attrib; + %biblioentry.role.attrib; + %local.biblioentry.attrib; +> +<!--end of biblioentry.attlist-->]]> +<!--end of biblioentry.module-->]]> + +<!ENTITY % bibliomixed.module "INCLUDE"> +<![%bibliomixed.module;[ +<!ENTITY % local.bibliomixed.attrib ""> +<!ENTITY % bibliomixed.role.attrib "%role.attrib;"> + +<!ENTITY % bibliomixed.element "INCLUDE"> +<![%bibliomixed.element;[ +<!--doc:An entry in a Bibliography.--> +<!ELEMENT bibliomixed %ho; (#PCDATA | %bibliocomponent.mix; | bibliomset)* + %ubiq.exclusion;> +<!--end of bibliomixed.element-->]]> + +<!ENTITY % bibliomixed.attlist "INCLUDE"> +<![%bibliomixed.attlist;[ +<!ATTLIST bibliomixed + %common.attrib; + %bibliomixed.role.attrib; + %local.bibliomixed.attrib; +> +<!--end of bibliomixed.attlist-->]]> +<!--end of bibliomixed.module-->]]> + +<!ENTITY % articleinfo.module "INCLUDE"> +<![%articleinfo.module;[ +<!ENTITY % local.articleinfo.attrib ""> +<!ENTITY % articleinfo.role.attrib "%role.attrib;"> + +<!ENTITY % articleinfo.element "INCLUDE"> +<![%articleinfo.element;[ +<!--doc:Meta-information for an Article.--> +<!ELEMENT articleinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of articleinfo.element-->]]> + +<!ENTITY % articleinfo.attlist "INCLUDE"> +<![%articleinfo.attlist;[ +<!ATTLIST articleinfo + %common.attrib; + %articleinfo.role.attrib; + %local.articleinfo.attrib; +> +<!--end of articleinfo.attlist-->]]> +<!--end of articleinfo.module-->]]> + +<!ENTITY % biblioset.module "INCLUDE"> +<![%biblioset.module;[ +<!ENTITY % local.biblioset.attrib ""> +<!ENTITY % biblioset.role.attrib "%role.attrib;"> + +<!ENTITY % biblioset.element "INCLUDE"> +<![%biblioset.element;[ +<!--doc:A "raw" container for related bibliographic information.--> +<!ELEMENT biblioset %ho; ((%bibliocomponent.mix;)+) + %ubiq.exclusion;> +<!--end of biblioset.element-->]]> + +<!-- Relation: Relationship of elements contained within BiblioSet --> + + +<!ENTITY % biblioset.attlist "INCLUDE"> +<![%biblioset.attlist;[ +<!ATTLIST biblioset + relation CDATA #IMPLIED + %common.attrib; + %biblioset.role.attrib; + %local.biblioset.attrib; +> +<!--end of biblioset.attlist-->]]> +<!--end of biblioset.module-->]]> + +<!ENTITY % bibliomset.module "INCLUDE"> +<![%bibliomset.module;[ +<!ENTITY % bibliomset.role.attrib "%role.attrib;"> +<!ENTITY % local.bibliomset.attrib ""> + +<!ENTITY % bibliomset.element "INCLUDE"> +<![%bibliomset.element;[ +<!--doc:A "cooked" container for related bibliographic information.--> +<!ELEMENT bibliomset %ho; (#PCDATA | %bibliocomponent.mix; | bibliomset)* + %ubiq.exclusion;> +<!--end of bibliomset.element-->]]> + +<!-- Relation: Relationship of elements contained within BiblioMSet --> + + +<!ENTITY % bibliomset.attlist "INCLUDE"> +<![%bibliomset.attlist;[ +<!ATTLIST bibliomset + relation CDATA #IMPLIED + %common.attrib; + %bibliomset.role.attrib; + %local.bibliomset.attrib; +> +<!--end of bibliomset.attlist-->]]> +<!--end of bibliomset.module-->]]> + +<!ENTITY % bibliomisc.module "INCLUDE"> +<![%bibliomisc.module;[ +<!ENTITY % local.bibliomisc.attrib ""> +<!ENTITY % bibliomisc.role.attrib "%role.attrib;"> + +<!ENTITY % bibliomisc.element "INCLUDE"> +<![%bibliomisc.element;[ +<!--doc:Untyped bibliographic information.--> +<!ELEMENT bibliomisc %ho; (%para.char.mix;)*> +<!--end of bibliomisc.element-->]]> + +<!ENTITY % bibliomisc.attlist "INCLUDE"> +<![%bibliomisc.attlist;[ +<!ATTLIST bibliomisc + %common.attrib; + %bibliomisc.role.attrib; + %local.bibliomisc.attrib; +> +<!--end of bibliomisc.attlist-->]]> +<!--end of bibliomisc.module-->]]> + +<!-- ...................................................................... --> +<!-- Subject, Keyword, and ITermSet elements .............................. --> + +<!ENTITY % subjectset.content.module "INCLUDE"> +<![%subjectset.content.module;[ +<!ENTITY % subjectset.module "INCLUDE"> +<![%subjectset.module;[ +<!ENTITY % local.subjectset.attrib ""> +<!ENTITY % subjectset.role.attrib "%role.attrib;"> + +<!ENTITY % subjectset.element "INCLUDE"> +<![%subjectset.element;[ +<!--doc:A set of terms describing the subject matter of a document.--> +<!ELEMENT subjectset %ho; (subject+)> +<!--end of subjectset.element-->]]> + +<!-- Scheme: Controlled vocabulary employed in SubjectTerms --> + + +<!ENTITY % subjectset.attlist "INCLUDE"> +<![%subjectset.attlist;[ +<!ATTLIST subjectset + scheme NMTOKEN #IMPLIED + %common.attrib; + %subjectset.role.attrib; + %local.subjectset.attrib; +> +<!--end of subjectset.attlist-->]]> +<!--end of subjectset.module-->]]> + +<!ENTITY % subject.module "INCLUDE"> +<![%subject.module;[ +<!ENTITY % local.subject.attrib ""> +<!ENTITY % subject.role.attrib "%role.attrib;"> + +<!ENTITY % subject.element "INCLUDE"> +<![%subject.element;[ +<!--doc:One of a group of terms describing the subject matter of a document.--> +<!ELEMENT subject %ho; (subjectterm+)> +<!--end of subject.element-->]]> + +<!-- Weight: Ranking of this group of SubjectTerms relative + to others, 0 is low, no highest value specified --> + + +<!ENTITY % subject.attlist "INCLUDE"> +<![%subject.attlist;[ +<!ATTLIST subject + weight CDATA #IMPLIED + %common.attrib; + %subject.role.attrib; + %local.subject.attrib; +> +<!--end of subject.attlist-->]]> +<!--end of subject.module-->]]> + +<!ENTITY % subjectterm.module "INCLUDE"> +<![%subjectterm.module;[ +<!ENTITY % local.subjectterm.attrib ""> +<!ENTITY % subjectterm.role.attrib "%role.attrib;"> + +<!ENTITY % subjectterm.element "INCLUDE"> +<![%subjectterm.element;[ +<!--doc:A term in a group of terms describing the subject matter of a document.--> +<!ELEMENT subjectterm %ho; (#PCDATA)> +<!--end of subjectterm.element-->]]> + +<!ENTITY % subjectterm.attlist "INCLUDE"> +<![%subjectterm.attlist;[ +<!ATTLIST subjectterm + %common.attrib; + %subjectterm.role.attrib; + %local.subjectterm.attrib; +> +<!--end of subjectterm.attlist-->]]> +<!--end of subjectterm.module-->]]> +<!--end of subjectset.content.module-->]]> + +<!ENTITY % keywordset.content.module "INCLUDE"> +<![%keywordset.content.module;[ +<!ENTITY % keywordset.module "INCLUDE"> +<![%keywordset.module;[ +<!ENTITY % local.keywordset.attrib ""> +<!ENTITY % keywordset.role.attrib "%role.attrib;"> + +<!ENTITY % keywordset.element "INCLUDE"> +<![%keywordset.element;[ +<!--doc:A set of keywords describing the content of a document.--> +<!ELEMENT keywordset %ho; (keyword+)> +<!--end of keywordset.element-->]]> + +<!ENTITY % keywordset.attlist "INCLUDE"> +<![%keywordset.attlist;[ +<!ATTLIST keywordset + %common.attrib; + %keywordset.role.attrib; + %local.keywordset.attrib; +> +<!--end of keywordset.attlist-->]]> +<!--end of keywordset.module-->]]> + +<!ENTITY % keyword.module "INCLUDE"> +<![%keyword.module;[ +<!ENTITY % local.keyword.attrib ""> +<!ENTITY % keyword.role.attrib "%role.attrib;"> + +<!ENTITY % keyword.element "INCLUDE"> +<![%keyword.element;[ +<!--doc:One of a set of keywords describing the content of a document.--> +<!ELEMENT keyword %ho; (#PCDATA)> +<!--end of keyword.element-->]]> + +<!ENTITY % keyword.attlist "INCLUDE"> +<![%keyword.attlist;[ +<!ATTLIST keyword + %common.attrib; + %keyword.role.attrib; + %local.keyword.attrib; +> +<!--end of keyword.attlist-->]]> +<!--end of keyword.module-->]]> +<!--end of keywordset.content.module-->]]> + +<!ENTITY % itermset.module "INCLUDE"> +<![%itermset.module;[ +<!ENTITY % local.itermset.attrib ""> +<!ENTITY % itermset.role.attrib "%role.attrib;"> + +<!ENTITY % itermset.element "INCLUDE"> +<![%itermset.element;[ +<!--doc:A set of index terms in the meta-information of a document.--> +<!ELEMENT itermset %ho; (indexterm+)> +<!--end of itermset.element-->]]> + +<!ENTITY % itermset.attlist "INCLUDE"> +<![%itermset.attlist;[ +<!ATTLIST itermset + %common.attrib; + %itermset.role.attrib; + %local.itermset.attrib; +> +<!--end of itermset.attlist-->]]> +<!--end of itermset.module-->]]> + +<!-- Bibliographic info for "blocks" --> + +<!ENTITY % blockinfo.module "INCLUDE"> +<![ %blockinfo.module; [ +<!ENTITY % local.blockinfo.attrib ""> +<!ENTITY % blockinfo.role.attrib "%role.attrib;"> + +<!ENTITY % blockinfo.element "INCLUDE"> +<![ %blockinfo.element; [ +<!--doc:Meta-information for a block element.--> +<!ELEMENT blockinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of blockinfo.element-->]]> + +<!ENTITY % blockinfo.attlist "INCLUDE"> +<![ %blockinfo.attlist; [ +<!ATTLIST blockinfo + %common.attrib; + %blockinfo.role.attrib; + %local.blockinfo.attrib; +> +<!--end of blockinfo.attlist-->]]> +<!--end of blockinfo.module-->]]> + +<!-- ...................................................................... --> +<!-- Compound (section-ish) elements ...................................... --> + +<!-- Message set ...................... --> + +<!ENTITY % msgset.content.module "INCLUDE"> +<![%msgset.content.module;[ +<!ENTITY % msgset.module "INCLUDE"> +<![%msgset.module;[ +<!ENTITY % local.msgset.attrib ""> +<!ENTITY % msgset.role.attrib "%role.attrib;"> + +<!ENTITY % msgset.element "INCLUDE"> +<![%msgset.element;[ +<!--doc:A detailed set of messages, usually error messages.--> +<!ELEMENT msgset %ho; (blockinfo?, (%formalobject.title.content;)?, + (msgentry+|simplemsgentry+))> +<!--end of msgset.element-->]]> + +<!ENTITY % msgset.attlist "INCLUDE"> +<![%msgset.attlist;[ +<!ATTLIST msgset + %common.attrib; + %msgset.role.attrib; + %local.msgset.attrib; +> +<!--end of msgset.attlist-->]]> +<!--end of msgset.module-->]]> + +<!ENTITY % msgentry.module "INCLUDE"> +<![%msgentry.module;[ +<!ENTITY % local.msgentry.attrib ""> +<!ENTITY % msgentry.role.attrib "%role.attrib;"> + +<!ENTITY % msgentry.element "INCLUDE"> +<![%msgentry.element;[ +<!--doc:A wrapper for an entry in a message set.--> +<!ELEMENT msgentry %ho; (msg+, msginfo?, msgexplan*)> +<!--end of msgentry.element-->]]> + +<!ENTITY % msgentry.attlist "INCLUDE"> +<![%msgentry.attlist;[ +<!ATTLIST msgentry + %common.attrib; + %msgentry.role.attrib; + %local.msgentry.attrib; +> +<!--end of msgentry.attlist-->]]> +<!--end of msgentry.module-->]]> + +<!ENTITY % simplemsgentry.module "INCLUDE"> +<![ %simplemsgentry.module; [ +<!ENTITY % local.simplemsgentry.attrib ""> +<!ENTITY % simplemsgentry.role.attrib "%role.attrib;"> + +<!ENTITY % simplemsgentry.element "INCLUDE"> +<![ %simplemsgentry.element; [ +<!--doc:A wrapper for a simpler entry in a message set.--> +<!ELEMENT simplemsgentry %ho; (msgtext, msgexplan+)> +<!--end of simplemsgentry.element-->]]> + +<!ENTITY % simplemsgentry.attlist "INCLUDE"> +<![ %simplemsgentry.attlist; [ +<!ATTLIST simplemsgentry + audience CDATA #IMPLIED + level CDATA #IMPLIED + origin CDATA #IMPLIED + %common.attrib; + %simplemsgentry.role.attrib; + %local.simplemsgentry.attrib; +> +<!--end of simplemsgentry.attlist-->]]> +<!--end of simplemsgentry.module-->]]> + +<!ENTITY % msg.module "INCLUDE"> +<![%msg.module;[ +<!ENTITY % local.msg.attrib ""> +<!ENTITY % msg.role.attrib "%role.attrib;"> + +<!ENTITY % msg.element "INCLUDE"> +<![%msg.element;[ +<!--doc:A message in a message set.--> +<!ELEMENT msg %ho; (title?, msgmain, (msgsub | msgrel)*)> +<!--end of msg.element-->]]> + +<!ENTITY % msg.attlist "INCLUDE"> +<![%msg.attlist;[ +<!ATTLIST msg + %common.attrib; + %msg.role.attrib; + %local.msg.attrib; +> +<!--end of msg.attlist-->]]> +<!--end of msg.module-->]]> + +<!ENTITY % msgmain.module "INCLUDE"> +<![%msgmain.module;[ +<!ENTITY % local.msgmain.attrib ""> +<!ENTITY % msgmain.role.attrib "%role.attrib;"> + +<!ENTITY % msgmain.element "INCLUDE"> +<![%msgmain.element;[ +<!--doc:The primary component of a message in a message set.--> +<!ELEMENT msgmain %ho; (title?, msgtext)> +<!--end of msgmain.element-->]]> + +<!ENTITY % msgmain.attlist "INCLUDE"> +<![%msgmain.attlist;[ +<!ATTLIST msgmain + %common.attrib; + %msgmain.role.attrib; + %local.msgmain.attrib; +> +<!--end of msgmain.attlist-->]]> +<!--end of msgmain.module-->]]> + +<!ENTITY % msgsub.module "INCLUDE"> +<![%msgsub.module;[ +<!ENTITY % local.msgsub.attrib ""> +<!ENTITY % msgsub.role.attrib "%role.attrib;"> + +<!ENTITY % msgsub.element "INCLUDE"> +<![%msgsub.element;[ +<!--doc:A subcomponent of a message in a message set.--> +<!ELEMENT msgsub %ho; (title?, msgtext)> +<!--end of msgsub.element-->]]> + +<!ENTITY % msgsub.attlist "INCLUDE"> +<![%msgsub.attlist;[ +<!ATTLIST msgsub + %common.attrib; + %msgsub.role.attrib; + %local.msgsub.attrib; +> +<!--end of msgsub.attlist-->]]> +<!--end of msgsub.module-->]]> + +<!ENTITY % msgrel.module "INCLUDE"> +<![%msgrel.module;[ +<!ENTITY % local.msgrel.attrib ""> +<!ENTITY % msgrel.role.attrib "%role.attrib;"> + +<!ENTITY % msgrel.element "INCLUDE"> +<![%msgrel.element;[ +<!--doc:A related component of a message in a message set.--> +<!ELEMENT msgrel %ho; (title?, msgtext)> +<!--end of msgrel.element-->]]> + +<!ENTITY % msgrel.attlist "INCLUDE"> +<![%msgrel.attlist;[ +<!ATTLIST msgrel + %common.attrib; + %msgrel.role.attrib; + %local.msgrel.attrib; +> +<!--end of msgrel.attlist-->]]> +<!--end of msgrel.module-->]]> + +<!-- MsgText (defined in the Inlines section, below)--> + +<!ENTITY % msginfo.module "INCLUDE"> +<![%msginfo.module;[ +<!ENTITY % local.msginfo.attrib ""> +<!ENTITY % msginfo.role.attrib "%role.attrib;"> + +<!ENTITY % msginfo.element "INCLUDE"> +<![%msginfo.element;[ +<!--doc:Information about a message in a message set.--> +<!ELEMENT msginfo %ho; ((msglevel | msgorig | msgaud)*)> +<!--end of msginfo.element-->]]> + +<!ENTITY % msginfo.attlist "INCLUDE"> +<![%msginfo.attlist;[ +<!ATTLIST msginfo + %common.attrib; + %msginfo.role.attrib; + %local.msginfo.attrib; +> +<!--end of msginfo.attlist-->]]> +<!--end of msginfo.module-->]]> + +<!ENTITY % msglevel.module "INCLUDE"> +<![%msglevel.module;[ +<!ENTITY % local.msglevel.attrib ""> +<!ENTITY % msglevel.role.attrib "%role.attrib;"> + +<!ENTITY % msglevel.element "INCLUDE"> +<![%msglevel.element;[ +<!--doc:The level of importance or severity of a message in a message set.--> +<!ELEMENT msglevel %ho; (%smallcptr.char.mix;)*> +<!--end of msglevel.element-->]]> + +<!ENTITY % msglevel.attlist "INCLUDE"> +<![%msglevel.attlist;[ +<!ATTLIST msglevel + %common.attrib; + %msglevel.role.attrib; + %local.msglevel.attrib; +> +<!--end of msglevel.attlist-->]]> +<!--end of msglevel.module-->]]> + +<!ENTITY % msgorig.module "INCLUDE"> +<![%msgorig.module;[ +<!ENTITY % local.msgorig.attrib ""> +<!ENTITY % msgorig.role.attrib "%role.attrib;"> + +<!ENTITY % msgorig.element "INCLUDE"> +<![%msgorig.element;[ +<!--doc:The origin of a message in a message set.--> +<!ELEMENT msgorig %ho; (%smallcptr.char.mix;)*> +<!--end of msgorig.element-->]]> + +<!ENTITY % msgorig.attlist "INCLUDE"> +<![%msgorig.attlist;[ +<!ATTLIST msgorig + %common.attrib; + %msgorig.role.attrib; + %local.msgorig.attrib; +> +<!--end of msgorig.attlist-->]]> +<!--end of msgorig.module-->]]> + +<!ENTITY % msgaud.module "INCLUDE"> +<![%msgaud.module;[ +<!ENTITY % local.msgaud.attrib ""> +<!ENTITY % msgaud.role.attrib "%role.attrib;"> + +<!ENTITY % msgaud.element "INCLUDE"> +<![%msgaud.element;[ +<!--doc:The audience to which a message in a message set is relevant.--> +<!ELEMENT msgaud %ho; (%para.char.mix;)*> +<!--end of msgaud.element-->]]> + +<!ENTITY % msgaud.attlist "INCLUDE"> +<![%msgaud.attlist;[ +<!ATTLIST msgaud + %common.attrib; + %msgaud.role.attrib; + %local.msgaud.attrib; +> +<!--end of msgaud.attlist-->]]> +<!--end of msgaud.module-->]]> + +<!ENTITY % msgexplan.module "INCLUDE"> +<![%msgexplan.module;[ +<!ENTITY % local.msgexplan.attrib ""> +<!ENTITY % msgexplan.role.attrib "%role.attrib;"> + +<!ENTITY % msgexplan.element "INCLUDE"> +<![%msgexplan.element;[ +<!--doc:Explanatory material relating to a message in a message set.--> +<!ELEMENT msgexplan %ho; (title?, (%component.mix;)+)> +<!--end of msgexplan.element-->]]> + +<!ENTITY % msgexplan.attlist "INCLUDE"> +<![%msgexplan.attlist;[ +<!ATTLIST msgexplan + %common.attrib; + %msgexplan.role.attrib; + %local.msgexplan.attrib; +> +<!--end of msgexplan.attlist-->]]> +<!--end of msgexplan.module-->]]> +<!--end of msgset.content.module-->]]> + +<!ENTITY % task.content.module "INCLUDE"> +<![%task.content.module;[ +<!ENTITY % task.module "INCLUDE"> +<![%task.module;[ +<!ENTITY % local.task.attrib ""> +<!ENTITY % task.role.attrib "%role.attrib;"> + +<!ENTITY % task.element "INCLUDE"> +<![%task.element;[ +<!--doc:A task to be completed.--> +<!ELEMENT task %ho; (blockinfo?,(%ndxterm.class;)*, + (%formalobject.title.content;), + tasksummary?, + taskprerequisites?, + procedure, + example*, + taskrelated?)> +<!--end of task.element-->]]> + +<!ENTITY % task.attlist "INCLUDE"> +<![%task.attlist;[ +<!ATTLIST task + %common.attrib; + %task.role.attrib; + %local.task.attrib; +> +<!--end of task.attlist-->]]> +<!--end of task.module-->]]> + +<!ENTITY % tasksummary.module "INCLUDE"> +<![%tasksummary.module;[ +<!ENTITY % local.tasksummary.attrib ""> +<!ENTITY % tasksummary.role.attrib "%role.attrib;"> + +<!ENTITY % tasksummary.element "INCLUDE"> +<![%tasksummary.element;[ +<!--doc:A summary of a task.--> +<!ELEMENT tasksummary %ho; (blockinfo?, + (%formalobject.title.content;)?, + (%component.mix;)+)> +<!--end of tasksummary.element-->]]> + +<!ENTITY % tasksummary.attlist "INCLUDE"> +<![%tasksummary.attlist;[ +<!ATTLIST tasksummary + %common.attrib; + %tasksummary.role.attrib; + %local.tasksummary.attrib; +> +<!--end of tasksummary.attlist-->]]> +<!--end of tasksummary.module-->]]> + +<!ENTITY % taskprerequisites.module "INCLUDE"> +<![%taskprerequisites.module;[ +<!ENTITY % local.taskprerequisites.attrib ""> +<!ENTITY % taskprerequisites.role.attrib "%role.attrib;"> + +<!ENTITY % taskprerequisites.element "INCLUDE"> +<![%taskprerequisites.element;[ +<!--doc:The prerequisites for a task.--> +<!ELEMENT taskprerequisites %ho; (blockinfo?, + (%formalobject.title.content;)?, + (%component.mix;)+)> +<!--end of taskprerequisites.element-->]]> + +<!ENTITY % taskprerequisites.attlist "INCLUDE"> +<![%taskprerequisites.attlist;[ +<!ATTLIST taskprerequisites + %common.attrib; + %taskprerequisites.role.attrib; + %local.taskprerequisites.attrib; +> +<!--end of taskprerequisites.attlist-->]]> +<!--end of taskprerequisites.module-->]]> + +<!ENTITY % taskrelated.module "INCLUDE"> +<![%taskrelated.module;[ +<!ENTITY % local.taskrelated.attrib ""> +<!ENTITY % taskrelated.role.attrib "%role.attrib;"> + +<!ENTITY % taskrelated.element "INCLUDE"> +<![%taskrelated.element;[ +<!--doc:Information related to a task.--> +<!ELEMENT taskrelated %ho; (blockinfo?, + (%formalobject.title.content;)?, + (%component.mix;)+)> +<!--end of taskrelated.element-->]]> + +<!ENTITY % taskrelated.attlist "INCLUDE"> +<![%taskrelated.attlist;[ +<!ATTLIST taskrelated + %common.attrib; + %taskrelated.role.attrib; + %local.taskrelated.attrib; +> +<!--end of taskrelated.attlist-->]]> +<!--end of taskrelated.module-->]]> +<!--end of task.content.module-->]]> + +<!-- QandASet ........................ --> +<!ENTITY % qandaset.content.module "INCLUDE"> +<![ %qandaset.content.module; [ +<!ENTITY % qandaset.module "INCLUDE"> +<![ %qandaset.module; [ +<!ENTITY % local.qandaset.attrib ""> +<!ENTITY % qandaset.role.attrib "%role.attrib;"> + +<!ENTITY % qandaset.element "INCLUDE"> +<![ %qandaset.element; [ +<!--doc:A question-and-answer set.--> +<!ELEMENT qandaset %ho; (blockinfo?, (%formalobject.title.content;)?, + (%qandaset.mix;)*, + (qandadiv+|qandaentry+))> +<!--end of qandaset.element-->]]> + +<!ENTITY % qandaset.attlist "INCLUDE"> +<![ %qandaset.attlist; [ +<!ATTLIST qandaset + defaultlabel (qanda|number|none) #IMPLIED + %common.attrib; + %qandaset.role.attrib; + %local.qandaset.attrib;> +<!--end of qandaset.attlist-->]]> +<!--end of qandaset.module-->]]> + +<!ENTITY % qandadiv.module "INCLUDE"> +<![ %qandadiv.module; [ +<!ENTITY % local.qandadiv.attrib ""> +<!ENTITY % qandadiv.role.attrib "%role.attrib;"> + +<!ENTITY % qandadiv.element "INCLUDE"> +<![ %qandadiv.element; [ +<!--doc:A titled division in a QandASet.--> +<!ELEMENT qandadiv %ho; (blockinfo?, (%formalobject.title.content;)?, + (%qandaset.mix;)*, + (qandadiv+|qandaentry+))> +<!--end of qandadiv.element-->]]> + +<!ENTITY % qandadiv.attlist "INCLUDE"> +<![ %qandadiv.attlist; [ +<!ATTLIST qandadiv + %common.attrib; + %qandadiv.role.attrib; + %local.qandadiv.attrib;> +<!--end of qandadiv.attlist-->]]> +<!--end of qandadiv.module-->]]> + +<!ENTITY % qandaentry.module "INCLUDE"> +<![ %qandaentry.module; [ +<!ENTITY % local.qandaentry.attrib ""> +<!ENTITY % qandaentry.role.attrib "%role.attrib;"> + +<!ENTITY % qandaentry.element "INCLUDE"> +<![ %qandaentry.element; [ +<!--doc:A question/answer set within a QandASet.--> +<!ELEMENT qandaentry %ho; (blockinfo?, revhistory?, question, answer*)> +<!--end of qandaentry.element-->]]> + +<!ENTITY % qandaentry.attlist "INCLUDE"> +<![ %qandaentry.attlist; [ +<!ATTLIST qandaentry + %common.attrib; + %qandaentry.role.attrib; + %local.qandaentry.attrib;> +<!--end of qandaentry.attlist-->]]> +<!--end of qandaentry.module-->]]> + +<!ENTITY % question.module "INCLUDE"> +<![ %question.module; [ +<!ENTITY % local.question.attrib ""> +<!ENTITY % question.role.attrib "%role.attrib;"> + +<!ENTITY % question.element "INCLUDE"> +<![ %question.element; [ +<!--doc:A question in a QandASet.--> +<!ELEMENT question %ho; (label?, (%qandaset.mix;)+)> +<!--end of question.element-->]]> + +<!ENTITY % question.attlist "INCLUDE"> +<![ %question.attlist; [ +<!ATTLIST question + %common.attrib; + %question.role.attrib; + %local.question.attrib; +> +<!--end of question.attlist-->]]> +<!--end of question.module-->]]> + +<!ENTITY % answer.module "INCLUDE"> +<![ %answer.module; [ +<!ENTITY % local.answer.attrib ""> +<!ENTITY % answer.role.attrib "%role.attrib;"> + +<!ENTITY % answer.element "INCLUDE"> +<![ %answer.element; [ +<!--doc:An answer to a question posed in a QandASet.--> +<!ELEMENT answer %ho; (label?, (%qandaset.mix;)*, qandaentry*)> +<!--end of answer.element-->]]> + +<!ENTITY % answer.attlist "INCLUDE"> +<![ %answer.attlist; [ +<!ATTLIST answer + %common.attrib; + %answer.role.attrib; + %local.answer.attrib; +> +<!--end of answer.attlist-->]]> +<!--end of answer.module-->]]> + +<!ENTITY % label.module "INCLUDE"> +<![ %label.module; [ +<!ENTITY % local.label.attrib ""> +<!ENTITY % label.role.attrib "%role.attrib;"> + +<!ENTITY % label.element "INCLUDE"> +<![ %label.element; [ +<!--doc:A label on a Question or Answer.--> +<!ELEMENT label %ho; (%word.char.mix;)*> +<!--end of label.element-->]]> + +<!ENTITY % label.attlist "INCLUDE"> +<![ %label.attlist; [ +<!ATTLIST label + %common.attrib; + %label.role.attrib; + %local.label.attrib; +> +<!--end of label.attlist-->]]> +<!--end of label.module-->]]> +<!--end of qandaset.content.module-->]]> + +<!-- Procedure ........................ --> + +<!ENTITY % procedure.content.module "INCLUDE"> +<![%procedure.content.module;[ +<!ENTITY % procedure.module "INCLUDE"> +<![%procedure.module;[ +<!ENTITY % local.procedure.attrib ""> +<!ENTITY % procedure.role.attrib "%role.attrib;"> + +<!ENTITY % procedure.element "INCLUDE"> +<![%procedure.element;[ +<!--doc:A list of operations to be performed in a well-defined sequence.--> +<!ELEMENT procedure %ho; (blockinfo?, (%formalobject.title.content;)?, + (%component.mix;)*, step+)> +<!--end of procedure.element-->]]> + +<!ENTITY % procedure.attlist "INCLUDE"> +<![%procedure.attlist;[ +<!ATTLIST procedure + %common.attrib; + %procedure.role.attrib; + %local.procedure.attrib; +> +<!--end of procedure.attlist-->]]> +<!--end of procedure.module-->]]> + +<!ENTITY % step.module "INCLUDE"> +<![%step.module;[ +<!ENTITY % local.step.attrib ""> +<!ENTITY % step.role.attrib "%role.attrib;"> + +<!ENTITY % step.element "INCLUDE"> +<![%step.element;[ +<!--doc:A unit of action in a procedure.--> +<!ELEMENT step %ho; (title?, (((%component.mix;)+, ((substeps|stepalternatives), (%component.mix;)*)?) + | ((substeps|stepalternatives), (%component.mix;)*)))> +<!--end of step.element-->]]> + +<!-- Performance: Whether the Step must be performed --> +<!-- not #REQUIRED! --> + + +<!ENTITY % step.attlist "INCLUDE"> +<![%step.attlist;[ +<!ATTLIST step + performance (optional + |required) "required" + %common.attrib; + %step.role.attrib; + %local.step.attrib; +> +<!--end of step.attlist-->]]> +<!--end of step.module-->]]> + +<!ENTITY % substeps.module "INCLUDE"> +<![%substeps.module;[ +<!ENTITY % local.substeps.attrib ""> +<!ENTITY % substeps.role.attrib "%role.attrib;"> + +<!ENTITY % substeps.element "INCLUDE"> +<![%substeps.element;[ +<!--doc:A wrapper for steps that occur within steps in a procedure.--> +<!ELEMENT substeps %ho; (step+)> +<!--end of substeps.element-->]]> + +<!-- Performance: whether entire set of substeps must be performed --> +<!-- not #REQUIRED! --> + +<!ENTITY % substeps.attlist "INCLUDE"> +<![%substeps.attlist;[ +<!ATTLIST substeps + performance (optional + |required) "required" + %common.attrib; + %substeps.role.attrib; + %local.substeps.attrib; +> +<!--end of substeps.attlist-->]]> +<!--end of substeps.module-->]]> + +<!ENTITY % stepalternatives.module "INCLUDE"> +<![%stepalternatives.module;[ +<!ENTITY % local.stepalternatives.attrib ""> +<!ENTITY % stepalternatives.role.attrib "%role.attrib;"> + +<!ENTITY % stepalternatives.element "INCLUDE"> +<![%stepalternatives.element;[ +<!--doc:Alternative steps in a procedure.--> +<!ELEMENT stepalternatives %ho; (step+)> +<!--end of stepalternatives.element-->]]> + +<!-- Performance: Whether (one of) the alternatives must be performed --> +<!-- not #REQUIRED! --> + +<!ENTITY % stepalternatives.attlist "INCLUDE"> +<![%stepalternatives.attlist;[ +<!ATTLIST stepalternatives + performance (optional + |required) "required" + %common.attrib; + %stepalternatives.role.attrib; + %local.stepalternatives.attrib; +> +<!--end of stepalternatives.attlist-->]]> +<!--end of stepalternatives.module-->]]> +<!--end of procedure.content.module-->]]> + +<!-- Sidebar .......................... --> + +<!ENTITY % sidebar.content.model "INCLUDE"> +<![ %sidebar.content.model; [ + +<!ENTITY % sidebarinfo.module "INCLUDE"> +<![ %sidebarinfo.module; [ +<!ENTITY % local.sidebarinfo.attrib ""> +<!ENTITY % sidebarinfo.role.attrib "%role.attrib;"> + +<!ENTITY % sidebarinfo.element "INCLUDE"> +<![ %sidebarinfo.element; [ +<!--doc:Meta-information for a Sidebar.--> +<!ELEMENT sidebarinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of sidebarinfo.element-->]]> + +<!ENTITY % sidebarinfo.attlist "INCLUDE"> +<![ %sidebarinfo.attlist; [ +<!ATTLIST sidebarinfo + %common.attrib; + %sidebarinfo.role.attrib; + %local.sidebarinfo.attrib; +> +<!--end of sidebarinfo.attlist-->]]> +<!--end of sidebarinfo.module-->]]> + +<!ENTITY % sidebar.module "INCLUDE"> +<![%sidebar.module;[ +<!ENTITY % local.sidebar.attrib ""> +<!ENTITY % sidebar.role.attrib "%role.attrib;"> + +<!ENTITY % sidebar.element "INCLUDE"> +<![%sidebar.element;[ +<!--doc:A portion of a document that is isolated from the main narrative flow.--> +<!ELEMENT sidebar %ho; (sidebarinfo?, + (%formalobject.title.content;)?, + (%sidebar.mix;)+)> +<!--end of sidebar.element-->]]> + +<!ENTITY % sidebar.attlist "INCLUDE"> +<![%sidebar.attlist;[ +<!ATTLIST sidebar + %common.attrib; + %sidebar.role.attrib; + %local.sidebar.attrib; +> +<!--end of sidebar.attlist-->]]> +<!--end of sidebar.module-->]]> +<!--end of sidebar.content.model-->]]> + +<!-- ...................................................................... --> +<!-- Paragraph-related elements ........................................... --> + +<!ENTITY % abstract.module "INCLUDE"> +<![%abstract.module;[ +<!ENTITY % local.abstract.attrib ""> +<!ENTITY % abstract.role.attrib "%role.attrib;"> + +<!ENTITY % abstract.element "INCLUDE"> +<![%abstract.element;[ +<!--doc:A summary.--> +<!ELEMENT abstract %ho; (title?, (%para.class;)+)> +<!--end of abstract.element-->]]> + +<!ENTITY % abstract.attlist "INCLUDE"> +<![%abstract.attlist;[ +<!ATTLIST abstract + %common.attrib; + %abstract.role.attrib; + %local.abstract.attrib; +> +<!--end of abstract.attlist-->]]> +<!--end of abstract.module-->]]> + +<!ENTITY % authorblurb.module "INCLUDE"> +<![%authorblurb.module;[ +<!ENTITY % local.authorblurb.attrib ""> +<!ENTITY % authorblurb.role.attrib "%role.attrib;"> + +<!ENTITY % authorblurb.element "INCLUDE"> +<![%authorblurb.element;[ +<!--doc:A short description or note about an author.--> +<!ELEMENT authorblurb %ho; (title?, (%para.class;)+)> +<!--end of authorblurb.element-->]]> + +<!ENTITY % authorblurb.attlist "INCLUDE"> +<![%authorblurb.attlist;[ +<!ATTLIST authorblurb + %common.attrib; + %authorblurb.role.attrib; + %local.authorblurb.attrib; +> +<!--end of authorblurb.attlist-->]]> +<!--end of authorblurb.module-->]]> + +<!ENTITY % personblurb.module "INCLUDE"> +<![%personblurb.module;[ +<!ENTITY % local.personblurb.attrib ""> +<!ENTITY % personblurb.role.attrib "%role.attrib;"> + +<!ENTITY % personblurb.element "INCLUDE"> +<![%personblurb.element;[ +<!--doc:A short description or note about a person.--> +<!ELEMENT personblurb %ho; (title?, (%para.class;)+)> +<!--end of personblurb.element-->]]> + +<!ENTITY % personblurb.attlist "INCLUDE"> +<![%personblurb.attlist;[ +<!ATTLIST personblurb + %common.attrib; + %personblurb.role.attrib; + %local.personblurb.attrib; +> +<!--end of personblurb.attlist-->]]> +<!--end of personblurb.module-->]]> + +<!ENTITY % blockquote.module "INCLUDE"> +<![%blockquote.module;[ + +<!ENTITY % local.blockquote.attrib ""> +<!ENTITY % blockquote.role.attrib "%role.attrib;"> + +<!ENTITY % blockquote.element "INCLUDE"> +<![%blockquote.element;[ +<!--doc:A quotation set off from the main text.--> +<!ELEMENT blockquote %ho; (blockinfo?, title?, attribution?, (%component.mix;)+) + %blockquote.exclusion;> +<!--end of blockquote.element-->]]> + +<!ENTITY % blockquote.attlist "INCLUDE"> +<![%blockquote.attlist;[ +<!ATTLIST blockquote + %common.attrib; + %blockquote.role.attrib; + %local.blockquote.attrib; +> +<!--end of blockquote.attlist-->]]> +<!--end of blockquote.module-->]]> + +<!ENTITY % attribution.module "INCLUDE"> +<![%attribution.module;[ +<!ENTITY % local.attribution.attrib ""> +<!ENTITY % attribution.role.attrib "%role.attrib;"> + +<!ENTITY % attribution.element "INCLUDE"> +<![%attribution.element;[ +<!--doc:The source of a block quote or epigraph.--> +<!ELEMENT attribution %ho; (%para.char.mix;)*> +<!--end of attribution.element-->]]> + +<!ENTITY % attribution.attlist "INCLUDE"> +<![%attribution.attlist;[ +<!ATTLIST attribution + %common.attrib; + %attribution.role.attrib; + %local.attribution.attrib; +> +<!--end of attribution.attlist-->]]> +<!--end of attribution.module-->]]> + +<!ENTITY % bridgehead.module "INCLUDE"> +<![%bridgehead.module;[ +<!ENTITY % local.bridgehead.attrib ""> +<!ENTITY % bridgehead.role.attrib "%role.attrib;"> + +<!ENTITY % bridgehead.element "INCLUDE"> +<![%bridgehead.element;[ +<!--doc:A free-floating heading.--> +<!ELEMENT bridgehead %ho; (%title.char.mix;)*> +<!--end of bridgehead.element-->]]> + +<!-- Renderas: Indicates the format in which the BridgeHead + should appear --> + + +<!ENTITY % bridgehead.attlist "INCLUDE"> +<![%bridgehead.attlist;[ +<!ATTLIST bridgehead + renderas (other + |sect1 + |sect2 + |sect3 + |sect4 + |sect5) #IMPLIED + %common.attrib; + %bridgehead.role.attrib; + %local.bridgehead.attrib; +> +<!--end of bridgehead.attlist-->]]> +<!--end of bridgehead.module-->]]> + +<!ENTITY % remark.module "INCLUDE"> +<![%remark.module;[ +<!ENTITY % local.remark.attrib ""> +<!ENTITY % remark.role.attrib "%role.attrib;"> + +<!ENTITY % remark.element "INCLUDE"> +<![%remark.element;[ +<!--doc:A remark (or comment) intended for presentation in a draft manuscript.--> +<!ELEMENT remark %ho; (%para.char.mix;)* + %remark.exclusion;> +<!--end of remark.element-->]]> + +<!ENTITY % remark.attlist "INCLUDE"> +<![%remark.attlist;[ +<!ATTLIST remark + %common.attrib; + %remark.role.attrib; + %local.remark.attrib; +> +<!--end of remark.attlist-->]]> +<!--end of remark.module-->]]> + +<!ENTITY % epigraph.module "INCLUDE"> +<![%epigraph.module;[ +<!ENTITY % local.epigraph.attrib ""> +<!ENTITY % epigraph.role.attrib "%role.attrib;"> + +<!ENTITY % epigraph.element "INCLUDE"> +<![%epigraph.element;[ +<!--doc:A short inscription at the beginning of a document or component.--> +<!ELEMENT epigraph %ho; (attribution?, ((%para.class;)|literallayout)+)> +<!--end of epigraph.element-->]]> + +<!ENTITY % epigraph.attlist "INCLUDE"> +<![%epigraph.attlist;[ +<!ATTLIST epigraph + %common.attrib; + %epigraph.role.attrib; + %local.epigraph.attrib; +> +<!--end of epigraph.attlist-->]]> +<!-- Attribution (defined above)--> +<!--end of epigraph.module-->]]> + +<!ENTITY % footnote.module "INCLUDE"> +<![%footnote.module;[ +<!ENTITY % local.footnote.attrib ""> +<!ENTITY % footnote.role.attrib "%role.attrib;"> + +<!ENTITY % footnote.element "INCLUDE"> +<![%footnote.element;[ +<!--doc:A footnote.--> +<!ELEMENT footnote %ho; ((%footnote.mix;)+) + %footnote.exclusion;> +<!--end of footnote.element-->]]> + +<!ENTITY % footnote.attlist "INCLUDE"> +<![%footnote.attlist;[ +<!ATTLIST footnote + %label.attrib; + %common.attrib; + %footnote.role.attrib; + %local.footnote.attrib; +> +<!--end of footnote.attlist-->]]> +<!--end of footnote.module-->]]> + +<!ENTITY % highlights.module "INCLUDE"> +<![%highlights.module;[ +<!ENTITY % local.highlights.attrib ""> +<!ENTITY % highlights.role.attrib "%role.attrib;"> + +<!ENTITY % highlights.element "INCLUDE"> +<![%highlights.element;[ +<!--doc:A summary of the main points of the discussed component.--> +<!ELEMENT highlights %ho; ((%highlights.mix;)+) + %highlights.exclusion;> +<!--end of highlights.element-->]]> + +<!ENTITY % highlights.attlist "INCLUDE"> +<![%highlights.attlist;[ +<!ATTLIST highlights + %common.attrib; + %highlights.role.attrib; + %local.highlights.attrib; +> +<!--end of highlights.attlist-->]]> +<!--end of highlights.module-->]]> + +<!ENTITY % formalpara.module "INCLUDE"> +<![%formalpara.module;[ +<!ENTITY % local.formalpara.attrib ""> +<!ENTITY % formalpara.role.attrib "%role.attrib;"> + +<!ENTITY % formalpara.element "INCLUDE"> +<![%formalpara.element;[ +<!--doc:A paragraph with a title.--> +<!ELEMENT formalpara %ho; (title, (%ndxterm.class;)*, para)> +<!--end of formalpara.element-->]]> + +<!ENTITY % formalpara.attlist "INCLUDE"> +<![%formalpara.attlist;[ +<!ATTLIST formalpara + %common.attrib; + %formalpara.role.attrib; + %local.formalpara.attrib; +> +<!--end of formalpara.attlist-->]]> +<!--end of formalpara.module-->]]> + +<!ENTITY % para.module "INCLUDE"> +<![%para.module;[ +<!ENTITY % local.para.attrib ""> +<!ENTITY % para.role.attrib "%role.attrib;"> + +<!ENTITY % para.element "INCLUDE"> +<![%para.element;[ +<!--doc:A paragraph.--> +<!ELEMENT para %ho; (%para.char.mix; | %para.mix;)*> +<!--end of para.element-->]]> + +<!ENTITY % para.attlist "INCLUDE"> +<![%para.attlist;[ +<!ATTLIST para + %common.attrib; + %para.role.attrib; + %local.para.attrib; +> +<!--end of para.attlist-->]]> +<!--end of para.module-->]]> + +<!ENTITY % simpara.module "INCLUDE"> +<![%simpara.module;[ +<!ENTITY % local.simpara.attrib ""> +<!ENTITY % simpara.role.attrib "%role.attrib;"> + +<!ENTITY % simpara.element "INCLUDE"> +<![%simpara.element;[ +<!--doc:A paragraph that contains only text and inline markup, no block elements.--> +<!ELEMENT simpara %ho; (%para.char.mix;)*> +<!--end of simpara.element-->]]> + +<!ENTITY % simpara.attlist "INCLUDE"> +<![%simpara.attlist;[ +<!ATTLIST simpara + %common.attrib; + %simpara.role.attrib; + %local.simpara.attrib; +> +<!--end of simpara.attlist-->]]> +<!--end of simpara.module-->]]> + +<!ENTITY % admon.module "INCLUDE"> +<![%admon.module;[ +<!ENTITY % local.admon.attrib ""> +<!ENTITY % admon.role.attrib "%role.attrib;"> + + +<!ENTITY % caution.element "INCLUDE"> +<![%caution.element;[ +<!--doc:A note of caution.--> +<!ELEMENT caution %ho; (title?, (%admon.mix;)+) + %admon.exclusion;> +<!--end of caution.element-->]]> + +<!ENTITY % caution.attlist "INCLUDE"> +<![%caution.attlist;[ +<!ATTLIST caution + %common.attrib; + %admon.role.attrib; + %local.admon.attrib; +> +<!--end of caution.attlist-->]]> + + +<!ENTITY % important.element "INCLUDE"> +<![%important.element;[ +<!--doc:An admonition set off from the text.--> +<!ELEMENT important %ho; (title?, (%admon.mix;)+) + %admon.exclusion;> +<!--end of important.element-->]]> + +<!ENTITY % important.attlist "INCLUDE"> +<![%important.attlist;[ +<!ATTLIST important + %common.attrib; + %admon.role.attrib; + %local.admon.attrib; +> +<!--end of important.attlist-->]]> + + +<!ENTITY % note.element "INCLUDE"> +<![%note.element;[ +<!--doc:A message set off from the text.--> +<!ELEMENT note %ho; (title?, (%admon.mix;)+) + %admon.exclusion;> +<!--end of note.element-->]]> + +<!ENTITY % note.attlist "INCLUDE"> +<![%note.attlist;[ +<!ATTLIST note + %common.attrib; + %admon.role.attrib; + %local.admon.attrib; +> +<!--end of note.attlist-->]]> + +<!ENTITY % tip.element "INCLUDE"> +<![%tip.element;[ +<!--doc:A suggestion to the user, set off from the text.--> +<!ELEMENT tip %ho; (title?, (%admon.mix;)+) + %admon.exclusion;> +<!--end of tip.element-->]]> + +<!ENTITY % tip.attlist "INCLUDE"> +<![%tip.attlist;[ +<!ATTLIST tip + %common.attrib; + %admon.role.attrib; + %local.admon.attrib; +> +<!--end of tip.attlist-->]]> + + +<!ENTITY % warning.element "INCLUDE"> +<![%warning.element;[ +<!--doc:An admonition set off from the text.--> +<!ELEMENT warning %ho; (title?, (%admon.mix;)+) + %admon.exclusion;> +<!--end of warning.element-->]]> + +<!ENTITY % warning.attlist "INCLUDE"> +<![%warning.attlist;[ +<!ATTLIST warning + %common.attrib; + %admon.role.attrib; + %local.admon.attrib; +> +<!--end of warning.attlist-->]]> + +<!--end of admon.module-->]]> + +<!-- ...................................................................... --> +<!-- Lists ................................................................ --> + +<!-- GlossList ........................ --> + +<!ENTITY % glosslist.module "INCLUDE"> +<![%glosslist.module;[ +<!ENTITY % local.glosslist.attrib ""> +<!ENTITY % glosslist.role.attrib "%role.attrib;"> + +<!ENTITY % glosslist.element "INCLUDE"> +<![%glosslist.element;[ +<!--doc:A wrapper for a set of GlossEntrys.--> +<!ELEMENT glosslist %ho; (blockinfo?, (%formalobject.title.content;)?, glossentry+)> +<!--end of glosslist.element-->]]> + +<!ENTITY % glosslist.attlist "INCLUDE"> +<![%glosslist.attlist;[ +<!ATTLIST glosslist + %common.attrib; + %glosslist.role.attrib; + %local.glosslist.attrib; +> +<!--end of glosslist.attlist-->]]> +<!--end of glosslist.module-->]]> + +<!ENTITY % glossentry.content.module "INCLUDE"> +<![%glossentry.content.module;[ +<!ENTITY % glossentry.module "INCLUDE"> +<![%glossentry.module;[ +<!ENTITY % local.glossentry.attrib ""> +<!ENTITY % glossentry.role.attrib "%role.attrib;"> + +<!ENTITY % glossentry.element "INCLUDE"> +<![%glossentry.element;[ +<!--doc:An entry in a Glossary or GlossList.--> +<!ELEMENT glossentry %ho; (glossterm, acronym?, abbrev?, + (%ndxterm.class;)*, + revhistory?, (glosssee|glossdef+))> +<!--end of glossentry.element-->]]> + +<!-- SortAs: String by which the GlossEntry is to be sorted + (alphabetized) in lieu of its proper content --> + + +<!ENTITY % glossentry.attlist "INCLUDE"> +<![%glossentry.attlist;[ +<!ATTLIST glossentry + sortas CDATA #IMPLIED + %common.attrib; + %glossentry.role.attrib; + %local.glossentry.attrib; +> +<!--end of glossentry.attlist-->]]> +<!--end of glossentry.module-->]]> + +<!-- GlossTerm (defined in the Inlines section, below)--> +<!ENTITY % glossdef.module "INCLUDE"> +<![%glossdef.module;[ +<!ENTITY % local.glossdef.attrib ""> +<!ENTITY % glossdef.role.attrib "%role.attrib;"> + +<!ENTITY % glossdef.element "INCLUDE"> +<![%glossdef.element;[ +<!--doc:A definition in a GlossEntry.--> +<!ELEMENT glossdef %ho; ((%glossdef.mix;)+, glossseealso*)> +<!--end of glossdef.element-->]]> + +<!-- Subject: List of subjects; keywords for the definition --> + + +<!ENTITY % glossdef.attlist "INCLUDE"> +<![%glossdef.attlist;[ +<!ATTLIST glossdef + subject CDATA #IMPLIED + %common.attrib; + %glossdef.role.attrib; + %local.glossdef.attrib; +> +<!--end of glossdef.attlist-->]]> +<!--end of glossdef.module-->]]> + +<!ENTITY % glosssee.module "INCLUDE"> +<![%glosssee.module;[ +<!ENTITY % local.glosssee.attrib ""> +<!ENTITY % glosssee.role.attrib "%role.attrib;"> + +<!ENTITY % glosssee.element "INCLUDE"> +<![%glosssee.element;[ +<!--doc:A cross-reference from one GlossEntry to another.--> +<!ELEMENT glosssee %ho; (%para.char.mix;)*> +<!--end of glosssee.element-->]]> + +<!-- OtherTerm: Reference to the GlossEntry whose GlossTerm + should be displayed at the point of the GlossSee --> + + +<!ENTITY % glosssee.attlist "INCLUDE"> +<![%glosssee.attlist;[ +<!ATTLIST glosssee + otherterm IDREF #IMPLIED + %common.attrib; + %glosssee.role.attrib; + %local.glosssee.attrib; +> +<!--end of glosssee.attlist-->]]> +<!--end of glosssee.module-->]]> + +<!ENTITY % glossseealso.module "INCLUDE"> +<![%glossseealso.module;[ +<!ENTITY % local.glossseealso.attrib ""> +<!ENTITY % glossseealso.role.attrib "%role.attrib;"> + +<!ENTITY % glossseealso.element "INCLUDE"> +<![%glossseealso.element;[ +<!--doc:A cross-reference from one GlossEntry to another.--> +<!ELEMENT glossseealso %ho; (%para.char.mix;)*> +<!--end of glossseealso.element-->]]> + +<!-- OtherTerm: Reference to the GlossEntry whose GlossTerm + should be displayed at the point of the GlossSeeAlso --> + + +<!ENTITY % glossseealso.attlist "INCLUDE"> +<![%glossseealso.attlist;[ +<!ATTLIST glossseealso + otherterm IDREF #IMPLIED + %common.attrib; + %glossseealso.role.attrib; + %local.glossseealso.attrib; +> +<!--end of glossseealso.attlist-->]]> +<!--end of glossseealso.module-->]]> +<!--end of glossentry.content.module-->]]> + +<!-- ItemizedList and OrderedList ..... --> + +<!ENTITY % itemizedlist.module "INCLUDE"> +<![%itemizedlist.module;[ +<!ENTITY % local.itemizedlist.attrib ""> +<!ENTITY % itemizedlist.role.attrib "%role.attrib;"> + +<!ENTITY % itemizedlist.element "INCLUDE"> +<![%itemizedlist.element;[ +<!--doc:A list in which each entry is marked with a bullet or other dingbat.--> +<!ELEMENT itemizedlist %ho; (blockinfo?, (%formalobject.title.content;)?, + (%listpreamble.mix;)*, listitem+)> + +<!--end of itemizedlist.element-->]]> + +<!-- Spacing: Whether the vertical space in the list should be + compressed --> +<!-- Mark: Keyword, e.g., bullet, dash, checkbox, none; + list of keywords and defaults are implementation specific --> + + +<!ENTITY % itemizedlist.attlist "INCLUDE"> +<![%itemizedlist.attlist;[ +<!ATTLIST itemizedlist + spacing (normal + |compact) #IMPLIED + %mark.attrib; + %common.attrib; + %itemizedlist.role.attrib; + %local.itemizedlist.attrib; +> +<!--end of itemizedlist.attlist-->]]> +<!--end of itemizedlist.module-->]]> + +<!ENTITY % orderedlist.module "INCLUDE"> +<![%orderedlist.module;[ +<!ENTITY % local.orderedlist.attrib ""> +<!ENTITY % orderedlist.role.attrib "%role.attrib;"> + +<!ENTITY % orderedlist.element "INCLUDE"> +<![%orderedlist.element;[ +<!--doc:A list in which each entry is marked with a sequentially incremented label.--> +<!ELEMENT orderedlist %ho; (blockinfo?, (%formalobject.title.content;)?, + (%listpreamble.mix;)*, listitem+)> + +<!--end of orderedlist.element-->]]> + +<!-- Numeration: Style of ListItem numbered; default is expected + to be Arabic --> +<!-- InheritNum: Specifies for a nested list that the numbering + of ListItems should include the number of the item + within which they are nested (e.g., 1a and 1b within 1, + rather than a and b) --> +<!-- Continuation: Where list numbering begins afresh (Restarts, + the default) or continues that of the immediately preceding + list (Continues) --> +<!-- Spacing: Whether the vertical space in the list should be + compressed --> + + +<!ENTITY % orderedlist.attlist "INCLUDE"> +<![%orderedlist.attlist;[ +<!ATTLIST orderedlist + numeration (arabic + |upperalpha + |loweralpha + |upperroman + |lowerroman) #IMPLIED + inheritnum (inherit + |ignore) "ignore" + continuation (continues + |restarts) "restarts" + spacing (normal + |compact) #IMPLIED + %common.attrib; + %orderedlist.role.attrib; + %local.orderedlist.attrib; +> +<!--end of orderedlist.attlist-->]]> +<!--end of orderedlist.module-->]]> + +<!ENTITY % listitem.module "INCLUDE"> +<![%listitem.module;[ +<!ENTITY % local.listitem.attrib ""> +<!ENTITY % listitem.role.attrib "%role.attrib;"> + +<!ENTITY % listitem.element "INCLUDE"> +<![%listitem.element;[ +<!--doc:A wrapper for the elements of a list item.--> +<!ELEMENT listitem %ho; ((%component.mix;)+)> +<!--end of listitem.element-->]]> + +<!-- Override: Indicates the mark to be used for this ListItem + instead of the default mark or the mark specified by + the Mark attribute on the enclosing ItemizedList --> + + +<!ENTITY % listitem.attlist "INCLUDE"> +<![%listitem.attlist;[ +<!ATTLIST listitem + override CDATA #IMPLIED + %common.attrib; + %listitem.role.attrib; + %local.listitem.attrib; +> +<!--end of listitem.attlist-->]]> +<!--end of listitem.module-->]]> + +<!-- SegmentedList .................... --> +<!ENTITY % segmentedlist.content.module "INCLUDE"> +<![%segmentedlist.content.module;[ +<!ENTITY % segmentedlist.module "INCLUDE"> +<![%segmentedlist.module;[ +<!ENTITY % local.segmentedlist.attrib ""> +<!ENTITY % segmentedlist.role.attrib "%role.attrib;"> + +<!ENTITY % segmentedlist.element "INCLUDE"> +<![%segmentedlist.element;[ +<!--doc:A segmented list, a list of sets of elements.--> +<!ELEMENT segmentedlist %ho; ((%formalobject.title.content;)?, + segtitle+, + seglistitem+)> +<!--end of segmentedlist.element-->]]> + +<!ENTITY % segmentedlist.attlist "INCLUDE"> +<![%segmentedlist.attlist;[ +<!ATTLIST segmentedlist + %common.attrib; + %segmentedlist.role.attrib; + %local.segmentedlist.attrib; +> +<!--end of segmentedlist.attlist-->]]> +<!--end of segmentedlist.module-->]]> + +<!ENTITY % segtitle.module "INCLUDE"> +<![%segtitle.module;[ +<!ENTITY % local.segtitle.attrib ""> +<!ENTITY % segtitle.role.attrib "%role.attrib;"> + +<!ENTITY % segtitle.element "INCLUDE"> +<![%segtitle.element;[ +<!--doc:The title of an element of a list item in a segmented list.--> +<!ELEMENT segtitle %ho; (%title.char.mix;)*> +<!--end of segtitle.element-->]]> + +<!ENTITY % segtitle.attlist "INCLUDE"> +<![%segtitle.attlist;[ +<!ATTLIST segtitle + %common.attrib; + %segtitle.role.attrib; + %local.segtitle.attrib; +> +<!--end of segtitle.attlist-->]]> +<!--end of segtitle.module-->]]> + +<!ENTITY % seglistitem.module "INCLUDE"> +<![%seglistitem.module;[ +<!ENTITY % local.seglistitem.attrib ""> +<!ENTITY % seglistitem.role.attrib "%role.attrib;"> + +<!ENTITY % seglistitem.element "INCLUDE"> +<![%seglistitem.element;[ +<!--doc:A list item in a segmented list.--> +<!ELEMENT seglistitem %ho; (seg+)> +<!--end of seglistitem.element-->]]> + +<!ENTITY % seglistitem.attlist "INCLUDE"> +<![%seglistitem.attlist;[ +<!ATTLIST seglistitem + %common.attrib; + %seglistitem.role.attrib; + %local.seglistitem.attrib; +> +<!--end of seglistitem.attlist-->]]> +<!--end of seglistitem.module-->]]> + +<!ENTITY % seg.module "INCLUDE"> +<![%seg.module;[ +<!ENTITY % local.seg.attrib ""> +<!ENTITY % seg.role.attrib "%role.attrib;"> + +<!ENTITY % seg.element "INCLUDE"> +<![%seg.element;[ +<!--doc:An element of a list item in a segmented list.--> +<!ELEMENT seg %ho; (%para.char.mix;)*> +<!--end of seg.element-->]]> + +<!ENTITY % seg.attlist "INCLUDE"> +<![%seg.attlist;[ +<!ATTLIST seg + %common.attrib; + %seg.role.attrib; + %local.seg.attrib; +> +<!--end of seg.attlist-->]]> +<!--end of seg.module-->]]> +<!--end of segmentedlist.content.module-->]]> + +<!-- SimpleList ....................... --> + +<!ENTITY % simplelist.content.module "INCLUDE"> +<![%simplelist.content.module;[ +<!ENTITY % simplelist.module "INCLUDE"> +<![%simplelist.module;[ +<!ENTITY % local.simplelist.attrib ""> +<!ENTITY % simplelist.role.attrib "%role.attrib;"> + +<!ENTITY % simplelist.element "INCLUDE"> +<![%simplelist.element;[ +<!--doc:An undecorated list of single words or short phrases.--> +<!ELEMENT simplelist %ho; (member+)> +<!--end of simplelist.element-->]]> + +<!-- Columns: The number of columns the array should contain --> +<!-- Type: How the Members of the SimpleList should be + formatted: Inline (members separated with commas etc. + inline), Vert (top to bottom in n Columns), or Horiz (in + the direction of text flow) in n Columns. If Column + is 1 or implied, Type=Vert and Type=Horiz give the same + results. --> + + +<!ENTITY % simplelist.attlist "INCLUDE"> +<![%simplelist.attlist;[ +<!ATTLIST simplelist + columns CDATA #IMPLIED + type (inline + |vert + |horiz) "vert" + %common.attrib; + %simplelist.role.attrib; + %local.simplelist.attrib; +> +<!--end of simplelist.attlist-->]]> +<!--end of simplelist.module-->]]> + +<!ENTITY % member.module "INCLUDE"> +<![%member.module;[ +<!ENTITY % local.member.attrib ""> +<!ENTITY % member.role.attrib "%role.attrib;"> + +<!ENTITY % member.element "INCLUDE"> +<![%member.element;[ +<!--doc:An element of a simple list.--> +<!ELEMENT member %ho; (%para.char.mix;)*> +<!--end of member.element-->]]> + +<!ENTITY % member.attlist "INCLUDE"> +<![%member.attlist;[ +<!ATTLIST member + %common.attrib; + %member.role.attrib; + %local.member.attrib; +> +<!--end of member.attlist-->]]> +<!--end of member.module-->]]> +<!--end of simplelist.content.module-->]]> + +<!-- VariableList ..................... --> + +<!ENTITY % variablelist.content.module "INCLUDE"> +<![%variablelist.content.module;[ +<!ENTITY % variablelist.module "INCLUDE"> +<![%variablelist.module;[ +<!ENTITY % local.variablelist.attrib ""> +<!ENTITY % variablelist.role.attrib "%role.attrib;"> + +<!ENTITY % variablelist.element "INCLUDE"> +<![%variablelist.element;[ +<!--doc:A list in which each entry is composed of a set of one or more terms and an associated description.--> +<!ELEMENT variablelist %ho; (blockinfo?, (%formalobject.title.content;)?, + (%listpreamble.mix;)*, varlistentry+)> +<!--end of variablelist.element-->]]> + +<!-- TermLength: Length beyond which the presentation engine + may consider the Term too long and select an alternate + presentation of the Term and, or, its associated ListItem. --> + + +<!ENTITY % variablelist.attlist "INCLUDE"> +<![%variablelist.attlist;[ +<!ATTLIST variablelist + termlength CDATA #IMPLIED + spacing (normal + |compact) #IMPLIED + %common.attrib; + %variablelist.role.attrib; + %local.variablelist.attrib; +> +<!--end of variablelist.attlist-->]]> +<!--end of variablelist.module-->]]> + +<!ENTITY % varlistentry.module "INCLUDE"> +<![%varlistentry.module;[ +<!ENTITY % local.varlistentry.attrib ""> +<!ENTITY % varlistentry.role.attrib "%role.attrib;"> + +<!ENTITY % varlistentry.element "INCLUDE"> +<![%varlistentry.element;[ +<!--doc:A wrapper for a set of terms and the associated description in a variable list.--> +<!ELEMENT varlistentry %ho; (term+, listitem)> +<!--end of varlistentry.element-->]]> + +<!ENTITY % varlistentry.attlist "INCLUDE"> +<![%varlistentry.attlist;[ +<!ATTLIST varlistentry + %common.attrib; + %varlistentry.role.attrib; + %local.varlistentry.attrib; +> +<!--end of varlistentry.attlist-->]]> +<!--end of varlistentry.module-->]]> + +<!ENTITY % term.module "INCLUDE"> +<![%term.module;[ +<!ENTITY % local.term.attrib ""> +<!ENTITY % term.role.attrib "%role.attrib;"> + +<!ENTITY % term.element "INCLUDE"> +<![%term.element;[ +<!--doc:The word or phrase being defined or described in a variable list.--> +<!ELEMENT term %ho; (%para.char.mix;)*> +<!--end of term.element-->]]> + +<!ENTITY % term.attlist "INCLUDE"> +<![%term.attlist;[ +<!ATTLIST term + %common.attrib; + %term.role.attrib; + %local.term.attrib; +> +<!--end of term.attlist-->]]> +<!--end of term.module-->]]> + +<!-- ListItem (defined above)--> +<!--end of variablelist.content.module-->]]> + +<!-- CalloutList ...................... --> + +<!ENTITY % calloutlist.content.module "INCLUDE"> +<![%calloutlist.content.module;[ +<!ENTITY % calloutlist.module "INCLUDE"> +<![%calloutlist.module;[ +<!ENTITY % local.calloutlist.attrib ""> +<!ENTITY % calloutlist.role.attrib "%role.attrib;"> + +<!ENTITY % calloutlist.element "INCLUDE"> +<![%calloutlist.element;[ +<!--doc:A list of Callouts.--> +<!ELEMENT calloutlist %ho; ((%formalobject.title.content;)?, callout+)> +<!--end of calloutlist.element-->]]> + +<!ENTITY % calloutlist.attlist "INCLUDE"> +<![%calloutlist.attlist;[ +<!ATTLIST calloutlist + %common.attrib; + %calloutlist.role.attrib; + %local.calloutlist.attrib; +> +<!--end of calloutlist.attlist-->]]> +<!--end of calloutlist.module-->]]> + +<!ENTITY % callout.module "INCLUDE"> +<![%callout.module;[ +<!ENTITY % local.callout.attrib ""> +<!ENTITY % callout.role.attrib "%role.attrib;"> + +<!ENTITY % callout.element "INCLUDE"> +<![%callout.element;[ +<!--doc:A “called out” description of a marked Area.--> +<!ELEMENT callout %ho; ((%component.mix;)+)> +<!--end of callout.element-->]]> + +<!-- AreaRefs: IDs of one or more Areas or AreaSets described + by this Callout --> + + +<!ENTITY % callout.attlist "INCLUDE"> +<![%callout.attlist;[ +<!ATTLIST callout + arearefs IDREFS #REQUIRED + %common.attrib; + %callout.role.attrib; + %local.callout.attrib; +> +<!--end of callout.attlist-->]]> +<!--end of callout.module-->]]> +<!--end of calloutlist.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Objects .............................................................. --> + +<!-- Examples etc. .................... --> + +<!ENTITY % example.module "INCLUDE"> +<![%example.module;[ +<!ENTITY % local.example.attrib ""> +<!ENTITY % example.role.attrib "%role.attrib;"> + +<!ENTITY % example.element "INCLUDE"> +<![%example.element;[ +<!--doc:A formal example, with a title.--> +<!ELEMENT example %ho; (blockinfo?, (%formalobject.title.content;), (%example.mix;)+) + %formal.exclusion;> +<!--end of example.element-->]]> + +<!ENTITY % example.attlist "INCLUDE"> +<![%example.attlist;[ +<!ATTLIST example + floatstyle CDATA #IMPLIED + %label.attrib; + %width.attrib; + %common.attrib; + %example.role.attrib; + %local.example.attrib; +> +<!--end of example.attlist-->]]> +<!--end of example.module-->]]> + +<!ENTITY % informalexample.module "INCLUDE"> +<![%informalexample.module;[ +<!ENTITY % local.informalexample.attrib ""> +<!ENTITY % informalexample.role.attrib "%role.attrib;"> + +<!ENTITY % informalexample.element "INCLUDE"> +<![%informalexample.element;[ +<!--doc:A displayed example without a title.--> +<!ELEMENT informalexample %ho; (blockinfo?, (%example.mix;)+)> +<!--end of informalexample.element-->]]> + +<!ENTITY % informalexample.attlist "INCLUDE"> +<![%informalexample.attlist;[ +<!ATTLIST informalexample + floatstyle CDATA #IMPLIED + %width.attrib; + %common.attrib; + %informalexample.role.attrib; + %local.informalexample.attrib; +> +<!--end of informalexample.attlist-->]]> +<!--end of informalexample.module-->]]> + +<!ENTITY % programlistingco.module "INCLUDE"> +<![%programlistingco.module;[ +<!ENTITY % local.programlistingco.attrib ""> +<!ENTITY % programlistingco.role.attrib "%role.attrib;"> + +<!ENTITY % programlistingco.element "INCLUDE"> +<![%programlistingco.element;[ +<!--doc:A program listing with associated areas used in callouts.--> +<!ELEMENT programlistingco %ho; (areaspec, programlisting, calloutlist*)> +<!--end of programlistingco.element-->]]> + +<!ENTITY % programlistingco.attlist "INCLUDE"> +<![%programlistingco.attlist;[ +<!ATTLIST programlistingco + %common.attrib; + %programlistingco.role.attrib; + %local.programlistingco.attrib; +> +<!--end of programlistingco.attlist-->]]> +<!-- CalloutList (defined above in Lists)--> +<!--end of informalexample.module-->]]> + +<!ENTITY % areaspec.content.module "INCLUDE"> +<![%areaspec.content.module;[ +<!ENTITY % areaspec.module "INCLUDE"> +<![%areaspec.module;[ +<!ENTITY % local.areaspec.attrib ""> +<!ENTITY % areaspec.role.attrib "%role.attrib;"> + +<!ENTITY % areaspec.element "INCLUDE"> +<![%areaspec.element;[ +<!--doc:A collection of regions in a graphic or code example.--> +<!ELEMENT areaspec %ho; ((area|areaset)+)> +<!--end of areaspec.element-->]]> + +<!-- Units: global unit of measure in which coordinates in + this spec are expressed: + + - CALSPair "x1,y1 x2,y2": lower-left and upper-right + coordinates in a rectangle describing repro area in which + graphic is placed, where X and Y dimensions are each some + number 0..10000 (taken from CALS graphic attributes) + + - LineColumn "line column": line number and column number + at which to start callout text in "linespecific" content + + - LineRange "startline endline": whole lines from startline + to endline in "linespecific" content + + - LineColumnPair "line1 col1 line2 col2": starting and ending + points of area in "linespecific" content that starts at + first position and ends at second position (including the + beginnings of any intervening lines) + + - Other: directive to look at value of OtherUnits attribute + to get implementation-specific keyword + + The default is implementation-specific; usually dependent on + the parent element (GraphicCO gets CALSPair, ProgramListingCO + and ScreenCO get LineColumn) --> +<!-- OtherUnits: User-defined units --> + + +<!ENTITY % areaspec.attlist "INCLUDE"> +<![%areaspec.attlist;[ +<!ATTLIST areaspec + units (calspair + |linecolumn + |linerange + |linecolumnpair + |other) #IMPLIED + otherunits NMTOKEN #IMPLIED + %common.attrib; + %areaspec.role.attrib; + %local.areaspec.attrib; +> +<!--end of areaspec.attlist-->]]> +<!--end of areaspec.module-->]]> + +<!ENTITY % area.module "INCLUDE"> +<![%area.module;[ +<!ENTITY % local.area.attrib ""> +<!ENTITY % area.role.attrib "%role.attrib;"> + +<!ENTITY % area.element "INCLUDE"> +<![%area.element;[ +<!--doc:A region defined for a Callout in a graphic or code example.--> +<!ELEMENT area %ho; EMPTY> +<!--end of area.element-->]]> + +<!-- bug number/symbol override or initialization --> +<!-- to any related information --> +<!-- Units: unit of measure in which coordinates in this + area are expressed; inherits from AreaSet and AreaSpec --> +<!-- OtherUnits: User-defined units --> + + +<!ENTITY % area.attlist "INCLUDE"> +<![%area.attlist;[ +<!ATTLIST area + %label.attrib; + %linkends.attrib; + units (calspair + |linecolumn + |linerange + |linecolumnpair + |other) #IMPLIED + otherunits NMTOKEN #IMPLIED + coords CDATA #REQUIRED + %idreq.common.attrib; + %area.role.attrib; + %local.area.attrib; +> +<!--end of area.attlist-->]]> +<!--end of area.module-->]]> + +<!ENTITY % areaset.module "INCLUDE"> +<![%areaset.module;[ +<!ENTITY % local.areaset.attrib ""> +<!ENTITY % areaset.role.attrib "%role.attrib;"> + +<!ENTITY % areaset.element "INCLUDE"> +<![%areaset.element;[ +<!--doc:A set of related areas in a graphic or code example.--> +<!ELEMENT areaset %ho; (area+)> +<!--end of areaset.element-->]]> + +<!-- bug number/symbol override or initialization --> +<!-- Units: unit of measure in which coordinates in this + area are expressed; inherits from AreaSpec --> + + +<!ENTITY % areaset.attlist "INCLUDE"> +<![%areaset.attlist;[ +<!ATTLIST areaset + %label.attrib; + units (calspair + |linecolumn + |linerange + |linecolumnpair + |other) #IMPLIED + otherunits NMTOKEN #IMPLIED + coords CDATA #REQUIRED + %idreq.common.attrib; + %areaset.role.attrib; + %local.areaset.attrib; +> +<!--end of areaset.attlist-->]]> +<!--end of areaset.module-->]]> +<!--end of areaspec.content.module-->]]> + +<!ENTITY % programlisting.module "INCLUDE"> +<![%programlisting.module;[ +<!ENTITY % local.programlisting.attrib ""> +<!ENTITY % programlisting.role.attrib "%role.attrib;"> + +<!ENTITY % programlisting.element "INCLUDE"> +<![%programlisting.element;[ +<!--doc:A literal listing of all or part of a program.--> +<!ELEMENT programlisting %ho; (%para.char.mix;|co|coref|lineannotation|textobject)*> +<!--end of programlisting.element-->]]> + +<!ENTITY % programlisting.attlist "INCLUDE"> +<![%programlisting.attlist;[ +<!ATTLIST programlisting + %width.attrib; + %linespecific.attrib; + %common.attrib; + %programlisting.role.attrib; + %local.programlisting.attrib; +> +<!--end of programlisting.attlist-->]]> +<!--end of programlisting.module-->]]> + +<!ENTITY % literallayout.module "INCLUDE"> +<![%literallayout.module;[ +<!ENTITY % local.literallayout.attrib ""> +<!ENTITY % literallayout.role.attrib "%role.attrib;"> + +<!ENTITY % literallayout.element "INCLUDE"> +<![%literallayout.element;[ +<!--doc:A block of text in which line breaks and white space are to be reproduced faithfully.--> +<!ELEMENT literallayout %ho; (%para.char.mix;|co|coref|textobject|lineannotation)*> +<!--end of literallayout.element-->]]> + +<!ENTITY % literallayout.attlist "INCLUDE"> +<![%literallayout.attlist;[ +<!ATTLIST literallayout + %width.attrib; + %linespecific.attrib; + class (monospaced|normal) "normal" + %common.attrib; + %literallayout.role.attrib; + %local.literallayout.attrib; +> +<!--end of literallayout.attlist-->]]> +<!-- LineAnnotation (defined in the Inlines section, below)--> +<!--end of literallayout.module-->]]> + +<!ENTITY % screenco.module "INCLUDE"> +<![%screenco.module;[ +<!ENTITY % local.screenco.attrib ""> +<!ENTITY % screenco.role.attrib "%role.attrib;"> + +<!ENTITY % screenco.element "INCLUDE"> +<![%screenco.element;[ +<!--doc:A screen with associated areas used in callouts.--> +<!ELEMENT screenco %ho; (areaspec, screen, calloutlist*)> +<!--end of screenco.element-->]]> + +<!ENTITY % screenco.attlist "INCLUDE"> +<![%screenco.attlist;[ +<!ATTLIST screenco + %common.attrib; + %screenco.role.attrib; + %local.screenco.attrib; +> +<!--end of screenco.attlist-->]]> +<!-- AreaSpec (defined above)--> +<!-- CalloutList (defined above in Lists)--> +<!--end of screenco.module-->]]> + +<!ENTITY % screen.module "INCLUDE"> +<![%screen.module;[ +<!ENTITY % local.screen.attrib ""> +<!ENTITY % screen.role.attrib "%role.attrib;"> + +<!ENTITY % screen.element "INCLUDE"> +<![%screen.element;[ +<!--doc:Text that a user sees or might see on a computer screen.--> +<!ELEMENT screen %ho; (%para.char.mix;|co|coref|textobject|lineannotation)*> +<!--end of screen.element-->]]> + +<!ENTITY % screen.attlist "INCLUDE"> +<![%screen.attlist;[ +<!ATTLIST screen + %width.attrib; + %linespecific.attrib; + %common.attrib; + %screen.role.attrib; + %local.screen.attrib; +> +<!--end of screen.attlist-->]]> +<!--end of screen.module-->]]> + +<!ENTITY % screenshot.content.module "INCLUDE"> +<![%screenshot.content.module;[ +<!ENTITY % screenshot.module "INCLUDE"> +<![%screenshot.module;[ +<!ENTITY % local.screenshot.attrib ""> +<!ENTITY % screenshot.role.attrib "%role.attrib;"> + +<!ENTITY % screenshot.element "INCLUDE"> +<![%screenshot.element;[ +<!--doc:A representation of what the user sees or might see on a computer screen.--> +<!ELEMENT screenshot %ho; (screeninfo?, + (graphic|graphicco + |mediaobject|mediaobjectco))> +<!--end of screenshot.element-->]]> + +<!ENTITY % screenshot.attlist "INCLUDE"> +<![%screenshot.attlist;[ +<!ATTLIST screenshot + %common.attrib; + %screenshot.role.attrib; + %local.screenshot.attrib; +> +<!--end of screenshot.attlist-->]]> +<!--end of screenshot.module-->]]> + +<!ENTITY % screeninfo.module "INCLUDE"> +<![%screeninfo.module;[ +<!ENTITY % local.screeninfo.attrib ""> +<!ENTITY % screeninfo.role.attrib "%role.attrib;"> + +<!ENTITY % screeninfo.element "INCLUDE"> +<![%screeninfo.element;[ +<!--doc:Information about how a screen shot was produced.--> +<!ELEMENT screeninfo %ho; (%para.char.mix;)* + %ubiq.exclusion;> +<!--end of screeninfo.element-->]]> + +<!ENTITY % screeninfo.attlist "INCLUDE"> +<![%screeninfo.attlist;[ +<!ATTLIST screeninfo + %common.attrib; + %screeninfo.role.attrib; + %local.screeninfo.attrib; +> +<!--end of screeninfo.attlist-->]]> +<!--end of screeninfo.module-->]]> +<!--end of screenshot.content.module-->]]> + +<!-- Figures etc. ..................... --> + +<!ENTITY % figure.module "INCLUDE"> +<![%figure.module;[ +<!ENTITY % local.figure.attrib ""> +<!ENTITY % figure.role.attrib "%role.attrib;"> + +<!ENTITY % figure.element "INCLUDE"> +<![%figure.element;[ +<!--doc:A formal figure, generally an illustration, with a title.--> +<!ELEMENT figure %ho; (blockinfo?, (%formalobject.title.content;), + (%figure.mix; | %link.char.class;)+)> +<!--end of figure.element-->]]> + +<!-- Float: Whether the Figure is supposed to be rendered + where convenient (yes (1) value) or at the place it occurs + in the text (no (0) value, the default) --> + + +<!ENTITY % figure.attlist "INCLUDE"> +<![%figure.attlist;[ +<!ATTLIST figure + float %yesorno.attvals; '0' + floatstyle CDATA #IMPLIED + pgwide %yesorno.attvals; #IMPLIED + %label.attrib; + %common.attrib; + %figure.role.attrib; + %local.figure.attrib; +> +<!--end of figure.attlist-->]]> +<!--end of figure.module-->]]> + +<!ENTITY % informalfigure.module "INCLUDE"> +<![ %informalfigure.module; [ +<!ENTITY % local.informalfigure.attrib ""> +<!ENTITY % informalfigure.role.attrib "%role.attrib;"> + +<!ENTITY % informalfigure.element "INCLUDE"> +<![ %informalfigure.element; [ +<!--doc:A untitled figure.--> +<!ELEMENT informalfigure %ho; (blockinfo?, (%figure.mix; | %link.char.class;)+)> +<!--end of informalfigure.element-->]]> + +<!ENTITY % informalfigure.attlist "INCLUDE"> +<![ %informalfigure.attlist; [ +<!-- +Float: Whether the Figure is supposed to be rendered +where convenient (yes (1) value) or at the place it occurs +in the text (no (0) value, the default) +--> +<!ATTLIST informalfigure + float %yesorno.attvals; "0" + floatstyle CDATA #IMPLIED + pgwide %yesorno.attvals; #IMPLIED + %label.attrib; + %common.attrib; + %informalfigure.role.attrib; + %local.informalfigure.attrib; +> +<!--end of informalfigure.attlist-->]]> +<!--end of informalfigure.module-->]]> + +<!ENTITY % graphicco.module "INCLUDE"> +<![%graphicco.module;[ +<!ENTITY % local.graphicco.attrib ""> +<!ENTITY % graphicco.role.attrib "%role.attrib;"> + +<!ENTITY % graphicco.element "INCLUDE"> +<![%graphicco.element;[ +<!--doc:A graphic that contains callout areas.--> +<!ELEMENT graphicco %ho; (areaspec, graphic, calloutlist*)> +<!--end of graphicco.element-->]]> + +<!ENTITY % graphicco.attlist "INCLUDE"> +<![%graphicco.attlist;[ +<!ATTLIST graphicco + %common.attrib; + %graphicco.role.attrib; + %local.graphicco.attrib; +> +<!--end of graphicco.attlist-->]]> +<!-- AreaSpec (defined above in Examples)--> +<!-- CalloutList (defined above in Lists)--> +<!--end of graphicco.module-->]]> + +<!-- Graphical data can be the content of Graphic, or you can reference + an external file either as an entity (Entitref) or a filename + (Fileref). --> + +<!ENTITY % graphic.module "INCLUDE"> +<![%graphic.module;[ +<!ENTITY % local.graphic.attrib ""> +<!ENTITY % graphic.role.attrib "%role.attrib;"> + +<!ENTITY % graphic.element "INCLUDE"> +<![%graphic.element;[ +<!--doc:A displayed graphical object (not an inline).--> +<!ELEMENT graphic %ho; EMPTY> +<!--end of graphic.element-->]]> + +<!ENTITY % graphic.attlist "INCLUDE"> +<![%graphic.attlist;[ +<!ATTLIST graphic + %graphics.attrib; + %common.attrib; + %graphic.role.attrib; + %local.graphic.attrib; +> +<!--end of graphic.attlist-->]]> +<!--end of graphic.module-->]]> + +<!ENTITY % inlinegraphic.module "INCLUDE"> +<![%inlinegraphic.module;[ +<!ENTITY % local.inlinegraphic.attrib ""> +<!ENTITY % inlinegraphic.role.attrib "%role.attrib;"> + +<!ENTITY % inlinegraphic.element "INCLUDE"> +<![%inlinegraphic.element;[ +<!--doc:An object containing or pointing to graphical data that will be rendered inline.--> +<!ELEMENT inlinegraphic %ho; EMPTY> +<!--end of inlinegraphic.element-->]]> + +<!ENTITY % inlinegraphic.attlist "INCLUDE"> +<![%inlinegraphic.attlist;[ +<!ATTLIST inlinegraphic + %graphics.attrib; + %common.attrib; + %inlinegraphic.role.attrib; + %local.inlinegraphic.attrib; +> +<!--end of inlinegraphic.attlist-->]]> +<!--end of inlinegraphic.module-->]]> + +<!ENTITY % mediaobject.content.module "INCLUDE"> +<![ %mediaobject.content.module; [ + +<!ENTITY % mediaobject.module "INCLUDE"> +<![ %mediaobject.module; [ +<!ENTITY % local.mediaobject.attrib ""> +<!ENTITY % mediaobject.role.attrib "%role.attrib;"> + +<!ENTITY % mediaobject.element "INCLUDE"> +<![ %mediaobject.element; [ +<!--doc:A displayed media object (video, audio, image, etc.).--> +<!ELEMENT mediaobject %ho; (objectinfo?, + (%mediaobject.mix;)+, + caption?)> +<!--end of mediaobject.element-->]]> + +<!ENTITY % mediaobject.attlist "INCLUDE"> +<![ %mediaobject.attlist; [ +<!ATTLIST mediaobject + %common.attrib; + %mediaobject.role.attrib; + %local.mediaobject.attrib; +> +<!--end of mediaobject.attlist-->]]> +<!--end of mediaobject.module-->]]> + +<!ENTITY % inlinemediaobject.module "INCLUDE"> +<![ %inlinemediaobject.module; [ +<!ENTITY % local.inlinemediaobject.attrib ""> +<!ENTITY % inlinemediaobject.role.attrib "%role.attrib;"> + +<!ENTITY % inlinemediaobject.element "INCLUDE"> +<![ %inlinemediaobject.element; [ +<!--doc:An inline media object (video, audio, image, and so on).--> +<!ELEMENT inlinemediaobject %ho; (objectinfo?, + (%mediaobject.mix;)+)> +<!--end of inlinemediaobject.element-->]]> + +<!ENTITY % inlinemediaobject.attlist "INCLUDE"> +<![ %inlinemediaobject.attlist; [ +<!ATTLIST inlinemediaobject + %common.attrib; + %inlinemediaobject.role.attrib; + %local.inlinemediaobject.attrib; +> +<!--end of inlinemediaobject.attlist-->]]> +<!--end of inlinemediaobject.module-->]]> + +<!ENTITY % videoobject.module "INCLUDE"> +<![ %videoobject.module; [ +<!ENTITY % local.videoobject.attrib ""> +<!ENTITY % videoobject.role.attrib "%role.attrib;"> + +<!ENTITY % videoobject.element "INCLUDE"> +<![ %videoobject.element; [ +<!--doc:A wrapper for video data and its associated meta-information.--> +<!ELEMENT videoobject %ho; (objectinfo?, videodata)> +<!--end of videoobject.element-->]]> + +<!ENTITY % videoobject.attlist "INCLUDE"> +<![ %videoobject.attlist; [ +<!ATTLIST videoobject + %common.attrib; + %videoobject.role.attrib; + %local.videoobject.attrib; +> +<!--end of videoobject.attlist-->]]> +<!--end of videoobject.module-->]]> + +<!ENTITY % audioobject.module "INCLUDE"> +<![ %audioobject.module; [ +<!ENTITY % local.audioobject.attrib ""> +<!ENTITY % audioobject.role.attrib "%role.attrib;"> + +<!ENTITY % audioobject.element "INCLUDE"> +<![ %audioobject.element; [ +<!--doc:A wrapper for audio data and its associated meta-information.--> +<!ELEMENT audioobject %ho; (objectinfo?, audiodata)> +<!--end of audioobject.element-->]]> + +<!ENTITY % audioobject.attlist "INCLUDE"> +<![ %audioobject.attlist; [ +<!ATTLIST audioobject + %common.attrib; + %audioobject.role.attrib; + %local.audioobject.attrib; +> +<!--end of audioobject.attlist-->]]> +<!--end of audioobject.module-->]]> + +<!ENTITY % imageobject.module "INCLUDE"> +<![ %imageobject.module; [ +<!ENTITY % local.imageobject.attrib ""> +<!ENTITY % imageobject.role.attrib "%role.attrib;"> + +<!ENTITY % imageobject.element "INCLUDE"> +<![ %imageobject.element; [ +<!--doc:A wrapper for image data and its associated meta-information.--> +<!ELEMENT imageobject %ho; (objectinfo?, imagedata)> +<!--end of imageobject.element-->]]> + +<!ENTITY % imageobject.attlist "INCLUDE"> +<![ %imageobject.attlist; [ +<!ATTLIST imageobject + %common.attrib; + %imageobject.role.attrib; + %local.imageobject.attrib; +> +<!--end of imageobject.attlist-->]]> +<!--end of imageobject.module-->]]> + +<!ENTITY % textobject.module "INCLUDE"> +<![ %textobject.module; [ +<!ENTITY % local.textobject.attrib ""> +<!ENTITY % textobject.role.attrib "%role.attrib;"> + +<!ENTITY % textobject.element "INCLUDE"> +<![ %textobject.element; [ +<!--doc:A wrapper for a text description of an object and its associated meta-information.--> +<!ELEMENT textobject %ho; (objectinfo?, (phrase|textdata|(%textobject.mix;)+))> +<!--end of textobject.element-->]]> + +<!ENTITY % textobject.attlist "INCLUDE"> +<![ %textobject.attlist; [ +<!ATTLIST textobject + %common.attrib; + %textobject.role.attrib; + %local.textobject.attrib; +> +<!--end of textobject.attlist-->]]> +<!--end of textobject.module-->]]> + +<!ENTITY % objectinfo.module "INCLUDE"> +<![ %objectinfo.module; [ +<!ENTITY % local.objectinfo.attrib ""> +<!ENTITY % objectinfo.role.attrib "%role.attrib;"> + +<!ENTITY % objectinfo.element "INCLUDE"> +<![ %objectinfo.element; [ +<!--doc:Meta-information for an object.--> +<!ELEMENT objectinfo %ho; ((%info.class;)+) + %beginpage.exclusion;> +<!--end of objectinfo.element-->]]> + +<!ENTITY % objectinfo.attlist "INCLUDE"> +<![ %objectinfo.attlist; [ +<!ATTLIST objectinfo + %common.attrib; + %objectinfo.role.attrib; + %local.objectinfo.attrib; +> +<!--end of objectinfo.attlist-->]]> +<!--end of objectinfo.module-->]]> + +<!--EntityRef: Name of an external entity containing the content + of the object data--> +<!--FileRef: Filename, qualified by a pathname if desired, + designating the file containing the content of the object data--> +<!--Format: Notation of the element content, if any--> +<!--SrcCredit: Information about the source of the image--> +<!ENTITY % local.objectdata.attrib ""> +<!ENTITY % objectdata.attrib + " + entityref ENTITY #IMPLIED + fileref CDATA #IMPLIED + format (%notation.class;) + #IMPLIED + srccredit CDATA #IMPLIED + %local.objectdata.attrib;" +> + +<!ENTITY % videodata.module "INCLUDE"> +<![ %videodata.module; [ +<!ENTITY % local.videodata.attrib ""> +<!ENTITY % videodata.role.attrib "%role.attrib;"> + +<!ENTITY % videodata.element "INCLUDE"> +<![ %videodata.element; [ +<!--doc:Pointer to external video data.--> +<!ELEMENT videodata %ho; EMPTY> +<!--end of videodata.element-->]]> + +<!ENTITY % videodata.attlist "INCLUDE"> +<![ %videodata.attlist; [ + +<!--Width: Same as CALS reprowid (desired width)--> +<!--Depth: Same as CALS reprodep (desired depth)--> +<!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means + application-specific--> +<!--Scale: Conflation of CALS hscale and vscale--> +<!--Scalefit: Same as CALS scalefit--> +<!ATTLIST videodata + width CDATA #IMPLIED + contentwidth CDATA #IMPLIED + depth CDATA #IMPLIED + contentdepth CDATA #IMPLIED + align (left + |right + |center) #IMPLIED + valign (top + |middle + |bottom) #IMPLIED + scale CDATA #IMPLIED + scalefit %yesorno.attvals; + #IMPLIED + %objectdata.attrib; + %common.attrib; + %videodata.role.attrib; + %local.videodata.attrib; +> +<!--end of videodata.attlist-->]]> +<!--end of videodata.module-->]]> + +<!ENTITY % audiodata.module "INCLUDE"> +<![ %audiodata.module; [ +<!ENTITY % local.audiodata.attrib ""> +<!ENTITY % audiodata.role.attrib "%role.attrib;"> + +<!ENTITY % audiodata.element "INCLUDE"> +<![ %audiodata.element; [ +<!--doc:Pointer to external audio data.--> +<!ELEMENT audiodata %ho; EMPTY> +<!--end of audiodata.element-->]]> + +<!ENTITY % audiodata.attlist "INCLUDE"> +<![ %audiodata.attlist; [ +<!ATTLIST audiodata + %objectdata.attrib; + %common.attrib; + %audiodata.role.attrib; + %local.audiodata.attrib; +> +<!--end of audiodata.attlist-->]]> +<!--end of audiodata.module-->]]> + +<!ENTITY % imagedata.module "INCLUDE"> +<![ %imagedata.module; [ +<!ENTITY % local.imagedata.attrib ""> +<!ENTITY % imagedata.role.attrib "%role.attrib;"> + +<!ENTITY % imagedata.element "INCLUDE"> +<![ %imagedata.element; [ +<!--doc:Pointer to external image data.--> +<!ELEMENT imagedata %ho; EMPTY> +<!--end of imagedata.element-->]]> + +<!ENTITY % imagedata.attlist "INCLUDE"> +<![ %imagedata.attlist; [ + +<!--Width: Same as CALS reprowid (desired width)--> +<!--Depth: Same as CALS reprodep (desired depth)--> +<!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means + application-specific--> +<!--Scale: Conflation of CALS hscale and vscale--> +<!--Scalefit: Same as CALS scalefit--> +<!ATTLIST imagedata + width CDATA #IMPLIED + contentwidth CDATA #IMPLIED + depth CDATA #IMPLIED + contentdepth CDATA #IMPLIED + align (left + |right + |center) #IMPLIED + valign (top + |middle + |bottom) #IMPLIED + scale CDATA #IMPLIED + scalefit %yesorno.attvals; + #IMPLIED + %objectdata.attrib; + %common.attrib; + %imagedata.role.attrib; + %local.imagedata.attrib; +> +<!--end of imagedata.attlist-->]]> +<!--end of imagedata.module-->]]> + +<!ENTITY % textdata.module "INCLUDE"> +<![ %textdata.module; [ +<!ENTITY % local.textdata.attrib ""> +<!ENTITY % textdata.role.attrib "%role.attrib;"> + +<!ENTITY % textdata.element "INCLUDE"> +<![ %textdata.element; [ +<!--doc:Pointer to external text data.--> +<!ELEMENT textdata %ho; EMPTY> +<!--end of textdata.element-->]]> + +<!ENTITY % textdata.attlist "INCLUDE"> +<![ %textdata.attlist; [ +<!ATTLIST textdata + encoding CDATA #IMPLIED + %objectdata.attrib; + %common.attrib; + %textdata.role.attrib; + %local.textdata.attrib; +> +<!--end of textdata.attlist-->]]> +<!--end of textdata.module-->]]> + +<!ENTITY % mediaobjectco.module "INCLUDE"> +<![ %mediaobjectco.module; [ +<!ENTITY % local.mediaobjectco.attrib ""> +<!ENTITY % mediaobjectco.role.attrib "%role.attrib;"> + +<!ENTITY % mediaobjectco.element "INCLUDE"> +<![ %mediaobjectco.element; [ +<!--doc:A media object that contains callouts.--> +<!ELEMENT mediaobjectco %ho; (objectinfo?, imageobjectco, + (imageobjectco|textobject)*)> +<!--end of mediaobjectco.element-->]]> + +<!ENTITY % mediaobjectco.attlist "INCLUDE"> +<![ %mediaobjectco.attlist; [ +<!ATTLIST mediaobjectco + %common.attrib; + %mediaobjectco.role.attrib; + %local.mediaobjectco.attrib; +> +<!--end of mediaobjectco.attlist-->]]> +<!--end of mediaobjectco.module-->]]> + +<!ENTITY % imageobjectco.module "INCLUDE"> +<![ %imageobjectco.module; [ +<!ENTITY % local.imageobjectco.attrib ""> +<!ENTITY % imageobjectco.role.attrib "%role.attrib;"> + +<!ENTITY % imageobjectco.element "INCLUDE"> +<![ %imageobjectco.element; [ +<!--doc:A wrapper for an image object with callouts.--> +<!ELEMENT imageobjectco %ho; (areaspec, imageobject, calloutlist*)> +<!--end of imageobjectco.element-->]]> + +<!ENTITY % imageobjectco.attlist "INCLUDE"> +<![ %imageobjectco.attlist; [ +<!ATTLIST imageobjectco + %common.attrib; + %imageobjectco.role.attrib; + %local.imageobjectco.attrib; +> +<!--end of imageobjectco.attlist-->]]> +<!--end of imageobjectco.module-->]]> +<!--end of mediaobject.content.module-->]]> + +<!-- Equations ........................ --> + +<!-- This PE provides a mechanism for replacing equation content, --> +<!-- perhaps adding a new or different model (e.g., MathML) --> +<!ENTITY % equation.content "(alt?, (graphic+|mediaobject+|mathphrase+))"> +<!ENTITY % inlineequation.content "(alt?, (graphic+|inlinemediaobject+|mathphrase+))"> + +<!ENTITY % equation.module "INCLUDE"> +<![%equation.module;[ +<!ENTITY % local.equation.attrib ""> +<!ENTITY % equation.role.attrib "%role.attrib;"> + +<!ENTITY % equation.element "INCLUDE"> +<![%equation.element;[ +<!--doc:A displayed mathematical equation.--> +<!ELEMENT equation %ho; (blockinfo?, (%formalobject.title.content;)?, + (informalequation | %equation.content;))> +<!--end of equation.element-->]]> + +<!ENTITY % equation.attlist "INCLUDE"> +<![%equation.attlist;[ +<!ATTLIST equation + floatstyle CDATA #IMPLIED + %label.attrib; + %common.attrib; + %equation.role.attrib; + %local.equation.attrib; +> +<!--end of equation.attlist-->]]> +<!--end of equation.module-->]]> + +<!ENTITY % informalequation.module "INCLUDE"> +<![%informalequation.module;[ +<!ENTITY % local.informalequation.attrib ""> +<!ENTITY % informalequation.role.attrib "%role.attrib;"> + +<!ENTITY % informalequation.element "INCLUDE"> +<![%informalequation.element;[ +<!--doc:A displayed mathematical equation without a title.--> +<!ELEMENT informalequation %ho; (blockinfo?, %equation.content;) > +<!--end of informalequation.element-->]]> + +<!ENTITY % informalequation.attlist "INCLUDE"> +<![%informalequation.attlist;[ +<!ATTLIST informalequation + floatstyle CDATA #IMPLIED + %common.attrib; + %informalequation.role.attrib; + %local.informalequation.attrib; +> +<!--end of informalequation.attlist-->]]> +<!--end of informalequation.module-->]]> + +<!ENTITY % inlineequation.module "INCLUDE"> +<![%inlineequation.module;[ +<!ENTITY % local.inlineequation.attrib ""> +<!ENTITY % inlineequation.role.attrib "%role.attrib;"> + +<!ENTITY % inlineequation.element "INCLUDE"> +<![%inlineequation.element;[ +<!--doc:A mathematical equation or expression occurring inline.--> +<!ELEMENT inlineequation %ho; (%inlineequation.content;)> +<!--end of inlineequation.element-->]]> + +<!ENTITY % inlineequation.attlist "INCLUDE"> +<![%inlineequation.attlist;[ +<!ATTLIST inlineequation + %common.attrib; + %inlineequation.role.attrib; + %local.inlineequation.attrib; +> +<!--end of inlineequation.attlist-->]]> +<!--end of inlineequation.module-->]]> + +<!ENTITY % alt.module "INCLUDE"> +<![%alt.module;[ +<!ENTITY % local.alt.attrib ""> +<!ENTITY % alt.role.attrib "%role.attrib;"> + +<!ENTITY % alt.element "INCLUDE"> +<![%alt.element;[ +<!--doc:Text representation for a graphical element.--> +<!ELEMENT alt %ho; (#PCDATA)> +<!--end of alt.element-->]]> + +<!ENTITY % alt.attlist "INCLUDE"> +<![%alt.attlist;[ +<!ATTLIST alt + %common.attrib; + %alt.role.attrib; + %local.alt.attrib; +> +<!--end of alt.attlist-->]]> +<!--end of alt.module-->]]> + +<!ENTITY % mathphrase.module "INCLUDE"> +<![%mathphrase.module;[ +<!ENTITY % local.mathphrase.attrib ""> +<!ENTITY % mathphrase.role.attrib "%role.attrib;"> + +<!ENTITY % mathphrase.element "INCLUDE"> +<![%mathphrase.element;[ +<!--doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup.--> +<!ELEMENT mathphrase %ho; (#PCDATA|subscript|superscript|emphasis)*> +<!--end of mathphrase.element-->]]> + +<!ENTITY % mathphrase.attlist "INCLUDE"> +<![%mathphrase.attlist;[ +<!ATTLIST mathphrase + %common.attrib; + %mathphrase.role.attrib; + %local.mathphrase.attrib; +> +<!--end of mathphrase.attlist-->]]> +<!--end of mathphrase.module-->]]> + +<!-- Tables ........................... --> + +<!ENTITY % table.module "INCLUDE"> +<![%table.module;[ + +<!-- Choose a table model. CALS or OASIS XML Exchange --> + +<!ENTITY % cals.table.module "INCLUDE"> +<![%cals.table.module;[ +<!ENTITY % exchange.table.module "IGNORE"> +]]> +<!ENTITY % exchange.table.module "INCLUDE"> + +<!-- Do we allow the HTML table model as well? --> +<!ENTITY % allow.html.tables "INCLUDE"> +<![%allow.html.tables;[ + <!-- ====================================================== --> + <!-- xhtmltbl.mod defines HTML tables and sets parameter + entities so that, when the CALS table module is read, + we end up allowing any table to be CALS or HTML. + i.e. This include must come first! --> + <!-- ====================================================== --> + +<!ENTITY % htmltbl + PUBLIC "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" + "htmltblx.mod"> +%htmltbl; +<!--end of allow.html.tables-->]]> + +<!ENTITY % tables.role.attrib "%role.attrib;"> + +<![%cals.table.module;[ +<!-- Add label and role attributes to table and informaltable --> +<!ENTITY % bodyatt " + floatstyle CDATA #IMPLIED + rowheader (firstcol|norowheader) #IMPLIED + %label.attrib;" +> + +<!-- Add common attributes to Table, TGroup, TBody, THead, TFoot, Row, + EntryTbl, and Entry (and InformalTable element). --> +<!ENTITY % secur + "%common.attrib; + %tables.role.attrib;"> + +<!ENTITY % common.table.attribs + "%bodyatt; + %secur;"> + +<!-- Content model for Table. --> +<!ENTITY % tbl.table.mdl + "(blockinfo?, (%formalobject.title.content;), (%ndxterm.class;)*, + textobject*, + (graphic+|mediaobject+|tgroup+))"> + +<!-- Allow either objects or inlines; beware of REs between elements. --> +<!ENTITY % tbl.entry.mdl "%para.char.mix; | %tabentry.mix;"> + +<!-- Reference CALS Table Model --> +<!ENTITY % tablemodel + PUBLIC "-//OASIS//DTD DocBook CALS Table Model V4.5//EN" + "calstblx.dtd"> +]]> + +<![%exchange.table.module;[ +<!-- Add common attributes and the Label attribute to Table and --> +<!-- InformalTable. --> +<!ENTITY % bodyatt + "%common.attrib; + rowheader (firstcol|norowheader) #IMPLIED + %label.attrib; + %tables.role.attrib;"> + +<!ENTITY % common.table.attribs + "%bodyatt;"> + +<!-- Add common attributes to TGroup, ColSpec, TBody, THead, Row, Entry --> + +<!ENTITY % tbl.tgroup.att "%common.attrib;"> +<!ENTITY % tbl.colspec.att "%common.attrib;"> +<!ENTITY % tbl.tbody.att "%common.attrib;"> +<!ENTITY % tbl.thead.att "%common.attrib;"> +<!ENTITY % tbl.row.att "%common.attrib;"> +<!ENTITY % tbl.entry.att "%common.attrib;"> + +<!-- Content model for Table. --> +<!ENTITY % tbl.table.mdl + "(blockinfo?, (%formalobject.title.content;), (%ndxterm.class;)*, + textobject*, + (graphic+|mediaobject+|tgroup+))"> + +<!-- Allow either objects or inlines; beware of REs between elements. --> +<!ENTITY % tbl.entry.mdl "(%para.char.mix; | %tabentry.mix;)*"> + +<!-- Reference OASIS Exchange Table Model --> +<!ENTITY % tablemodel + PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN" + "soextblx.dtd"> +]]> + +%tablemodel; + +<!--end of table.module-->]]> + +<!ENTITY % informaltable.module "INCLUDE"> +<![%informaltable.module;[ + +<!-- Note that InformalTable is dependent on some of the entity + declarations that customize Table. --> + +<!ENTITY % local.informaltable.attrib ""> + +<!-- the following entity may have been declared by the XHTML table module --> +<!ENTITY % informal.tbl.table.mdl "textobject*, (graphic+|mediaobject+|tgroup+)"> + +<!ENTITY % informaltable.element "INCLUDE"> +<![%informaltable.element;[ +<!--doc:A table without a title.--> +<!ELEMENT informaltable %ho; (blockinfo?, (%informal.tbl.table.mdl;))> +<!--end of informaltable.element-->]]> + +<!-- Frame, Colsep, and Rowsep must be repeated because + they are not in entities in the table module. --> +<!-- includes TabStyle, ToCentry, ShortEntry, + Orient, PgWide --> +<!-- includes Label --> +<!-- includes common attributes --> + +<!ENTITY % informaltable.attlist "INCLUDE"> +<![%informaltable.attlist;[ +<!ATTLIST informaltable + frame (%tbl.frame.attval;) #IMPLIED + colsep %yesorno.attvals; #IMPLIED + rowsep %yesorno.attvals; #IMPLIED + %common.table.attribs; + %tbl.table.att; + %local.informaltable.attrib; +> +<!--end of informaltable.attlist-->]]> +<!--end of informaltable.module-->]]> + +<!ENTITY % caption.module "INCLUDE"> +<![ %caption.module; [ +<!ENTITY % local.caption.attrib ""> +<!ENTITY % caption.role.attrib "%role.attrib;"> + +<!ENTITY % caption.element "INCLUDE"> +<![ %caption.element; [ +<!--doc:A caption.--> +<!ELEMENT caption %ho; (#PCDATA | %textobject.mix;)*> +<!--end of caption.element-->]]> + +<!ENTITY % caption.attlist "INCLUDE"> +<![ %caption.attlist; [ +<!-- attrs comes from HTML tables ... --> + +<![ %allow.html.tables; [ +<!-- common.attrib, but without ID because ID is in attrs --> +<!ENTITY % caption.attlist.content " + %caption.role.attrib; + %attrs; + align (top|bottom|left|right) #IMPLIED + %local.caption.attrib; +"> +]]> +<!ENTITY % caption.attlist.content " + %common.attrib; + %caption.role.attrib; + %local.caption.attrib; +"> + +<!ATTLIST caption %caption.attlist.content;> + +<!--end of caption.attlist-->]]> +<!--end of caption.module-->]]> + +<!-- ...................................................................... --> +<!-- Synopses ............................................................. --> + +<!-- Synopsis ......................... --> + +<!ENTITY % synopsis.module "INCLUDE"> +<![%synopsis.module;[ +<!ENTITY % local.synopsis.attrib ""> +<!ENTITY % synopsis.role.attrib "%role.attrib;"> + +<!ENTITY % synopsis.element "INCLUDE"> +<![%synopsis.element;[ +<!--doc:A general-purpose element for representing the syntax of commands or functions.--> +<!ELEMENT synopsis %ho; (%para.char.mix;|graphic|mediaobject|co|coref|textobject|lineannotation)*> +<!--end of synopsis.element-->]]> + +<!ENTITY % synopsis.attlist "INCLUDE"> +<![%synopsis.attlist;[ +<!ATTLIST synopsis + %label.attrib; + %linespecific.attrib; + %common.attrib; + %synopsis.role.attrib; + %local.synopsis.attrib; +> +<!--end of synopsis.attlist-->]]> + +<!-- LineAnnotation (defined in the Inlines section, below)--> +<!--end of synopsis.module-->]]> + +<!-- CmdSynopsis ...................... --> + +<!ENTITY % cmdsynopsis.content.module "INCLUDE"> +<![%cmdsynopsis.content.module;[ +<!ENTITY % cmdsynopsis.module "INCLUDE"> +<![%cmdsynopsis.module;[ +<!ENTITY % local.cmdsynopsis.attrib ""> +<!ENTITY % cmdsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % cmdsynopsis.element "INCLUDE"> +<![%cmdsynopsis.element;[ +<!--doc:A syntax summary for a software command.--> +<!ELEMENT cmdsynopsis %ho; ((command | arg | group | sbr)+, synopfragment*)> +<!--end of cmdsynopsis.element-->]]> + +<!-- Sepchar: Character that should separate command and all + top-level arguments; alternate value might be e.g., Δ --> + + +<!ENTITY % cmdsynopsis.attlist "INCLUDE"> +<![%cmdsynopsis.attlist;[ +<!ATTLIST cmdsynopsis + %label.attrib; + sepchar CDATA " " + cmdlength CDATA #IMPLIED + %common.attrib; + %cmdsynopsis.role.attrib; + %local.cmdsynopsis.attrib; +> +<!--end of cmdsynopsis.attlist-->]]> +<!--end of cmdsynopsis.module-->]]> + +<!ENTITY % arg.module "INCLUDE"> +<![%arg.module;[ +<!ENTITY % local.arg.attrib ""> +<!ENTITY % arg.role.attrib "%role.attrib;"> + +<!ENTITY % arg.element "INCLUDE"> +<![%arg.element;[ +<!--doc:An argument in a CmdSynopsis.--> +<!ELEMENT arg %ho; (#PCDATA + | arg + | group + | option + | synopfragmentref + | replaceable + | sbr)*> +<!--end of arg.element-->]]> + +<!-- Choice: Whether Arg must be supplied: Opt (optional to + supply, e.g. [arg]; the default), Req (required to supply, + e.g. {arg}), or Plain (required to supply, e.g. arg) --> +<!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without + ellipsis; the default), or Repeat (e.g. arg...) --> + + +<!ENTITY % arg.attlist "INCLUDE"> +<![%arg.attlist;[ +<!ATTLIST arg + choice (opt + |req + |plain) 'opt' + rep (norepeat + |repeat) 'norepeat' + %common.attrib; + %arg.role.attrib; + %local.arg.attrib; +> +<!--end of arg.attlist-->]]> +<!--end of arg.module-->]]> + +<!ENTITY % group.module "INCLUDE"> +<![%group.module;[ + +<!ENTITY % local.group.attrib ""> +<!ENTITY % group.role.attrib "%role.attrib;"> + +<!ENTITY % group.element "INCLUDE"> +<![%group.element;[ +<!--doc:A group of elements in a CmdSynopsis.--> +<!ELEMENT group %ho; ((arg | group | option | synopfragmentref + | replaceable | sbr)+)> +<!--end of group.element-->]]> + +<!-- Choice: Whether Group must be supplied: Opt (optional to + supply, e.g. [g1|g2|g3]; the default), Req (required to + supply, e.g. {g1|g2|g3}), Plain (required to supply, + e.g. g1|g2|g3), OptMult (can supply zero or more, e.g. + [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g. + {{g1|g2|g3}}) --> +<!-- Rep: whether Group is repeatable: Norepeat (e.g. group + without ellipsis; the default), or Repeat (e.g. group...) --> + + +<!ENTITY % group.attlist "INCLUDE"> +<![%group.attlist;[ +<!ATTLIST group + choice (opt + |req + |plain) 'opt' + rep (norepeat + |repeat) 'norepeat' + %common.attrib; + %group.role.attrib; + %local.group.attrib; +> +<!--end of group.attlist-->]]> +<!--end of group.module-->]]> + +<!ENTITY % sbr.module "INCLUDE"> +<![%sbr.module;[ +<!ENTITY % local.sbr.attrib ""> +<!-- Synopsis break --> +<!ENTITY % sbr.role.attrib "%role.attrib;"> + +<!ENTITY % sbr.element "INCLUDE"> +<![%sbr.element;[ +<!--doc:An explicit line break in a command synopsis.--> +<!ELEMENT sbr %ho; EMPTY> +<!--end of sbr.element-->]]> + +<!ENTITY % sbr.attlist "INCLUDE"> +<![%sbr.attlist;[ +<!ATTLIST sbr + %common.attrib; + %sbr.role.attrib; + %local.sbr.attrib; +> +<!--end of sbr.attlist-->]]> +<!--end of sbr.module-->]]> + +<!ENTITY % synopfragmentref.module "INCLUDE"> +<![%synopfragmentref.module;[ +<!ENTITY % local.synopfragmentref.attrib ""> +<!ENTITY % synopfragmentref.role.attrib "%role.attrib;"> + +<!ENTITY % synopfragmentref.element "INCLUDE"> +<![%synopfragmentref.element;[ +<!--doc:A reference to a fragment of a command synopsis.--> +<!ELEMENT synopfragmentref %ho; (#PCDATA)> +<!--end of synopfragmentref.element-->]]> + +<!-- to SynopFragment of complex synopsis + material for separate referencing --> + + +<!ENTITY % synopfragmentref.attlist "INCLUDE"> +<![%synopfragmentref.attlist;[ +<!ATTLIST synopfragmentref + %linkendreq.attrib; %common.attrib; + %synopfragmentref.role.attrib; + %local.synopfragmentref.attrib; +> +<!--end of synopfragmentref.attlist-->]]> +<!--end of synopfragmentref.module-->]]> + +<!ENTITY % synopfragment.module "INCLUDE"> +<![%synopfragment.module;[ +<!ENTITY % local.synopfragment.attrib ""> +<!ENTITY % synopfragment.role.attrib "%role.attrib;"> + +<!ENTITY % synopfragment.element "INCLUDE"> +<![%synopfragment.element;[ +<!--doc:A portion of a CmdSynopsis broken out from the main body of the synopsis.--> +<!ELEMENT synopfragment %ho; ((arg | group)+)> +<!--end of synopfragment.element-->]]> + +<!ENTITY % synopfragment.attlist "INCLUDE"> +<![%synopfragment.attlist;[ +<!ATTLIST synopfragment + %idreq.common.attrib; + %synopfragment.role.attrib; + %local.synopfragment.attrib; +> +<!--end of synopfragment.attlist-->]]> +<!--end of synopfragment.module-->]]> + +<!-- Command (defined in the Inlines section, below)--> +<!-- Option (defined in the Inlines section, below)--> +<!-- Replaceable (defined in the Inlines section, below)--> +<!--end of cmdsynopsis.content.module-->]]> + +<!-- FuncSynopsis ..................... --> + +<!ENTITY % funcsynopsis.content.module "INCLUDE"> +<![%funcsynopsis.content.module;[ +<!ENTITY % funcsynopsis.module "INCLUDE"> +<![%funcsynopsis.module;[ + +<!ENTITY % local.funcsynopsis.attrib ""> +<!ENTITY % funcsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % funcsynopsis.element "INCLUDE"> +<![%funcsynopsis.element;[ +<!--doc:The syntax summary for a function definition.--> +<!ELEMENT funcsynopsis %ho; ((funcsynopsisinfo | funcprototype)+)> +<!--end of funcsynopsis.element-->]]> + +<!ENTITY % funcsynopsis.attlist "INCLUDE"> +<![%funcsynopsis.attlist;[ +<!ATTLIST funcsynopsis + %label.attrib; + %common.attrib; + %funcsynopsis.role.attrib; + %local.funcsynopsis.attrib; +> +<!--end of funcsynopsis.attlist-->]]> +<!--end of funcsynopsis.module-->]]> + +<!ENTITY % funcsynopsisinfo.module "INCLUDE"> +<![%funcsynopsisinfo.module;[ +<!ENTITY % local.funcsynopsisinfo.attrib ""> +<!ENTITY % funcsynopsisinfo.role.attrib "%role.attrib;"> + +<!ENTITY % funcsynopsisinfo.element "INCLUDE"> +<![%funcsynopsisinfo.element;[ +<!--doc:Information supplementing the FuncDefs of a FuncSynopsis.--> +<!ELEMENT funcsynopsisinfo %ho; (%cptr.char.mix;|textobject|lineannotation)*> +<!--end of funcsynopsisinfo.element-->]]> + +<!ENTITY % funcsynopsisinfo.attlist "INCLUDE"> +<![%funcsynopsisinfo.attlist;[ +<!ATTLIST funcsynopsisinfo + %linespecific.attrib; + %common.attrib; + %funcsynopsisinfo.role.attrib; + %local.funcsynopsisinfo.attrib; +> +<!--end of funcsynopsisinfo.attlist-->]]> +<!--end of funcsynopsisinfo.module-->]]> + +<!ENTITY % funcprototype.module "INCLUDE"> +<![%funcprototype.module;[ +<!ENTITY % local.funcprototype.attrib ""> +<!ENTITY % funcprototype.role.attrib "%role.attrib;"> + +<!ENTITY % funcprototype.element "INCLUDE"> +<![%funcprototype.element;[ +<!--doc:The prototype of a function.--> +<!ELEMENT funcprototype %ho; (modifier*, + funcdef, + (void|varargs|(paramdef+, varargs?)), + modifier*)> + +<!--end of funcprototype.element-->]]> + +<!ENTITY % funcprototype.attlist "INCLUDE"> +<![%funcprototype.attlist;[ +<!ATTLIST funcprototype + %common.attrib; + %funcprototype.role.attrib; + %local.funcprototype.attrib; +> +<!--end of funcprototype.attlist-->]]> +<!--end of funcprototype.module-->]]> + +<!ENTITY % funcdef.module "INCLUDE"> +<![%funcdef.module;[ +<!ENTITY % local.funcdef.attrib ""> +<!ENTITY % funcdef.role.attrib "%role.attrib;"> + +<!ENTITY % funcdef.element "INCLUDE"> +<![%funcdef.element;[ +<!--doc:A function (subroutine) name and its return type.--> +<!ELEMENT funcdef %ho; (#PCDATA + | type + | replaceable + | function)*> +<!--end of funcdef.element-->]]> + +<!ENTITY % funcdef.attlist "INCLUDE"> +<![%funcdef.attlist;[ +<!ATTLIST funcdef + %common.attrib; + %funcdef.role.attrib; + %local.funcdef.attrib; +> +<!--end of funcdef.attlist-->]]> +<!--end of funcdef.module-->]]> + +<!ENTITY % void.module "INCLUDE"> +<![%void.module;[ +<!ENTITY % local.void.attrib ""> +<!ENTITY % void.role.attrib "%role.attrib;"> + +<!ENTITY % void.element "INCLUDE"> +<![%void.element;[ +<!--doc:An empty element in a function synopsis indicating that the function in question takes no arguments.--> +<!ELEMENT void %ho; EMPTY> +<!--end of void.element-->]]> + +<!ENTITY % void.attlist "INCLUDE"> +<![%void.attlist;[ +<!ATTLIST void + %common.attrib; + %void.role.attrib; + %local.void.attrib; +> +<!--end of void.attlist-->]]> +<!--end of void.module-->]]> + +<!ENTITY % varargs.module "INCLUDE"> +<![%varargs.module;[ +<!ENTITY % local.varargs.attrib ""> +<!ENTITY % varargs.role.attrib "%role.attrib;"> + +<!ENTITY % varargs.element "INCLUDE"> +<![%varargs.element;[ +<!--doc:An empty element in a function synopsis indicating a variable number of arguments.--> +<!ELEMENT varargs %ho; EMPTY> +<!--end of varargs.element-->]]> + +<!ENTITY % varargs.attlist "INCLUDE"> +<![%varargs.attlist;[ +<!ATTLIST varargs + %common.attrib; + %varargs.role.attrib; + %local.varargs.attrib; +> +<!--end of varargs.attlist-->]]> +<!--end of varargs.module-->]]> + +<!-- Processing assumes that only one Parameter will appear in a + ParamDef, and that FuncParams will be used at most once, for + providing information on the "inner parameters" for parameters that + are pointers to functions. --> + +<!ENTITY % paramdef.module "INCLUDE"> +<![%paramdef.module;[ +<!ENTITY % local.paramdef.attrib ""> +<!ENTITY % paramdef.role.attrib "%role.attrib;"> + +<!ENTITY % paramdef.element "INCLUDE"> +<![%paramdef.element;[ +<!--doc:Information about a function parameter in a programming language.--> +<!ELEMENT paramdef %ho; (#PCDATA + | initializer + | type + | replaceable + | parameter + | funcparams)*> +<!--end of paramdef.element-->]]> + +<!ENTITY % paramdef.attlist "INCLUDE"> +<![%paramdef.attlist;[ +<!ATTLIST paramdef + choice (opt + |req) #IMPLIED + %common.attrib; + %paramdef.role.attrib; + %local.paramdef.attrib; +> +<!--end of paramdef.attlist-->]]> +<!--end of paramdef.module-->]]> + +<!ENTITY % funcparams.module "INCLUDE"> +<![%funcparams.module;[ +<!ENTITY % local.funcparams.attrib ""> +<!ENTITY % funcparams.role.attrib "%role.attrib;"> + +<!ENTITY % funcparams.element "INCLUDE"> +<![%funcparams.element;[ +<!--doc:Parameters for a function referenced through a function pointer in a synopsis.--> +<!ELEMENT funcparams %ho; (%cptr.char.mix;)*> +<!--end of funcparams.element-->]]> + +<!ENTITY % funcparams.attlist "INCLUDE"> +<![%funcparams.attlist;[ +<!ATTLIST funcparams + %common.attrib; + %funcparams.role.attrib; + %local.funcparams.attrib; +> +<!--end of funcparams.attlist-->]]> +<!--end of funcparams.module-->]]> + +<!-- LineAnnotation (defined in the Inlines section, below)--> +<!-- Replaceable (defined in the Inlines section, below)--> +<!-- Function (defined in the Inlines section, below)--> +<!-- Parameter (defined in the Inlines section, below)--> +<!--end of funcsynopsis.content.module-->]]> + +<!-- ClassSynopsis ..................... --> + +<!ENTITY % classsynopsis.content.module "INCLUDE"> +<![%classsynopsis.content.module;[ + +<!ENTITY % classsynopsis.module "INCLUDE"> +<![%classsynopsis.module;[ +<!ENTITY % local.classsynopsis.attrib ""> +<!ENTITY % classsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % classsynopsis.element "INCLUDE"> +<![%classsynopsis.element;[ +<!--doc:The syntax summary for a class definition.--> +<!ELEMENT classsynopsis %ho; ((ooclass|oointerface|ooexception)+, + (classsynopsisinfo + |fieldsynopsis|%method.synop.class;)*)> +<!--end of classsynopsis.element-->]]> + +<!ENTITY % classsynopsis.attlist "INCLUDE"> +<![%classsynopsis.attlist;[ +<!ATTLIST classsynopsis + language CDATA #IMPLIED + class (class|interface) "class" + %common.attrib; + %classsynopsis.role.attrib; + %local.classsynopsis.attrib; +> +<!--end of classsynopsis.attlist-->]]> +<!--end of classsynopsis.module-->]]> + +<!ENTITY % classsynopsisinfo.module "INCLUDE"> +<![ %classsynopsisinfo.module; [ +<!ENTITY % local.classsynopsisinfo.attrib ""> +<!ENTITY % classsynopsisinfo.role.attrib "%role.attrib;"> + +<!ENTITY % classsynopsisinfo.element "INCLUDE"> +<![ %classsynopsisinfo.element; [ +<!--doc:Information supplementing the contents of a ClassSynopsis.--> +<!ELEMENT classsynopsisinfo %ho; (%cptr.char.mix;|textobject|lineannotation)*> +<!--end of classsynopsisinfo.element-->]]> + +<!ENTITY % classsynopsisinfo.attlist "INCLUDE"> +<![ %classsynopsisinfo.attlist; [ +<!ATTLIST classsynopsisinfo + %linespecific.attrib; + %common.attrib; + %classsynopsisinfo.role.attrib; + %local.classsynopsisinfo.attrib; +> +<!--end of classsynopsisinfo.attlist-->]]> +<!--end of classsynopsisinfo.module-->]]> + +<!ENTITY % ooclass.module "INCLUDE"> +<![%ooclass.module;[ +<!ENTITY % local.ooclass.attrib ""> +<!ENTITY % ooclass.role.attrib "%role.attrib;"> + +<!ENTITY % ooclass.element "INCLUDE"> +<![%ooclass.element;[ +<!--doc:A class in an object-oriented programming language.--> +<!ELEMENT ooclass %ho; ((modifier|package)*, classname)> +<!--end of ooclass.element-->]]> + +<!ENTITY % ooclass.attlist "INCLUDE"> +<![%ooclass.attlist;[ +<!ATTLIST ooclass + %common.attrib; + %ooclass.role.attrib; + %local.ooclass.attrib; +> +<!--end of ooclass.attlist-->]]> +<!--end of ooclass.module-->]]> + +<!ENTITY % oointerface.module "INCLUDE"> +<![%oointerface.module;[ +<!ENTITY % local.oointerface.attrib ""> +<!ENTITY % oointerface.role.attrib "%role.attrib;"> + +<!ENTITY % oointerface.element "INCLUDE"> +<![%oointerface.element;[ +<!--doc:An interface in an object-oriented programming language.--> +<!ELEMENT oointerface %ho; ((modifier|package)*, interfacename)> +<!--end of oointerface.element-->]]> + +<!ENTITY % oointerface.attlist "INCLUDE"> +<![%oointerface.attlist;[ +<!ATTLIST oointerface + %common.attrib; + %oointerface.role.attrib; + %local.oointerface.attrib; +> +<!--end of oointerface.attlist-->]]> +<!--end of oointerface.module-->]]> + +<!ENTITY % ooexception.module "INCLUDE"> +<![%ooexception.module;[ +<!ENTITY % local.ooexception.attrib ""> +<!ENTITY % ooexception.role.attrib "%role.attrib;"> + +<!ENTITY % ooexception.element "INCLUDE"> +<![%ooexception.element;[ +<!--doc:An exception in an object-oriented programming language.--> +<!ELEMENT ooexception %ho; ((modifier|package)*, exceptionname)> +<!--end of ooexception.element-->]]> + +<!ENTITY % ooexception.attlist "INCLUDE"> +<![%ooexception.attlist;[ +<!ATTLIST ooexception + %common.attrib; + %ooexception.role.attrib; + %local.ooexception.attrib; +> +<!--end of ooexception.attlist-->]]> +<!--end of ooexception.module-->]]> + +<!ENTITY % modifier.module "INCLUDE"> +<![%modifier.module;[ +<!ENTITY % local.modifier.attrib ""> +<!ENTITY % modifier.role.attrib "%role.attrib;"> + +<!ENTITY % modifier.element "INCLUDE"> +<![%modifier.element;[ +<!--doc:Modifiers in a synopsis.--> +<!ELEMENT modifier %ho; (%smallcptr.char.mix;)*> +<!--end of modifier.element-->]]> + +<!ENTITY % modifier.attlist "INCLUDE"> +<![%modifier.attlist;[ +<!ATTLIST modifier + %common.attrib; + %modifier.role.attrib; + %local.modifier.attrib; +> +<!--end of modifier.attlist-->]]> +<!--end of modifier.module-->]]> + +<!ENTITY % interfacename.module "INCLUDE"> +<![%interfacename.module;[ +<!ENTITY % local.interfacename.attrib ""> +<!ENTITY % interfacename.role.attrib "%role.attrib;"> + +<!ENTITY % interfacename.element "INCLUDE"> +<![%interfacename.element;[ +<!--doc:The name of an interface.--> +<!ELEMENT interfacename %ho; (%cptr.char.mix;)*> +<!--end of interfacename.element-->]]> + +<!ENTITY % interfacename.attlist "INCLUDE"> +<![%interfacename.attlist;[ +<!ATTLIST interfacename + %common.attrib; + %interfacename.role.attrib; + %local.interfacename.attrib; +> +<!--end of interfacename.attlist-->]]> +<!--end of interfacename.module-->]]> + +<!ENTITY % exceptionname.module "INCLUDE"> +<![%exceptionname.module;[ +<!ENTITY % local.exceptionname.attrib ""> +<!ENTITY % exceptionname.role.attrib "%role.attrib;"> + +<!ENTITY % exceptionname.element "INCLUDE"> +<![%exceptionname.element;[ +<!--doc:The name of an exception.--> +<!ELEMENT exceptionname %ho; (%smallcptr.char.mix;)*> +<!--end of exceptionname.element-->]]> + +<!ENTITY % exceptionname.attlist "INCLUDE"> +<![%exceptionname.attlist;[ +<!ATTLIST exceptionname + %common.attrib; + %exceptionname.role.attrib; + %local.exceptionname.attrib; +> +<!--end of exceptionname.attlist-->]]> +<!--end of exceptionname.module-->]]> + +<!ENTITY % fieldsynopsis.module "INCLUDE"> +<![%fieldsynopsis.module;[ +<!ENTITY % local.fieldsynopsis.attrib ""> +<!ENTITY % fieldsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % fieldsynopsis.element "INCLUDE"> +<![%fieldsynopsis.element;[ +<!--doc:The name of a field in a class definition.--> +<!ELEMENT fieldsynopsis %ho; (modifier*, type?, varname, initializer?)> +<!--end of fieldsynopsis.element-->]]> + +<!ENTITY % fieldsynopsis.attlist "INCLUDE"> +<![%fieldsynopsis.attlist;[ +<!ATTLIST fieldsynopsis + language CDATA #IMPLIED + %common.attrib; + %fieldsynopsis.role.attrib; + %local.fieldsynopsis.attrib; +> +<!--end of fieldsynopsis.attlist-->]]> +<!--end of fieldsynopsis.module-->]]> + +<!ENTITY % initializer.module "INCLUDE"> +<![%initializer.module;[ +<!ENTITY % local.initializer.attrib ""> +<!ENTITY % initializer.role.attrib "%role.attrib;"> + +<!ENTITY % initializer.element "INCLUDE"> +<![%initializer.element;[ +<!--doc:The initializer for a FieldSynopsis.--> +<!ELEMENT initializer %ho; (%smallcptr.char.mix;)*> +<!--end of initializer.element-->]]> + +<!ENTITY % initializer.attlist "INCLUDE"> +<![%initializer.attlist;[ +<!ATTLIST initializer + %common.attrib; + %initializer.role.attrib; + %local.initializer.attrib; +> +<!--end of initializer.attlist-->]]> +<!--end of initializer.module-->]]> + +<!ENTITY % constructorsynopsis.module "INCLUDE"> +<![%constructorsynopsis.module;[ +<!ENTITY % local.constructorsynopsis.attrib ""> +<!ENTITY % constructorsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % constructorsynopsis.element "INCLUDE"> +<![%constructorsynopsis.element;[ +<!--doc:A syntax summary for a constructor.--> +<!ELEMENT constructorsynopsis %ho; (modifier*, + methodname?, + (methodparam+|void?), + exceptionname*)> +<!--end of constructorsynopsis.element-->]]> + +<!ENTITY % constructorsynopsis.attlist "INCLUDE"> +<![%constructorsynopsis.attlist;[ +<!ATTLIST constructorsynopsis + language CDATA #IMPLIED + %common.attrib; + %constructorsynopsis.role.attrib; + %local.constructorsynopsis.attrib; +> +<!--end of constructorsynopsis.attlist-->]]> +<!--end of constructorsynopsis.module-->]]> + +<!ENTITY % destructorsynopsis.module "INCLUDE"> +<![%destructorsynopsis.module;[ +<!ENTITY % local.destructorsynopsis.attrib ""> +<!ENTITY % destructorsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % destructorsynopsis.element "INCLUDE"> +<![%destructorsynopsis.element;[ +<!--doc:A syntax summary for a destructor.--> +<!ELEMENT destructorsynopsis %ho; (modifier*, + methodname?, + (methodparam+|void?), + exceptionname*)> +<!--end of destructorsynopsis.element-->]]> + +<!ENTITY % destructorsynopsis.attlist "INCLUDE"> +<![%destructorsynopsis.attlist;[ +<!ATTLIST destructorsynopsis + language CDATA #IMPLIED + %common.attrib; + %destructorsynopsis.role.attrib; + %local.destructorsynopsis.attrib; +> +<!--end of destructorsynopsis.attlist-->]]> +<!--end of destructorsynopsis.module-->]]> + +<!ENTITY % methodsynopsis.module "INCLUDE"> +<![%methodsynopsis.module;[ +<!ENTITY % local.methodsynopsis.attrib ""> +<!ENTITY % methodsynopsis.role.attrib "%role.attrib;"> + +<!ENTITY % methodsynopsis.element "INCLUDE"> +<![%methodsynopsis.element;[ +<!--doc:A syntax summary for a method.--> +<!ELEMENT methodsynopsis %ho; (modifier*, + (type|void)?, + methodname, + (methodparam+|void?), + exceptionname*, + modifier*)> +<!--end of methodsynopsis.element-->]]> + +<!ENTITY % methodsynopsis.attlist "INCLUDE"> +<![%methodsynopsis.attlist;[ +<!ATTLIST methodsynopsis + language CDATA #IMPLIED + %common.attrib; + %methodsynopsis.role.attrib; + %local.methodsynopsis.attrib; +> +<!--end of methodsynopsis.attlist-->]]> +<!--end of methodsynopsis.module-->]]> + +<!ENTITY % methodname.module "INCLUDE"> +<![%methodname.module;[ +<!ENTITY % local.methodname.attrib ""> +<!ENTITY % methodname.role.attrib "%role.attrib;"> + +<!ENTITY % methodname.element "INCLUDE"> +<![%methodname.element;[ +<!--doc:The name of a method.--> +<!ELEMENT methodname %ho; (%smallcptr.char.mix;)*> +<!--end of methodname.element-->]]> + +<!ENTITY % methodname.attlist "INCLUDE"> +<![%methodname.attlist;[ +<!ATTLIST methodname + %common.attrib; + %methodname.role.attrib; + %local.methodname.attrib; +> +<!--end of methodname.attlist-->]]> +<!--end of methodname.module-->]]> + +<!ENTITY % methodparam.module "INCLUDE"> +<![%methodparam.module;[ +<!ENTITY % local.methodparam.attrib ""> +<!ENTITY % methodparam.role.attrib "%role.attrib;"> + +<!ENTITY % methodparam.element "INCLUDE"> +<![%methodparam.element;[ +<!--doc:Parameters to a method.--> +<!ELEMENT methodparam %ho; (modifier*, + type?, + ((parameter,initializer?)|funcparams), + modifier*)> +<!--end of methodparam.element-->]]> + +<!ENTITY % methodparam.attlist "INCLUDE"> +<![%methodparam.attlist;[ +<!ATTLIST methodparam + choice (opt + |req + |plain) "req" + rep (norepeat + |repeat) "norepeat" + %common.attrib; + %methodparam.role.attrib; + %local.methodparam.attrib; +> +<!--end of methodparam.attlist-->]]> +<!--end of methodparam.module-->]]> +<!--end of classsynopsis.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Document information entities and elements ........................... --> + +<!-- The document information elements include some elements that are + currently used only in the document hierarchy module. They are + defined here so that they will be available for use in customized + document hierarchies. --> + +<!-- .................................. --> + +<!ENTITY % docinfo.content.module "INCLUDE"> +<![%docinfo.content.module;[ + +<!-- Ackno ............................ --> + +<!ENTITY % ackno.module "INCLUDE"> +<![%ackno.module;[ +<!ENTITY % local.ackno.attrib ""> +<!ENTITY % ackno.role.attrib "%role.attrib;"> + +<!ENTITY % ackno.element "INCLUDE"> +<![%ackno.element;[ +<!--doc:Acknowledgements in an Article.--> +<!ELEMENT ackno %ho; (%docinfo.char.mix;)*> +<!--end of ackno.element-->]]> + +<!ENTITY % ackno.attlist "INCLUDE"> +<![%ackno.attlist;[ +<!ATTLIST ackno + %common.attrib; + %ackno.role.attrib; + %local.ackno.attrib; +> +<!--end of ackno.attlist-->]]> +<!--end of ackno.module-->]]> + +<!-- Address .......................... --> + +<!ENTITY % address.content.module "INCLUDE"> +<![%address.content.module;[ +<!ENTITY % address.module "INCLUDE"> +<![%address.module;[ +<!ENTITY % local.address.attrib ""> +<!ENTITY % address.role.attrib "%role.attrib;"> + +<!ENTITY % address.element "INCLUDE"> +<![%address.element;[ +<!--doc:A real-world address, generally a postal address.--> +<!ELEMENT address %ho; (#PCDATA|personname|%person.ident.mix; + |street|pob|postcode|city|state|country|phone + |fax|email|otheraddr)*> +<!--end of address.element-->]]> + +<!ENTITY % address.attlist "INCLUDE"> +<![%address.attlist;[ +<!ATTLIST address + %linespecific.attrib; + %common.attrib; + %address.role.attrib; + %local.address.attrib; +> +<!--end of address.attlist-->]]> +<!--end of address.module-->]]> + + <!ENTITY % street.module "INCLUDE"> + <![%street.module;[ + <!ENTITY % local.street.attrib ""> + <!ENTITY % street.role.attrib "%role.attrib;"> + +<!ENTITY % street.element "INCLUDE"> +<![%street.element;[ +<!--doc:A street address in an address.--> +<!ELEMENT street %ho; (%docinfo.char.mix;)*> +<!--end of street.element-->]]> + +<!ENTITY % street.attlist "INCLUDE"> +<![%street.attlist;[ +<!ATTLIST street + %common.attrib; + %street.role.attrib; + %local.street.attrib; +> +<!--end of street.attlist-->]]> + <!--end of street.module-->]]> + + <!ENTITY % pob.module "INCLUDE"> + <![%pob.module;[ + <!ENTITY % local.pob.attrib ""> + <!ENTITY % pob.role.attrib "%role.attrib;"> + +<!ENTITY % pob.element "INCLUDE"> +<![%pob.element;[ +<!--doc:A post office box in an address.--> +<!ELEMENT pob %ho; (%docinfo.char.mix;)*> +<!--end of pob.element-->]]> + +<!ENTITY % pob.attlist "INCLUDE"> +<![%pob.attlist;[ +<!ATTLIST pob + %common.attrib; + %pob.role.attrib; + %local.pob.attrib; +> +<!--end of pob.attlist-->]]> + <!--end of pob.module-->]]> + + <!ENTITY % postcode.module "INCLUDE"> + <![%postcode.module;[ + <!ENTITY % local.postcode.attrib ""> + <!ENTITY % postcode.role.attrib "%role.attrib;"> + +<!ENTITY % postcode.element "INCLUDE"> +<![%postcode.element;[ +<!--doc:A postal code in an address.--> +<!ELEMENT postcode %ho; (%docinfo.char.mix;)*> +<!--end of postcode.element-->]]> + +<!ENTITY % postcode.attlist "INCLUDE"> +<![%postcode.attlist;[ +<!ATTLIST postcode + %common.attrib; + %postcode.role.attrib; + %local.postcode.attrib; +> +<!--end of postcode.attlist-->]]> + <!--end of postcode.module-->]]> + + <!ENTITY % city.module "INCLUDE"> + <![%city.module;[ + <!ENTITY % local.city.attrib ""> + <!ENTITY % city.role.attrib "%role.attrib;"> + +<!ENTITY % city.element "INCLUDE"> +<![%city.element;[ +<!--doc:The name of a city in an address.--> +<!ELEMENT city %ho; (%docinfo.char.mix;)*> +<!--end of city.element-->]]> + +<!ENTITY % city.attlist "INCLUDE"> +<![%city.attlist;[ +<!ATTLIST city + %common.attrib; + %city.role.attrib; + %local.city.attrib; +> +<!--end of city.attlist-->]]> + <!--end of city.module-->]]> + + <!ENTITY % state.module "INCLUDE"> + <![%state.module;[ + <!ENTITY % local.state.attrib ""> + <!ENTITY % state.role.attrib "%role.attrib;"> + +<!ENTITY % state.element "INCLUDE"> +<![%state.element;[ +<!--doc:A state or province in an address.--> +<!ELEMENT state %ho; (%docinfo.char.mix;)*> +<!--end of state.element-->]]> + +<!ENTITY % state.attlist "INCLUDE"> +<![%state.attlist;[ +<!ATTLIST state + %common.attrib; + %state.role.attrib; + %local.state.attrib; +> +<!--end of state.attlist-->]]> + <!--end of state.module-->]]> + + <!ENTITY % country.module "INCLUDE"> + <![%country.module;[ + <!ENTITY % local.country.attrib ""> + <!ENTITY % country.role.attrib "%role.attrib;"> + +<!ENTITY % country.element "INCLUDE"> +<![%country.element;[ +<!--doc:The name of a country.--> +<!ELEMENT country %ho; (%docinfo.char.mix;)*> +<!--end of country.element-->]]> + +<!ENTITY % country.attlist "INCLUDE"> +<![%country.attlist;[ +<!ATTLIST country + %common.attrib; + %country.role.attrib; + %local.country.attrib; +> +<!--end of country.attlist-->]]> + <!--end of country.module-->]]> + + <!ENTITY % phone.module "INCLUDE"> + <![%phone.module;[ + <!ENTITY % local.phone.attrib ""> + <!ENTITY % phone.role.attrib "%role.attrib;"> + +<!ENTITY % phone.element "INCLUDE"> +<![%phone.element;[ +<!--doc:A telephone number.--> +<!ELEMENT phone %ho; (%docinfo.char.mix;)*> +<!--end of phone.element-->]]> + +<!ENTITY % phone.attlist "INCLUDE"> +<![%phone.attlist;[ +<!ATTLIST phone + %common.attrib; + %phone.role.attrib; + %local.phone.attrib; +> +<!--end of phone.attlist-->]]> + <!--end of phone.module-->]]> + + <!ENTITY % fax.module "INCLUDE"> + <![%fax.module;[ + <!ENTITY % local.fax.attrib ""> + <!ENTITY % fax.role.attrib "%role.attrib;"> + +<!ENTITY % fax.element "INCLUDE"> +<![%fax.element;[ +<!--doc:A fax number.--> +<!ELEMENT fax %ho; (%docinfo.char.mix;)*> +<!--end of fax.element-->]]> + +<!ENTITY % fax.attlist "INCLUDE"> +<![%fax.attlist;[ +<!ATTLIST fax + %common.attrib; + %fax.role.attrib; + %local.fax.attrib; +> +<!--end of fax.attlist-->]]> + <!--end of fax.module-->]]> + + <!-- Email (defined in the Inlines section, below)--> + + <!ENTITY % otheraddr.module "INCLUDE"> + <![%otheraddr.module;[ + <!ENTITY % local.otheraddr.attrib ""> + <!ENTITY % otheraddr.role.attrib "%role.attrib;"> + +<!ENTITY % otheraddr.element "INCLUDE"> +<![%otheraddr.element;[ +<!--doc:Uncategorized information in address.--> +<!ELEMENT otheraddr %ho; (%docinfo.char.mix;)*> +<!--end of otheraddr.element-->]]> + +<!ENTITY % otheraddr.attlist "INCLUDE"> +<![%otheraddr.attlist;[ +<!ATTLIST otheraddr + %common.attrib; + %otheraddr.role.attrib; + %local.otheraddr.attrib; +> +<!--end of otheraddr.attlist-->]]> + <!--end of otheraddr.module-->]]> +<!--end of address.content.module-->]]> + +<!-- Affiliation ...................... --> + +<!ENTITY % affiliation.content.module "INCLUDE"> +<![%affiliation.content.module;[ +<!ENTITY % affiliation.module "INCLUDE"> +<![%affiliation.module;[ +<!ENTITY % local.affiliation.attrib ""> +<!ENTITY % affiliation.role.attrib "%role.attrib;"> + +<!ENTITY % affiliation.element "INCLUDE"> +<![%affiliation.element;[ +<!--doc:The institutional affiliation of an individual.--> +<!ELEMENT affiliation %ho; (shortaffil?, jobtitle*, orgname?, orgdiv*, + address*)> +<!--end of affiliation.element-->]]> + +<!ENTITY % affiliation.attlist "INCLUDE"> +<![%affiliation.attlist;[ +<!ATTLIST affiliation + %common.attrib; + %affiliation.role.attrib; + %local.affiliation.attrib; +> +<!--end of affiliation.attlist-->]]> +<!--end of affiliation.module-->]]> + + <!ENTITY % shortaffil.module "INCLUDE"> + <![%shortaffil.module;[ + <!ENTITY % local.shortaffil.attrib ""> + <!ENTITY % shortaffil.role.attrib "%role.attrib;"> + +<!ENTITY % shortaffil.element "INCLUDE"> +<![%shortaffil.element;[ +<!--doc:A brief description of an affiliation.--> +<!ELEMENT shortaffil %ho; (%docinfo.char.mix;)*> +<!--end of shortaffil.element-->]]> + +<!ENTITY % shortaffil.attlist "INCLUDE"> +<![%shortaffil.attlist;[ +<!ATTLIST shortaffil + %common.attrib; + %shortaffil.role.attrib; + %local.shortaffil.attrib; +> +<!--end of shortaffil.attlist-->]]> + <!--end of shortaffil.module-->]]> + + <!ENTITY % jobtitle.module "INCLUDE"> + <![%jobtitle.module;[ + <!ENTITY % local.jobtitle.attrib ""> + <!ENTITY % jobtitle.role.attrib "%role.attrib;"> + +<!ENTITY % jobtitle.element "INCLUDE"> +<![%jobtitle.element;[ +<!--doc:The title of an individual in an organization.--> +<!ELEMENT jobtitle %ho; (%docinfo.char.mix;)*> +<!--end of jobtitle.element-->]]> + +<!ENTITY % jobtitle.attlist "INCLUDE"> +<![%jobtitle.attlist;[ +<!ATTLIST jobtitle + %common.attrib; + %jobtitle.role.attrib; + %local.jobtitle.attrib; +> +<!--end of jobtitle.attlist-->]]> + <!--end of jobtitle.module-->]]> + + <!-- OrgName (defined elsewhere in this section)--> + + <!ENTITY % orgdiv.module "INCLUDE"> + <![%orgdiv.module;[ + <!ENTITY % local.orgdiv.attrib ""> + <!ENTITY % orgdiv.role.attrib "%role.attrib;"> + +<!ENTITY % orgdiv.element "INCLUDE"> +<![%orgdiv.element;[ +<!--doc:A division of an organization.--> +<!ELEMENT orgdiv %ho; (%docinfo.char.mix;)*> +<!--end of orgdiv.element-->]]> + +<!ENTITY % orgdiv.attlist "INCLUDE"> +<![%orgdiv.attlist;[ +<!ATTLIST orgdiv + %common.attrib; + %orgdiv.role.attrib; + %local.orgdiv.attrib; +> +<!--end of orgdiv.attlist-->]]> + <!--end of orgdiv.module-->]]> + + <!-- Address (defined elsewhere in this section)--> +<!--end of affiliation.content.module-->]]> + +<!-- ArtPageNums ...................... --> + +<!ENTITY % artpagenums.module "INCLUDE"> +<![%artpagenums.module;[ +<!ENTITY % local.artpagenums.attrib ""> +<!ENTITY % artpagenums.role.attrib "%role.attrib;"> + +<!ENTITY % artpagenums.element "INCLUDE"> +<![%artpagenums.element;[ +<!--doc:The page numbers of an article as published.--> +<!ELEMENT artpagenums %ho; (%docinfo.char.mix;)*> +<!--end of artpagenums.element-->]]> + +<!ENTITY % artpagenums.attlist "INCLUDE"> +<![%artpagenums.attlist;[ +<!ATTLIST artpagenums + %common.attrib; + %artpagenums.role.attrib; + %local.artpagenums.attrib; +> +<!--end of artpagenums.attlist-->]]> +<!--end of artpagenums.module-->]]> + +<!-- PersonName --> + +<!ENTITY % personname.module "INCLUDE"> +<![%personname.module;[ +<!ENTITY % local.personname.attrib ""> +<!ENTITY % personname.role.attrib "%role.attrib;"> + +<!ENTITY % personname.element "INCLUDE"> +<![%personname.element;[ +<!--doc:The personal name of an individual.--> +<!ELEMENT personname %ho; ((honorific|firstname|surname|lineage|othername)+)> +<!--end of personname.element-->]]> + +<!ENTITY % personname.attlist "INCLUDE"> +<![%personname.attlist;[ +<!ATTLIST personname + %common.attrib; + %personname.role.attrib; + %local.personname.attrib; +> +<!--end of personname.attlist-->]]> +<!--end of personname.module-->]]> + +<!-- Author ........................... --> + +<!ENTITY % author.module "INCLUDE"> +<![%author.module;[ +<!ENTITY % local.author.attrib ""> +<!ENTITY % author.role.attrib "%role.attrib;"> + +<!ENTITY % author.element "INCLUDE"> +<![%author.element;[ +<!--doc:The name of an individual author.--> +<!ELEMENT author %ho; ((personname|(%person.ident.mix;)+),(personblurb|email|address)*)> +<!--end of author.element-->]]> + +<!ENTITY % author.attlist "INCLUDE"> +<![%author.attlist;[ +<!ATTLIST author + %common.attrib; + %author.role.attrib; + %local.author.attrib; +> +<!--end of author.attlist-->]]> +<!--(see "Personal identity elements" for %person.ident.mix;)--> +<!--end of author.module-->]]> + +<!-- AuthorGroup ...................... --> + +<!ENTITY % authorgroup.content.module "INCLUDE"> +<![%authorgroup.content.module;[ +<!ENTITY % authorgroup.module "INCLUDE"> +<![%authorgroup.module;[ +<!ENTITY % local.authorgroup.attrib ""> +<!ENTITY % authorgroup.role.attrib "%role.attrib;"> + +<!ENTITY % authorgroup.element "INCLUDE"> +<![%authorgroup.element;[ +<!--doc:Wrapper for author information when a document has multiple authors or collabarators.--> +<!ELEMENT authorgroup %ho; ((author|editor|collab|corpauthor|corpcredit|othercredit)+)> +<!--end of authorgroup.element-->]]> + +<!ENTITY % authorgroup.attlist "INCLUDE"> +<![%authorgroup.attlist;[ +<!ATTLIST authorgroup + %common.attrib; + %authorgroup.role.attrib; + %local.authorgroup.attrib; +> +<!--end of authorgroup.attlist-->]]> +<!--end of authorgroup.module-->]]> + + <!-- Author (defined elsewhere in this section)--> + <!-- Editor (defined elsewhere in this section)--> + + <!ENTITY % collab.content.module "INCLUDE"> + <![%collab.content.module;[ + <!ENTITY % collab.module "INCLUDE"> + <![%collab.module;[ + <!ENTITY % local.collab.attrib ""> + <!ENTITY % collab.role.attrib "%role.attrib;"> + +<!ENTITY % collab.element "INCLUDE"> +<![%collab.element;[ +<!--doc:Identifies a collaborator.--> +<!ELEMENT collab %ho; (collabname, affiliation*)> +<!--end of collab.element-->]]> + +<!ENTITY % collab.attlist "INCLUDE"> +<![%collab.attlist;[ +<!ATTLIST collab + %common.attrib; + %collab.role.attrib; + %local.collab.attrib; +> +<!--end of collab.attlist-->]]> + <!--end of collab.module-->]]> + + <!ENTITY % collabname.module "INCLUDE"> + <![%collabname.module;[ + <!ENTITY % local.collabname.attrib ""> + <!ENTITY % collabname.role.attrib "%role.attrib;"> + +<!ENTITY % collabname.element "INCLUDE"> +<![%collabname.element;[ +<!--doc:The name of a collaborator.--> +<!ELEMENT collabname %ho; (%docinfo.char.mix;)*> +<!--end of collabname.element-->]]> + +<!ENTITY % collabname.attlist "INCLUDE"> +<![%collabname.attlist;[ +<!ATTLIST collabname + %common.attrib; + %collabname.role.attrib; + %local.collabname.attrib; +> +<!--end of collabname.attlist-->]]> + <!--end of collabname.module-->]]> + + <!-- Affiliation (defined elsewhere in this section)--> + <!--end of collab.content.module-->]]> + + <!-- CorpAuthor (defined elsewhere in this section)--> + <!-- OtherCredit (defined elsewhere in this section)--> + +<!--end of authorgroup.content.module-->]]> + +<!-- AuthorInitials ................... --> + +<!ENTITY % authorinitials.module "INCLUDE"> +<![%authorinitials.module;[ +<!ENTITY % local.authorinitials.attrib ""> +<!ENTITY % authorinitials.role.attrib "%role.attrib;"> + +<!ENTITY % authorinitials.element "INCLUDE"> +<![%authorinitials.element;[ +<!--doc:The initials or other short identifier for an author.--> +<!ELEMENT authorinitials %ho; (%docinfo.char.mix;)*> +<!--end of authorinitials.element-->]]> + +<!ENTITY % authorinitials.attlist "INCLUDE"> +<![%authorinitials.attlist;[ +<!ATTLIST authorinitials + %common.attrib; + %authorinitials.role.attrib; + %local.authorinitials.attrib; +> +<!--end of authorinitials.attlist-->]]> +<!--end of authorinitials.module-->]]> + +<!-- ConfGroup ........................ --> + +<!ENTITY % confgroup.content.module "INCLUDE"> +<![%confgroup.content.module;[ +<!ENTITY % confgroup.module "INCLUDE"> +<![%confgroup.module;[ +<!ENTITY % local.confgroup.attrib ""> +<!ENTITY % confgroup.role.attrib "%role.attrib;"> + +<!ENTITY % confgroup.element "INCLUDE"> +<![%confgroup.element;[ +<!--doc:A wrapper for document meta-information about a conference.--> +<!ELEMENT confgroup %ho; ((confdates|conftitle|confnum|address|confsponsor)*)> +<!--end of confgroup.element-->]]> + +<!ENTITY % confgroup.attlist "INCLUDE"> +<![%confgroup.attlist;[ +<!ATTLIST confgroup + %common.attrib; + %confgroup.role.attrib; + %local.confgroup.attrib; +> +<!--end of confgroup.attlist-->]]> +<!--end of confgroup.module-->]]> + + <!ENTITY % confdates.module "INCLUDE"> + <![%confdates.module;[ + <!ENTITY % local.confdates.attrib ""> + <!ENTITY % confdates.role.attrib "%role.attrib;"> + +<!ENTITY % confdates.element "INCLUDE"> +<![%confdates.element;[ +<!--doc:The dates of a conference for which a document was written.--> +<!ELEMENT confdates %ho; (%docinfo.char.mix;)*> +<!--end of confdates.element-->]]> + +<!ENTITY % confdates.attlist "INCLUDE"> +<![%confdates.attlist;[ +<!ATTLIST confdates + %common.attrib; + %confdates.role.attrib; + %local.confdates.attrib; +> +<!--end of confdates.attlist-->]]> + <!--end of confdates.module-->]]> + + <!ENTITY % conftitle.module "INCLUDE"> + <![%conftitle.module;[ + <!ENTITY % local.conftitle.attrib ""> + <!ENTITY % conftitle.role.attrib "%role.attrib;"> + +<!ENTITY % conftitle.element "INCLUDE"> +<![%conftitle.element;[ +<!--doc:The title of a conference for which a document was written.--> +<!ELEMENT conftitle %ho; (%docinfo.char.mix;)*> +<!--end of conftitle.element-->]]> + +<!ENTITY % conftitle.attlist "INCLUDE"> +<![%conftitle.attlist;[ +<!ATTLIST conftitle + %common.attrib; + %conftitle.role.attrib; + %local.conftitle.attrib; +> +<!--end of conftitle.attlist-->]]> + <!--end of conftitle.module-->]]> + + <!ENTITY % confnum.module "INCLUDE"> + <![%confnum.module;[ + <!ENTITY % local.confnum.attrib ""> + <!ENTITY % confnum.role.attrib "%role.attrib;"> + +<!ENTITY % confnum.element "INCLUDE"> +<![%confnum.element;[ +<!--doc:An identifier, frequently numerical, associated with a conference for which a document was written.--> +<!ELEMENT confnum %ho; (%docinfo.char.mix;)*> +<!--end of confnum.element-->]]> + +<!ENTITY % confnum.attlist "INCLUDE"> +<![%confnum.attlist;[ +<!ATTLIST confnum + %common.attrib; + %confnum.role.attrib; + %local.confnum.attrib; +> +<!--end of confnum.attlist-->]]> + <!--end of confnum.module-->]]> + + <!-- Address (defined elsewhere in this section)--> + + <!ENTITY % confsponsor.module "INCLUDE"> + <![%confsponsor.module;[ + <!ENTITY % local.confsponsor.attrib ""> + <!ENTITY % confsponsor.role.attrib "%role.attrib;"> + +<!ENTITY % confsponsor.element "INCLUDE"> +<![%confsponsor.element;[ +<!--doc:The sponsor of a conference for which a document was written.--> +<!ELEMENT confsponsor %ho; (%docinfo.char.mix;)*> +<!--end of confsponsor.element-->]]> + +<!ENTITY % confsponsor.attlist "INCLUDE"> +<![%confsponsor.attlist;[ +<!ATTLIST confsponsor + %common.attrib; + %confsponsor.role.attrib; + %local.confsponsor.attrib; +> +<!--end of confsponsor.attlist-->]]> + <!--end of confsponsor.module-->]]> +<!--end of confgroup.content.module-->]]> + +<!-- ContractNum ...................... --> + +<!ENTITY % contractnum.module "INCLUDE"> +<![%contractnum.module;[ +<!ENTITY % local.contractnum.attrib ""> +<!ENTITY % contractnum.role.attrib "%role.attrib;"> + +<!ENTITY % contractnum.element "INCLUDE"> +<![%contractnum.element;[ +<!--doc:The contract number of a document.--> +<!ELEMENT contractnum %ho; (%docinfo.char.mix;)*> +<!--end of contractnum.element-->]]> + +<!ENTITY % contractnum.attlist "INCLUDE"> +<![%contractnum.attlist;[ +<!ATTLIST contractnum + %common.attrib; + %contractnum.role.attrib; + %local.contractnum.attrib; +> +<!--end of contractnum.attlist-->]]> +<!--end of contractnum.module-->]]> + +<!-- ContractSponsor .................. --> + +<!ENTITY % contractsponsor.module "INCLUDE"> +<![%contractsponsor.module;[ +<!ENTITY % local.contractsponsor.attrib ""> +<!ENTITY % contractsponsor.role.attrib "%role.attrib;"> + +<!ENTITY % contractsponsor.element "INCLUDE"> +<![%contractsponsor.element;[ +<!--doc:The sponsor of a contract.--> +<!ELEMENT contractsponsor %ho; (%docinfo.char.mix;)*> +<!--end of contractsponsor.element-->]]> + +<!ENTITY % contractsponsor.attlist "INCLUDE"> +<![%contractsponsor.attlist;[ +<!ATTLIST contractsponsor + %common.attrib; + %contractsponsor.role.attrib; + %local.contractsponsor.attrib; +> +<!--end of contractsponsor.attlist-->]]> +<!--end of contractsponsor.module-->]]> + +<!-- Copyright ........................ --> + +<!ENTITY % copyright.content.module "INCLUDE"> +<![%copyright.content.module;[ +<!ENTITY % copyright.module "INCLUDE"> +<![%copyright.module;[ +<!ENTITY % local.copyright.attrib ""> +<!ENTITY % copyright.role.attrib "%role.attrib;"> + +<!ENTITY % copyright.element "INCLUDE"> +<![%copyright.element;[ +<!--doc:Copyright information about a document.--> +<!ELEMENT copyright %ho; (year+, holder*)> +<!--end of copyright.element-->]]> + +<!ENTITY % copyright.attlist "INCLUDE"> +<![%copyright.attlist;[ +<!ATTLIST copyright + %common.attrib; + %copyright.role.attrib; + %local.copyright.attrib; +> +<!--end of copyright.attlist-->]]> +<!--end of copyright.module-->]]> + + <!ENTITY % year.module "INCLUDE"> + <![%year.module;[ + <!ENTITY % local.year.attrib ""> + <!ENTITY % year.role.attrib "%role.attrib;"> + +<!ENTITY % year.element "INCLUDE"> +<![%year.element;[ +<!--doc:The year of publication of a document.--> +<!ELEMENT year %ho; (%docinfo.char.mix;)*> +<!--end of year.element-->]]> + +<!ENTITY % year.attlist "INCLUDE"> +<![%year.attlist;[ +<!ATTLIST year + %common.attrib; + %year.role.attrib; + %local.year.attrib; +> +<!--end of year.attlist-->]]> + <!--end of year.module-->]]> + + <!ENTITY % holder.module "INCLUDE"> + <![%holder.module;[ + <!ENTITY % local.holder.attrib ""> + <!ENTITY % holder.role.attrib "%role.attrib;"> + +<!ENTITY % holder.element "INCLUDE"> +<![%holder.element;[ +<!--doc:The name of the individual or organization that holds a copyright.--> +<!ELEMENT holder %ho; (%docinfo.char.mix;)*> +<!--end of holder.element-->]]> + +<!ENTITY % holder.attlist "INCLUDE"> +<![%holder.attlist;[ +<!ATTLIST holder + %common.attrib; + %holder.role.attrib; + %local.holder.attrib; +> +<!--end of holder.attlist-->]]> + <!--end of holder.module-->]]> +<!--end of copyright.content.module-->]]> + +<!-- CorpAuthor ....................... --> + +<!ENTITY % corpauthor.module "INCLUDE"> +<![%corpauthor.module;[ +<!ENTITY % local.corpauthor.attrib ""> +<!ENTITY % corpauthor.role.attrib "%role.attrib;"> + +<!ENTITY % corpauthor.element "INCLUDE"> +<![%corpauthor.element;[ +<!--doc:A corporate author, as opposed to an individual.--> +<!ELEMENT corpauthor %ho; (%docinfo.char.mix;)*> +<!--end of corpauthor.element-->]]> + +<!ENTITY % corpauthor.attlist "INCLUDE"> +<![%corpauthor.attlist;[ +<!ATTLIST corpauthor + %common.attrib; + %corpauthor.role.attrib; + %local.corpauthor.attrib; +> +<!--end of corpauthor.attlist-->]]> +<!--end of corpauthor.module-->]]> + +<!-- CorpCredit ...................... --> + +<!ENTITY % corpcredit.module "INCLUDE"> +<![%corpcredit.module;[ +<!ENTITY % local.corpcredit.attrib ""> +<!ENTITY % corpcredit.role.attrib "%role.attrib;"> + +<!ENTITY % corpcredit.element "INCLUDE"> +<![%corpcredit.element;[ +<!--doc:A corporation or organization credited in a document.--> +<!ELEMENT corpcredit %ho; (%docinfo.char.mix;)*> +<!--end of corpcredit.element-->]]> + +<!ENTITY % corpcredit.attlist "INCLUDE"> +<![%corpcredit.attlist;[ +<!ATTLIST corpcredit + class (graphicdesigner + |productioneditor + |copyeditor + |technicaleditor + |translator + |other) #IMPLIED + %common.attrib; + %corpcredit.role.attrib; + %local.corpcredit.attrib; +> +<!--end of corpcredit.attlist-->]]> +<!--end of corpcredit.module-->]]> + +<!-- CorpName ......................... --> + +<!ENTITY % corpname.module "INCLUDE"> +<![%corpname.module;[ +<!ENTITY % local.corpname.attrib ""> + +<!ENTITY % corpname.element "INCLUDE"> +<![%corpname.element;[ +<!--doc:The name of a corporation.--> +<!ELEMENT corpname %ho; (%docinfo.char.mix;)*> +<!--end of corpname.element-->]]> +<!ENTITY % corpname.role.attrib "%role.attrib;"> + +<!ENTITY % corpname.attlist "INCLUDE"> +<![%corpname.attlist;[ +<!ATTLIST corpname + %common.attrib; + %corpname.role.attrib; + %local.corpname.attrib; +> +<!--end of corpname.attlist-->]]> +<!--end of corpname.module-->]]> + +<!-- Date ............................. --> + +<!ENTITY % date.module "INCLUDE"> +<![%date.module;[ +<!ENTITY % local.date.attrib ""> +<!ENTITY % date.role.attrib "%role.attrib;"> + +<!ENTITY % date.element "INCLUDE"> +<![%date.element;[ +<!--doc:The date of publication or revision of a document.--> +<!ELEMENT date %ho; (%docinfo.char.mix;)*> +<!--end of date.element-->]]> + +<!ENTITY % date.attlist "INCLUDE"> +<![%date.attlist;[ +<!ATTLIST date + %common.attrib; + %date.role.attrib; + %local.date.attrib; +> +<!--end of date.attlist-->]]> +<!--end of date.module-->]]> + +<!-- Edition .......................... --> + +<!ENTITY % edition.module "INCLUDE"> +<![%edition.module;[ +<!ENTITY % local.edition.attrib ""> +<!ENTITY % edition.role.attrib "%role.attrib;"> + +<!ENTITY % edition.element "INCLUDE"> +<![%edition.element;[ +<!--doc:The name or number of an edition of a document.--> +<!ELEMENT edition %ho; (%docinfo.char.mix;)*> +<!--end of edition.element-->]]> + +<!ENTITY % edition.attlist "INCLUDE"> +<![%edition.attlist;[ +<!ATTLIST edition + %common.attrib; + %edition.role.attrib; + %local.edition.attrib; +> +<!--end of edition.attlist-->]]> +<!--end of edition.module-->]]> + +<!-- Editor ........................... --> + +<!ENTITY % editor.module "INCLUDE"> +<![%editor.module;[ +<!ENTITY % local.editor.attrib ""> +<!ENTITY % editor.role.attrib "%role.attrib;"> + +<!ENTITY % editor.element "INCLUDE"> +<![%editor.element;[ +<!--doc:The name of the editor of a document.--> +<!ELEMENT editor %ho; ((personname|(%person.ident.mix;)+),(personblurb|email|address)*)> +<!--end of editor.element-->]]> + +<!ENTITY % editor.attlist "INCLUDE"> +<![%editor.attlist;[ +<!ATTLIST editor + %common.attrib; + %editor.role.attrib; + %local.editor.attrib; +> +<!--end of editor.attlist-->]]> + <!--(see "Personal identity elements" for %person.ident.mix;)--> +<!--end of editor.module-->]]> + +<!-- ISBN ............................. --> + +<!ENTITY % isbn.module "INCLUDE"> +<![%isbn.module;[ +<!ENTITY % local.isbn.attrib ""> +<!ENTITY % isbn.role.attrib "%role.attrib;"> + +<!ENTITY % isbn.element "INCLUDE"> +<![%isbn.element;[ +<!--doc:The International Standard Book Number of a document.--> +<!ELEMENT isbn %ho; (%docinfo.char.mix;)*> +<!--end of isbn.element-->]]> + +<!ENTITY % isbn.attlist "INCLUDE"> +<![%isbn.attlist;[ +<!ATTLIST isbn + %common.attrib; + %isbn.role.attrib; + %local.isbn.attrib; +> +<!--end of isbn.attlist-->]]> +<!--end of isbn.module-->]]> + +<!-- ISSN ............................. --> + +<!ENTITY % issn.module "INCLUDE"> +<![%issn.module;[ +<!ENTITY % local.issn.attrib ""> +<!ENTITY % issn.role.attrib "%role.attrib;"> + +<!ENTITY % issn.element "INCLUDE"> +<![%issn.element;[ +<!--doc:The International Standard Serial Number of a periodical.--> +<!ELEMENT issn %ho; (%docinfo.char.mix;)*> +<!--end of issn.element-->]]> + +<!ENTITY % issn.attlist "INCLUDE"> +<![%issn.attlist;[ +<!ATTLIST issn + %common.attrib; + %issn.role.attrib; + %local.issn.attrib; +> +<!--end of issn.attlist-->]]> +<!--end of issn.module-->]]> + +<!-- BiblioId ................. --> +<!ENTITY % biblio.class.attrib + "class (uri + |doi + |isbn + |isrn + |issn + |libraryofcongress + |pubnumber + |other) #IMPLIED + otherclass CDATA #IMPLIED" +> + +<!ENTITY % biblioid.module "INCLUDE"> +<![%biblioid.module;[ +<!ENTITY % local.biblioid.attrib ""> +<!ENTITY % biblioid.role.attrib "%role.attrib;"> + +<!ENTITY % biblioid.element "INCLUDE"> +<![%biblioid.element;[ +<!--doc:An identifier for a document.--> +<!ELEMENT biblioid %ho; (%docinfo.char.mix;)*> +<!--end of biblioid.element-->]]> + +<!ENTITY % biblioid.attlist "INCLUDE"> +<![%biblioid.attlist;[ +<!ATTLIST biblioid + %biblio.class.attrib; + %common.attrib; + %biblioid.role.attrib; + %local.biblioid.attrib; +> +<!--end of biblioid.attlist-->]]> +<!--end of biblioid.module-->]]> + +<!-- CiteBiblioId ................. --> + +<!ENTITY % citebiblioid.module "INCLUDE"> +<![%citebiblioid.module;[ +<!ENTITY % local.citebiblioid.attrib ""> +<!ENTITY % citebiblioid.role.attrib "%role.attrib;"> + +<!ENTITY % citebiblioid.element "INCLUDE"> +<![%citebiblioid.element;[ +<!--doc:A citation of a bibliographic identifier.--> +<!ELEMENT citebiblioid %ho; (%docinfo.char.mix;)*> +<!--end of citebiblioid.element-->]]> + +<!ENTITY % citebiblioid.attlist "INCLUDE"> +<![%citebiblioid.attlist;[ +<!ATTLIST citebiblioid + %biblio.class.attrib; + %common.attrib; + %citebiblioid.role.attrib; + %local.citebiblioid.attrib; +> +<!--end of citebiblioid.attlist-->]]> +<!--end of citebiblioid.module-->]]> + +<!-- BiblioSource ................. --> + +<!ENTITY % bibliosource.module "INCLUDE"> +<![%bibliosource.module;[ +<!ENTITY % local.bibliosource.attrib ""> +<!ENTITY % bibliosource.role.attrib "%role.attrib;"> + +<!ENTITY % bibliosource.element "INCLUDE"> +<![%bibliosource.element;[ +<!--doc:The source of a document.--> +<!ELEMENT bibliosource %ho; (%docinfo.char.mix;)*> +<!--end of bibliosource.element-->]]> + +<!ENTITY % bibliosource.attlist "INCLUDE"> +<![%bibliosource.attlist;[ +<!ATTLIST bibliosource + %biblio.class.attrib; + %common.attrib; + %bibliosource.role.attrib; + %local.bibliosource.attrib; +> +<!--end of bibliosource.attlist-->]]> +<!--end of bibliosource.module-->]]> + +<!-- BiblioRelation ................. --> + +<!ENTITY % bibliorelation.module "INCLUDE"> +<![%bibliorelation.module;[ +<!ENTITY % local.bibliorelation.attrib ""> +<!ENTITY % local.bibliorelation.types ""> + +<!ENTITY % bibliorelation.type.attrib + "type (isversionof + |hasversion + |isreplacedby + |replaces + |isrequiredby + |requires + |ispartof + |haspart + |isreferencedby + |references + |isformatof + |hasformat + |othertype + %local.bibliorelation.types;) #IMPLIED + othertype CDATA #IMPLIED +"> + +<!ENTITY % bibliorelation.role.attrib "%role.attrib;"> + +<!ENTITY % bibliorelation.element "INCLUDE"> +<![%bibliorelation.element;[ +<!--doc:The relationship of a document to another.--> +<!ELEMENT bibliorelation %ho; (%docinfo.char.mix;)*> +<!--end of bibliorelation.element-->]]> + +<!ENTITY % bibliorelation.attlist "INCLUDE"> +<![%bibliorelation.attlist;[ +<!ATTLIST bibliorelation + %biblio.class.attrib; + %bibliorelation.type.attrib; + %common.attrib; + %bibliorelation.role.attrib; + %local.bibliorelation.attrib; +> +<!--end of bibliorelation.attlist-->]]> +<!--end of bibliorelation.module-->]]> + +<!-- BiblioCoverage ................. --> + +<!ENTITY % bibliocoverage.module "INCLUDE"> +<![%bibliocoverage.module;[ +<!ENTITY % local.bibliocoverage.attrib ""> +<!ENTITY % bibliocoverage.role.attrib "%role.attrib;"> + +<!ENTITY % bibliocoverage.element "INCLUDE"> +<![%bibliocoverage.element;[ +<!--doc:The spatial or temporal coverage of a document.--> +<!ELEMENT bibliocoverage %ho; (%docinfo.char.mix;)*> +<!--end of bibliocoverage.element-->]]> + +<!ENTITY % bibliocoverage.attlist "INCLUDE"> +<![%bibliocoverage.attlist;[ +<!ATTLIST bibliocoverage + spatial (dcmipoint|iso3166|dcmibox|tgn|otherspatial) #IMPLIED + otherspatial CDATA #IMPLIED + temporal (dcmiperiod|w3c-dtf|othertemporal) #IMPLIED + othertemporal CDATA #IMPLIED + %common.attrib; + %bibliocoverage.role.attrib; + %local.bibliocoverage.attrib; +> +<!--end of bibliocoverage.attlist-->]]> +<!--end of bibliocoverage.module-->]]> + +<!-- InvPartNumber .................... --> + +<!ENTITY % invpartnumber.module "INCLUDE"> +<![%invpartnumber.module;[ +<!ENTITY % local.invpartnumber.attrib ""> +<!ENTITY % invpartnumber.role.attrib "%role.attrib;"> + +<!ENTITY % invpartnumber.element "INCLUDE"> +<![%invpartnumber.element;[ +<!--doc:An inventory part number.--> +<!ELEMENT invpartnumber %ho; (%docinfo.char.mix;)*> +<!--end of invpartnumber.element-->]]> + +<!ENTITY % invpartnumber.attlist "INCLUDE"> +<![%invpartnumber.attlist;[ +<!ATTLIST invpartnumber + %common.attrib; + %invpartnumber.role.attrib; + %local.invpartnumber.attrib; +> +<!--end of invpartnumber.attlist-->]]> +<!--end of invpartnumber.module-->]]> + +<!-- IssueNum ......................... --> + +<!ENTITY % issuenum.module "INCLUDE"> +<![%issuenum.module;[ +<!ENTITY % local.issuenum.attrib ""> +<!ENTITY % issuenum.role.attrib "%role.attrib;"> + +<!ENTITY % issuenum.element "INCLUDE"> +<![%issuenum.element;[ +<!--doc:The number of an issue of a journal.--> +<!ELEMENT issuenum %ho; (%docinfo.char.mix;)*> +<!--end of issuenum.element-->]]> + +<!ENTITY % issuenum.attlist "INCLUDE"> +<![%issuenum.attlist;[ +<!ATTLIST issuenum + %common.attrib; + %issuenum.role.attrib; + %local.issuenum.attrib; +> +<!--end of issuenum.attlist-->]]> +<!--end of issuenum.module-->]]> + +<!-- LegalNotice ...................... --> + +<!ENTITY % legalnotice.module "INCLUDE"> +<![%legalnotice.module;[ +<!ENTITY % local.legalnotice.attrib ""> +<!ENTITY % legalnotice.role.attrib "%role.attrib;"> + +<!ENTITY % legalnotice.element "INCLUDE"> +<![%legalnotice.element;[ +<!--doc:A statement of legal obligations or requirements.--> +<!ELEMENT legalnotice %ho; (blockinfo?, title?, (%legalnotice.mix;)+) + %formal.exclusion;> +<!--end of legalnotice.element-->]]> + +<!ENTITY % legalnotice.attlist "INCLUDE"> +<![%legalnotice.attlist;[ +<!ATTLIST legalnotice + %common.attrib; + %legalnotice.role.attrib; + %local.legalnotice.attrib; +> +<!--end of legalnotice.attlist-->]]> +<!--end of legalnotice.module-->]]> + +<!-- ModeSpec ......................... --> + +<!ENTITY % modespec.module "INCLUDE"> +<![%modespec.module;[ +<!ENTITY % local.modespec.attrib ""> +<!ENTITY % modespec.role.attrib "%role.attrib;"> + +<!ENTITY % modespec.element "INCLUDE"> +<![%modespec.element;[ +<!--doc:Application-specific information necessary for the completion of an OLink.--> +<!ELEMENT modespec %ho; (%docinfo.char.mix;)* + %ubiq.exclusion;> +<!--end of modespec.element-->]]> + +<!-- Application: Type of action required for completion + of the links to which the ModeSpec is relevant (e.g., + retrieval query) --> + + +<!ENTITY % modespec.attlist "INCLUDE"> +<![%modespec.attlist;[ +<!ATTLIST modespec + application NOTATION + (%notation.class;) #IMPLIED + %common.attrib; + %modespec.role.attrib; + %local.modespec.attrib; +> +<!--end of modespec.attlist-->]]> +<!--end of modespec.module-->]]> + +<!-- OrgName .......................... --> + +<!ENTITY % orgname.module "INCLUDE"> +<![%orgname.module;[ +<!ENTITY % local.orgname.attrib ""> +<!ENTITY % orgname.role.attrib "%role.attrib;"> + +<!ENTITY % orgname.element "INCLUDE"> +<![%orgname.element;[ +<!--doc:The name of an organization other than a corporation.--> +<!ELEMENT orgname %ho; (%docinfo.char.mix;)*> +<!--end of orgname.element-->]]> + +<!ENTITY % orgname.attlist "INCLUDE"> +<![%orgname.attlist;[ +<!ATTLIST orgname + %common.attrib; + class (corporation|nonprofit|consortium|informal|other) #IMPLIED + otherclass CDATA #IMPLIED + %orgname.role.attrib; + %local.orgname.attrib; +> +<!--end of orgname.attlist-->]]> +<!--end of orgname.module-->]]> + +<!-- OtherCredit ...................... --> + +<!ENTITY % othercredit.module "INCLUDE"> +<![%othercredit.module;[ +<!ENTITY % local.othercredit.attrib ""> +<!ENTITY % othercredit.role.attrib "%role.attrib;"> + +<!ENTITY % othercredit.element "INCLUDE"> +<![%othercredit.element;[ +<!--doc:A person or entity, other than an author or editor, credited in a document.--> +<!ELEMENT othercredit %ho; ((personname|(%person.ident.mix;)+), + (personblurb|email|address)*)> +<!--end of othercredit.element-->]]> + +<!ENTITY % othercredit.attlist "INCLUDE"> +<![%othercredit.attlist;[ +<!ATTLIST othercredit + class (graphicdesigner + |productioneditor + |copyeditor + |technicaleditor + |translator + |other) #IMPLIED + %common.attrib; + %othercredit.role.attrib; + %local.othercredit.attrib; +> +<!--end of othercredit.attlist-->]]> + <!--(see "Personal identity elements" for %person.ident.mix;)--> +<!--end of othercredit.module-->]]> + +<!-- PageNums ......................... --> + +<!ENTITY % pagenums.module "INCLUDE"> +<![%pagenums.module;[ +<!ENTITY % local.pagenums.attrib ""> +<!ENTITY % pagenums.role.attrib "%role.attrib;"> + +<!ENTITY % pagenums.element "INCLUDE"> +<![%pagenums.element;[ +<!--doc:The numbers of the pages in a book, for use in a bibliographic entry.--> +<!ELEMENT pagenums %ho; (%docinfo.char.mix;)*> +<!--end of pagenums.element-->]]> + +<!ENTITY % pagenums.attlist "INCLUDE"> +<![%pagenums.attlist;[ +<!ATTLIST pagenums + %common.attrib; + %pagenums.role.attrib; + %local.pagenums.attrib; +> +<!--end of pagenums.attlist-->]]> +<!--end of pagenums.module-->]]> + +<!-- Personal identity elements ....... --> + +<!-- These elements are used only within Author, Editor, and +OtherCredit. --> + +<!ENTITY % person.ident.module "INCLUDE"> +<![%person.ident.module;[ + <!ENTITY % contrib.module "INCLUDE"> + <![%contrib.module;[ + <!ENTITY % local.contrib.attrib ""> + <!ENTITY % contrib.role.attrib "%role.attrib;"> + +<!ENTITY % contrib.element "INCLUDE"> +<![%contrib.element;[ +<!--doc:A summary of the contributions made to a document by a credited source.--> +<!ELEMENT contrib %ho; (%docinfo.char.mix;)*> +<!--end of contrib.element-->]]> + +<!ENTITY % contrib.attlist "INCLUDE"> +<![%contrib.attlist;[ +<!ATTLIST contrib + %common.attrib; + %contrib.role.attrib; + %local.contrib.attrib; +> +<!--end of contrib.attlist-->]]> + <!--end of contrib.module-->]]> + + <!ENTITY % firstname.module "INCLUDE"> + <![%firstname.module;[ + <!ENTITY % local.firstname.attrib ""> + <!ENTITY % firstname.role.attrib "%role.attrib;"> + +<!ENTITY % firstname.element "INCLUDE"> +<![%firstname.element;[ +<!--doc:The first name of a person.--> +<!ELEMENT firstname %ho; (%docinfo.char.mix;)*> +<!--end of firstname.element-->]]> + +<!ENTITY % firstname.attlist "INCLUDE"> +<![%firstname.attlist;[ +<!ATTLIST firstname + %common.attrib; + %firstname.role.attrib; + %local.firstname.attrib; +> +<!--end of firstname.attlist-->]]> + <!--end of firstname.module-->]]> + + <!ENTITY % honorific.module "INCLUDE"> + <![%honorific.module;[ + <!ENTITY % local.honorific.attrib ""> + <!ENTITY % honorific.role.attrib "%role.attrib;"> + +<!ENTITY % honorific.element "INCLUDE"> +<![%honorific.element;[ +<!--doc:The title of a person.--> +<!ELEMENT honorific %ho; (%docinfo.char.mix;)*> +<!--end of honorific.element-->]]> + +<!ENTITY % honorific.attlist "INCLUDE"> +<![%honorific.attlist;[ +<!ATTLIST honorific + %common.attrib; + %honorific.role.attrib; + %local.honorific.attrib; +> +<!--end of honorific.attlist-->]]> + <!--end of honorific.module-->]]> + + <!ENTITY % lineage.module "INCLUDE"> + <![%lineage.module;[ + <!ENTITY % local.lineage.attrib ""> + <!ENTITY % lineage.role.attrib "%role.attrib;"> + +<!ENTITY % lineage.element "INCLUDE"> +<![%lineage.element;[ +<!--doc:The portion of a person's name indicating a relationship to ancestors.--> +<!ELEMENT lineage %ho; (%docinfo.char.mix;)*> +<!--end of lineage.element-->]]> + +<!ENTITY % lineage.attlist "INCLUDE"> +<![%lineage.attlist;[ +<!ATTLIST lineage + %common.attrib; + %lineage.role.attrib; + %local.lineage.attrib; +> +<!--end of lineage.attlist-->]]> + <!--end of lineage.module-->]]> + + <!ENTITY % othername.module "INCLUDE"> + <![%othername.module;[ + <!ENTITY % local.othername.attrib ""> + <!ENTITY % othername.role.attrib "%role.attrib;"> + +<!ENTITY % othername.element "INCLUDE"> +<![%othername.element;[ +<!--doc:A component of a persons name that is not a first name, surname, or lineage.--> +<!ELEMENT othername %ho; (%docinfo.char.mix;)*> +<!--end of othername.element-->]]> + +<!ENTITY % othername.attlist "INCLUDE"> +<![%othername.attlist;[ +<!ATTLIST othername + %common.attrib; + %othername.role.attrib; + %local.othername.attrib; +> +<!--end of othername.attlist-->]]> + <!--end of othername.module-->]]> + + <!ENTITY % surname.module "INCLUDE"> + <![%surname.module;[ + <!ENTITY % local.surname.attrib ""> + <!ENTITY % surname.role.attrib "%role.attrib;"> + +<!ENTITY % surname.element "INCLUDE"> +<![%surname.element;[ +<!--doc:A family name; in western cultures the last name.--> +<!ELEMENT surname %ho; (%docinfo.char.mix;)*> +<!--end of surname.element-->]]> + +<!ENTITY % surname.attlist "INCLUDE"> +<![%surname.attlist;[ +<!ATTLIST surname + %common.attrib; + %surname.role.attrib; + %local.surname.attrib; +> +<!--end of surname.attlist-->]]> + <!--end of surname.module-->]]> +<!--end of person.ident.module-->]]> + +<!-- PrintHistory ..................... --> + +<!ENTITY % printhistory.module "INCLUDE"> +<![%printhistory.module;[ +<!ENTITY % local.printhistory.attrib ""> +<!ENTITY % printhistory.role.attrib "%role.attrib;"> + +<!ENTITY % printhistory.element "INCLUDE"> +<![%printhistory.element;[ +<!--doc:The printing history of a document.--> +<!ELEMENT printhistory %ho; ((%para.class;)+)> +<!--end of printhistory.element-->]]> + +<!ENTITY % printhistory.attlist "INCLUDE"> +<![%printhistory.attlist;[ +<!ATTLIST printhistory + %common.attrib; + %printhistory.role.attrib; + %local.printhistory.attrib; +> +<!--end of printhistory.attlist-->]]> +<!--end of printhistory.module-->]]> + +<!-- ProductName ...................... --> + +<!ENTITY % productname.module "INCLUDE"> +<![%productname.module;[ +<!ENTITY % local.productname.attrib ""> +<!ENTITY % productname.role.attrib "%role.attrib;"> + +<!ENTITY % productname.element "INCLUDE"> +<![%productname.element;[ +<!--doc:The formal name of a product.--> +<!ELEMENT productname %ho; (%para.char.mix;)*> +<!--end of productname.element-->]]> + +<!-- Class: More precisely identifies the item the element names --> + + +<!ENTITY % productname.attlist "INCLUDE"> +<![%productname.attlist;[ +<!ATTLIST productname + class (service + |trade + |registered + |copyright) 'trade' + %common.attrib; + %productname.role.attrib; + %local.productname.attrib; +> +<!--end of productname.attlist-->]]> +<!--end of productname.module-->]]> + +<!-- ProductNumber .................... --> + +<!ENTITY % productnumber.module "INCLUDE"> +<![%productnumber.module;[ +<!ENTITY % local.productnumber.attrib ""> +<!ENTITY % productnumber.role.attrib "%role.attrib;"> + +<!ENTITY % productnumber.element "INCLUDE"> +<![%productnumber.element;[ +<!--doc:A number assigned to a product.--> +<!ELEMENT productnumber %ho; (%docinfo.char.mix;)*> +<!--end of productnumber.element-->]]> + +<!ENTITY % productnumber.attlist "INCLUDE"> +<![%productnumber.attlist;[ +<!ATTLIST productnumber + %common.attrib; + %productnumber.role.attrib; + %local.productnumber.attrib; +> +<!--end of productnumber.attlist-->]]> +<!--end of productnumber.module-->]]> + +<!-- PubDate .......................... --> + +<!ENTITY % pubdate.module "INCLUDE"> +<![%pubdate.module;[ +<!ENTITY % local.pubdate.attrib ""> +<!ENTITY % pubdate.role.attrib "%role.attrib;"> + +<!ENTITY % pubdate.element "INCLUDE"> +<![%pubdate.element;[ +<!--doc:The date of publication of a document.--> +<!ELEMENT pubdate %ho; (%docinfo.char.mix;)*> +<!--end of pubdate.element-->]]> + +<!ENTITY % pubdate.attlist "INCLUDE"> +<![%pubdate.attlist;[ +<!ATTLIST pubdate + %common.attrib; + %pubdate.role.attrib; + %local.pubdate.attrib; +> +<!--end of pubdate.attlist-->]]> +<!--end of pubdate.module-->]]> + +<!-- Publisher ........................ --> + +<!ENTITY % publisher.content.module "INCLUDE"> +<![%publisher.content.module;[ +<!ENTITY % publisher.module "INCLUDE"> +<![%publisher.module;[ +<!ENTITY % local.publisher.attrib ""> +<!ENTITY % publisher.role.attrib "%role.attrib;"> + +<!ENTITY % publisher.element "INCLUDE"> +<![%publisher.element;[ +<!--doc:The publisher of a document.--> +<!ELEMENT publisher %ho; (publishername, address*)> +<!--end of publisher.element-->]]> + +<!ENTITY % publisher.attlist "INCLUDE"> +<![%publisher.attlist;[ +<!ATTLIST publisher + %common.attrib; + %publisher.role.attrib; + %local.publisher.attrib; +> +<!--end of publisher.attlist-->]]> +<!--end of publisher.module-->]]> + + <!ENTITY % publishername.module "INCLUDE"> + <![%publishername.module;[ + <!ENTITY % local.publishername.attrib ""> + <!ENTITY % publishername.role.attrib "%role.attrib;"> + +<!ENTITY % publishername.element "INCLUDE"> +<![%publishername.element;[ +<!--doc:The name of the publisher of a document.--> +<!ELEMENT publishername %ho; (%docinfo.char.mix;)*> +<!--end of publishername.element-->]]> + +<!ENTITY % publishername.attlist "INCLUDE"> +<![%publishername.attlist;[ +<!ATTLIST publishername + %common.attrib; + %publishername.role.attrib; + %local.publishername.attrib; +> +<!--end of publishername.attlist-->]]> + <!--end of publishername.module-->]]> + + <!-- Address (defined elsewhere in this section)--> +<!--end of publisher.content.module-->]]> + +<!-- PubsNumber ....................... --> + +<!ENTITY % pubsnumber.module "INCLUDE"> +<![%pubsnumber.module;[ +<!ENTITY % local.pubsnumber.attrib ""> +<!ENTITY % pubsnumber.role.attrib "%role.attrib;"> + +<!ENTITY % pubsnumber.element "INCLUDE"> +<![%pubsnumber.element;[ +<!--doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number.--> +<!ELEMENT pubsnumber %ho; (%docinfo.char.mix;)*> +<!--end of pubsnumber.element-->]]> + +<!ENTITY % pubsnumber.attlist "INCLUDE"> +<![%pubsnumber.attlist;[ +<!ATTLIST pubsnumber + %common.attrib; + %pubsnumber.role.attrib; + %local.pubsnumber.attrib; +> +<!--end of pubsnumber.attlist-->]]> +<!--end of pubsnumber.module-->]]> + +<!-- ReleaseInfo ...................... --> + +<!ENTITY % releaseinfo.module "INCLUDE"> +<![%releaseinfo.module;[ +<!ENTITY % local.releaseinfo.attrib ""> +<!ENTITY % releaseinfo.role.attrib "%role.attrib;"> + +<!ENTITY % releaseinfo.element "INCLUDE"> +<![%releaseinfo.element;[ +<!--doc:Information about a particular release of a document.--> +<!ELEMENT releaseinfo %ho; (%docinfo.char.mix;)*> +<!--end of releaseinfo.element-->]]> + +<!ENTITY % releaseinfo.attlist "INCLUDE"> +<![%releaseinfo.attlist;[ +<!ATTLIST releaseinfo + %common.attrib; + %releaseinfo.role.attrib; + %local.releaseinfo.attrib; +> +<!--end of releaseinfo.attlist-->]]> +<!--end of releaseinfo.module-->]]> + +<!-- RevHistory ....................... --> + +<!ENTITY % revhistory.content.module "INCLUDE"> +<![%revhistory.content.module;[ +<!ENTITY % revhistory.module "INCLUDE"> +<![%revhistory.module;[ +<!ENTITY % local.revhistory.attrib ""> +<!ENTITY % revhistory.role.attrib "%role.attrib;"> + +<!ENTITY % revhistory.element "INCLUDE"> +<![%revhistory.element;[ +<!--doc:A history of the revisions to a document.--> +<!ELEMENT revhistory %ho; (revision+)> +<!--end of revhistory.element-->]]> + +<!ENTITY % revhistory.attlist "INCLUDE"> +<![%revhistory.attlist;[ +<!ATTLIST revhistory + %common.attrib; + %revhistory.role.attrib; + %local.revhistory.attrib; +> +<!--end of revhistory.attlist-->]]> +<!--end of revhistory.module-->]]> + +<!ENTITY % revision.module "INCLUDE"> +<![%revision.module;[ +<!ENTITY % local.revision.attrib ""> +<!ENTITY % revision.role.attrib "%role.attrib;"> + +<!ENTITY % revision.element "INCLUDE"> +<![%revision.element;[ +<!--doc:An entry describing a single revision in the history of the revisions to a document.--> +<!ELEMENT revision %ho; (revnumber?, date, (author|authorinitials)*, + (revremark|revdescription)?)> +<!--end of revision.element-->]]> + +<!ENTITY % revision.attlist "INCLUDE"> +<![%revision.attlist;[ +<!ATTLIST revision + %common.attrib; + %revision.role.attrib; + %local.revision.attrib; +> +<!--end of revision.attlist-->]]> +<!--end of revision.module-->]]> + +<!ENTITY % revnumber.module "INCLUDE"> +<![%revnumber.module;[ +<!ENTITY % local.revnumber.attrib ""> +<!ENTITY % revnumber.role.attrib "%role.attrib;"> + +<!ENTITY % revnumber.element "INCLUDE"> +<![%revnumber.element;[ +<!--doc:A document revision number.--> +<!ELEMENT revnumber %ho; (%docinfo.char.mix;)*> +<!--end of revnumber.element-->]]> + +<!ENTITY % revnumber.attlist "INCLUDE"> +<![%revnumber.attlist;[ +<!ATTLIST revnumber + %common.attrib; + %revnumber.role.attrib; + %local.revnumber.attrib; +> +<!--end of revnumber.attlist-->]]> +<!--end of revnumber.module-->]]> + +<!-- Date (defined elsewhere in this section)--> +<!-- AuthorInitials (defined elsewhere in this section)--> + +<!ENTITY % revremark.module "INCLUDE"> +<![%revremark.module;[ +<!ENTITY % local.revremark.attrib ""> +<!ENTITY % revremark.role.attrib "%role.attrib;"> + +<!ENTITY % revremark.element "INCLUDE"> +<![%revremark.element;[ +<!--doc:A description of a revision to a document.--> +<!ELEMENT revremark %ho; (%docinfo.char.mix;)*> +<!--end of revremark.element-->]]> + +<!ENTITY % revremark.attlist "INCLUDE"> +<![%revremark.attlist;[ +<!ATTLIST revremark + %common.attrib; + %revremark.role.attrib; + %local.revremark.attrib; +> +<!--end of revremark.attlist-->]]> +<!--end of revremark.module-->]]> + +<!ENTITY % revdescription.module "INCLUDE"> +<![ %revdescription.module; [ +<!ENTITY % local.revdescription.attrib ""> +<!ENTITY % revdescription.role.attrib "%role.attrib;"> + +<!ENTITY % revdescription.element "INCLUDE"> +<![ %revdescription.element; [ +<!--doc:A extended description of a revision to a document.--> +<!ELEMENT revdescription %ho; ((%revdescription.mix;)+)> +<!--end of revdescription.element-->]]> + +<!ENTITY % revdescription.attlist "INCLUDE"> +<![ %revdescription.attlist; [ +<!ATTLIST revdescription + %common.attrib; + %revdescription.role.attrib; + %local.revdescription.attrib; +> +<!--end of revdescription.attlist-->]]> +<!--end of revdescription.module-->]]> +<!--end of revhistory.content.module-->]]> + +<!-- SeriesVolNums .................... --> + +<!ENTITY % seriesvolnums.module "INCLUDE"> +<![%seriesvolnums.module;[ +<!ENTITY % local.seriesvolnums.attrib ""> +<!ENTITY % seriesvolnums.role.attrib "%role.attrib;"> + +<!ENTITY % seriesvolnums.element "INCLUDE"> +<![%seriesvolnums.element;[ +<!--doc:Numbers of the volumes in a series of books.--> +<!ELEMENT seriesvolnums %ho; (%docinfo.char.mix;)*> +<!--end of seriesvolnums.element-->]]> + +<!ENTITY % seriesvolnums.attlist "INCLUDE"> +<![%seriesvolnums.attlist;[ +<!ATTLIST seriesvolnums + %common.attrib; + %seriesvolnums.role.attrib; + %local.seriesvolnums.attrib; +> +<!--end of seriesvolnums.attlist-->]]> +<!--end of seriesvolnums.module-->]]> + +<!-- VolumeNum ........................ --> + +<!ENTITY % volumenum.module "INCLUDE"> +<![%volumenum.module;[ +<!ENTITY % local.volumenum.attrib ""> +<!ENTITY % volumenum.role.attrib "%role.attrib;"> + +<!ENTITY % volumenum.element "INCLUDE"> +<![%volumenum.element;[ +<!--doc:The volume number of a document in a set (as of books in a set or articles in a journal).--> +<!ELEMENT volumenum %ho; (%docinfo.char.mix;)*> +<!--end of volumenum.element-->]]> + +<!ENTITY % volumenum.attlist "INCLUDE"> +<![%volumenum.attlist;[ +<!ATTLIST volumenum + %common.attrib; + %volumenum.role.attrib; + %local.volumenum.attrib; +> +<!--end of volumenum.attlist-->]]> +<!--end of volumenum.module-->]]> + +<!-- .................................. --> + +<!--end of docinfo.content.module-->]]> + +<!-- ...................................................................... --> +<!-- Inline, link, and ubiquitous elements ................................ --> + +<!-- Technical and computer terms ......................................... --> + +<!ENTITY % accel.module "INCLUDE"> +<![%accel.module;[ +<!ENTITY % local.accel.attrib ""> +<!ENTITY % accel.role.attrib "%role.attrib;"> + +<!ENTITY % accel.element "INCLUDE"> +<![%accel.element;[ +<!--doc:A graphical user interface (GUI) keyboard shortcut.--> +<!ELEMENT accel %ho; (%smallcptr.char.mix;)*> +<!--end of accel.element-->]]> + +<!ENTITY % accel.attlist "INCLUDE"> +<![%accel.attlist;[ +<!ATTLIST accel + %common.attrib; + %accel.role.attrib; + %local.accel.attrib; +> +<!--end of accel.attlist-->]]> +<!--end of accel.module-->]]> + +<!ENTITY % action.module "INCLUDE"> +<![%action.module;[ +<!ENTITY % local.action.attrib ""> +<!ENTITY % action.role.attrib "%role.attrib;"> + +<!ENTITY % action.element "INCLUDE"> +<![%action.element;[ +<!--doc:A response to a user event.--> +<!ELEMENT action %ho; (%cptr.char.mix;)*> +<!--end of action.element-->]]> + +<!ENTITY % action.attlist "INCLUDE"> +<![%action.attlist;[ +<!ATTLIST action + %moreinfo.attrib; + %common.attrib; + %action.role.attrib; + %local.action.attrib; +> +<!--end of action.attlist-->]]> +<!--end of action.module-->]]> + +<!ENTITY % application.module "INCLUDE"> +<![%application.module;[ +<!ENTITY % local.application.attrib ""> +<!ENTITY % application.role.attrib "%role.attrib;"> + +<!ENTITY % application.element "INCLUDE"> +<![%application.element;[ +<!--doc:The name of a software program.--> +<!ELEMENT application %ho; (%para.char.mix;)*> +<!--end of application.element-->]]> + +<!ENTITY % application.attlist "INCLUDE"> +<![%application.attlist;[ +<!ATTLIST application + class (hardware + |software) #IMPLIED + %moreinfo.attrib; + %common.attrib; + %application.role.attrib; + %local.application.attrib; +> +<!--end of application.attlist-->]]> +<!--end of application.module-->]]> + +<!ENTITY % classname.module "INCLUDE"> +<![%classname.module;[ +<!ENTITY % local.classname.attrib ""> +<!ENTITY % classname.role.attrib "%role.attrib;"> + +<!ENTITY % classname.element "INCLUDE"> +<![%classname.element;[ +<!--doc:The name of a class, in the object-oriented programming sense.--> +<!ELEMENT classname %ho; (%smallcptr.char.mix;)*> +<!--end of classname.element-->]]> + +<!ENTITY % classname.attlist "INCLUDE"> +<![%classname.attlist;[ +<!ATTLIST classname + %common.attrib; + %classname.role.attrib; + %local.classname.attrib; +> +<!--end of classname.attlist-->]]> +<!--end of classname.module-->]]> + +<!ENTITY % package.module "INCLUDE"> +<![%package.module;[ +<!ENTITY % local.package.attrib ""> +<!ENTITY % package.role.attrib "%role.attrib;"> + +<!ENTITY % package.element "INCLUDE"> +<![%package.element;[ +<!--doc:A package.--> +<!ELEMENT package %ho; (%smallcptr.char.mix;)*> +<!--end of package.element-->]]> + +<!ENTITY % package.attlist "INCLUDE"> +<![%package.attlist;[ +<!ATTLIST package + %common.attrib; + %package.role.attrib; + %local.package.attrib; +> +<!--end of package.attlist-->]]> +<!--end of package.module-->]]> + +<!ENTITY % co.module "INCLUDE"> +<![%co.module;[ +<!ENTITY % local.co.attrib ""> +<!-- CO is a callout area of the LineColumn unit type (a single character + position); the position is directly indicated by the location of CO. --> +<!ENTITY % co.role.attrib "%role.attrib;"> + +<!ENTITY % co.element "INCLUDE"> +<![%co.element;[ +<!--doc:The location of a callout embedded in text.--> +<!ELEMENT co %ho; EMPTY> +<!--end of co.element-->]]> + +<!-- bug number/symbol override or initialization --> +<!-- to any related information --> + + +<!ENTITY % co.attlist "INCLUDE"> +<![%co.attlist;[ +<!ATTLIST co + %label.attrib; + %linkends.attrib; + %idreq.common.attrib; + %co.role.attrib; + %local.co.attrib; +> +<!--end of co.attlist-->]]> +<!--end of co.module-->]]> + +<!ENTITY % coref.module "INCLUDE"> +<![%coref.module;[ +<!ENTITY % local.coref.attrib ""> +<!-- COREF is a reference to a CO --> +<!ENTITY % coref.role.attrib "%role.attrib;"> + +<!ENTITY % coref.element "INCLUDE"> +<![%coref.element;[ +<!--doc:A cross reference to a co.--> +<!ELEMENT coref %ho; EMPTY> +<!--end of coref.element-->]]> + +<!-- bug number/symbol override or initialization --> +<!-- to any related information --> + +<!ENTITY % coref.attlist "INCLUDE"> +<![%coref.attlist;[ +<!ATTLIST coref + %label.attrib; + %linkendreq.attrib; + %common.attrib; + %coref.role.attrib; + %local.coref.attrib; +> +<!--end of coref.attlist-->]]> +<!--end of coref.module-->]]> + +<!ENTITY % command.module "INCLUDE"> +<![%command.module;[ +<!ENTITY % local.command.attrib ""> +<!ENTITY % command.role.attrib "%role.attrib;"> + +<!ENTITY % command.element "INCLUDE"> +<![%command.element;[ +<!--doc:The name of an executable program or other software command.--> +<!ELEMENT command %ho; (%cptr.char.mix;)*> +<!--end of command.element-->]]> + +<!ENTITY % command.attlist "INCLUDE"> +<![%command.attlist;[ +<!ATTLIST command + %moreinfo.attrib; + %common.attrib; + %command.role.attrib; + %local.command.attrib; +> +<!--end of command.attlist-->]]> +<!--end of command.module-->]]> + +<!ENTITY % computeroutput.module "INCLUDE"> +<![%computeroutput.module;[ +<!ENTITY % local.computeroutput.attrib ""> +<!ENTITY % computeroutput.role.attrib "%role.attrib;"> + +<!ENTITY % computeroutput.element "INCLUDE"> +<![%computeroutput.element;[ +<!--doc:Data, generally text, displayed or presented by a computer.--> +<!ELEMENT computeroutput %ho; (%cptr.char.mix;|co)*> +<!--end of computeroutput.element-->]]> + +<!ENTITY % computeroutput.attlist "INCLUDE"> +<![%computeroutput.attlist;[ +<!ATTLIST computeroutput + %moreinfo.attrib; + %common.attrib; + %computeroutput.role.attrib; + %local.computeroutput.attrib; +> +<!--end of computeroutput.attlist-->]]> +<!--end of computeroutput.module-->]]> + +<!ENTITY % database.module "INCLUDE"> +<![%database.module;[ +<!ENTITY % local.database.attrib ""> +<!ENTITY % database.role.attrib "%role.attrib;"> + +<!ENTITY % database.element "INCLUDE"> +<![%database.element;[ +<!--doc:The name of a database, or part of a database.--> +<!ELEMENT database %ho; (%cptr.char.mix;)*> +<!--end of database.element-->]]> + +<!-- Class: Type of database the element names; no default --> + + +<!ENTITY % database.attlist "INCLUDE"> +<![%database.attlist;[ +<!ATTLIST database + class (name + |table + |field + |key1 + |key2 + |record + |index + |view + |primarykey + |secondarykey + |foreignkey + |altkey + |procedure + |datatype + |constraint + |rule + |user + |group) #IMPLIED + %moreinfo.attrib; + %common.attrib; + %database.role.attrib; + %local.database.attrib; +> +<!--end of database.attlist-->]]> +<!--end of database.module-->]]> + +<!ENTITY % email.module "INCLUDE"> +<![%email.module;[ +<!ENTITY % local.email.attrib ""> +<!ENTITY % email.role.attrib "%role.attrib;"> + +<!ENTITY % email.element "INCLUDE"> +<![%email.element;[ +<!--doc:An email address.--> +<!ELEMENT email %ho; (%docinfo.char.mix;)*> +<!--end of email.element-->]]> + +<!ENTITY % email.attlist "INCLUDE"> +<![%email.attlist;[ +<!ATTLIST email + %common.attrib; + %email.role.attrib; + %local.email.attrib; +> +<!--end of email.attlist-->]]> +<!--end of email.module-->]]> + +<!ENTITY % envar.module "INCLUDE"> +<![%envar.module;[ +<!ENTITY % local.envar.attrib ""> +<!ENTITY % envar.role.attrib "%role.attrib;"> + +<!ENTITY % envar.element "INCLUDE"> +<![%envar.element;[ +<!--doc:A software environment variable.--> +<!ELEMENT envar %ho; (%smallcptr.char.mix;)*> +<!--end of envar.element-->]]> + +<!ENTITY % envar.attlist "INCLUDE"> +<![%envar.attlist;[ +<!ATTLIST envar + %common.attrib; + %envar.role.attrib; + %local.envar.attrib; +> +<!--end of envar.attlist-->]]> +<!--end of envar.module-->]]> + + +<!ENTITY % errorcode.module "INCLUDE"> +<![%errorcode.module;[ +<!ENTITY % local.errorcode.attrib ""> +<!ENTITY % errorcode.role.attrib "%role.attrib;"> + +<!ENTITY % errorcode.element "INCLUDE"> +<![%errorcode.element;[ +<!--doc:An error code.--> +<!ELEMENT errorcode %ho; (%smallcptr.char.mix;)*> +<!--end of errorcode.element-->]]> + +<!ENTITY % errorcode.attlist "INCLUDE"> +<![%errorcode.attlist;[ +<!ATTLIST errorcode + %moreinfo.attrib; + %common.attrib; + %errorcode.role.attrib; + %local.errorcode.attrib; +> +<!--end of errorcode.attlist-->]]> +<!--end of errorcode.module-->]]> + +<!ENTITY % errorname.module "INCLUDE"> +<![%errorname.module;[ +<!ENTITY % local.errorname.attrib ""> +<!ENTITY % errorname.role.attrib "%role.attrib;"> + +<!ENTITY % errorname.element "INCLUDE"> +<![%errorname.element;[ +<!--doc:An error name.--> +<!ELEMENT errorname %ho; (%smallcptr.char.mix;)*> +<!--end of errorname.element-->]]> + +<!ENTITY % errorname.attlist "INCLUDE"> +<![%errorname.attlist;[ +<!ATTLIST errorname + %common.attrib; + %errorname.role.attrib; + %local.errorname.attrib; +> +<!--end of errorname.attlist-->]]> +<!--end of errorname.module-->]]> + +<!ENTITY % errortext.module "INCLUDE"> +<![%errortext.module;[ +<!ENTITY % local.errortext.attrib ""> +<!ENTITY % errortext.role.attrib "%role.attrib;"> + +<!ENTITY % errortext.element "INCLUDE"> +<![%errortext.element;[ +<!--doc:An error message..--> +<!ELEMENT errortext %ho; (%smallcptr.char.mix;)*> +<!--end of errortext.element-->]]> + +<!ENTITY % errortext.attlist "INCLUDE"> +<![%errortext.attlist;[ +<!ATTLIST errortext + %common.attrib; + %errortext.role.attrib; + %local.errortext.attrib; +> +<!--end of errortext.attlist-->]]> +<!--end of errortext.module-->]]> + +<!ENTITY % errortype.module "INCLUDE"> +<![%errortype.module;[ +<!ENTITY % local.errortype.attrib ""> +<!ENTITY % errortype.role.attrib "%role.attrib;"> + +<!ENTITY % errortype.element "INCLUDE"> +<![%errortype.element;[ +<!--doc:The classification of an error message.--> +<!ELEMENT errortype %ho; (%smallcptr.char.mix;)*> +<!--end of errortype.element-->]]> + +<!ENTITY % errortype.attlist "INCLUDE"> +<![%errortype.attlist;[ +<!ATTLIST errortype + %common.attrib; + %errortype.role.attrib; + %local.errortype.attrib; +> +<!--end of errortype.attlist-->]]> +<!--end of errortype.module-->]]> + +<!ENTITY % filename.module "INCLUDE"> +<![%filename.module;[ +<!ENTITY % local.filename.attrib ""> +<!ENTITY % filename.role.attrib "%role.attrib;"> + +<!ENTITY % filename.element "INCLUDE"> +<![%filename.element;[ +<!--doc:The name of a file.--> +<!ELEMENT filename %ho; (%cptr.char.mix;)*> +<!--end of filename.element-->]]> + +<!-- Class: Type of filename the element names; no default --> +<!-- Path: Search path (possibly system-specific) in which + file can be found --> + + +<!ENTITY % filename.attlist "INCLUDE"> +<![%filename.attlist;[ +<!ATTLIST filename + class (headerfile + |partition + |devicefile + |libraryfile + |directory + |extension + |symlink) #IMPLIED + path CDATA #IMPLIED + %moreinfo.attrib; + %common.attrib; + %filename.role.attrib; + %local.filename.attrib; +> +<!--end of filename.attlist-->]]> +<!--end of filename.module-->]]> + +<!ENTITY % function.module "INCLUDE"> +<![%function.module;[ +<!ENTITY % local.function.attrib ""> +<!ENTITY % function.role.attrib "%role.attrib;"> + +<!ENTITY % function.element "INCLUDE"> +<![%function.element;[ +<!--doc:The name of a function or subroutine, as in a programming language.--> +<!ELEMENT function %ho; (%cptr.char.mix;)*> +<!--end of function.element-->]]> + +<!ENTITY % function.attlist "INCLUDE"> +<![%function.attlist;[ +<!ATTLIST function + %moreinfo.attrib; + %common.attrib; + %function.role.attrib; + %local.function.attrib; +> +<!--end of function.attlist-->]]> +<!--end of function.module-->]]> + +<!ENTITY % guibutton.module "INCLUDE"> +<![%guibutton.module;[ +<!ENTITY % local.guibutton.attrib ""> +<!ENTITY % guibutton.role.attrib "%role.attrib;"> + +<!ENTITY % guibutton.element "INCLUDE"> +<![%guibutton.element;[ +<!--doc:The text on a button in a GUI.--> +<!ELEMENT guibutton %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*> +<!--end of guibutton.element-->]]> + +<!ENTITY % guibutton.attlist "INCLUDE"> +<![%guibutton.attlist;[ +<!ATTLIST guibutton + %moreinfo.attrib; + %common.attrib; + %guibutton.role.attrib; + %local.guibutton.attrib; +> +<!--end of guibutton.attlist-->]]> +<!--end of guibutton.module-->]]> + +<!ENTITY % guiicon.module "INCLUDE"> +<![%guiicon.module;[ +<!ENTITY % local.guiicon.attrib ""> +<!ENTITY % guiicon.role.attrib "%role.attrib;"> + +<!ENTITY % guiicon.element "INCLUDE"> +<![%guiicon.element;[ +<!--doc:Graphic and/or text appearing as a icon in a GUI.--> +<!ELEMENT guiicon %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*> +<!--end of guiicon.element-->]]> + +<!ENTITY % guiicon.attlist "INCLUDE"> +<![%guiicon.attlist;[ +<!ATTLIST guiicon + %moreinfo.attrib; + %common.attrib; + %guiicon.role.attrib; + %local.guiicon.attrib; +> +<!--end of guiicon.attlist-->]]> +<!--end of guiicon.module-->]]> + +<!ENTITY % guilabel.module "INCLUDE"> +<![%guilabel.module;[ +<!ENTITY % local.guilabel.attrib ""> +<!ENTITY % guilabel.role.attrib "%role.attrib;"> + +<!ENTITY % guilabel.element "INCLUDE"> +<![%guilabel.element;[ +<!--doc:The text of a label in a GUI.--> +<!ELEMENT guilabel %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*> +<!--end of guilabel.element-->]]> + +<!ENTITY % guilabel.attlist "INCLUDE"> +<![%guilabel.attlist;[ +<!ATTLIST guilabel + %moreinfo.attrib; + %common.attrib; + %guilabel.role.attrib; + %local.guilabel.attrib; +> +<!--end of guilabel.attlist-->]]> +<!--end of guilabel.module-->]]> + +<!ENTITY % guimenu.module "INCLUDE"> +<![%guimenu.module;[ +<!ENTITY % local.guimenu.attrib ""> +<!ENTITY % guimenu.role.attrib "%role.attrib;"> + +<!ENTITY % guimenu.element "INCLUDE"> +<![%guimenu.element;[ +<!--doc:The name of a menu in a GUI.--> +<!ELEMENT guimenu %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*> +<!--end of guimenu.element-->]]> + +<!ENTITY % guimenu.attlist "INCLUDE"> +<![%guimenu.attlist;[ +<!ATTLIST guimenu + %moreinfo.attrib; + %common.attrib; + %guimenu.role.attrib; + %local.guimenu.attrib; +> +<!--end of guimenu.attlist-->]]> +<!--end of guimenu.module-->]]> + +<!ENTITY % guimenuitem.module "INCLUDE"> +<![%guimenuitem.module;[ +<!ENTITY % local.guimenuitem.attrib ""> +<!ENTITY % guimenuitem.role.attrib "%role.attrib;"> + +<!ENTITY % guimenuitem.element "INCLUDE"> +<![%guimenuitem.element;[ +<!--doc:The name of a terminal menu item in a GUI.--> +<!ELEMENT guimenuitem %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*> +<!--end of guimenuitem.element-->]]> + +<!ENTITY % guimenuitem.attlist "INCLUDE"> +<![%guimenuitem.attlist;[ +<!ATTLIST guimenuitem + %moreinfo.attrib; + %common.attrib; + %guimenuitem.role.attrib; + %local.guimenuitem.attrib; +> +<!--end of guimenuitem.attlist-->]]> +<!--end of guimenuitem.module-->]]> + +<!ENTITY % guisubmenu.module "INCLUDE"> +<![%guisubmenu.module;[ +<!ENTITY % local.guisubmenu.attrib ""> +<!ENTITY % guisubmenu.role.attrib "%role.attrib;"> + +<!ENTITY % guisubmenu.element "INCLUDE"> +<![%guisubmenu.element;[ +<!--doc:The name of a submenu in a GUI.--> +<!ELEMENT guisubmenu %ho; (%smallcptr.char.mix;|accel|superscript|subscript)*> +<!--end of guisubmenu.element-->]]> + +<!ENTITY % guisubmenu.attlist "INCLUDE"> +<![%guisubmenu.attlist;[ +<!ATTLIST guisubmenu + %moreinfo.attrib; + %common.attrib; + %guisubmenu.role.attrib; + %local.guisubmenu.attrib; +> +<!--end of guisubmenu.attlist-->]]> +<!--end of guisubmenu.module-->]]> + +<!ENTITY % hardware.module "INCLUDE"> +<![%hardware.module;[ +<!ENTITY % local.hardware.attrib ""> +<!ENTITY % hardware.role.attrib "%role.attrib;"> + +<!ENTITY % hardware.element "INCLUDE"> +<![%hardware.element;[ +<!--doc:A physical part of a computer system.--> +<!ELEMENT hardware %ho; (%cptr.char.mix;)*> +<!--end of hardware.element-->]]> + +<!ENTITY % hardware.attlist "INCLUDE"> +<![%hardware.attlist;[ +<!ATTLIST hardware + %moreinfo.attrib; + %common.attrib; + %hardware.role.attrib; + %local.hardware.attrib; +> +<!--end of hardware.attlist-->]]> +<!--end of hardware.module-->]]> + +<!ENTITY % interface.module "INCLUDE"> +<![%interface.module;[ +<!ENTITY % local.interface.attrib ""> +<!ENTITY % interface.role.attrib "%role.attrib;"> + +<!ENTITY % interface.element "INCLUDE"> +<![%interface.element;[ +<!--doc:An element of a GUI.--> +<!ELEMENT interface %ho; (%smallcptr.char.mix;|accel)*> +<!--end of interface.element-->]]> + +<!-- Class: Type of the Interface item; no default --> + + +<!ENTITY % interface.attlist "INCLUDE"> +<![%interface.attlist;[ +<!ATTLIST interface + %moreinfo.attrib; + %common.attrib; + %interface.role.attrib; + %local.interface.attrib; +> +<!--end of interface.attlist-->]]> +<!--end of interface.module-->]]> + +<!ENTITY % keycap.module "INCLUDE"> +<![%keycap.module;[ +<!ENTITY % local.keycap.attrib ""> +<!ENTITY % keycap.role.attrib "%role.attrib;"> + +<!ENTITY % keycap.element "INCLUDE"> +<![%keycap.element;[ +<!--doc:The text printed on a key on a keyboard.--> +<!ELEMENT keycap %ho; (%cptr.char.mix;)*> +<!--end of keycap.element-->]]> + +<!ENTITY % keycap.attlist "INCLUDE"> +<![%keycap.attlist;[ +<!ATTLIST keycap + function (alt + |control + |shift + |meta + |escape + |enter + |tab + |backspace + |command + |option + |space + |delete + |insert + |up + |down + |left + |right + |home + |end + |pageup + |pagedown + |other) #IMPLIED + otherfunction CDATA #IMPLIED + %moreinfo.attrib; + %common.attrib; + %keycap.role.attrib; + %local.keycap.attrib; +> +<!--end of keycap.attlist-->]]> +<!--end of keycap.module-->]]> + +<!ENTITY % keycode.module "INCLUDE"> +<![%keycode.module;[ +<!ENTITY % local.keycode.attrib ""> +<!ENTITY % keycode.role.attrib "%role.attrib;"> + +<!ENTITY % keycode.element "INCLUDE"> +<![%keycode.element;[ +<!--doc:The internal, frequently numeric, identifier for a key on a keyboard.--> +<!ELEMENT keycode %ho; (%smallcptr.char.mix;)*> +<!--end of keycode.element-->]]> + +<!ENTITY % keycode.attlist "INCLUDE"> +<![%keycode.attlist;[ +<!ATTLIST keycode + %common.attrib; + %keycode.role.attrib; + %local.keycode.attrib; +> +<!--end of keycode.attlist-->]]> +<!--end of keycode.module-->]]> + +<!ENTITY % keycombo.module "INCLUDE"> +<![%keycombo.module;[ +<!ENTITY % local.keycombo.attrib ""> +<!ENTITY % keycombo.role.attrib "%role.attrib;"> + +<!ENTITY % keycombo.element "INCLUDE"> +<![%keycombo.element;[ +<!--doc:A combination of input actions.--> +<!ELEMENT keycombo %ho; ((keycap|keycombo|keysym|mousebutton)+)> +<!--end of keycombo.element-->]]> + +<!ENTITY % keycombo.attlist "INCLUDE"> +<![%keycombo.attlist;[ +<!ATTLIST keycombo + %keyaction.attrib; + %moreinfo.attrib; + %common.attrib; + %keycombo.role.attrib; + %local.keycombo.attrib; +> +<!--end of keycombo.attlist-->]]> +<!--end of keycombo.module-->]]> + +<!ENTITY % keysym.module "INCLUDE"> +<![%keysym.module;[ +<!ENTITY % local.keysym.attrib ""> +<!ENTITY % keysysm.role.attrib "%role.attrib;"> + +<!ENTITY % keysym.element "INCLUDE"> +<![%keysym.element;[ +<!--doc:The symbolic name of a key on a keyboard.--> +<!ELEMENT keysym %ho; (%smallcptr.char.mix;)*> +<!--end of keysym.element-->]]> + +<!ENTITY % keysym.attlist "INCLUDE"> +<![%keysym.attlist;[ +<!ATTLIST keysym + %common.attrib; + %keysysm.role.attrib; + %local.keysym.attrib; +> +<!--end of keysym.attlist-->]]> +<!--end of keysym.module-->]]> + +<!ENTITY % lineannotation.module "INCLUDE"> +<![%lineannotation.module;[ +<!ENTITY % local.lineannotation.attrib ""> +<!ENTITY % lineannotation.role.attrib "%role.attrib;"> + +<!ENTITY % lineannotation.element "INCLUDE"> +<![%lineannotation.element;[ +<!--doc:A comment on a line in a verbatim listing.--> +<!ELEMENT lineannotation %ho; (%para.char.mix;)*> +<!--end of lineannotation.element-->]]> + +<!ENTITY % lineannotation.attlist "INCLUDE"> +<![%lineannotation.attlist;[ +<!ATTLIST lineannotation + %common.attrib; + %lineannotation.role.attrib; + %local.lineannotation.attrib; +> +<!--end of lineannotation.attlist-->]]> +<!--end of lineannotation.module-->]]> + +<!ENTITY % literal.module "INCLUDE"> +<![%literal.module;[ +<!ENTITY % local.literal.attrib ""> +<!ENTITY % literal.role.attrib "%role.attrib;"> + +<!ENTITY % literal.element "INCLUDE"> +<![%literal.element;[ +<!--doc:Inline text that is some literal value.--> +<!ELEMENT literal %ho; (%cptr.char.mix;)*> +<!--end of literal.element-->]]> + +<!ENTITY % literal.attlist "INCLUDE"> +<![%literal.attlist;[ +<!ATTLIST literal + %moreinfo.attrib; + %common.attrib; + %literal.role.attrib; + %local.literal.attrib; +> +<!--end of literal.attlist-->]]> +<!--end of literal.module-->]]> + +<!ENTITY % code.module "INCLUDE"> +<![%code.module;[ +<!ENTITY % local.code.attrib ""> +<!ENTITY % code.role.attrib "%role.attrib;"> + +<!ENTITY % code.element "INCLUDE"> +<![%code.element;[ +<!--doc:An inline code fragment.--> +<!ELEMENT code %ho; (%cptr.char.mix;)*> +<!--end of code.element-->]]> + +<!ENTITY % code.attlist "INCLUDE"> +<![%code.attlist;[ +<!ATTLIST code + language CDATA #IMPLIED + %common.attrib; + %code.role.attrib; + %local.code.attrib; +> +<!--end of code.attlist-->]]> +<!--end of code.module-->]]> + +<!ENTITY % constant.module "INCLUDE"> +<![ %constant.module; [ +<!ENTITY % local.constant.attrib ""> +<!ENTITY % constant.role.attrib "%role.attrib;"> + +<!ENTITY % constant.element "INCLUDE"> +<![ %constant.element; [ +<!--doc:A programming or system constant.--> +<!ELEMENT constant %ho; (%smallcptr.char.mix;)*> +<!--end of constant.element-->]]> + +<!ENTITY % constant.attlist "INCLUDE"> +<![ %constant.attlist; [ +<!ATTLIST constant + class (limit) #IMPLIED + %common.attrib; + %constant.role.attrib; + %local.constant.attrib; +> +<!--end of constant.attlist-->]]> +<!--end of constant.module-->]]> + +<!ENTITY % varname.module "INCLUDE"> +<![ %varname.module; [ +<!ENTITY % local.varname.attrib ""> +<!ENTITY % varname.role.attrib "%role.attrib;"> + +<!ENTITY % varname.element "INCLUDE"> +<![ %varname.element; [ +<!--doc:The name of a variable.--> +<!ELEMENT varname %ho; (%smallcptr.char.mix;)*> +<!--end of varname.element-->]]> + +<!ENTITY % varname.attlist "INCLUDE"> +<![ %varname.attlist; [ +<!ATTLIST varname + %common.attrib; + %varname.role.attrib; + %local.varname.attrib; +> +<!--end of varname.attlist-->]]> +<!--end of varname.module-->]]> + +<!ENTITY % markup.module "INCLUDE"> +<![%markup.module;[ +<!ENTITY % local.markup.attrib ""> +<!ENTITY % markup.role.attrib "%role.attrib;"> + +<!ENTITY % markup.element "INCLUDE"> +<![%markup.element;[ +<!--doc:A string of formatting markup in text that is to be represented literally.--> +<!ELEMENT markup %ho; (%smallcptr.char.mix;)*> +<!--end of markup.element-->]]> + +<!ENTITY % markup.attlist "INCLUDE"> +<![%markup.attlist;[ +<!ATTLIST markup + %common.attrib; + %markup.role.attrib; + %local.markup.attrib; +> +<!--end of markup.attlist-->]]> +<!--end of markup.module-->]]> + +<!ENTITY % medialabel.module "INCLUDE"> +<![%medialabel.module;[ +<!ENTITY % local.medialabel.attrib ""> +<!ENTITY % medialabel.role.attrib "%role.attrib;"> + +<!ENTITY % medialabel.element "INCLUDE"> +<![%medialabel.element;[ +<!--doc:A name that identifies the physical medium on which some information resides.--> +<!ELEMENT medialabel %ho; (%smallcptr.char.mix;)*> +<!--end of medialabel.element-->]]> + +<!-- Class: Type of medium named by the element; no default --> + + +<!ENTITY % medialabel.attlist "INCLUDE"> +<![%medialabel.attlist;[ +<!ATTLIST medialabel + class (cartridge + |cdrom + |disk + |tape) #IMPLIED + %common.attrib; + %medialabel.role.attrib; + %local.medialabel.attrib; +> +<!--end of medialabel.attlist-->]]> +<!--end of medialabel.module-->]]> + +<!ENTITY % menuchoice.content.module "INCLUDE"> +<![%menuchoice.content.module;[ +<!ENTITY % menuchoice.module "INCLUDE"> +<![%menuchoice.module;[ +<!ENTITY % local.menuchoice.attrib ""> +<!ENTITY % menuchoice.role.attrib "%role.attrib;"> + +<!ENTITY % menuchoice.element "INCLUDE"> +<![%menuchoice.element;[ +<!--doc:A selection or series of selections from a menu.--> +<!ELEMENT menuchoice %ho; (shortcut?, (guibutton|guiicon|guilabel + |guimenu|guimenuitem|guisubmenu|interface)+)> +<!--end of menuchoice.element-->]]> + +<!ENTITY % menuchoice.attlist "INCLUDE"> +<![%menuchoice.attlist;[ +<!ATTLIST menuchoice + %moreinfo.attrib; + %common.attrib; + %menuchoice.role.attrib; + %local.menuchoice.attrib; +> +<!--end of menuchoice.attlist-->]]> +<!--end of menuchoice.module-->]]> + +<!ENTITY % shortcut.module "INCLUDE"> +<![%shortcut.module;[ +<!-- See also KeyCombo --> +<!ENTITY % local.shortcut.attrib ""> +<!ENTITY % shortcut.role.attrib "%role.attrib;"> + +<!ENTITY % shortcut.element "INCLUDE"> +<![%shortcut.element;[ +<!--doc:A key combination for an action that is also accessible through a menu.--> +<!ELEMENT shortcut %ho; ((keycap|keycombo|keysym|mousebutton)+)> +<!--end of shortcut.element-->]]> + +<!ENTITY % shortcut.attlist "INCLUDE"> +<![%shortcut.attlist;[ +<!ATTLIST shortcut + %keyaction.attrib; + %moreinfo.attrib; + %common.attrib; + %shortcut.role.attrib; + %local.shortcut.attrib; +> +<!--end of shortcut.attlist-->]]> +<!--end of shortcut.module-->]]> +<!--end of menuchoice.content.module-->]]> + +<!ENTITY % mousebutton.module "INCLUDE"> +<![%mousebutton.module;[ +<!ENTITY % local.mousebutton.attrib ""> +<!ENTITY % mousebutton.role.attrib "%role.attrib;"> + +<!ENTITY % mousebutton.element "INCLUDE"> +<![%mousebutton.element;[ +<!--doc:The conventional name of a mouse button.--> +<!ELEMENT mousebutton %ho; (%smallcptr.char.mix;)*> +<!--end of mousebutton.element-->]]> + +<!ENTITY % mousebutton.attlist "INCLUDE"> +<![%mousebutton.attlist;[ +<!ATTLIST mousebutton + %moreinfo.attrib; + %common.attrib; + %mousebutton.role.attrib; + %local.mousebutton.attrib; +> +<!--end of mousebutton.attlist-->]]> +<!--end of mousebutton.module-->]]> + +<!ENTITY % msgtext.module "INCLUDE"> +<![%msgtext.module;[ +<!ENTITY % local.msgtext.attrib ""> +<!ENTITY % msgtext.role.attrib "%role.attrib;"> + +<!ENTITY % msgtext.element "INCLUDE"> +<![%msgtext.element;[ +<!--doc:The actual text of a message component in a message set.--> +<!ELEMENT msgtext %ho; ((%component.mix;)+)> +<!--end of msgtext.element-->]]> + +<!ENTITY % msgtext.attlist "INCLUDE"> +<![%msgtext.attlist;[ +<!ATTLIST msgtext + %common.attrib; + %msgtext.role.attrib; + %local.msgtext.attrib; +> +<!--end of msgtext.attlist-->]]> +<!--end of msgtext.module-->]]> + +<!ENTITY % option.module "INCLUDE"> +<![%option.module;[ +<!ENTITY % local.option.attrib ""> +<!ENTITY % option.role.attrib "%role.attrib;"> + +<!ENTITY % option.element "INCLUDE"> +<![%option.element;[ +<!--doc:An option for a software command.--> +<!ELEMENT option %ho; (%cptr.char.mix;)*> +<!--end of option.element-->]]> + +<!ENTITY % option.attlist "INCLUDE"> +<![%option.attlist;[ +<!ATTLIST option + %common.attrib; + %option.role.attrib; + %local.option.attrib; +> +<!--end of option.attlist-->]]> +<!--end of option.module-->]]> + +<!ENTITY % optional.module "INCLUDE"> +<![%optional.module;[ +<!ENTITY % local.optional.attrib ""> +<!ENTITY % optional.role.attrib "%role.attrib;"> + +<!ENTITY % optional.element "INCLUDE"> +<![%optional.element;[ +<!--doc:Optional information.--> +<!ELEMENT optional %ho; (%cptr.char.mix;)*> +<!--end of optional.element-->]]> + +<!ENTITY % optional.attlist "INCLUDE"> +<![%optional.attlist;[ +<!ATTLIST optional + %common.attrib; + %optional.role.attrib; + %local.optional.attrib; +> +<!--end of optional.attlist-->]]> +<!--end of optional.module-->]]> + +<!ENTITY % parameter.module "INCLUDE"> +<![%parameter.module;[ +<!ENTITY % local.parameter.attrib ""> +<!ENTITY % parameter.role.attrib "%role.attrib;"> + +<!ENTITY % parameter.element "INCLUDE"> +<![%parameter.element;[ +<!--doc:A value or a symbolic reference to a value.--> +<!ELEMENT parameter %ho; (%cptr.char.mix;)*> +<!--end of parameter.element-->]]> + +<!-- Class: Type of the Parameter; no default --> + + +<!ENTITY % parameter.attlist "INCLUDE"> +<![%parameter.attlist;[ +<!ATTLIST parameter + class (command + |function + |option) #IMPLIED + %moreinfo.attrib; + %common.attrib; + %parameter.role.attrib; + %local.parameter.attrib; +> +<!--end of parameter.attlist-->]]> +<!--end of parameter.module-->]]> + +<!ENTITY % prompt.module "INCLUDE"> +<![%prompt.module;[ +<!ENTITY % local.prompt.attrib ""> +<!ENTITY % prompt.role.attrib "%role.attrib;"> + +<!ENTITY % prompt.element "INCLUDE"> +<![%prompt.element;[ +<!--doc:A character or string indicating the start of an input field in a computer display.--> +<!ELEMENT prompt %ho; (%smallcptr.char.mix;|co)*> +<!--end of prompt.element-->]]> + +<!ENTITY % prompt.attlist "INCLUDE"> +<![%prompt.attlist;[ +<!ATTLIST prompt + %moreinfo.attrib; + %common.attrib; + %prompt.role.attrib; + %local.prompt.attrib; +> +<!--end of prompt.attlist-->]]> +<!--end of prompt.module-->]]> + +<!ENTITY % property.module "INCLUDE"> +<![%property.module;[ +<!ENTITY % local.property.attrib ""> +<!ENTITY % property.role.attrib "%role.attrib;"> + +<!ENTITY % property.element "INCLUDE"> +<![%property.element;[ +<!--doc:A unit of data associated with some part of a computer system.--> +<!ELEMENT property %ho; (%cptr.char.mix;)*> +<!--end of property.element-->]]> + +<!ENTITY % property.attlist "INCLUDE"> +<![%property.attlist;[ +<!ATTLIST property + %moreinfo.attrib; + %common.attrib; + %property.role.attrib; + %local.property.attrib; +> +<!--end of property.attlist-->]]> +<!--end of property.module-->]]> + +<!ENTITY % replaceable.module "INCLUDE"> +<![%replaceable.module;[ +<!ENTITY % local.replaceable.attrib ""> +<!ENTITY % replaceable.role.attrib "%role.attrib;"> + +<!ENTITY % replaceable.element "INCLUDE"> +<![%replaceable.element;[ +<!--doc:Content that may or must be replaced by the user.--> +<!ELEMENT replaceable %ho; (#PCDATA + | %link.char.class; + | optional + | %base.char.class; + | %other.char.class; + | inlinegraphic + | inlinemediaobject + | co)*> +<!--end of replaceable.element-->]]> + +<!-- Class: Type of information the element represents; no + default --> + + +<!ENTITY % replaceable.attlist "INCLUDE"> +<![%replaceable.attlist;[ +<!ATTLIST replaceable + class (command + |function + |option + |parameter) #IMPLIED + %common.attrib; + %replaceable.role.attrib; + %local.replaceable.attrib; +> +<!--end of replaceable.attlist-->]]> +<!--end of replaceable.module-->]]> + +<!ENTITY % returnvalue.module "INCLUDE"> +<![%returnvalue.module;[ +<!ENTITY % local.returnvalue.attrib ""> +<!ENTITY % returnvalue.role.attrib "%role.attrib;"> + +<!ENTITY % returnvalue.element "INCLUDE"> +<![%returnvalue.element;[ +<!--doc:The value returned by a function.--> +<!ELEMENT returnvalue %ho; (%smallcptr.char.mix;)*> +<!--end of returnvalue.element-->]]> + +<!ENTITY % returnvalue.attlist "INCLUDE"> +<![%returnvalue.attlist;[ +<!ATTLIST returnvalue + %common.attrib; + %returnvalue.role.attrib; + %local.returnvalue.attrib; +> +<!--end of returnvalue.attlist-->]]> +<!--end of returnvalue.module-->]]> + +<!ENTITY % sgmltag.module "INCLUDE"> +<![%sgmltag.module;[ +<!ENTITY % local.sgmltag.attrib ""> +<!ENTITY % sgmltag.role.attrib "%role.attrib;"> + +<!ENTITY % sgmltag.element "INCLUDE"> +<![%sgmltag.element;[ +<!--doc:A component of SGML markup.--> +<!ELEMENT sgmltag %ho; (%smallcptr.char.mix;)*> +<!--end of sgmltag.element-->]]> + +<!-- Class: Type of SGML construct the element names; no default --> + + +<!ENTITY % sgmltag.attlist "INCLUDE"> +<![%sgmltag.attlist;[ +<!ATTLIST sgmltag + class (attribute + |attvalue + |element + |endtag + |emptytag + |genentity + |numcharref + |paramentity + |pi + |xmlpi + |starttag + |sgmlcomment + |prefix + |namespace + |localname) #IMPLIED + namespace CDATA #IMPLIED + %common.attrib; + %sgmltag.role.attrib; + %local.sgmltag.attrib; +> +<!--end of sgmltag.attlist-->]]> +<!--end of sgmltag.module-->]]> + +<!ENTITY % structfield.module "INCLUDE"> +<![%structfield.module;[ +<!ENTITY % local.structfield.attrib ""> +<!ENTITY % structfield.role.attrib "%role.attrib;"> + +<!ENTITY % structfield.element "INCLUDE"> +<![%structfield.element;[ +<!--doc:A field in a structure (in the programming language sense).--> +<!ELEMENT structfield %ho; (%smallcptr.char.mix;)*> +<!--end of structfield.element-->]]> + +<!ENTITY % structfield.attlist "INCLUDE"> +<![%structfield.attlist;[ +<!ATTLIST structfield + %common.attrib; + %structfield.role.attrib; + %local.structfield.attrib; +> +<!--end of structfield.attlist-->]]> +<!--end of structfield.module-->]]> + +<!ENTITY % structname.module "INCLUDE"> +<![%structname.module;[ +<!ENTITY % local.structname.attrib ""> +<!ENTITY % structname.role.attrib "%role.attrib;"> + +<!ENTITY % structname.element "INCLUDE"> +<![%structname.element;[ +<!--doc:The name of a structure (in the programming language sense).--> +<!ELEMENT structname %ho; (%smallcptr.char.mix;)*> +<!--end of structname.element-->]]> + +<!ENTITY % structname.attlist "INCLUDE"> +<![%structname.attlist;[ +<!ATTLIST structname + %common.attrib; + %structname.role.attrib; + %local.structname.attrib; +> +<!--end of structname.attlist-->]]> +<!--end of structname.module-->]]> + +<!ENTITY % symbol.module "INCLUDE"> +<![%symbol.module;[ +<!ENTITY % local.symbol.attrib ""> +<!ENTITY % symbol.role.attrib "%role.attrib;"> + +<!ENTITY % symbol.element "INCLUDE"> +<![%symbol.element;[ +<!--doc:A name that is replaced by a value before processing.--> +<!ELEMENT symbol %ho; (%smallcptr.char.mix;)*> +<!--end of symbol.element-->]]> + +<!-- Class: Type of symbol; no default --> + + +<!ENTITY % symbol.attlist "INCLUDE"> +<![%symbol.attlist;[ +<!ATTLIST symbol + class (limit) #IMPLIED + %common.attrib; + %symbol.role.attrib; + %local.symbol.attrib; +> +<!--end of symbol.attlist-->]]> +<!--end of symbol.module-->]]> + +<!ENTITY % systemitem.module "INCLUDE"> +<![%systemitem.module;[ +<!ENTITY % local.systemitem.attrib ""> +<!ENTITY % systemitem.role.attrib "%role.attrib;"> + +<!ENTITY % systemitem.element "INCLUDE"> +<![%systemitem.element;[ +<!--doc:A system-related item or term.--> +<!ELEMENT systemitem %ho; (%cptr.char.mix; | acronym | co)*> +<!--end of systemitem.element-->]]> + +<!-- Class: Type of system item the element names; no default --> + +<!ENTITY % systemitem.attlist "INCLUDE"> +<![%systemitem.attlist;[ +<!ATTLIST systemitem + class (constant + |daemon + |domainname + |etheraddress + |event + |eventhandler + |filesystem + |fqdomainname + |groupname + |ipaddress + |library + |macro + |netmask + |newsgroup + |osname + |protocol + |resource + |systemname + |username + |process + |server + |service) #IMPLIED + %moreinfo.attrib; + %common.attrib; + %systemitem.role.attrib; + %local.systemitem.attrib; +> +<!--end of systemitem.attlist-->]]> +<!--end of systemitem.module-->]]> + +<!ENTITY % uri.module "INCLUDE"> +<![%uri.module;[ +<!ENTITY % local.uri.attrib ""> +<!ENTITY % uri.role.attrib "%role.attrib;"> + +<!ENTITY % uri.element "INCLUDE"> +<![%uri.element;[ +<!--doc:A Uniform Resource Identifier.--> +<!ELEMENT uri %ho; (%smallcptr.char.mix;)*> +<!--end of uri.element-->]]> + +<!-- Type: Type of URI; no default --> + +<!ENTITY % uri.attlist "INCLUDE"> +<![%uri.attlist;[ +<!ATTLIST uri + type CDATA #IMPLIED + %common.attrib; + %uri.role.attrib; + %local.uri.attrib; +> +<!--end of uri.attlist-->]]> +<!--end of uri.module-->]]> + +<!ENTITY % token.module "INCLUDE"> +<![%token.module;[ +<!ENTITY % local.token.attrib ""> +<!ENTITY % token.role.attrib "%role.attrib;"> + +<!ENTITY % token.element "INCLUDE"> +<![%token.element;[ +<!--doc:A unit of information.--> +<!ELEMENT token %ho; (%smallcptr.char.mix;)*> +<!--end of token.element-->]]> + +<!ENTITY % token.attlist "INCLUDE"> +<![%token.attlist;[ +<!ATTLIST token + %common.attrib; + %token.role.attrib; + %local.token.attrib; +> +<!--end of token.attlist-->]]> +<!--end of token.module-->]]> + +<!ENTITY % type.module "INCLUDE"> +<![%type.module;[ +<!ENTITY % local.type.attrib ""> +<!ENTITY % type.role.attrib "%role.attrib;"> + +<!ENTITY % type.element "INCLUDE"> +<![%type.element;[ +<!--doc:The classification of a value.--> +<!ELEMENT type %ho; (%smallcptr.char.mix;)*> +<!--end of type.element-->]]> + +<!ENTITY % type.attlist "INCLUDE"> +<![%type.attlist;[ +<!ATTLIST type + %common.attrib; + %type.role.attrib; + %local.type.attrib; +> +<!--end of type.attlist-->]]> +<!--end of type.module-->]]> + +<!ENTITY % userinput.module "INCLUDE"> +<![%userinput.module;[ +<!ENTITY % local.userinput.attrib ""> +<!ENTITY % userinput.role.attrib "%role.attrib;"> + +<!ENTITY % userinput.element "INCLUDE"> +<![%userinput.element;[ +<!--doc:Data entered by the user.--> +<!ELEMENT userinput %ho; (%cptr.char.mix;|co)*> +<!--end of userinput.element-->]]> + +<!ENTITY % userinput.attlist "INCLUDE"> +<![%userinput.attlist;[ +<!ATTLIST userinput + %moreinfo.attrib; + %common.attrib; + %userinput.role.attrib; + %local.userinput.attrib; +> +<!--end of userinput.attlist-->]]> +<!--end of userinput.module-->]]> + +<!ENTITY % termdef.module "INCLUDE"> +<![%termdef.module;[ +<!ENTITY % local.termdef.attrib ""> +<!ENTITY % termdef.role.attrib "%role.attrib;"> + +<!ENTITY % termdef.element "INCLUDE"> +<![%termdef.element;[ +<!--doc:An inline definition of a term.--> +<!ELEMENT termdef %ho; (%para.char.mix;)*> +<!--end of termdef.element-->]]> + +<!ENTITY % termdef.attlist "INCLUDE"> +<![%termdef.attlist;[ +<!ATTLIST termdef + %common.attrib; + %termdef.role.attrib; + %local.termdef.attrib; +> +<!--end of termdef.attlist-->]]> +<!--end of termdef.module-->]]> + +<!-- General words and phrases ............................................ --> + +<!ENTITY % abbrev.module "INCLUDE"> +<![%abbrev.module;[ +<!ENTITY % local.abbrev.attrib ""> +<!ENTITY % abbrev.role.attrib "%role.attrib;"> + +<!ENTITY % abbrev.element "INCLUDE"> +<![%abbrev.element;[ +<!--doc:An abbreviation, especially one followed by a period.--> +<!ELEMENT abbrev %ho; (%word.char.mix;)*> +<!--end of abbrev.element-->]]> + +<!ENTITY % abbrev.attlist "INCLUDE"> +<![%abbrev.attlist;[ +<!ATTLIST abbrev + %common.attrib; + %abbrev.role.attrib; + %local.abbrev.attrib; +> +<!--end of abbrev.attlist-->]]> +<!--end of abbrev.module-->]]> + +<!ENTITY % acronym.module "INCLUDE"> +<![%acronym.module;[ +<!ENTITY % local.acronym.attrib ""> +<!ENTITY % acronym.role.attrib "%role.attrib;"> + +<!ENTITY % acronym.element "INCLUDE"> +<![%acronym.element;[ +<!--doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase.--> +<!ELEMENT acronym %ho; (%word.char.mix;)* + %acronym.exclusion;> +<!--end of acronym.element-->]]> + +<!ENTITY % acronym.attlist "INCLUDE"> +<![%acronym.attlist;[ +<!ATTLIST acronym + %common.attrib; + %acronym.role.attrib; + %local.acronym.attrib; +> +<!--end of acronym.attlist-->]]> +<!--end of acronym.module-->]]> + +<!ENTITY % citation.module "INCLUDE"> +<![%citation.module;[ +<!ENTITY % local.citation.attrib ""> +<!ENTITY % citation.role.attrib "%role.attrib;"> + +<!ENTITY % citation.element "INCLUDE"> +<![%citation.element;[ +<!--doc:An inline bibliographic reference to another published work.--> +<!ELEMENT citation %ho; (%para.char.mix;)*> +<!--end of citation.element-->]]> + +<!ENTITY % citation.attlist "INCLUDE"> +<![%citation.attlist;[ +<!ATTLIST citation + %common.attrib; + %citation.role.attrib; + %local.citation.attrib; +> +<!--end of citation.attlist-->]]> +<!--end of citation.module-->]]> + +<!ENTITY % citerefentry.module "INCLUDE"> +<![%citerefentry.module;[ +<!ENTITY % local.citerefentry.attrib ""> +<!ENTITY % citerefentry.role.attrib "%role.attrib;"> + +<!ENTITY % citerefentry.element "INCLUDE"> +<![%citerefentry.element;[ +<!--doc:A citation to a reference page.--> +<!ELEMENT citerefentry %ho; (refentrytitle, manvolnum?)> +<!--end of citerefentry.element-->]]> + +<!ENTITY % citerefentry.attlist "INCLUDE"> +<![%citerefentry.attlist;[ +<!ATTLIST citerefentry + %common.attrib; + %citerefentry.role.attrib; + %local.citerefentry.attrib; +> +<!--end of citerefentry.attlist-->]]> +<!--end of citerefentry.module-->]]> + +<!ENTITY % refentrytitle.module "INCLUDE"> +<![%refentrytitle.module;[ +<!ENTITY % local.refentrytitle.attrib ""> +<!ENTITY % refentrytitle.role.attrib "%role.attrib;"> + +<!ENTITY % refentrytitle.element "INCLUDE"> +<![%refentrytitle.element;[ +<!--doc:The title of a reference page.--> +<!ELEMENT refentrytitle %ho; (%para.char.mix;)*> +<!--end of refentrytitle.element-->]]> + +<!ENTITY % refentrytitle.attlist "INCLUDE"> +<![%refentrytitle.attlist;[ +<!ATTLIST refentrytitle + %common.attrib; + %refentrytitle.role.attrib; + %local.refentrytitle.attrib; +> +<!--end of refentrytitle.attlist-->]]> +<!--end of refentrytitle.module-->]]> + +<!ENTITY % manvolnum.module "INCLUDE"> +<![%manvolnum.module;[ +<!ENTITY % local.manvolnum.attrib ""> +<!ENTITY % namvolnum.role.attrib "%role.attrib;"> + +<!ENTITY % manvolnum.element "INCLUDE"> +<![%manvolnum.element;[ +<!--doc:A reference volume number.--> +<!ELEMENT manvolnum %ho; (%word.char.mix;)*> +<!--end of manvolnum.element-->]]> + +<!ENTITY % manvolnum.attlist "INCLUDE"> +<![%manvolnum.attlist;[ +<!ATTLIST manvolnum + %common.attrib; + %namvolnum.role.attrib; + %local.manvolnum.attrib; +> +<!--end of manvolnum.attlist-->]]> +<!--end of manvolnum.module-->]]> + +<!ENTITY % citetitle.module "INCLUDE"> +<![%citetitle.module;[ +<!ENTITY % local.citetitle.attrib ""> +<!ENTITY % citetitle.role.attrib "%role.attrib;"> + +<!ENTITY % citetitle.element "INCLUDE"> +<![%citetitle.element;[ +<!--doc:The title of a cited work.--> +<!ELEMENT citetitle %ho; (%para.char.mix;)*> +<!--end of citetitle.element-->]]> + +<!-- Pubwork: Genre of published work cited; no default --> + + +<!ENTITY % citetitle.attlist "INCLUDE"> +<![%citetitle.attlist;[ +<!ATTLIST citetitle + pubwork (article + |book + |chapter + |part + |refentry + |section + |journal + |series + |set + |manuscript + |cdrom + |dvd + |wiki + |gopher + |bbs + |emailmessage + |webpage + |newsposting) #IMPLIED + %common.attrib; + %citetitle.role.attrib; + %local.citetitle.attrib; +> +<!--end of citetitle.attlist-->]]> +<!--end of citetitle.module-->]]> + +<!ENTITY % emphasis.module "INCLUDE"> +<![%emphasis.module;[ +<!ENTITY % local.emphasis.attrib ""> +<!ENTITY % emphasis.role.attrib "%role.attrib;"> + +<!ENTITY % emphasis.element "INCLUDE"> +<![%emphasis.element;[ +<!--doc:Emphasized text.--> +<!ELEMENT emphasis %ho; (%para.char.mix;)*> +<!--end of emphasis.element-->]]> + +<!ENTITY % emphasis.attlist "INCLUDE"> +<![%emphasis.attlist;[ +<!ATTLIST emphasis + %common.attrib; + %emphasis.role.attrib; + %local.emphasis.attrib; +> +<!--end of emphasis.attlist-->]]> +<!--end of emphasis.module-->]]> + +<!ENTITY % foreignphrase.module "INCLUDE"> +<![%foreignphrase.module;[ +<!ENTITY % local.foreignphrase.attrib ""> +<!ENTITY % foreignphrase.role.attrib "%role.attrib;"> + +<!ENTITY % foreignphrase.element "INCLUDE"> +<![%foreignphrase.element;[ +<!--doc:A word or phrase in a language other than the primary language of the document.--> +<!ELEMENT foreignphrase %ho; (%para.char.mix;)*> +<!--end of foreignphrase.element-->]]> + +<!ENTITY % foreignphrase.attlist "INCLUDE"> +<![%foreignphrase.attlist;[ +<!ATTLIST foreignphrase + %common.attrib; + %foreignphrase.role.attrib; + %local.foreignphrase.attrib; +> +<!--end of foreignphrase.attlist-->]]> +<!--end of foreignphrase.module-->]]> + +<!ENTITY % glossterm.module "INCLUDE"> +<![%glossterm.module;[ +<!ENTITY % local.glossterm.attrib ""> +<!ENTITY % glossterm.role.attrib "%role.attrib;"> + +<!ENTITY % glossterm.element "INCLUDE"> +<![%glossterm.element;[ +<!--doc:A glossary term.--> +<!ELEMENT glossterm %ho; (%para.char.mix;)* + %glossterm.exclusion;> +<!--end of glossterm.element-->]]> + +<!-- to GlossEntry if Glossterm used in text --> +<!-- BaseForm: Provides the form of GlossTerm to be used + for indexing --> + +<!ENTITY % glossterm.attlist "INCLUDE"> +<![%glossterm.attlist;[ +<!ATTLIST glossterm + baseform CDATA #IMPLIED + %linkend.attrib; + %common.attrib; + %glossterm.role.attrib; + %local.glossterm.attrib; +> +<!--end of glossterm.attlist-->]]> +<!--end of glossterm.module-->]]> + +<!ENTITY % firstterm.module "INCLUDE"> +<![%firstterm.module;[ +<!ENTITY % local.firstterm.attrib ""> +<!ENTITY % firstterm.role.attrib "%role.attrib;"> + +<!ENTITY % firstterm.element "INCLUDE"> +<![%firstterm.element;[ +<!--doc:The first occurrence of a term.--> +<!ELEMENT firstterm %ho; (%para.char.mix;)* + %glossterm.exclusion;> +<!--end of firstterm.element-->]]> + +<!-- to GlossEntry or other explanation --> + + +<!ENTITY % firstterm.attlist "INCLUDE"> +<![%firstterm.attlist;[ +<!ATTLIST firstterm + baseform CDATA #IMPLIED + %linkend.attrib; + %common.attrib; + %firstterm.role.attrib; + %local.firstterm.attrib; +> +<!--end of firstterm.attlist-->]]> +<!--end of firstterm.module-->]]> + +<!ENTITY % phrase.module "INCLUDE"> +<![%phrase.module;[ +<!ENTITY % local.phrase.attrib ""> +<!ENTITY % phrase.role.attrib "%role.attrib;"> + +<!ENTITY % phrase.element "INCLUDE"> +<![%phrase.element;[ +<!--doc:A span of text.--> +<!ELEMENT phrase %ho; (%para.char.mix;)*> +<!--end of phrase.element-->]]> + +<!ENTITY % phrase.attlist "INCLUDE"> +<![%phrase.attlist;[ +<!ATTLIST phrase + %common.attrib; + %phrase.role.attrib; + %local.phrase.attrib; +> +<!--end of phrase.attlist-->]]> +<!--end of phrase.module-->]]> + +<!ENTITY % quote.module "INCLUDE"> +<![%quote.module;[ +<!ENTITY % local.quote.attrib ""> +<!ENTITY % quote.role.attrib "%role.attrib;"> + +<!ENTITY % quote.element "INCLUDE"> +<![%quote.element;[ +<!--doc:An inline quotation.--> +<!ELEMENT quote %ho; (%para.char.mix;)*> +<!--end of quote.element-->]]> + +<!ENTITY % quote.attlist "INCLUDE"> +<![%quote.attlist;[ +<!ATTLIST quote + %common.attrib; + %quote.role.attrib; + %local.quote.attrib; +> +<!--end of quote.attlist-->]]> +<!--end of quote.module-->]]> + +<!ENTITY % ssscript.module "INCLUDE"> +<![%ssscript.module;[ +<!ENTITY % local.ssscript.attrib ""> +<!ENTITY % ssscript.role.attrib "%role.attrib;"> + +<!ENTITY % subscript.element "INCLUDE"> +<![%subscript.element;[ +<!--doc:A subscript (as in H{^2}O, the molecular formula for water).--> +<!ELEMENT subscript %ho; (#PCDATA + | %link.char.class; + | emphasis + | replaceable + | symbol + | inlinegraphic + | inlinemediaobject + | %base.char.class; + | %other.char.class;)* + %ubiq.exclusion;> +<!--end of subscript.element-->]]> + +<!ENTITY % subscript.attlist "INCLUDE"> +<![%subscript.attlist;[ +<!ATTLIST subscript + %common.attrib; + %ssscript.role.attrib; + %local.ssscript.attrib; +> +<!--end of subscript.attlist-->]]> + +<!ENTITY % superscript.element "INCLUDE"> +<![%superscript.element;[ +<!--doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself).--> +<!ELEMENT superscript %ho; (#PCDATA + | %link.char.class; + | emphasis + | replaceable + | symbol + | inlinegraphic + | inlinemediaobject + | %base.char.class; + | %other.char.class;)* + %ubiq.exclusion;> +<!--end of superscript.element-->]]> + +<!ENTITY % superscript.attlist "INCLUDE"> +<![%superscript.attlist;[ +<!ATTLIST superscript + %common.attrib; + %ssscript.role.attrib; + %local.ssscript.attrib; +> +<!--end of superscript.attlist-->]]> +<!--end of ssscript.module-->]]> + +<!ENTITY % trademark.module "INCLUDE"> +<![%trademark.module;[ +<!ENTITY % local.trademark.attrib ""> +<!ENTITY % trademark.role.attrib "%role.attrib;"> + +<!ENTITY % trademark.element "INCLUDE"> +<![%trademark.element;[ +<!--doc:A trademark.--> +<!ELEMENT trademark %ho; (#PCDATA + | %link.char.class; + | %tech.char.class; + | %base.char.class; + | %other.char.class; + | inlinegraphic + | inlinemediaobject + | emphasis)*> +<!--end of trademark.element-->]]> + +<!-- Class: More precisely identifies the item the element names --> + + +<!ENTITY % trademark.attlist "INCLUDE"> +<![%trademark.attlist;[ +<!ATTLIST trademark + class (service + |trade + |registered + |copyright) 'trade' + %common.attrib; + %trademark.role.attrib; + %local.trademark.attrib; +> +<!--end of trademark.attlist-->]]> +<!--end of trademark.module-->]]> + +<!ENTITY % wordasword.module "INCLUDE"> +<![%wordasword.module;[ +<!ENTITY % local.wordasword.attrib ""> +<!ENTITY % wordasword.role.attrib "%role.attrib;"> + +<!ENTITY % wordasword.element "INCLUDE"> +<![%wordasword.element;[ +<!--doc:A word meant specifically as a word and not representing anything else.--> +<!ELEMENT wordasword %ho; (%word.char.mix;)*> +<!--end of wordasword.element-->]]> + +<!ENTITY % wordasword.attlist "INCLUDE"> +<![%wordasword.attlist;[ +<!ATTLIST wordasword + %common.attrib; + %wordasword.role.attrib; + %local.wordasword.attrib; +> +<!--end of wordasword.attlist-->]]> +<!--end of wordasword.module-->]]> + +<!-- Links and cross-references ........................................... --> + +<!ENTITY % link.module "INCLUDE"> +<![%link.module;[ +<!ENTITY % local.link.attrib ""> +<!ENTITY % link.role.attrib "%role.attrib;"> + +<!ENTITY % link.element "INCLUDE"> +<![%link.element;[ +<!--doc:A hypertext link.--> +<!ELEMENT link %ho; (%para.char.mix;)* + %links.exclusion;> +<!--end of link.element-->]]> + +<!-- Endterm: ID of element containing text that is to be + fetched from elsewhere in the document to appear as + the content of this element --> +<!-- to linked-to object --> +<!-- Type: Freely assignable parameter --> + + +<!ENTITY % link.attlist "INCLUDE"> +<![%link.attlist;[ +<!ATTLIST link + endterm IDREF #IMPLIED + xrefstyle CDATA #IMPLIED + type CDATA #IMPLIED + %linkendreq.attrib; + %common.attrib; + %link.role.attrib; + %local.link.attrib; +> +<!--end of link.attlist-->]]> +<!--end of link.module-->]]> + +<!ENTITY % olink.module "INCLUDE"> +<![%olink.module;[ +<!ENTITY % local.olink.attrib ""> +<!ENTITY % olink.role.attrib "%role.attrib;"> + +<!ENTITY % olink.element "INCLUDE"> +<![%olink.element;[ +<!--doc:A link that addresses its target indirectly, through an entity.--> +<!ELEMENT olink %ho; (%para.char.mix;)* + %links.exclusion;> +<!--end of olink.element-->]]> + +<!-- TargetDocEnt: Name of an entity to be the target of the link --> +<!-- LinkMode: ID of a ModeSpec containing instructions for + operating on the entity named by TargetDocEnt --> +<!-- LocalInfo: Information that may be passed to ModeSpec --> +<!-- Type: Freely assignable parameter --> + + +<!ENTITY % olink.attlist "INCLUDE"> +<![%olink.attlist;[ +<!ATTLIST olink + targetdocent ENTITY #IMPLIED + linkmode IDREF #IMPLIED + localinfo CDATA #IMPLIED + type CDATA #IMPLIED + targetdoc CDATA #IMPLIED + targetptr CDATA #IMPLIED + xrefstyle CDATA #IMPLIED + %common.attrib; + %olink.role.attrib; + %local.olink.attrib; +> +<!--end of olink.attlist-->]]> +<!--end of olink.module-->]]> + +<!ENTITY % ulink.module "INCLUDE"> +<![%ulink.module;[ +<!ENTITY % local.ulink.attrib ""> +<!ENTITY % ulink.role.attrib "%role.attrib;"> + +<!ENTITY % ulink.element "INCLUDE"> +<![%ulink.element;[ +<!--doc:A link that addresses its target by means of a URL (Uniform Resource Locator).--> +<!ELEMENT ulink %ho; (%para.char.mix;)* + %links.exclusion;> +<!--end of ulink.element-->]]> + +<!-- URL: uniform resource locator; the target of the ULink --> +<!-- Type: Freely assignable parameter --> + + +<!ENTITY % ulink.attlist "INCLUDE"> +<![%ulink.attlist;[ +<!ATTLIST ulink + url CDATA #REQUIRED + type CDATA #IMPLIED + xrefstyle CDATA #IMPLIED + %common.attrib; + %ulink.role.attrib; + %local.ulink.attrib; +> +<!--end of ulink.attlist-->]]> +<!--end of ulink.module-->]]> + +<!ENTITY % footnoteref.module "INCLUDE"> +<![%footnoteref.module;[ +<!ENTITY % local.footnoteref.attrib ""> +<!ENTITY % footnoteref.role.attrib "%role.attrib;"> + +<!ENTITY % footnoteref.element "INCLUDE"> +<![%footnoteref.element;[ +<!--doc:A cross reference to a footnote (a footnote mark).--> +<!ELEMENT footnoteref %ho; EMPTY> +<!--end of footnoteref.element-->]]> + +<!-- to footnote content supplied elsewhere --> + + +<!ENTITY % footnoteref.attlist "INCLUDE"> +<![%footnoteref.attlist;[ +<!ATTLIST footnoteref + %linkendreq.attrib; %label.attrib; + %common.attrib; + %footnoteref.role.attrib; + %local.footnoteref.attrib; +> +<!--end of footnoteref.attlist-->]]> +<!--end of footnoteref.module-->]]> + +<!ENTITY % xref.module "INCLUDE"> +<![%xref.module;[ +<!ENTITY % local.xref.attrib ""> +<!ENTITY % xref.role.attrib "%role.attrib;"> + +<!ENTITY % xref.element "INCLUDE"> +<![%xref.element;[ +<!--doc:A cross reference to another part of the document.--> +<!ELEMENT xref %ho; EMPTY> +<!--end of xref.element-->]]> + +<!-- Endterm: ID of element containing text that is to be + fetched from elsewhere in the document to appear as + the content of this element --> +<!-- to linked-to object --> + + +<!ENTITY % xref.attlist "INCLUDE"> +<![%xref.attlist;[ +<!ATTLIST xref + endterm IDREF #IMPLIED + xrefstyle CDATA #IMPLIED + %common.attrib; + %linkendreq.attrib; + %xref.role.attrib; + %local.xref.attrib; +> +<!--end of xref.attlist-->]]> +<!--end of xref.module-->]]> + +<!ENTITY % biblioref.module "INCLUDE"> +<![%biblioref.module;[ +<!ENTITY % local.biblioref.attrib ""> +<!ENTITY % biblioref.role.attrib "%role.attrib;"> + +<!ENTITY % biblioref.element "INCLUDE"> +<![%biblioref.element;[ +<!--doc:A cross reference to a bibliographic entry.--> +<!ELEMENT biblioref %ho; EMPTY> +<!--end of biblioref.element-->]]> + +<!ENTITY % biblioref.attlist "INCLUDE"> +<![%biblioref.attlist;[ +<!ATTLIST biblioref + endterm IDREF #IMPLIED + xrefstyle CDATA #IMPLIED + units CDATA #IMPLIED + begin CDATA #IMPLIED + end CDATA #IMPLIED + %common.attrib; + %linkendreq.attrib; + %biblioref.role.attrib; + %local.biblioref.attrib; +> +<!--end of biblioref.attlist-->]]> +<!--end of biblioref.module-->]]> + +<!-- Ubiquitous elements .................................................. --> + +<!ENTITY % anchor.module "INCLUDE"> +<![%anchor.module;[ +<!ENTITY % local.anchor.attrib ""> +<!ENTITY % anchor.role.attrib "%role.attrib;"> + +<!ENTITY % anchor.element "INCLUDE"> +<![%anchor.element;[ +<!--doc:A spot in the document.--> +<!ELEMENT anchor %ho; EMPTY> +<!--end of anchor.element-->]]> + +<!-- required --> +<!-- replaces Lang --> + + +<!ENTITY % anchor.attlist "INCLUDE"> +<![%anchor.attlist;[ +<!ATTLIST anchor + %idreq.attrib; %pagenum.attrib; %remap.attrib; + %xreflabel.attrib; + %revisionflag.attrib; + %effectivity.attrib; + %anchor.role.attrib; + %local.anchor.attrib; +> +<!--end of anchor.attlist-->]]> +<!--end of anchor.module-->]]> + +<!ENTITY % beginpage.module "INCLUDE"> +<![%beginpage.module;[ +<!ENTITY % local.beginpage.attrib ""> +<!ENTITY % beginpage.role.attrib "%role.attrib;"> + +<!ENTITY % beginpage.element "INCLUDE"> +<![%beginpage.element;[ +<!--doc:The location of a page break in a print version of the document.--> +<!ELEMENT beginpage %ho; EMPTY> +<!--end of beginpage.element-->]]> + +<!-- PageNum: Number of page that begins at this point --> + + +<!ENTITY % beginpage.attlist "INCLUDE"> +<![%beginpage.attlist;[ +<!ATTLIST beginpage + %pagenum.attrib; + %common.attrib; + %beginpage.role.attrib; + %local.beginpage.attrib; +> +<!--end of beginpage.attlist-->]]> +<!--end of beginpage.module-->]]> + +<!-- IndexTerms appear in the text flow for generating or linking an + index. --> + +<!ENTITY % indexterm.content.module "INCLUDE"> +<![%indexterm.content.module;[ +<!ENTITY % indexterm.module "INCLUDE"> +<![%indexterm.module;[ +<!ENTITY % local.indexterm.attrib ""> +<!ENTITY % indexterm.role.attrib "%role.attrib;"> + +<!ENTITY % indexterm.element "INCLUDE"> +<![%indexterm.element;[ +<!--doc:A wrapper for terms to be indexed.--> +<!ELEMENT indexterm %ho; (primary?, ((secondary, ((tertiary, (see|seealso+)?) + | see | seealso+)?) | see | seealso+)?) + %ubiq.exclusion;> +<!--end of indexterm.element-->]]> + +<!-- Scope: Indicates which generated indices the IndexTerm + should appear in: Global (whole document set), Local (this + document only), or All (both) --> +<!-- Significance: Whether this IndexTerm is the most pertinent + of its series (Preferred) or not (Normal, the default) --> +<!-- Class: Indicates type of IndexTerm; default is Singular, + or EndOfRange if StartRef is supplied; StartOfRange value + must be supplied explicitly on starts of ranges --> +<!-- StartRef: ID of the IndexTerm that starts the indexing + range ended by this IndexTerm --> +<!-- Zone: IDs of the elements to which the IndexTerm applies, + and indicates that the IndexTerm applies to those entire + elements rather than the point at which the IndexTerm + occurs --> + + +<!ENTITY % indexterm.attlist "INCLUDE"> +<![%indexterm.attlist;[ +<!ATTLIST indexterm + %pagenum.attrib; + scope (all + |global + |local) #IMPLIED + significance (preferred + |normal) "normal" + class (singular + |startofrange + |endofrange) #IMPLIED + startref IDREF #IMPLIED + zone IDREFS #IMPLIED + type CDATA #IMPLIED + %common.attrib; + %indexterm.role.attrib; + %local.indexterm.attrib; +> +<!--end of indexterm.attlist-->]]> +<!--end of indexterm.module-->]]> + +<!ENTITY % primsecter.module "INCLUDE"> +<![%primsecter.module;[ +<!ENTITY % local.primsecter.attrib ""> +<!ENTITY % primsecter.role.attrib "%role.attrib;"> + + +<!ENTITY % primary.element "INCLUDE"> +<![%primary.element;[ +<!--doc:The primary word or phrase under which an index term should be sorted.--> +<!ELEMENT primary %ho; (%ndxterm.char.mix;)*> +<!--end of primary.element-->]]> +<!-- SortAs: Alternate sort string for index sorting, e.g., + "fourteen" for an element containing "14" --> + +<!ENTITY % primary.attlist "INCLUDE"> +<![%primary.attlist;[ +<!ATTLIST primary + sortas CDATA #IMPLIED + %common.attrib; + %primsecter.role.attrib; + %local.primsecter.attrib; +> +<!--end of primary.attlist-->]]> + + +<!ENTITY % secondary.element "INCLUDE"> +<![%secondary.element;[ +<!--doc:A secondary word or phrase in an index term.--> +<!ELEMENT secondary %ho; (%ndxterm.char.mix;)*> +<!--end of secondary.element-->]]> +<!-- SortAs: Alternate sort string for index sorting, e.g., + "fourteen" for an element containing "14" --> + +<!ENTITY % secondary.attlist "INCLUDE"> +<![%secondary.attlist;[ +<!ATTLIST secondary + sortas CDATA #IMPLIED + %common.attrib; + %primsecter.role.attrib; + %local.primsecter.attrib; +> +<!--end of secondary.attlist-->]]> + + +<!ENTITY % tertiary.element "INCLUDE"> +<![%tertiary.element;[ +<!--doc:A tertiary word or phrase in an index term.--> +<!ELEMENT tertiary %ho; (%ndxterm.char.mix;)*> +<!--end of tertiary.element-->]]> +<!-- SortAs: Alternate sort string for index sorting, e.g., + "fourteen" for an element containing "14" --> + +<!ENTITY % tertiary.attlist "INCLUDE"> +<![%tertiary.attlist;[ +<!ATTLIST tertiary + sortas CDATA #IMPLIED + %common.attrib; + %primsecter.role.attrib; + %local.primsecter.attrib; +> +<!--end of tertiary.attlist-->]]> + +<!--end of primsecter.module-->]]> + +<!ENTITY % seeseealso.module "INCLUDE"> +<![%seeseealso.module;[ +<!ENTITY % local.seeseealso.attrib ""> +<!ENTITY % seeseealso.role.attrib "%role.attrib;"> + +<!ENTITY % see.element "INCLUDE"> +<![%see.element;[ +<!--doc:Part of an index term directing the reader instead to another entry in the index.--> +<!ELEMENT see %ho; (%ndxterm.char.mix;)*> +<!--end of see.element-->]]> + +<!ENTITY % see.attlist "INCLUDE"> +<![%see.attlist;[ +<!ATTLIST see + %common.attrib; + %seeseealso.role.attrib; + %local.seeseealso.attrib; +> +<!--end of see.attlist-->]]> + +<!ENTITY % seealso.element "INCLUDE"> +<![%seealso.element;[ +<!--doc:Part of an index term directing the reader also to another entry in the index.--> +<!ELEMENT seealso %ho; (%ndxterm.char.mix;)*> +<!--end of seealso.element-->]]> + +<!ENTITY % seealso.attlist "INCLUDE"> +<![%seealso.attlist;[ +<!ATTLIST seealso + %common.attrib; + %seeseealso.role.attrib; + %local.seeseealso.attrib; +> +<!--end of seealso.attlist-->]]> +<!--end of seeseealso.module-->]]> +<!--end of indexterm.content.module-->]]> + +<!-- End of DocBook XML information pool module V4.5 ...................... --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/docbook.cat b/Utilities/xml/docbook-4.5/docbook.cat new file mode 100644 index 0000000..25ac4df --- /dev/null +++ b/Utilities/xml/docbook-4.5/docbook.cat @@ -0,0 +1,113 @@ + -- ...................................................................... -- + -- Catalog data for DocBook XML V4.5 .................................... -- + -- File docbook.cat ..................................................... -- + + -- Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/. + -- + + -- This is the catalog data file for DocBook XML V4.5. It is provided as + a convenience in building your own catalog files. You need not use + the filenames listed here, and need not use the filename method of + identifying storage objects at all. See the documentation for + detailed information on the files associated with the DocBook DTD. + See SGML Open Technical Resolution 9401 for detailed information + on supplying and using catalog data. + -- + + -- ...................................................................... -- + -- DocBook driver file .................................................. -- + +PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" + "docbookx.dtd" + + -- ...................................................................... -- + -- DocBook modules ...................................................... -- + +PUBLIC "-//OASIS//DTD DocBook CALS Table Model V4.5//EN" + "calstblx.dtd" + +PUBLIC "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" + "htmltblx.mod" + +PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN" + "soextblx.dtd" + +PUBLIC "-//OASIS//ELEMENTS DocBook Information Pool V4.5//EN" + "dbpoolx.mod" + +PUBLIC "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN" + "dbhierx.mod" + +PUBLIC "-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN" + "dbgenent.mod" + +PUBLIC "-//OASIS//ENTITIES DocBook Notations V4.5//EN" + "dbnotnx.mod" + +PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN" + "dbcentx.mod" + + -- ...................................................................... -- + -- ISO entity sets ...................................................... -- + +PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML" + "ent/isodia.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML" + "ent/isonum.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN//XML" + "ent/isopub.ent" + +PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN//XML" + "ent/isotech.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML" + "ent/isolat1.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML" + "ent/isolat2.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN//XML" + "ent/isogrk1.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML" + "ent/isogrk2.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN//XML" + "ent/isogrk3.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML" + "ent/isogrk4.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML" + "ent/isoamsa.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML" + "ent/isoamsb.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML" + "ent/isoamsc.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML" + "ent/isoamsn.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML" + "ent/isoamso.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML" + "ent/isoamsr.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML" + "ent/isobox.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML" + "ent/isocyr1.ent" + +PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML" + "ent/isocyr2.ent" + + -- End of catalog data for DocBook XML V4.5 ............................. -- + -- ...................................................................... -- diff --git a/Utilities/xml/docbook-4.5/docbookx.dtd b/Utilities/xml/docbook-4.5/docbookx.dtd new file mode 100644 index 0000000..8b43c59 --- /dev/null +++ b/Utilities/xml/docbook-4.5/docbookx.dtd @@ -0,0 +1,170 @@ +<!-- ...................................................................... --> +<!-- DocBook XML DTD V4.5 ................................................. --> +<!-- File docbookx.dtd .................................................... --> + +<!-- Copyright 1992-2006 HaL Computer Systems, Inc., + O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software + Corporation, Norman Walsh, Sun Microsystems, Inc., and the + Organization for the Advancement of Structured Information + Standards (OASIS). + + See also http://docbook.org/specs/ + + $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook XML DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This is the driver file for V4.5 of the DocBook DTD. + Please use the following formal public identifier to identify it: + + "-//OASIS//DTD DocBook XML V4.5//EN" + + For example, if your document's top-level element is Book, and + you are using DocBook directly, use the FPI in the DOCTYPE + declaration: + + <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" + [...]> + + Or, if you have a higher-level driver file that customizes DocBook, + use the FPI in the parameter entity declaration: + + <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> + %DocBookDTD; + + See the documentation for detailed information on the parameter + entity and module scheme used in DocBook, customizing DocBook and + planning for interchange, and changes made since the last release + of DocBook. +--> + +<!-- ...................................................................... --> +<!-- Enable SGML features ................................................. --> + +<!ENTITY % sgml.features "IGNORE"> +<![%sgml.features;[ +<!ENTITY % xml.features "IGNORE"> +]]> +<!ENTITY % xml.features "INCLUDE"> + +<![%sgml.features;[ +<![%xml.features;[ + +<!-- ERROR: Exactly one of xml.features and sgml.features must be turned on! --> +<!ENTITY % dbnotn SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt"> +<!ENTITY % dbcent SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt"> +<!ENTITY % dbpool SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt"> +<!ENTITY % dbhier SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt"> +<!ENTITY % dbgenent SYSTEM "http://www.oasis-open.org/docbook/xml/configerror.txt"> + +]]> +]]> + +<![%sgml.features;[ +<!ENTITY % ho "- O"> +<!ENTITY % hh "- -"> +]]> + +<![%xml.features;[ +<!ENTITY % ho ""> +<!ENTITY % hh ""> +]]> + +<!-- ...................................................................... --> +<!-- Notation declarations ................................................ --> + +<!ENTITY % dbnotn.module "INCLUDE"> +<![%dbnotn.module;[ +<!ENTITY % dbnotn PUBLIC +"-//OASIS//ENTITIES DocBook Notations V4.5//EN" +"dbnotnx.mod"> +%dbnotn; +]]> + +<!-- ...................................................................... --> +<!-- ISO character entity sets ............................................ --> + +<!ENTITY % dbcent.module "INCLUDE"> +<![%dbcent.module;[ + +<!ENTITY % dbcent.euro "INCLUDE"> +<![%dbcent.euro;[ +<![%sgml.features;[ +<!ENTITY euro SDATA "[euro ]"><!-- euro sign --> +]]> +<![%xml.features;[ +<!ENTITY euro "€"><!-- euro sign, U+20AC NEW --> +]]> +]]> + +<!ENTITY % dbcent PUBLIC +"-//OASIS//ENTITIES DocBook Character Entities V4.5//EN" +"dbcentx.mod"> +%dbcent; +]]> + +<!-- ...................................................................... --> +<!-- DTD modules .......................................................... --> + +<!-- Information pool .............. --> + +<!ENTITY % dbpool.module "INCLUDE"> +<![ %dbpool.module; [ +<!ENTITY % dbpool PUBLIC +"-//OASIS//ELEMENTS DocBook Information Pool V4.5//EN" +"dbpoolx.mod"> +%dbpool; +]]> + +<!-- Redeclaration placeholder ..... --> + +<!ENTITY % intermod.redecl.module "IGNORE"> +<![%intermod.redecl.module;[ +<!-- Defining rdbmods here makes some buggy XML parsers happy. --> +<!ENTITY % rdbmods ""> +%rdbmods; +<!--end of intermod.redecl.module-->]]> + +<!-- Document hierarchy ............ --> + +<!ENTITY % dbhier.module "INCLUDE"> +<![ %dbhier.module; [ +<!ENTITY % dbhier PUBLIC +"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN" +"dbhierx.mod"> +%dbhier; +]]> + +<!-- ...................................................................... --> +<!-- Other general entities ............................................... --> + +<!ENTITY % dbgenent.module "INCLUDE"> +<![ %dbgenent.module; [ +<!ENTITY % dbgenent PUBLIC +"-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN" +"dbgenent.mod"> +%dbgenent; +]]> + +<!-- End of DocBook XML DTD V4.5 .......................................... --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/ent/README b/Utilities/xml/docbook-4.5/ent/README new file mode 100644 index 0000000..c0da542 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/README @@ -0,0 +1,14 @@ +XML Entity Declarations for Characters + +The character entity sets distributed with DocBook XML are direct +copies of the official entities located at + + http://www.w3.org/2003/entities/ + +They are distributed for historical compatibility and user convenience. +The DocBook Technical Committee no longer attempts to maintain these +definitions and will periodically update them from the W3C site if and +as they are updated there. + +Please direct all questions or comments about the entities to the +individuals or working groups who maintain the official sets. diff --git a/Utilities/xml/docbook-4.5/ent/isoamsa.ent b/Utilities/xml/docbook-4.5/ent/isoamsa.ent new file mode 100644 index 0000000..dac3e62 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isoamsa.ent @@ -0,0 +1,97 @@ + +<!-- + File isoamsa.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isoamsa.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isoamsa.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isoamsa PUBLIC + "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isoamsa.ent" + > + %isoamsa; + +--> + +<!ENTITY cularr "↶" ><!--ANTICLOCKWISE TOP SEMICIRCLE ARROW --> +<!ENTITY curarr "↷" ><!--CLOCKWISE TOP SEMICIRCLE ARROW --> +<!ENTITY dArr "⇓" ><!--DOWNWARDS DOUBLE ARROW --> +<!ENTITY darr2 "⇊" ><!--DOWNWARDS PAIRED ARROWS --> +<!ENTITY dharl "⇃" ><!--DOWNWARDS HARPOON WITH BARB LEFTWARDS --> +<!ENTITY dharr "⇂" ><!--DOWNWARDS HARPOON WITH BARB RIGHTWARDS --> +<!ENTITY dlarr "↙" ><!--SOUTH WEST ARROW --> +<!ENTITY drarr "↘" ><!--SOUTH EAST ARROW --> +<!ENTITY hArr "⇔" ><!--LEFT RIGHT DOUBLE ARROW --> +<!ENTITY harr "↔" ><!--LEFT RIGHT ARROW --> +<!ENTITY harrw "↭" ><!--LEFT RIGHT WAVE ARROW --> +<!ENTITY lAarr "⇚" ><!--LEFTWARDS TRIPLE ARROW --> +<!ENTITY Larr "↞" ><!--LEFTWARDS TWO HEADED ARROW --> +<!ENTITY larr2 "⇇" ><!--LEFTWARDS PAIRED ARROWS --> +<!ENTITY larrhk "↩" ><!--LEFTWARDS ARROW WITH HOOK --> +<!ENTITY larrlp "↫" ><!--LEFTWARDS ARROW WITH LOOP --> +<!ENTITY larrtl "↢" ><!--LEFTWARDS ARROW WITH TAIL --> +<!ENTITY lhard "↽" ><!--LEFTWARDS HARPOON WITH BARB DOWNWARDS --> +<!ENTITY lharu "↼" ><!--LEFTWARDS HARPOON WITH BARB UPWARDS --> +<!ENTITY lrarr2 "⇆" ><!--LEFTWARDS ARROW OVER RIGHTWARDS ARROW --> +<!ENTITY lrhar2 "⇋" ><!--LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON --> +<!ENTITY lsh "↰" ><!--UPWARDS ARROW WITH TIP LEFTWARDS --> +<!ENTITY map "↦" ><!--RIGHTWARDS ARROW FROM BAR --> +<!ENTITY mumap "⊸" ><!--MULTIMAP --> +<!ENTITY nearr "↗" ><!--NORTH EAST ARROW --> +<!ENTITY nhArr "⇎" ><!--LEFT RIGHT DOUBLE ARROW WITH STROKE --> +<!ENTITY nharr "↮" ><!--LEFT RIGHT ARROW WITH STROKE --> +<!ENTITY nlArr "⇍" ><!--LEFTWARDS DOUBLE ARROW WITH STROKE --> +<!ENTITY nlarr "↚" ><!--LEFTWARDS ARROW WITH STROKE --> +<!ENTITY nrArr "⇏" ><!--RIGHTWARDS DOUBLE ARROW WITH STROKE --> +<!ENTITY nrarr "↛" ><!--RIGHTWARDS ARROW WITH STROKE --> +<!ENTITY nwarr "↖" ><!--NORTH WEST ARROW --> +<!ENTITY olarr "↺" ><!--ANTICLOCKWISE OPEN CIRCLE ARROW --> +<!ENTITY orarr "↻" ><!--CLOCKWISE OPEN CIRCLE ARROW --> +<!ENTITY rAarr "⇛" ><!--RIGHTWARDS TRIPLE ARROW --> +<!ENTITY Rarr "↠" ><!--RIGHTWARDS TWO HEADED ARROW --> +<!ENTITY rarr2 "⇉" ><!--RIGHTWARDS PAIRED ARROWS --> +<!ENTITY rarrhk "↪" ><!--RIGHTWARDS ARROW WITH HOOK --> +<!ENTITY rarrlp "↬" ><!--RIGHTWARDS ARROW WITH LOOP --> +<!ENTITY rarrtl "↣" ><!--RIGHTWARDS ARROW WITH TAIL --> +<!ENTITY rarrw "↝" ><!--RIGHTWARDS WAVE ARROW --> +<!ENTITY rhard "⇁" ><!--RIGHTWARDS HARPOON WITH BARB DOWNWARDS --> +<!ENTITY rharu "⇀" ><!--RIGHTWARDS HARPOON WITH BARB UPWARDS --> +<!ENTITY rlarr2 "⇄" ><!--RIGHTWARDS ARROW OVER LEFTWARDS ARROW --> +<!ENTITY rlhar2 "⇌" ><!--RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON --> +<!ENTITY rsh "↱" ><!--UPWARDS ARROW WITH TIP RIGHTWARDS --> +<!ENTITY uArr "⇑" ><!--UPWARDS DOUBLE ARROW --> +<!ENTITY uarr2 "⇈" ><!--UPWARDS PAIRED ARROWS --> +<!ENTITY uharl "↿" ><!--UPWARDS HARPOON WITH BARB LEFTWARDS --> +<!ENTITY uharr "↾" ><!--UPWARDS HARPOON WITH BARB RIGHTWARDS --> +<!ENTITY vArr "⇕" ><!--UP DOWN DOUBLE ARROW --> +<!ENTITY varr "↕" ><!--UP DOWN ARROW --> +<!ENTITY xhArr "⟺" ><!--LONG LEFT RIGHT DOUBLE ARROW --> +<!ENTITY xharr "⟷" ><!--LONG LEFT RIGHT ARROW --> +<!ENTITY xlArr "⟸" ><!--LONG LEFTWARDS DOUBLE ARROW --> +<!ENTITY xrArr "⟹" ><!--LONG RIGHTWARDS DOUBLE ARROW --> diff --git a/Utilities/xml/docbook-4.5/ent/isoamsb.ent b/Utilities/xml/docbook-4.5/ent/isoamsb.ent new file mode 100644 index 0000000..4065b66 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isoamsb.ent @@ -0,0 +1,83 @@ + +<!-- + File isoamsb.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isoamsb.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isoamsb.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isoamsb PUBLIC + "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isoamsb.ent" + > + %isoamsb; + +--> + +<!ENTITY amalg "⨿" ><!--AMALGAMATION OR COPRODUCT --> +<!ENTITY Barwed "⌆" ><!--PERSPECTIVE --> +<!ENTITY barwed "⌅" ><!--PROJECTIVE --> +<!ENTITY Cap "⋒" ><!--DOUBLE INTERSECTION --> +<!ENTITY coprod "∐" ><!--N-ARY COPRODUCT --> +<!ENTITY Cup "⋓" ><!--DOUBLE UNION --> +<!ENTITY cuvee "⋎" ><!--CURLY LOGICAL OR --> +<!ENTITY cuwed "⋏" ><!--CURLY LOGICAL AND --> +<!ENTITY diam "⋄" ><!--DIAMOND OPERATOR --> +<!ENTITY divonx "⋇" ><!--DIVISION TIMES --> +<!ENTITY intcal "⊺" ><!--INTERCALATE --> +<!ENTITY lthree "⋋" ><!--LEFT SEMIDIRECT PRODUCT --> +<!ENTITY ltimes "⋉" ><!--LEFT NORMAL FACTOR SEMIDIRECT PRODUCT --> +<!ENTITY minusb "⊟" ><!--SQUARED MINUS --> +<!ENTITY oast "⊛" ><!--CIRCLED ASTERISK OPERATOR --> +<!ENTITY ocir "⊚" ><!--CIRCLED RING OPERATOR --> +<!ENTITY odash "⊝" ><!--CIRCLED DASH --> +<!ENTITY odot "⊙" ><!--CIRCLED DOT OPERATOR --> +<!ENTITY ominus "⊖" ><!--CIRCLED MINUS --> +<!ENTITY oplus "⊕" ><!--CIRCLED PLUS --> +<!ENTITY osol "⊘" ><!--CIRCLED DIVISION SLASH --> +<!ENTITY otimes "⊗" ><!--CIRCLED TIMES --> +<!ENTITY plusb "⊞" ><!--SQUARED PLUS --> +<!ENTITY plusdo "∔" ><!--DOT PLUS --> +<!ENTITY prod "∏" ><!--N-ARY PRODUCT --> +<!ENTITY rthree "⋌" ><!--RIGHT SEMIDIRECT PRODUCT --> +<!ENTITY rtimes "⋊" ><!--RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT --> +<!ENTITY sdot "⋅" ><!--DOT OPERATOR --> +<!ENTITY sdotb "⊡" ><!--SQUARED DOT OPERATOR --> +<!ENTITY setmn "∖" ><!--SET MINUS --> +<!ENTITY sqcap "⊓" ><!--SQUARE CAP --> +<!ENTITY sqcup "⊔" ><!--SQUARE CUP --> +<!ENTITY ssetmn "∖" ><!--SET MINUS --> +<!ENTITY sstarf "⋆" ><!--STAR OPERATOR --> +<!ENTITY sum "∑" ><!--N-ARY SUMMATION --> +<!ENTITY timesb "⊠" ><!--SQUARED TIMES --> +<!ENTITY top "⊤" ><!--DOWN TACK --> +<!ENTITY uplus "⊎" ><!--MULTISET UNION --> +<!ENTITY wreath "≀" ><!--WREATH PRODUCT --> +<!ENTITY xcirc "◯" ><!--LARGE CIRCLE --> +<!ENTITY xdtri "▽" ><!--WHITE DOWN-POINTING TRIANGLE --> +<!ENTITY xutri "△" ><!--WHITE UP-POINTING TRIANGLE --> diff --git a/Utilities/xml/docbook-4.5/ent/isoamsc.ent b/Utilities/xml/docbook-4.5/ent/isoamsc.ent new file mode 100644 index 0000000..2fad417 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isoamsc.ent @@ -0,0 +1,51 @@ + +<!-- + File isoamsc.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isoamsc.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isoamsc.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isoamsc PUBLIC + "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isoamsc.ent" + > + %isoamsc; + +--> + +<!ENTITY dlcorn "⌞" ><!--BOTTOM LEFT CORNER --> +<!ENTITY drcorn "⌟" ><!--BOTTOM RIGHT CORNER --> +<!ENTITY lceil "⌈" ><!--LEFT CEILING --> +<!ENTITY lfloor "⌊" ><!--LEFT FLOOR --> +<!ENTITY lpargt "⦠" ><!--SPHERICAL ANGLE OPENING LEFT --> +<!ENTITY rceil "⌉" ><!--RIGHT CEILING --> +<!ENTITY rfloor "⌋" ><!--RIGHT FLOOR --> +<!ENTITY rpargt "⦔" ><!--RIGHT ARC GREATER-THAN BRACKET --> +<!ENTITY ulcorn "⌜" ><!--TOP LEFT CORNER --> +<!ENTITY urcorn "⌝" ><!--TOP RIGHT CORNER --> diff --git a/Utilities/xml/docbook-4.5/ent/isoamsn.ent b/Utilities/xml/docbook-4.5/ent/isoamsn.ent new file mode 100644 index 0000000..ddca8d1 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isoamsn.ent @@ -0,0 +1,103 @@ + +<!-- + File isoamsn.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + References to the VARIANT SELECTOR 1 character (︀) + should match the uses listed in Unicode Technical Report 25. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isoamsn.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isoamsn.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isoamsn PUBLIC + "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isoamsn.ent" + > + %isoamsn; + +--> + +<!ENTITY gnap "⪊" ><!--GREATER-THAN AND NOT APPROXIMATE --> +<!ENTITY gnE "≩" ><!--GREATER-THAN BUT NOT EQUAL TO --> +<!ENTITY gne "⪈" ><!--GREATER-THAN AND SINGLE-LINE NOT EQUAL TO --> +<!ENTITY gnsim "⋧" ><!--GREATER-THAN BUT NOT EQUIVALENT TO --> +<!ENTITY gvnE "≩︀" ><!--GREATER-THAN BUT NOT EQUAL TO - with vertical stroke --> +<!ENTITY lnap "⪉" ><!--LESS-THAN AND NOT APPROXIMATE --> +<!ENTITY lnE "≨" ><!--LESS-THAN BUT NOT EQUAL TO --> +<!ENTITY lne "⪇" ><!--LESS-THAN AND SINGLE-LINE NOT EQUAL TO --> +<!ENTITY lnsim "⋦" ><!--LESS-THAN BUT NOT EQUIVALENT TO --> +<!ENTITY lvnE "≨︀" ><!--LESS-THAN BUT NOT EQUAL TO - with vertical stroke --> +<!ENTITY nap "≉" ><!--NOT ALMOST EQUAL TO --> +<!ENTITY ncong "≇" ><!--NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO --> +<!ENTITY nequiv "≢" ><!--NOT IDENTICAL TO --> +<!ENTITY ngE "≧̸" ><!--GREATER-THAN OVER EQUAL TO with slash --> +<!ENTITY nge "≱" ><!--NEITHER GREATER-THAN NOR EQUAL TO --> +<!ENTITY nges "⩾̸" ><!--GREATER-THAN OR SLANTED EQUAL TO with slash --> +<!ENTITY ngt "≯" ><!--NOT GREATER-THAN --> +<!ENTITY nlE "≦̸" ><!--LESS-THAN OVER EQUAL TO with slash --> +<!ENTITY nle "≰" ><!--NEITHER LESS-THAN NOR EQUAL TO --> +<!ENTITY nles "⩽̸" ><!--LESS-THAN OR SLANTED EQUAL TO with slash --> +<!ENTITY nlt "≮" ><!--NOT LESS-THAN --> +<!ENTITY nltri "⋪" ><!--NOT NORMAL SUBGROUP OF --> +<!ENTITY nltrie "⋬" ><!--NOT NORMAL SUBGROUP OF OR EQUAL TO --> +<!ENTITY nmid "∤" ><!--DOES NOT DIVIDE --> +<!ENTITY npar "∦" ><!--NOT PARALLEL TO --> +<!ENTITY npr "⊀" ><!--DOES NOT PRECEDE --> +<!ENTITY npre "⪯̸" ><!--PRECEDES ABOVE SINGLE-LINE EQUALS SIGN with slash --> +<!ENTITY nrtri "⋫" ><!--DOES NOT CONTAIN AS NORMAL SUBGROUP --> +<!ENTITY nrtrie "⋭" ><!--DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL --> +<!ENTITY nsc "⊁" ><!--DOES NOT SUCCEED --> +<!ENTITY nsce "⪰̸" ><!--SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN with slash --> +<!ENTITY nsim "≁" ><!--NOT TILDE --> +<!ENTITY nsime "≄" ><!--NOT ASYMPTOTICALLY EQUAL TO --> +<!ENTITY nsmid "∤" ><!--DOES NOT DIVIDE --> +<!ENTITY nspar "∦" ><!--NOT PARALLEL TO --> +<!ENTITY nsub "⊄" ><!--NOT A SUBSET OF --> +<!ENTITY nsubE "⫅̸" ><!--SUBSET OF ABOVE EQUALS SIGN with slash --> +<!ENTITY nsube "⊈" ><!--NEITHER A SUBSET OF NOR EQUAL TO --> +<!ENTITY nsup "⊅" ><!--NOT A SUPERSET OF --> +<!ENTITY nsupE "⫆̸" ><!--SUPERSET OF ABOVE EQUALS SIGN with slash --> +<!ENTITY nsupe "⊉" ><!--NEITHER A SUPERSET OF NOR EQUAL TO --> +<!ENTITY nVDash "⊯" ><!--NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE --> +<!ENTITY nVdash "⊮" ><!--DOES NOT FORCE --> +<!ENTITY nvDash "⊭" ><!--NOT TRUE --> +<!ENTITY nvdash "⊬" ><!--DOES NOT PROVE --> +<!ENTITY prnap "⪹" ><!--PRECEDES ABOVE NOT ALMOST EQUAL TO --> +<!ENTITY prnE "⪵" ><!--PRECEDES ABOVE NOT EQUAL TO --> +<!ENTITY prnsim "⋨" ><!--PRECEDES BUT NOT EQUIVALENT TO --> +<!ENTITY scnap "⪺" ><!--SUCCEEDS ABOVE NOT ALMOST EQUAL TO --> +<!ENTITY scnE "⪶" ><!--SUCCEEDS ABOVE NOT EQUAL TO --> +<!ENTITY scnsim "⋩" ><!--SUCCEEDS BUT NOT EQUIVALENT TO --> +<!ENTITY subnE "⫋" ><!--SUBSET OF ABOVE NOT EQUAL TO --> +<!ENTITY subne "⊊" ><!--SUBSET OF WITH NOT EQUAL TO --> +<!ENTITY supnE "⫌" ><!--SUPERSET OF ABOVE NOT EQUAL TO --> +<!ENTITY supne "⊋" ><!--SUPERSET OF WITH NOT EQUAL TO --> +<!ENTITY vsubnE "⫋︀" ><!--SUBSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members --> +<!ENTITY vsubne "⊊︀" ><!--SUBSET OF WITH NOT EQUAL TO - variant with stroke through bottom members --> +<!ENTITY vsupnE "⫌︀" ><!--SUPERSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members --> +<!ENTITY vsupne "⊋︀" ><!--SUPERSET OF WITH NOT EQUAL TO - variant with stroke through bottom members --> diff --git a/Utilities/xml/docbook-4.5/ent/isoamso.ent b/Utilities/xml/docbook-4.5/ent/isoamso.ent new file mode 100644 index 0000000..278e4b4 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isoamso.ent @@ -0,0 +1,59 @@ + +<!-- + File isoamso.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isoamso.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isoamso.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isoamso PUBLIC + "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isoamso.ent" + > + %isoamso; + +--> + +<!ENTITY ang "∠" ><!--ANGLE --> +<!ENTITY angmsd "∡" ><!--MEASURED ANGLE --> +<!ENTITY beth "ℶ" ><!--BET SYMBOL --> +<!ENTITY bprime "‵" ><!--REVERSED PRIME --> +<!ENTITY comp "∁" ><!--COMPLEMENT --> +<!ENTITY daleth "ℸ" ><!--DALET SYMBOL --> +<!ENTITY ell "ℓ" ><!--SCRIPT SMALL L --> +<!ENTITY empty "∅" ><!--EMPTY SET --> +<!ENTITY gimel "ℷ" ><!--GIMEL SYMBOL --> +<!ENTITY inodot "ı" ><!--LATIN SMALL LETTER DOTLESS I --> +<!ENTITY jnodot "j" ><!--LATIN SMALL LETTER J --> +<!ENTITY nexist "∄" ><!--THERE DOES NOT EXIST --> +<!ENTITY oS "Ⓢ" ><!--CIRCLED LATIN CAPITAL LETTER S --> +<!ENTITY planck "ℏ" ><!--PLANCK CONSTANT OVER TWO PI --> +<!ENTITY real "ℜ" ><!--BLACK-LETTER CAPITAL R --> +<!ENTITY sbsol "﹨" ><!--SMALL REVERSE SOLIDUS --> +<!ENTITY vprime "′" ><!--PRIME --> +<!ENTITY weierp "℘" ><!--SCRIPT CAPITAL P --> diff --git a/Utilities/xml/docbook-4.5/ent/isoamsr.ent b/Utilities/xml/docbook-4.5/ent/isoamsr.ent new file mode 100644 index 0000000..18e64bf --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isoamsr.ent @@ -0,0 +1,125 @@ + +<!-- + File isoamsr.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isoamsr.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isoamsr.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isoamsr PUBLIC + "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isoamsr.ent" + > + %isoamsr; + +--> + +<!ENTITY ape "≊" ><!--ALMOST EQUAL OR EQUAL TO --> +<!ENTITY asymp "≈" ><!--ALMOST EQUAL TO --> +<!ENTITY bcong "≌" ><!--ALL EQUAL TO --> +<!ENTITY bepsi "϶" ><!--GREEK REVERSED LUNATE EPSILON SYMBOL --> +<!ENTITY bowtie "⋈" ><!--BOWTIE --> +<!ENTITY bsim "∽" ><!--REVERSED TILDE --> +<!ENTITY bsime "⋍" ><!--REVERSED TILDE EQUALS --> +<!ENTITY bump "≎" ><!--GEOMETRICALLY EQUIVALENT TO --> +<!ENTITY bumpe "≏" ><!--DIFFERENCE BETWEEN --> +<!ENTITY cire "≗" ><!--RING EQUAL TO --> +<!ENTITY colone "≔" ><!--COLON EQUALS --> +<!ENTITY cuepr "⋞" ><!--EQUAL TO OR PRECEDES --> +<!ENTITY cuesc "⋟" ><!--EQUAL TO OR SUCCEEDS --> +<!ENTITY cupre "≼" ><!--PRECEDES OR EQUAL TO --> +<!ENTITY dashv "⊣" ><!--LEFT TACK --> +<!ENTITY ecir "≖" ><!--RING IN EQUAL TO --> +<!ENTITY ecolon "≕" ><!--EQUALS COLON --> +<!ENTITY eDot "≑" ><!--GEOMETRICALLY EQUAL TO --> +<!ENTITY efDot "≒" ><!--APPROXIMATELY EQUAL TO OR THE IMAGE OF --> +<!ENTITY egs "⪖" ><!--SLANTED EQUAL TO OR GREATER-THAN --> +<!ENTITY els "⪕" ><!--SLANTED EQUAL TO OR LESS-THAN --> +<!ENTITY erDot "≓" ><!--IMAGE OF OR APPROXIMATELY EQUAL TO --> +<!ENTITY esdot "≐" ><!--APPROACHES THE LIMIT --> +<!ENTITY fork "⋔" ><!--PITCHFORK --> +<!ENTITY frown "⌢" ><!--FROWN --> +<!ENTITY gap "⪆" ><!--GREATER-THAN OR APPROXIMATE --> +<!ENTITY gE "≧" ><!--GREATER-THAN OVER EQUAL TO --> +<!ENTITY gEl "⪌" ><!--GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN --> +<!ENTITY gel "⋛" ><!--GREATER-THAN EQUAL TO OR LESS-THAN --> +<!ENTITY ges "⩾" ><!--GREATER-THAN OR SLANTED EQUAL TO --> +<!ENTITY Gg "⋙" ><!--VERY MUCH GREATER-THAN --> +<!ENTITY gl "≷" ><!--GREATER-THAN OR LESS-THAN --> +<!ENTITY gsdot "⋗" ><!--GREATER-THAN WITH DOT --> +<!ENTITY gsim "≳" ><!--GREATER-THAN OR EQUIVALENT TO --> +<!ENTITY Gt "≫" ><!--MUCH GREATER-THAN --> +<!ENTITY lap "⪅" ><!--LESS-THAN OR APPROXIMATE --> +<!ENTITY ldot "⋖" ><!--LESS-THAN WITH DOT --> +<!ENTITY lE "≦" ><!--LESS-THAN OVER EQUAL TO --> +<!ENTITY lEg "⪋" ><!--LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN --> +<!ENTITY leg "⋚" ><!--LESS-THAN EQUAL TO OR GREATER-THAN --> +<!ENTITY les "⩽" ><!--LESS-THAN OR SLANTED EQUAL TO --> +<!ENTITY lg "≶" ><!--LESS-THAN OR GREATER-THAN --> +<!ENTITY Ll "⋘" ><!--VERY MUCH LESS-THAN --> +<!ENTITY lsim "≲" ><!--LESS-THAN OR EQUIVALENT TO --> +<!ENTITY Lt "≪" ><!--MUCH LESS-THAN --> +<!ENTITY ltrie "⊴" ><!--NORMAL SUBGROUP OF OR EQUAL TO --> +<!ENTITY mid "∣" ><!--DIVIDES --> +<!ENTITY models "⊧" ><!--MODELS --> +<!ENTITY pr "≺" ><!--PRECEDES --> +<!ENTITY prap "⪷" ><!--PRECEDES ABOVE ALMOST EQUAL TO --> +<!ENTITY pre "⪯" ><!--PRECEDES ABOVE SINGLE-LINE EQUALS SIGN --> +<!ENTITY prsim "≾" ><!--PRECEDES OR EQUIVALENT TO --> +<!ENTITY rtrie "⊵" ><!--CONTAINS AS NORMAL SUBGROUP OR EQUAL TO --> +<!ENTITY samalg "∐" ><!--N-ARY COPRODUCT --> +<!ENTITY sc "≻" ><!--SUCCEEDS --> +<!ENTITY scap "⪸" ><!--SUCCEEDS ABOVE ALMOST EQUAL TO --> +<!ENTITY sccue "≽" ><!--SUCCEEDS OR EQUAL TO --> +<!ENTITY sce "⪰" ><!--SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN --> +<!ENTITY scsim "≿" ><!--SUCCEEDS OR EQUIVALENT TO --> +<!ENTITY sfrown "⌢" ><!--FROWN --> +<!ENTITY smid "∣" ><!--DIVIDES --> +<!ENTITY smile "⌣" ><!--SMILE --> +<!ENTITY spar "∥" ><!--PARALLEL TO --> +<!ENTITY sqsub "⊏" ><!--SQUARE IMAGE OF --> +<!ENTITY sqsube "⊑" ><!--SQUARE IMAGE OF OR EQUAL TO --> +<!ENTITY sqsup "⊐" ><!--SQUARE ORIGINAL OF --> +<!ENTITY sqsupe "⊒" ><!--SQUARE ORIGINAL OF OR EQUAL TO --> +<!ENTITY ssmile "⌣" ><!--SMILE --> +<!ENTITY Sub "⋐" ><!--DOUBLE SUBSET --> +<!ENTITY subE "⫅" ><!--SUBSET OF ABOVE EQUALS SIGN --> +<!ENTITY Sup "⋑" ><!--DOUBLE SUPERSET --> +<!ENTITY supE "⫆" ><!--SUPERSET OF ABOVE EQUALS SIGN --> +<!ENTITY thkap "≈" ><!--ALMOST EQUAL TO --> +<!ENTITY thksim "∼" ><!--TILDE OPERATOR --> +<!ENTITY trie "≜" ><!--DELTA EQUAL TO --> +<!ENTITY twixt "≬" ><!--BETWEEN --> +<!ENTITY Vdash "⊩" ><!--FORCES --> +<!ENTITY vDash "⊨" ><!--TRUE --> +<!ENTITY vdash "⊢" ><!--RIGHT TACK --> +<!ENTITY veebar "⊻" ><!--XOR --> +<!ENTITY vltri "⊲" ><!--NORMAL SUBGROUP OF --> +<!ENTITY vprop "∝" ><!--PROPORTIONAL TO --> +<!ENTITY vrtri "⊳" ><!--CONTAINS AS NORMAL SUBGROUP --> +<!ENTITY Vvdash "⊪" ><!--TRIPLE VERTICAL BAR RIGHT TURNSTILE --> diff --git a/Utilities/xml/docbook-4.5/ent/isobox.ent b/Utilities/xml/docbook-4.5/ent/isobox.ent new file mode 100644 index 0000000..9ae27d4 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isobox.ent @@ -0,0 +1,81 @@ + +<!-- + File isobox.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isobox.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isobox.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isobox PUBLIC + "ISO 8879:1986//ENTITIES Box and Line Drawing//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isobox.ent" + > + %isobox; + +--> + +<!ENTITY boxDL "╗" ><!--BOX DRAWINGS DOUBLE DOWN AND LEFT --> +<!ENTITY boxDl "╖" ><!--BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE --> +<!ENTITY boxdL "╕" ><!--BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE --> +<!ENTITY boxdl "┐" ><!--BOX DRAWINGS LIGHT DOWN AND LEFT --> +<!ENTITY boxDR "╔" ><!--BOX DRAWINGS DOUBLE DOWN AND RIGHT --> +<!ENTITY boxDr "╓" ><!--BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE --> +<!ENTITY boxdR "╒" ><!--BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE --> +<!ENTITY boxdr "┌" ><!--BOX DRAWINGS LIGHT DOWN AND RIGHT --> +<!ENTITY boxH "═" ><!--BOX DRAWINGS DOUBLE HORIZONTAL --> +<!ENTITY boxh "─" ><!--BOX DRAWINGS LIGHT HORIZONTAL --> +<!ENTITY boxHD "╦" ><!--BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL --> +<!ENTITY boxHd "╤" ><!--BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE --> +<!ENTITY boxhD "╥" ><!--BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE --> +<!ENTITY boxhd "┬" ><!--BOX DRAWINGS LIGHT DOWN AND HORIZONTAL --> +<!ENTITY boxHU "╩" ><!--BOX DRAWINGS DOUBLE UP AND HORIZONTAL --> +<!ENTITY boxHu "╧" ><!--BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE --> +<!ENTITY boxhU "╨" ><!--BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE --> +<!ENTITY boxhu "┴" ><!--BOX DRAWINGS LIGHT UP AND HORIZONTAL --> +<!ENTITY boxUL "╝" ><!--BOX DRAWINGS DOUBLE UP AND LEFT --> +<!ENTITY boxUl "╜" ><!--BOX DRAWINGS UP DOUBLE AND LEFT SINGLE --> +<!ENTITY boxuL "╛" ><!--BOX DRAWINGS UP SINGLE AND LEFT DOUBLE --> +<!ENTITY boxul "┘" ><!--BOX DRAWINGS LIGHT UP AND LEFT --> +<!ENTITY boxUR "╚" ><!--BOX DRAWINGS DOUBLE UP AND RIGHT --> +<!ENTITY boxUr "╙" ><!--BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE --> +<!ENTITY boxuR "╘" ><!--BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE --> +<!ENTITY boxur "└" ><!--BOX DRAWINGS LIGHT UP AND RIGHT --> +<!ENTITY boxV "║" ><!--BOX DRAWINGS DOUBLE VERTICAL --> +<!ENTITY boxv "│" ><!--BOX DRAWINGS LIGHT VERTICAL --> +<!ENTITY boxVH "╬" ><!--BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL --> +<!ENTITY boxVh "╫" ><!--BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE --> +<!ENTITY boxvH "╪" ><!--BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE --> +<!ENTITY boxvh "┼" ><!--BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL --> +<!ENTITY boxVL "╣" ><!--BOX DRAWINGS DOUBLE VERTICAL AND LEFT --> +<!ENTITY boxVl "╢" ><!--BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE --> +<!ENTITY boxvL "╡" ><!--BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE --> +<!ENTITY boxvl "┤" ><!--BOX DRAWINGS LIGHT VERTICAL AND LEFT --> +<!ENTITY boxVR "╠" ><!--BOX DRAWINGS DOUBLE VERTICAL AND RIGHT --> +<!ENTITY boxVr "╟" ><!--BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE --> +<!ENTITY boxvR "╞" ><!--BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE --> +<!ENTITY boxvr "├" ><!--BOX DRAWINGS LIGHT VERTICAL AND RIGHT --> diff --git a/Utilities/xml/docbook-4.5/ent/isocyr1.ent b/Utilities/xml/docbook-4.5/ent/isocyr1.ent new file mode 100644 index 0000000..364b6d8 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isocyr1.ent @@ -0,0 +1,108 @@ + +<!-- + File isocyr1.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isocyr1.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isocyr1.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isocyr1 PUBLIC + "ISO 8879:1986//ENTITIES Russian Cyrillic//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isocyr1.ent" + > + %isocyr1; + +--> + +<!ENTITY Acy "А" ><!--CYRILLIC CAPITAL LETTER A --> +<!ENTITY acy "а" ><!--CYRILLIC SMALL LETTER A --> +<!ENTITY Bcy "Б" ><!--CYRILLIC CAPITAL LETTER BE --> +<!ENTITY bcy "б" ><!--CYRILLIC SMALL LETTER BE --> +<!ENTITY CHcy "Ч" ><!--CYRILLIC CAPITAL LETTER CHE --> +<!ENTITY chcy "ч" ><!--CYRILLIC SMALL LETTER CHE --> +<!ENTITY Dcy "Д" ><!--CYRILLIC CAPITAL LETTER DE --> +<!ENTITY dcy "д" ><!--CYRILLIC SMALL LETTER DE --> +<!ENTITY Ecy "Э" ><!--CYRILLIC CAPITAL LETTER E --> +<!ENTITY ecy "э" ><!--CYRILLIC SMALL LETTER E --> +<!ENTITY Fcy "Ф" ><!--CYRILLIC CAPITAL LETTER EF --> +<!ENTITY fcy "ф" ><!--CYRILLIC SMALL LETTER EF --> +<!ENTITY Gcy "Г" ><!--CYRILLIC CAPITAL LETTER GHE --> +<!ENTITY gcy "г" ><!--CYRILLIC SMALL LETTER GHE --> +<!ENTITY HARDcy "Ъ" ><!--CYRILLIC CAPITAL LETTER HARD SIGN --> +<!ENTITY hardcy "ъ" ><!--CYRILLIC SMALL LETTER HARD SIGN --> +<!ENTITY Icy "И" ><!--CYRILLIC CAPITAL LETTER I --> +<!ENTITY icy "и" ><!--CYRILLIC SMALL LETTER I --> +<!ENTITY IEcy "Е" ><!--CYRILLIC CAPITAL LETTER IE --> +<!ENTITY iecy "е" ><!--CYRILLIC SMALL LETTER IE --> +<!ENTITY IOcy "Ё" ><!--CYRILLIC CAPITAL LETTER IO --> +<!ENTITY iocy "ё" ><!--CYRILLIC SMALL LETTER IO --> +<!ENTITY Jcy "Й" ><!--CYRILLIC CAPITAL LETTER SHORT I --> +<!ENTITY jcy "й" ><!--CYRILLIC SMALL LETTER SHORT I --> +<!ENTITY Kcy "К" ><!--CYRILLIC CAPITAL LETTER KA --> +<!ENTITY kcy "к" ><!--CYRILLIC SMALL LETTER KA --> +<!ENTITY KHcy "Х" ><!--CYRILLIC CAPITAL LETTER HA --> +<!ENTITY khcy "х" ><!--CYRILLIC SMALL LETTER HA --> +<!ENTITY Lcy "Л" ><!--CYRILLIC CAPITAL LETTER EL --> +<!ENTITY lcy "л" ><!--CYRILLIC SMALL LETTER EL --> +<!ENTITY Mcy "М" ><!--CYRILLIC CAPITAL LETTER EM --> +<!ENTITY mcy "м" ><!--CYRILLIC SMALL LETTER EM --> +<!ENTITY Ncy "Н" ><!--CYRILLIC CAPITAL LETTER EN --> +<!ENTITY ncy "н" ><!--CYRILLIC SMALL LETTER EN --> +<!ENTITY numero "№" ><!--NUMERO SIGN --> +<!ENTITY Ocy "О" ><!--CYRILLIC CAPITAL LETTER O --> +<!ENTITY ocy "о" ><!--CYRILLIC SMALL LETTER O --> +<!ENTITY Pcy "П" ><!--CYRILLIC CAPITAL LETTER PE --> +<!ENTITY pcy "п" ><!--CYRILLIC SMALL LETTER PE --> +<!ENTITY Rcy "Р" ><!--CYRILLIC CAPITAL LETTER ER --> +<!ENTITY rcy "р" ><!--CYRILLIC SMALL LETTER ER --> +<!ENTITY Scy "С" ><!--CYRILLIC CAPITAL LETTER ES --> +<!ENTITY scy "с" ><!--CYRILLIC SMALL LETTER ES --> +<!ENTITY SHCHcy "Щ" ><!--CYRILLIC CAPITAL LETTER SHCHA --> +<!ENTITY shchcy "щ" ><!--CYRILLIC SMALL LETTER SHCHA --> +<!ENTITY SHcy "Ш" ><!--CYRILLIC CAPITAL LETTER SHA --> +<!ENTITY shcy "ш" ><!--CYRILLIC SMALL LETTER SHA --> +<!ENTITY SOFTcy "Ь" ><!--CYRILLIC CAPITAL LETTER SOFT SIGN --> +<!ENTITY softcy "ь" ><!--CYRILLIC SMALL LETTER SOFT SIGN --> +<!ENTITY Tcy "Т" ><!--CYRILLIC CAPITAL LETTER TE --> +<!ENTITY tcy "т" ><!--CYRILLIC SMALL LETTER TE --> +<!ENTITY TScy "Ц" ><!--CYRILLIC CAPITAL LETTER TSE --> +<!ENTITY tscy "ц" ><!--CYRILLIC SMALL LETTER TSE --> +<!ENTITY Ucy "У" ><!--CYRILLIC CAPITAL LETTER U --> +<!ENTITY ucy "у" ><!--CYRILLIC SMALL LETTER U --> +<!ENTITY Vcy "В" ><!--CYRILLIC CAPITAL LETTER VE --> +<!ENTITY vcy "в" ><!--CYRILLIC SMALL LETTER VE --> +<!ENTITY YAcy "Я" ><!--CYRILLIC CAPITAL LETTER YA --> +<!ENTITY yacy "я" ><!--CYRILLIC SMALL LETTER YA --> +<!ENTITY Ycy "Ы" ><!--CYRILLIC CAPITAL LETTER YERU --> +<!ENTITY ycy "ы" ><!--CYRILLIC SMALL LETTER YERU --> +<!ENTITY YUcy "Ю" ><!--CYRILLIC CAPITAL LETTER YU --> +<!ENTITY yucy "ю" ><!--CYRILLIC SMALL LETTER YU --> +<!ENTITY Zcy "З" ><!--CYRILLIC CAPITAL LETTER ZE --> +<!ENTITY zcy "з" ><!--CYRILLIC SMALL LETTER ZE --> +<!ENTITY ZHcy "Ж" ><!--CYRILLIC CAPITAL LETTER ZHE --> +<!ENTITY zhcy "ж" ><!--CYRILLIC SMALL LETTER ZHE --> diff --git a/Utilities/xml/docbook-4.5/ent/isocyr2.ent b/Utilities/xml/docbook-4.5/ent/isocyr2.ent new file mode 100644 index 0000000..6432d74 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isocyr2.ent @@ -0,0 +1,67 @@ + +<!-- + File isocyr2.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isocyr2.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isocyr2.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isocyr2 PUBLIC + "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isocyr2.ent" + > + %isocyr2; + +--> + +<!ENTITY DJcy "Ђ" ><!--CYRILLIC CAPITAL LETTER DJE --> +<!ENTITY djcy "ђ" ><!--CYRILLIC SMALL LETTER DJE --> +<!ENTITY DScy "Ѕ" ><!--CYRILLIC CAPITAL LETTER DZE --> +<!ENTITY dscy "ѕ" ><!--CYRILLIC SMALL LETTER DZE --> +<!ENTITY DZcy "Џ" ><!--CYRILLIC CAPITAL LETTER DZHE --> +<!ENTITY dzcy "џ" ><!--CYRILLIC SMALL LETTER DZHE --> +<!ENTITY GJcy "Ѓ" ><!--CYRILLIC CAPITAL LETTER GJE --> +<!ENTITY gjcy "ѓ" ><!--CYRILLIC SMALL LETTER GJE --> +<!ENTITY Iukcy "І" ><!--CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I --> +<!ENTITY iukcy "і" ><!--CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I --> +<!ENTITY Jsercy "Ј" ><!--CYRILLIC CAPITAL LETTER JE --> +<!ENTITY jsercy "ј" ><!--CYRILLIC SMALL LETTER JE --> +<!ENTITY Jukcy "Є" ><!--CYRILLIC CAPITAL LETTER UKRAINIAN IE --> +<!ENTITY jukcy "є" ><!--CYRILLIC SMALL LETTER UKRAINIAN IE --> +<!ENTITY KJcy "Ќ" ><!--CYRILLIC CAPITAL LETTER KJE --> +<!ENTITY kjcy "ќ" ><!--CYRILLIC SMALL LETTER KJE --> +<!ENTITY LJcy "Љ" ><!--CYRILLIC CAPITAL LETTER LJE --> +<!ENTITY ljcy "љ" ><!--CYRILLIC SMALL LETTER LJE --> +<!ENTITY NJcy "Њ" ><!--CYRILLIC CAPITAL LETTER NJE --> +<!ENTITY njcy "њ" ><!--CYRILLIC SMALL LETTER NJE --> +<!ENTITY TSHcy "Ћ" ><!--CYRILLIC CAPITAL LETTER TSHE --> +<!ENTITY tshcy "ћ" ><!--CYRILLIC SMALL LETTER TSHE --> +<!ENTITY Ubrcy "Ў" ><!--CYRILLIC CAPITAL LETTER SHORT U --> +<!ENTITY ubrcy "ў" ><!--CYRILLIC SMALL LETTER SHORT U --> +<!ENTITY YIcy "Ї" ><!--CYRILLIC CAPITAL LETTER YI --> +<!ENTITY yicy "ї" ><!--CYRILLIC SMALL LETTER YI --> diff --git a/Utilities/xml/docbook-4.5/ent/isodia.ent b/Utilities/xml/docbook-4.5/ent/isodia.ent new file mode 100644 index 0000000..b49c309 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isodia.ent @@ -0,0 +1,55 @@ + +<!-- + File isodia.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isodia.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isodia.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isodia PUBLIC + "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isodia.ent" + > + %isodia; + +--> + +<!ENTITY acute "´" ><!--ACUTE ACCENT --> +<!ENTITY breve "˘" ><!--BREVE --> +<!ENTITY caron "ˇ" ><!--CARON --> +<!ENTITY cedil "¸" ><!--CEDILLA --> +<!ENTITY circ "ˆ" ><!--MODIFIER LETTER CIRCUMFLEX ACCENT --> +<!ENTITY dblac "˝" ><!--DOUBLE ACUTE ACCENT --> +<!ENTITY die "¨" ><!--DIAERESIS --> +<!ENTITY dot "˙" ><!--DOT ABOVE --> +<!ENTITY grave "`" ><!--GRAVE ACCENT --> +<!ENTITY macr "¯" ><!--MACRON --> +<!ENTITY ogon "˛" ><!--OGONEK --> +<!ENTITY ring "˚" ><!--RING ABOVE --> +<!ENTITY tilde "˜" ><!--SMALL TILDE --> +<!ENTITY uml "¨" ><!--DIAERESIS --> diff --git a/Utilities/xml/docbook-4.5/ent/isogrk1.ent b/Utilities/xml/docbook-4.5/ent/isogrk1.ent new file mode 100644 index 0000000..7826f81 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isogrk1.ent @@ -0,0 +1,90 @@ + +<!-- + File isogrk1.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isogrk1.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Greek Letters//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isogrk1.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isogrk1 PUBLIC + "ISO 8879:1986//ENTITIES Greek Letters//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isogrk1.ent" + > + %isogrk1; + +--> + +<!ENTITY Agr "Α" ><!--GREEK CAPITAL LETTER ALPHA --> +<!ENTITY agr "α" ><!--GREEK SMALL LETTER ALPHA --> +<!ENTITY Bgr "Β" ><!--GREEK CAPITAL LETTER BETA --> +<!ENTITY bgr "β" ><!--GREEK SMALL LETTER BETA --> +<!ENTITY Dgr "Δ" ><!--GREEK CAPITAL LETTER DELTA --> +<!ENTITY dgr "δ" ><!--GREEK SMALL LETTER DELTA --> +<!ENTITY EEgr "Η" ><!--GREEK CAPITAL LETTER ETA --> +<!ENTITY eegr "η" ><!--GREEK SMALL LETTER ETA --> +<!ENTITY Egr "Ε" ><!--GREEK CAPITAL LETTER EPSILON --> +<!ENTITY egr "ε" ><!--GREEK SMALL LETTER EPSILON --> +<!ENTITY Ggr "Γ" ><!--GREEK CAPITAL LETTER GAMMA --> +<!ENTITY ggr "γ" ><!--GREEK SMALL LETTER GAMMA --> +<!ENTITY Igr "Ι" ><!--GREEK CAPITAL LETTER IOTA --> +<!ENTITY igr "ι" ><!--GREEK SMALL LETTER IOTA --> +<!ENTITY Kgr "Κ" ><!--GREEK CAPITAL LETTER KAPPA --> +<!ENTITY kgr "κ" ><!--GREEK SMALL LETTER KAPPA --> +<!ENTITY KHgr "Χ" ><!--GREEK CAPITAL LETTER CHI --> +<!ENTITY khgr "χ" ><!--GREEK SMALL LETTER CHI --> +<!ENTITY Lgr "Λ" ><!--GREEK CAPITAL LETTER LAMDA --> +<!ENTITY lgr "λ" ><!--GREEK SMALL LETTER LAMDA --> +<!ENTITY Mgr "Μ" ><!--GREEK CAPITAL LETTER MU --> +<!ENTITY mgr "μ" ><!--GREEK SMALL LETTER MU --> +<!ENTITY Ngr "Ν" ><!--GREEK CAPITAL LETTER NU --> +<!ENTITY ngr "ν" ><!--GREEK SMALL LETTER NU --> +<!ENTITY Ogr "Ο" ><!--GREEK CAPITAL LETTER OMICRON --> +<!ENTITY ogr "ο" ><!--GREEK SMALL LETTER OMICRON --> +<!ENTITY OHgr "Ω" ><!--GREEK CAPITAL LETTER OMEGA --> +<!ENTITY ohgr "ω" ><!--GREEK SMALL LETTER OMEGA --> +<!ENTITY Pgr "Π" ><!--GREEK CAPITAL LETTER PI --> +<!ENTITY pgr "π" ><!--GREEK SMALL LETTER PI --> +<!ENTITY PHgr "Φ" ><!--GREEK CAPITAL LETTER PHI --> +<!ENTITY phgr "φ" ><!--GREEK SMALL LETTER PHI --> +<!ENTITY PSgr "Ψ" ><!--GREEK CAPITAL LETTER PSI --> +<!ENTITY psgr "ψ" ><!--GREEK SMALL LETTER PSI --> +<!ENTITY Rgr "Ρ" ><!--GREEK CAPITAL LETTER RHO --> +<!ENTITY rgr "ρ" ><!--GREEK SMALL LETTER RHO --> +<!ENTITY sfgr "ς" ><!--GREEK SMALL LETTER FINAL SIGMA --> +<!ENTITY Sgr "Σ" ><!--GREEK CAPITAL LETTER SIGMA --> +<!ENTITY sgr "σ" ><!--GREEK SMALL LETTER SIGMA --> +<!ENTITY Tgr "Τ" ><!--GREEK CAPITAL LETTER TAU --> +<!ENTITY tgr "τ" ><!--GREEK SMALL LETTER TAU --> +<!ENTITY THgr "Θ" ><!--GREEK CAPITAL LETTER THETA --> +<!ENTITY thgr "θ" ><!--GREEK SMALL LETTER THETA --> +<!ENTITY Ugr "Υ" ><!--GREEK CAPITAL LETTER UPSILON --> +<!ENTITY ugr "υ" ><!--GREEK SMALL LETTER UPSILON --> +<!ENTITY Xgr "Ξ" ><!--GREEK CAPITAL LETTER XI --> +<!ENTITY xgr "ξ" ><!--GREEK SMALL LETTER XI --> +<!ENTITY Zgr "Ζ" ><!--GREEK CAPITAL LETTER ZETA --> +<!ENTITY zgr "ζ" ><!--GREEK SMALL LETTER ZETA --> diff --git a/Utilities/xml/docbook-4.5/ent/isogrk2.ent b/Utilities/xml/docbook-4.5/ent/isogrk2.ent new file mode 100644 index 0000000..726b7dd --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isogrk2.ent @@ -0,0 +1,61 @@ + +<!-- + File isogrk2.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isogrk2.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isogrk2.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isogrk2 PUBLIC + "ISO 8879:1986//ENTITIES Monotoniko Greek//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isogrk2.ent" + > + %isogrk2; + +--> + +<!ENTITY Aacgr "Ά" ><!--GREEK CAPITAL LETTER ALPHA WITH TONOS --> +<!ENTITY aacgr "ά" ><!--GREEK SMALL LETTER ALPHA WITH TONOS --> +<!ENTITY Eacgr "Έ" ><!--GREEK CAPITAL LETTER EPSILON WITH TONOS --> +<!ENTITY eacgr "έ" ><!--GREEK SMALL LETTER EPSILON WITH TONOS --> +<!ENTITY EEacgr "Ή" ><!--GREEK CAPITAL LETTER ETA WITH TONOS --> +<!ENTITY eeacgr "ή" ><!--GREEK SMALL LETTER ETA WITH TONOS --> +<!ENTITY Iacgr "Ί" ><!--GREEK CAPITAL LETTER IOTA WITH TONOS --> +<!ENTITY iacgr "ί" ><!--GREEK SMALL LETTER IOTA WITH TONOS --> +<!ENTITY idiagr "ΐ" ><!--GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS --> +<!ENTITY Idigr "Ϊ" ><!--GREEK CAPITAL LETTER IOTA WITH DIALYTIKA --> +<!ENTITY idigr "ϊ" ><!--GREEK SMALL LETTER IOTA WITH DIALYTIKA --> +<!ENTITY Oacgr "Ό" ><!--GREEK CAPITAL LETTER OMICRON WITH TONOS --> +<!ENTITY oacgr "ό" ><!--GREEK SMALL LETTER OMICRON WITH TONOS --> +<!ENTITY OHacgr "Ώ" ><!--GREEK CAPITAL LETTER OMEGA WITH TONOS --> +<!ENTITY ohacgr "ώ" ><!--GREEK SMALL LETTER OMEGA WITH TONOS --> +<!ENTITY Uacgr "Ύ" ><!--GREEK CAPITAL LETTER UPSILON WITH TONOS --> +<!ENTITY uacgr "ύ" ><!--GREEK SMALL LETTER UPSILON WITH TONOS --> +<!ENTITY udiagr "ΰ" ><!--GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS --> +<!ENTITY Udigr "Ϋ" ><!--GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA --> +<!ENTITY udigr "ϋ" ><!--GREEK SMALL LETTER UPSILON WITH DIALYTIKA --> diff --git a/Utilities/xml/docbook-4.5/ent/isogrk3.ent b/Utilities/xml/docbook-4.5/ent/isogrk3.ent new file mode 100644 index 0000000..28b5c27 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isogrk3.ent @@ -0,0 +1,84 @@ + +<!-- + File isogrk3.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isogrk3.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Greek Symbols//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isogrk3.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isogrk3 PUBLIC + "ISO 8879:1986//ENTITIES Greek Symbols//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isogrk3.ent" + > + %isogrk3; + +--> + +<!ENTITY alpha "α" ><!--GREEK SMALL LETTER ALPHA --> +<!ENTITY beta "β" ><!--GREEK SMALL LETTER BETA --> +<!ENTITY chi "χ" ><!--GREEK SMALL LETTER CHI --> +<!ENTITY Delta "Δ" ><!--GREEK CAPITAL LETTER DELTA --> +<!ENTITY delta "δ" ><!--GREEK SMALL LETTER DELTA --> +<!ENTITY epsi "ϵ" ><!--GREEK LUNATE EPSILON SYMBOL --> +<!ENTITY epsis "ϵ" ><!--GREEK LUNATE EPSILON SYMBOL --> +<!ENTITY epsiv "ε" ><!--GREEK SMALL LETTER EPSILON --> +<!ENTITY eta "η" ><!--GREEK SMALL LETTER ETA --> +<!ENTITY Gamma "Γ" ><!--GREEK CAPITAL LETTER GAMMA --> +<!ENTITY gamma "γ" ><!--GREEK SMALL LETTER GAMMA --> +<!ENTITY gammad "ϝ" ><!--GREEK SMALL LETTER DIGAMMA --> +<!ENTITY iota "ι" ><!--GREEK SMALL LETTER IOTA --> +<!ENTITY kappa "κ" ><!--GREEK SMALL LETTER KAPPA --> +<!ENTITY kappav "ϰ" ><!--GREEK KAPPA SYMBOL --> +<!ENTITY Lambda "Λ" ><!--GREEK CAPITAL LETTER LAMDA --> +<!ENTITY lambda "λ" ><!--GREEK SMALL LETTER LAMDA --> +<!ENTITY mu "μ" ><!--GREEK SMALL LETTER MU --> +<!ENTITY nu "ν" ><!--GREEK SMALL LETTER NU --> +<!ENTITY Omega "Ω" ><!--GREEK CAPITAL LETTER OMEGA --> +<!ENTITY omega "ω" ><!--GREEK SMALL LETTER OMEGA --> +<!ENTITY Phi "Φ" ><!--GREEK CAPITAL LETTER PHI --> +<!ENTITY phis "ϕ" ><!--GREEK PHI SYMBOL --> +<!ENTITY phiv "φ" ><!--GREEK SMALL LETTER PHI --> +<!ENTITY Pi "Π" ><!--GREEK CAPITAL LETTER PI --> +<!ENTITY pi "π" ><!--GREEK SMALL LETTER PI --> +<!ENTITY piv "ϖ" ><!--GREEK PI SYMBOL --> +<!ENTITY Psi "Ψ" ><!--GREEK CAPITAL LETTER PSI --> +<!ENTITY psi "ψ" ><!--GREEK SMALL LETTER PSI --> +<!ENTITY rho "ρ" ><!--GREEK SMALL LETTER RHO --> +<!ENTITY rhov "ϱ" ><!--GREEK RHO SYMBOL --> +<!ENTITY Sigma "Σ" ><!--GREEK CAPITAL LETTER SIGMA --> +<!ENTITY sigma "σ" ><!--GREEK SMALL LETTER SIGMA --> +<!ENTITY sigmav "ς" ><!--GREEK SMALL LETTER FINAL SIGMA --> +<!ENTITY tau "τ" ><!--GREEK SMALL LETTER TAU --> +<!ENTITY Theta "Θ" ><!--GREEK CAPITAL LETTER THETA --> +<!ENTITY thetas "θ" ><!--GREEK SMALL LETTER THETA --> +<!ENTITY thetav "ϑ" ><!--GREEK THETA SYMBOL --> +<!ENTITY Upsi "ϒ" ><!--GREEK UPSILON WITH HOOK SYMBOL --> +<!ENTITY upsi "υ" ><!--GREEK SMALL LETTER UPSILON --> +<!ENTITY Xi "Ξ" ><!--GREEK CAPITAL LETTER XI --> +<!ENTITY xi "ξ" ><!--GREEK SMALL LETTER XI --> +<!ENTITY zeta "ζ" ><!--GREEK SMALL LETTER ZETA --> diff --git a/Utilities/xml/docbook-4.5/ent/isogrk4.ent b/Utilities/xml/docbook-4.5/ent/isogrk4.ent new file mode 100644 index 0000000..27c6a51 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isogrk4.ent @@ -0,0 +1,84 @@ + +<!-- + File isogrk4.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isogrk4.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isogrk4.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isogrk4 PUBLIC + "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isogrk4.ent" + > + %isogrk4; + +--> + +<!ENTITY b.alpha "𝛂" ><!--MATHEMATICAL BOLD SMALL ALPHA --> +<!ENTITY b.beta "𝛃" ><!--MATHEMATICAL BOLD SMALL BETA --> +<!ENTITY b.chi "𝛘" ><!--MATHEMATICAL BOLD SMALL CHI --> +<!ENTITY b.Delta "𝚫" ><!--MATHEMATICAL BOLD CAPITAL DELTA --> +<!ENTITY b.delta "𝛅" ><!--MATHEMATICAL BOLD SMALL DELTA --> +<!ENTITY b.epsi "𝛆" ><!--MATHEMATICAL BOLD SMALL EPSILON --> +<!ENTITY b.epsiv "𝛜" ><!--MATHEMATICAL BOLD EPSILON SYMBOL --> +<!ENTITY b.eta "𝛈" ><!--MATHEMATICAL BOLD SMALL ETA --> +<!ENTITY b.Gamma "𝚪" ><!--MATHEMATICAL BOLD CAPITAL GAMMA --> +<!ENTITY b.gamma "𝛄" ><!--MATHEMATICAL BOLD SMALL GAMMA --> +<!ENTITY b.Gammad "Ϝ" ><!--GREEK LETTER DIGAMMA --> +<!ENTITY b.gammad "ϝ" ><!--GREEK SMALL LETTER DIGAMMA --> +<!ENTITY b.iota "𝛊" ><!--MATHEMATICAL BOLD SMALL IOTA --> +<!ENTITY b.kappa "𝛋" ><!--MATHEMATICAL BOLD SMALL KAPPA --> +<!ENTITY b.kappav "𝛞" ><!--MATHEMATICAL BOLD KAPPA SYMBOL --> +<!ENTITY b.Lambda "𝚲" ><!--MATHEMATICAL BOLD CAPITAL LAMDA --> +<!ENTITY b.lambda "𝛌" ><!--MATHEMATICAL BOLD SMALL LAMDA --> +<!ENTITY b.mu "𝛍" ><!--MATHEMATICAL BOLD SMALL MU --> +<!ENTITY b.nu "𝛎" ><!--MATHEMATICAL BOLD SMALL NU --> +<!ENTITY b.Omega "𝛀" ><!--MATHEMATICAL BOLD CAPITAL OMEGA --> +<!ENTITY b.omega "𝛚" ><!--MATHEMATICAL BOLD SMALL OMEGA --> +<!ENTITY b.Phi "𝚽" ><!--MATHEMATICAL BOLD CAPITAL PHI --> +<!ENTITY b.phi "𝛗" ><!--MATHEMATICAL BOLD SMALL PHI --> +<!ENTITY b.phiv "𝛟" ><!--MATHEMATICAL BOLD PHI SYMBOL --> +<!ENTITY b.Pi "𝚷" ><!--MATHEMATICAL BOLD CAPITAL PI --> +<!ENTITY b.pi "𝛑" ><!--MATHEMATICAL BOLD SMALL PI --> +<!ENTITY b.piv "𝛡" ><!--MATHEMATICAL BOLD PI SYMBOL --> +<!ENTITY b.Psi "𝚿" ><!--MATHEMATICAL BOLD CAPITAL PSI --> +<!ENTITY b.psi "𝛙" ><!--MATHEMATICAL BOLD SMALL PSI --> +<!ENTITY b.rho "𝛒" ><!--MATHEMATICAL BOLD SMALL RHO --> +<!ENTITY b.rhov "𝛠" ><!--MATHEMATICAL BOLD RHO SYMBOL --> +<!ENTITY b.Sigma "𝚺" ><!--MATHEMATICAL BOLD CAPITAL SIGMA --> +<!ENTITY b.sigma "𝛔" ><!--MATHEMATICAL BOLD SMALL SIGMA --> +<!ENTITY b.sigmav "𝛓" ><!--MATHEMATICAL BOLD SMALL FINAL SIGMA --> +<!ENTITY b.tau "𝛕" ><!--MATHEMATICAL BOLD SMALL TAU --> +<!ENTITY b.Theta "𝚯" ><!--MATHEMATICAL BOLD CAPITAL THETA --> +<!ENTITY b.thetas "𝛉" ><!--MATHEMATICAL BOLD SMALL THETA --> +<!ENTITY b.thetav "𝛝" ><!--MATHEMATICAL BOLD THETA SYMBOL --> +<!ENTITY b.Upsi "𝚼" ><!--MATHEMATICAL BOLD CAPITAL UPSILON --> +<!ENTITY b.upsi "𝛖" ><!--MATHEMATICAL BOLD SMALL UPSILON --> +<!ENTITY b.Xi "𝚵" ><!--MATHEMATICAL BOLD CAPITAL XI --> +<!ENTITY b.xi "𝛏" ><!--MATHEMATICAL BOLD SMALL XI --> +<!ENTITY b.zeta "𝛇" ><!--MATHEMATICAL BOLD SMALL ZETA --> diff --git a/Utilities/xml/docbook-4.5/ent/isolat1.ent b/Utilities/xml/docbook-4.5/ent/isolat1.ent new file mode 100644 index 0000000..381bd09 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isolat1.ent @@ -0,0 +1,103 @@ + +<!-- + File isolat1.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isolat1.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Latin 1//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isolat1.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isolat1 PUBLIC + "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isolat1.ent" + > + %isolat1; + +--> + +<!ENTITY Aacute "Á" ><!--LATIN CAPITAL LETTER A WITH ACUTE --> +<!ENTITY aacute "á" ><!--LATIN SMALL LETTER A WITH ACUTE --> +<!ENTITY Acirc "Â" ><!--LATIN CAPITAL LETTER A WITH CIRCUMFLEX --> +<!ENTITY acirc "â" ><!--LATIN SMALL LETTER A WITH CIRCUMFLEX --> +<!ENTITY AElig "Æ" ><!--LATIN CAPITAL LETTER AE --> +<!ENTITY aelig "æ" ><!--LATIN SMALL LETTER AE --> +<!ENTITY Agrave "À" ><!--LATIN CAPITAL LETTER A WITH GRAVE --> +<!ENTITY agrave "à" ><!--LATIN SMALL LETTER A WITH GRAVE --> +<!ENTITY Aring "Å" ><!--LATIN CAPITAL LETTER A WITH RING ABOVE --> +<!ENTITY aring "å" ><!--LATIN SMALL LETTER A WITH RING ABOVE --> +<!ENTITY Atilde "Ã" ><!--LATIN CAPITAL LETTER A WITH TILDE --> +<!ENTITY atilde "ã" ><!--LATIN SMALL LETTER A WITH TILDE --> +<!ENTITY Auml "Ä" ><!--LATIN CAPITAL LETTER A WITH DIAERESIS --> +<!ENTITY auml "ä" ><!--LATIN SMALL LETTER A WITH DIAERESIS --> +<!ENTITY Ccedil "Ç" ><!--LATIN CAPITAL LETTER C WITH CEDILLA --> +<!ENTITY ccedil "ç" ><!--LATIN SMALL LETTER C WITH CEDILLA --> +<!ENTITY Eacute "É" ><!--LATIN CAPITAL LETTER E WITH ACUTE --> +<!ENTITY eacute "é" ><!--LATIN SMALL LETTER E WITH ACUTE --> +<!ENTITY Ecirc "Ê" ><!--LATIN CAPITAL LETTER E WITH CIRCUMFLEX --> +<!ENTITY ecirc "ê" ><!--LATIN SMALL LETTER E WITH CIRCUMFLEX --> +<!ENTITY Egrave "È" ><!--LATIN CAPITAL LETTER E WITH GRAVE --> +<!ENTITY egrave "è" ><!--LATIN SMALL LETTER E WITH GRAVE --> +<!ENTITY ETH "Ð" ><!--LATIN CAPITAL LETTER ETH --> +<!ENTITY eth "ð" ><!--LATIN SMALL LETTER ETH --> +<!ENTITY Euml "Ë" ><!--LATIN CAPITAL LETTER E WITH DIAERESIS --> +<!ENTITY euml "ë" ><!--LATIN SMALL LETTER E WITH DIAERESIS --> +<!ENTITY Iacute "Í" ><!--LATIN CAPITAL LETTER I WITH ACUTE --> +<!ENTITY iacute "í" ><!--LATIN SMALL LETTER I WITH ACUTE --> +<!ENTITY Icirc "Î" ><!--LATIN CAPITAL LETTER I WITH CIRCUMFLEX --> +<!ENTITY icirc "î" ><!--LATIN SMALL LETTER I WITH CIRCUMFLEX --> +<!ENTITY Igrave "Ì" ><!--LATIN CAPITAL LETTER I WITH GRAVE --> +<!ENTITY igrave "ì" ><!--LATIN SMALL LETTER I WITH GRAVE --> +<!ENTITY Iuml "Ï" ><!--LATIN CAPITAL LETTER I WITH DIAERESIS --> +<!ENTITY iuml "ï" ><!--LATIN SMALL LETTER I WITH DIAERESIS --> +<!ENTITY Ntilde "Ñ" ><!--LATIN CAPITAL LETTER N WITH TILDE --> +<!ENTITY ntilde "ñ" ><!--LATIN SMALL LETTER N WITH TILDE --> +<!ENTITY Oacute "Ó" ><!--LATIN CAPITAL LETTER O WITH ACUTE --> +<!ENTITY oacute "ó" ><!--LATIN SMALL LETTER O WITH ACUTE --> +<!ENTITY Ocirc "Ô" ><!--LATIN CAPITAL LETTER O WITH CIRCUMFLEX --> +<!ENTITY ocirc "ô" ><!--LATIN SMALL LETTER O WITH CIRCUMFLEX --> +<!ENTITY Ograve "Ò" ><!--LATIN CAPITAL LETTER O WITH GRAVE --> +<!ENTITY ograve "ò" ><!--LATIN SMALL LETTER O WITH GRAVE --> +<!ENTITY Oslash "Ø" ><!--LATIN CAPITAL LETTER O WITH STROKE --> +<!ENTITY oslash "ø" ><!--LATIN SMALL LETTER O WITH STROKE --> +<!ENTITY Otilde "Õ" ><!--LATIN CAPITAL LETTER O WITH TILDE --> +<!ENTITY otilde "õ" ><!--LATIN SMALL LETTER O WITH TILDE --> +<!ENTITY Ouml "Ö" ><!--LATIN CAPITAL LETTER O WITH DIAERESIS --> +<!ENTITY ouml "ö" ><!--LATIN SMALL LETTER O WITH DIAERESIS --> +<!ENTITY szlig "ß" ><!--LATIN SMALL LETTER SHARP S --> +<!ENTITY THORN "Þ" ><!--LATIN CAPITAL LETTER THORN --> +<!ENTITY thorn "þ" ><!--LATIN SMALL LETTER THORN --> +<!ENTITY Uacute "Ú" ><!--LATIN CAPITAL LETTER U WITH ACUTE --> +<!ENTITY uacute "ú" ><!--LATIN SMALL LETTER U WITH ACUTE --> +<!ENTITY Ucirc "Û" ><!--LATIN CAPITAL LETTER U WITH CIRCUMFLEX --> +<!ENTITY ucirc "û" ><!--LATIN SMALL LETTER U WITH CIRCUMFLEX --> +<!ENTITY Ugrave "Ù" ><!--LATIN CAPITAL LETTER U WITH GRAVE --> +<!ENTITY ugrave "ù" ><!--LATIN SMALL LETTER U WITH GRAVE --> +<!ENTITY Uuml "Ü" ><!--LATIN CAPITAL LETTER U WITH DIAERESIS --> +<!ENTITY uuml "ü" ><!--LATIN SMALL LETTER U WITH DIAERESIS --> +<!ENTITY Yacute "Ý" ><!--LATIN CAPITAL LETTER Y WITH ACUTE --> +<!ENTITY yacute "ý" ><!--LATIN SMALL LETTER Y WITH ACUTE --> +<!ENTITY yuml "ÿ" ><!--LATIN SMALL LETTER Y WITH DIAERESIS --> diff --git a/Utilities/xml/docbook-4.5/ent/isolat2.ent b/Utilities/xml/docbook-4.5/ent/isolat2.ent new file mode 100644 index 0000000..e91ffdb --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isolat2.ent @@ -0,0 +1,162 @@ + +<!-- + File isolat2.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isolat2.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Added Latin 2//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isolat2.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isolat2 PUBLIC + "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isolat2.ent" + > + %isolat2; + +--> + +<!ENTITY Abreve "Ă" ><!--LATIN CAPITAL LETTER A WITH BREVE --> +<!ENTITY abreve "ă" ><!--LATIN SMALL LETTER A WITH BREVE --> +<!ENTITY Amacr "Ā" ><!--LATIN CAPITAL LETTER A WITH MACRON --> +<!ENTITY amacr "ā" ><!--LATIN SMALL LETTER A WITH MACRON --> +<!ENTITY Aogon "Ą" ><!--LATIN CAPITAL LETTER A WITH OGONEK --> +<!ENTITY aogon "ą" ><!--LATIN SMALL LETTER A WITH OGONEK --> +<!ENTITY Cacute "Ć" ><!--LATIN CAPITAL LETTER C WITH ACUTE --> +<!ENTITY cacute "ć" ><!--LATIN SMALL LETTER C WITH ACUTE --> +<!ENTITY Ccaron "Č" ><!--LATIN CAPITAL LETTER C WITH CARON --> +<!ENTITY ccaron "č" ><!--LATIN SMALL LETTER C WITH CARON --> +<!ENTITY Ccirc "Ĉ" ><!--LATIN CAPITAL LETTER C WITH CIRCUMFLEX --> +<!ENTITY ccirc "ĉ" ><!--LATIN SMALL LETTER C WITH CIRCUMFLEX --> +<!ENTITY Cdot "Ċ" ><!--LATIN CAPITAL LETTER C WITH DOT ABOVE --> +<!ENTITY cdot "ċ" ><!--LATIN SMALL LETTER C WITH DOT ABOVE --> +<!ENTITY Dcaron "Ď" ><!--LATIN CAPITAL LETTER D WITH CARON --> +<!ENTITY dcaron "ď" ><!--LATIN SMALL LETTER D WITH CARON --> +<!ENTITY Dstrok "Đ" ><!--LATIN CAPITAL LETTER D WITH STROKE --> +<!ENTITY dstrok "đ" ><!--LATIN SMALL LETTER D WITH STROKE --> +<!ENTITY Ecaron "Ě" ><!--LATIN CAPITAL LETTER E WITH CARON --> +<!ENTITY ecaron "ě" ><!--LATIN SMALL LETTER E WITH CARON --> +<!ENTITY Edot "Ė" ><!--LATIN CAPITAL LETTER E WITH DOT ABOVE --> +<!ENTITY edot "ė" ><!--LATIN SMALL LETTER E WITH DOT ABOVE --> +<!ENTITY Emacr "Ē" ><!--LATIN CAPITAL LETTER E WITH MACRON --> +<!ENTITY emacr "ē" ><!--LATIN SMALL LETTER E WITH MACRON --> +<!ENTITY ENG "Ŋ" ><!--LATIN CAPITAL LETTER ENG --> +<!ENTITY eng "ŋ" ><!--LATIN SMALL LETTER ENG --> +<!ENTITY Eogon "Ę" ><!--LATIN CAPITAL LETTER E WITH OGONEK --> +<!ENTITY eogon "ę" ><!--LATIN SMALL LETTER E WITH OGONEK --> +<!ENTITY gacute "ǵ" ><!--LATIN SMALL LETTER G WITH ACUTE --> +<!ENTITY Gbreve "Ğ" ><!--LATIN CAPITAL LETTER G WITH BREVE --> +<!ENTITY gbreve "ğ" ><!--LATIN SMALL LETTER G WITH BREVE --> +<!ENTITY Gcedil "Ģ" ><!--LATIN CAPITAL LETTER G WITH CEDILLA --> +<!ENTITY Gcirc "Ĝ" ><!--LATIN CAPITAL LETTER G WITH CIRCUMFLEX --> +<!ENTITY gcirc "ĝ" ><!--LATIN SMALL LETTER G WITH CIRCUMFLEX --> +<!ENTITY Gdot "Ġ" ><!--LATIN CAPITAL LETTER G WITH DOT ABOVE --> +<!ENTITY gdot "ġ" ><!--LATIN SMALL LETTER G WITH DOT ABOVE --> +<!ENTITY Hcirc "Ĥ" ><!--LATIN CAPITAL LETTER H WITH CIRCUMFLEX --> +<!ENTITY hcirc "ĥ" ><!--LATIN SMALL LETTER H WITH CIRCUMFLEX --> +<!ENTITY Hstrok "Ħ" ><!--LATIN CAPITAL LETTER H WITH STROKE --> +<!ENTITY hstrok "ħ" ><!--LATIN SMALL LETTER H WITH STROKE --> +<!ENTITY Idot "İ" ><!--LATIN CAPITAL LETTER I WITH DOT ABOVE --> +<!ENTITY IJlig "IJ" ><!--LATIN CAPITAL LIGATURE IJ --> +<!ENTITY ijlig "ij" ><!--LATIN SMALL LIGATURE IJ --> +<!ENTITY Imacr "Ī" ><!--LATIN CAPITAL LETTER I WITH MACRON --> +<!ENTITY imacr "ī" ><!--LATIN SMALL LETTER I WITH MACRON --> +<!ENTITY inodot "ı" ><!--LATIN SMALL LETTER DOTLESS I --> +<!ENTITY Iogon "Į" ><!--LATIN CAPITAL LETTER I WITH OGONEK --> +<!ENTITY iogon "į" ><!--LATIN SMALL LETTER I WITH OGONEK --> +<!ENTITY Itilde "Ĩ" ><!--LATIN CAPITAL LETTER I WITH TILDE --> +<!ENTITY itilde "ĩ" ><!--LATIN SMALL LETTER I WITH TILDE --> +<!ENTITY Jcirc "Ĵ" ><!--LATIN CAPITAL LETTER J WITH CIRCUMFLEX --> +<!ENTITY jcirc "ĵ" ><!--LATIN SMALL LETTER J WITH CIRCUMFLEX --> +<!ENTITY Kcedil "Ķ" ><!--LATIN CAPITAL LETTER K WITH CEDILLA --> +<!ENTITY kcedil "ķ" ><!--LATIN SMALL LETTER K WITH CEDILLA --> +<!ENTITY kgreen "ĸ" ><!--LATIN SMALL LETTER KRA --> +<!ENTITY Lacute "Ĺ" ><!--LATIN CAPITAL LETTER L WITH ACUTE --> +<!ENTITY lacute "ĺ" ><!--LATIN SMALL LETTER L WITH ACUTE --> +<!ENTITY Lcaron "Ľ" ><!--LATIN CAPITAL LETTER L WITH CARON --> +<!ENTITY lcaron "ľ" ><!--LATIN SMALL LETTER L WITH CARON --> +<!ENTITY Lcedil "Ļ" ><!--LATIN CAPITAL LETTER L WITH CEDILLA --> +<!ENTITY lcedil "ļ" ><!--LATIN SMALL LETTER L WITH CEDILLA --> +<!ENTITY Lmidot "Ŀ" ><!--LATIN CAPITAL LETTER L WITH MIDDLE DOT --> +<!ENTITY lmidot "ŀ" ><!--LATIN SMALL LETTER L WITH MIDDLE DOT --> +<!ENTITY Lstrok "Ł" ><!--LATIN CAPITAL LETTER L WITH STROKE --> +<!ENTITY lstrok "ł" ><!--LATIN SMALL LETTER L WITH STROKE --> +<!ENTITY Nacute "Ń" ><!--LATIN CAPITAL LETTER N WITH ACUTE --> +<!ENTITY nacute "ń" ><!--LATIN SMALL LETTER N WITH ACUTE --> +<!ENTITY napos "ʼn" ><!--LATIN SMALL LETTER N PRECEDED BY APOSTROPHE --> +<!ENTITY Ncaron "Ň" ><!--LATIN CAPITAL LETTER N WITH CARON --> +<!ENTITY ncaron "ň" ><!--LATIN SMALL LETTER N WITH CARON --> +<!ENTITY Ncedil "Ņ" ><!--LATIN CAPITAL LETTER N WITH CEDILLA --> +<!ENTITY ncedil "ņ" ><!--LATIN SMALL LETTER N WITH CEDILLA --> +<!ENTITY Odblac "Ő" ><!--LATIN CAPITAL LETTER O WITH DOUBLE ACUTE --> +<!ENTITY odblac "ő" ><!--LATIN SMALL LETTER O WITH DOUBLE ACUTE --> +<!ENTITY OElig "Œ" ><!--LATIN CAPITAL LIGATURE OE --> +<!ENTITY oelig "œ" ><!--LATIN SMALL LIGATURE OE --> +<!ENTITY Omacr "Ō" ><!--LATIN CAPITAL LETTER O WITH MACRON --> +<!ENTITY omacr "ō" ><!--LATIN SMALL LETTER O WITH MACRON --> +<!ENTITY Racute "Ŕ" ><!--LATIN CAPITAL LETTER R WITH ACUTE --> +<!ENTITY racute "ŕ" ><!--LATIN SMALL LETTER R WITH ACUTE --> +<!ENTITY Rcaron "Ř" ><!--LATIN CAPITAL LETTER R WITH CARON --> +<!ENTITY rcaron "ř" ><!--LATIN SMALL LETTER R WITH CARON --> +<!ENTITY Rcedil "Ŗ" ><!--LATIN CAPITAL LETTER R WITH CEDILLA --> +<!ENTITY rcedil "ŗ" ><!--LATIN SMALL LETTER R WITH CEDILLA --> +<!ENTITY Sacute "Ś" ><!--LATIN CAPITAL LETTER S WITH ACUTE --> +<!ENTITY sacute "ś" ><!--LATIN SMALL LETTER S WITH ACUTE --> +<!ENTITY Scaron "Š" ><!--LATIN CAPITAL LETTER S WITH CARON --> +<!ENTITY scaron "š" ><!--LATIN SMALL LETTER S WITH CARON --> +<!ENTITY Scedil "Ş" ><!--LATIN CAPITAL LETTER S WITH CEDILLA --> +<!ENTITY scedil "ş" ><!--LATIN SMALL LETTER S WITH CEDILLA --> +<!ENTITY Scirc "Ŝ" ><!--LATIN CAPITAL LETTER S WITH CIRCUMFLEX --> +<!ENTITY scirc "ŝ" ><!--LATIN SMALL LETTER S WITH CIRCUMFLEX --> +<!ENTITY Tcaron "Ť" ><!--LATIN CAPITAL LETTER T WITH CARON --> +<!ENTITY tcaron "ť" ><!--LATIN SMALL LETTER T WITH CARON --> +<!ENTITY Tcedil "Ţ" ><!--LATIN CAPITAL LETTER T WITH CEDILLA --> +<!ENTITY tcedil "ţ" ><!--LATIN SMALL LETTER T WITH CEDILLA --> +<!ENTITY Tstrok "Ŧ" ><!--LATIN CAPITAL LETTER T WITH STROKE --> +<!ENTITY tstrok "ŧ" ><!--LATIN SMALL LETTER T WITH STROKE --> +<!ENTITY Ubreve "Ŭ" ><!--LATIN CAPITAL LETTER U WITH BREVE --> +<!ENTITY ubreve "ŭ" ><!--LATIN SMALL LETTER U WITH BREVE --> +<!ENTITY Udblac "Ű" ><!--LATIN CAPITAL LETTER U WITH DOUBLE ACUTE --> +<!ENTITY udblac "ű" ><!--LATIN SMALL LETTER U WITH DOUBLE ACUTE --> +<!ENTITY Umacr "Ū" ><!--LATIN CAPITAL LETTER U WITH MACRON --> +<!ENTITY umacr "ū" ><!--LATIN SMALL LETTER U WITH MACRON --> +<!ENTITY Uogon "Ų" ><!--LATIN CAPITAL LETTER U WITH OGONEK --> +<!ENTITY uogon "ų" ><!--LATIN SMALL LETTER U WITH OGONEK --> +<!ENTITY Uring "Ů" ><!--LATIN CAPITAL LETTER U WITH RING ABOVE --> +<!ENTITY uring "ů" ><!--LATIN SMALL LETTER U WITH RING ABOVE --> +<!ENTITY Utilde "Ũ" ><!--LATIN CAPITAL LETTER U WITH TILDE --> +<!ENTITY utilde "ũ" ><!--LATIN SMALL LETTER U WITH TILDE --> +<!ENTITY Wcirc "Ŵ" ><!--LATIN CAPITAL LETTER W WITH CIRCUMFLEX --> +<!ENTITY wcirc "ŵ" ><!--LATIN SMALL LETTER W WITH CIRCUMFLEX --> +<!ENTITY Ycirc "Ŷ" ><!--LATIN CAPITAL LETTER Y WITH CIRCUMFLEX --> +<!ENTITY ycirc "ŷ" ><!--LATIN SMALL LETTER Y WITH CIRCUMFLEX --> +<!ENTITY Yuml "Ÿ" ><!--LATIN CAPITAL LETTER Y WITH DIAERESIS --> +<!ENTITY Zacute "Ź" ><!--LATIN CAPITAL LETTER Z WITH ACUTE --> +<!ENTITY zacute "ź" ><!--LATIN SMALL LETTER Z WITH ACUTE --> +<!ENTITY Zcaron "Ž" ><!--LATIN CAPITAL LETTER Z WITH CARON --> +<!ENTITY zcaron "ž" ><!--LATIN SMALL LETTER Z WITH CARON --> +<!ENTITY Zdot "Ż" ><!--LATIN CAPITAL LETTER Z WITH DOT ABOVE --> +<!ENTITY zdot "ż" ><!--LATIN SMALL LETTER Z WITH DOT ABOVE --> diff --git a/Utilities/xml/docbook-4.5/ent/isonum.ent b/Utilities/xml/docbook-4.5/ent/isonum.ent new file mode 100644 index 0000000..884c0c4 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isonum.ent @@ -0,0 +1,117 @@ + +<!-- + File isonum.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isonum.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isonum.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isonum PUBLIC + "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isonum.ent" + > + %isonum; + +--> + +<!ENTITY amp "&#38;" ><!--AMPERSAND --> +<!ENTITY apos "'" ><!--APOSTROPHE --> +<!ENTITY ast "*" ><!--ASTERISK --> +<!ENTITY brvbar "¦" ><!--BROKEN BAR --> +<!ENTITY bsol "\" ><!--REVERSE SOLIDUS --> +<!ENTITY cent "¢" ><!--CENT SIGN --> +<!ENTITY colon ":" ><!--COLON --> +<!ENTITY comma "," ><!--COMMA --> +<!ENTITY commat "@" ><!--COMMERCIAL AT --> +<!ENTITY copy "©" ><!--COPYRIGHT SIGN --> +<!ENTITY curren "¤" ><!--CURRENCY SIGN --> +<!ENTITY darr "↓" ><!--DOWNWARDS ARROW --> +<!ENTITY deg "°" ><!--DEGREE SIGN --> +<!ENTITY divide "÷" ><!--DIVISION SIGN --> +<!ENTITY dollar "$" ><!--DOLLAR SIGN --> +<!ENTITY equals "=" ><!--EQUALS SIGN --> +<!ENTITY excl "!" ><!--EXCLAMATION MARK --> +<!ENTITY frac12 "½" ><!--VULGAR FRACTION ONE HALF --> +<!ENTITY frac14 "¼" ><!--VULGAR FRACTION ONE QUARTER --> +<!ENTITY frac18 "⅛" ><!--VULGAR FRACTION ONE EIGHTH --> +<!ENTITY frac34 "¾" ><!--VULGAR FRACTION THREE QUARTERS --> +<!ENTITY frac38 "⅜" ><!--VULGAR FRACTION THREE EIGHTHS --> +<!ENTITY frac58 "⅝" ><!--VULGAR FRACTION FIVE EIGHTHS --> +<!ENTITY frac78 "⅞" ><!--VULGAR FRACTION SEVEN EIGHTHS --> +<!ENTITY gt ">" ><!--GREATER-THAN SIGN --> +<!ENTITY half "½" ><!--VULGAR FRACTION ONE HALF --> +<!ENTITY horbar "―" ><!--HORIZONTAL BAR --> +<!ENTITY hyphen "‐" ><!--HYPHEN --> +<!ENTITY iexcl "¡" ><!--INVERTED EXCLAMATION MARK --> +<!ENTITY iquest "¿" ><!--INVERTED QUESTION MARK --> +<!ENTITY laquo "«" ><!--LEFT-POINTING DOUBLE ANGLE QUOTATION MARK --> +<!ENTITY larr "←" ><!--LEFTWARDS ARROW --> +<!ENTITY lcub "{" ><!--LEFT CURLY BRACKET --> +<!ENTITY ldquo "“" ><!--LEFT DOUBLE QUOTATION MARK --> +<!ENTITY lowbar "_" ><!--LOW LINE --> +<!ENTITY lpar "(" ><!--LEFT PARENTHESIS --> +<!ENTITY lsqb "[" ><!--LEFT SQUARE BRACKET --> +<!ENTITY lsquo "‘" ><!--LEFT SINGLE QUOTATION MARK --> +<!ENTITY lt "&#60;" ><!--LESS-THAN SIGN --> +<!ENTITY micro "µ" ><!--MICRO SIGN --> +<!ENTITY middot "·" ><!--MIDDLE DOT --> +<!ENTITY nbsp " " ><!--NO-BREAK SPACE --> +<!ENTITY not "¬" ><!--NOT SIGN --> +<!ENTITY num "#" ><!--NUMBER SIGN --> +<!ENTITY ohm "Ω" ><!--OHM SIGN --> +<!ENTITY ordf "ª" ><!--FEMININE ORDINAL INDICATOR --> +<!ENTITY ordm "º" ><!--MASCULINE ORDINAL INDICATOR --> +<!ENTITY para "¶" ><!--PILCROW SIGN --> +<!ENTITY percnt "%" ><!--PERCENT SIGN --> +<!ENTITY period "." ><!--FULL STOP --> +<!ENTITY plus "+" ><!--PLUS SIGN --> +<!ENTITY plusmn "±" ><!--PLUS-MINUS SIGN --> +<!ENTITY pound "£" ><!--POUND SIGN --> +<!ENTITY quest "?" ><!--QUESTION MARK --> +<!ENTITY quot """ ><!--QUOTATION MARK --> +<!ENTITY raquo "»" ><!--RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> +<!ENTITY rarr "→" ><!--RIGHTWARDS ARROW --> +<!ENTITY rcub "}" ><!--RIGHT CURLY BRACKET --> +<!ENTITY rdquo "”" ><!--RIGHT DOUBLE QUOTATION MARK --> +<!ENTITY reg "®" ><!--REGISTERED SIGN --> +<!ENTITY rpar ")" ><!--RIGHT PARENTHESIS --> +<!ENTITY rsqb "]" ><!--RIGHT SQUARE BRACKET --> +<!ENTITY rsquo "’" ><!--RIGHT SINGLE QUOTATION MARK --> +<!ENTITY sect "§" ><!--SECTION SIGN --> +<!ENTITY semi ";" ><!--SEMICOLON --> +<!ENTITY shy "­" ><!--SOFT HYPHEN --> +<!ENTITY sol "/" ><!--SOLIDUS --> +<!ENTITY sung "♪" ><!--EIGHTH NOTE --> +<!ENTITY sup1 "¹" ><!--SUPERSCRIPT ONE --> +<!ENTITY sup2 "²" ><!--SUPERSCRIPT TWO --> +<!ENTITY sup3 "³" ><!--SUPERSCRIPT THREE --> +<!ENTITY times "×" ><!--MULTIPLICATION SIGN --> +<!ENTITY trade "™" ><!--TRADE MARK SIGN --> +<!ENTITY uarr "↑" ><!--UPWARDS ARROW --> +<!ENTITY verbar "|" ><!--VERTICAL LINE --> +<!ENTITY yen "¥" ><!--YEN SIGN --> diff --git a/Utilities/xml/docbook-4.5/ent/isopub.ent b/Utilities/xml/docbook-4.5/ent/isopub.ent new file mode 100644 index 0000000..a117878 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isopub.ent @@ -0,0 +1,125 @@ + +<!-- + File isopub.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isopub.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES Publishing//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isopub.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isopub PUBLIC + "ISO 8879:1986//ENTITIES Publishing//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isopub.ent" + > + %isopub; + +--> + +<!ENTITY blank "␣" ><!--OPEN BOX --> +<!ENTITY blk12 "▒" ><!--MEDIUM SHADE --> +<!ENTITY blk14 "░" ><!--LIGHT SHADE --> +<!ENTITY blk34 "▓" ><!--DARK SHADE --> +<!ENTITY block "█" ><!--FULL BLOCK --> +<!ENTITY bull "•" ><!--BULLET --> +<!ENTITY caret "⁁" ><!--CARET INSERTION POINT --> +<!ENTITY check "✓" ><!--CHECK MARK --> +<!ENTITY cir "○" ><!--WHITE CIRCLE --> +<!ENTITY clubs "♣" ><!--BLACK CLUB SUIT --> +<!ENTITY copysr "℗" ><!--SOUND RECORDING COPYRIGHT --> +<!ENTITY cross "✗" ><!--BALLOT X --> +<!ENTITY Dagger "‡" ><!--DOUBLE DAGGER --> +<!ENTITY dagger "†" ><!--DAGGER --> +<!ENTITY dash "‐" ><!--HYPHEN --> +<!ENTITY diams "♦" ><!--BLACK DIAMOND SUIT --> +<!ENTITY dlcrop "⌍" ><!--BOTTOM LEFT CROP --> +<!ENTITY drcrop "⌌" ><!--BOTTOM RIGHT CROP --> +<!ENTITY dtri "▿" ><!--WHITE DOWN-POINTING SMALL TRIANGLE --> +<!ENTITY dtrif "▾" ><!--BLACK DOWN-POINTING SMALL TRIANGLE --> +<!ENTITY emsp " " ><!--EM SPACE --> +<!ENTITY emsp13 " " ><!--THREE-PER-EM SPACE --> +<!ENTITY emsp14 " " ><!--FOUR-PER-EM SPACE --> +<!ENTITY ensp " " ><!--EN SPACE --> +<!ENTITY female "♀" ><!--FEMALE SIGN --> +<!ENTITY ffilig "ffi" ><!--LATIN SMALL LIGATURE FFI --> +<!ENTITY fflig "ff" ><!--LATIN SMALL LIGATURE FF --> +<!ENTITY ffllig "ffl" ><!--LATIN SMALL LIGATURE FFL --> +<!ENTITY filig "fi" ><!--LATIN SMALL LIGATURE FI --> +<!ENTITY flat "♭" ><!--MUSIC FLAT SIGN --> +<!ENTITY fllig "fl" ><!--LATIN SMALL LIGATURE FL --> +<!ENTITY frac13 "⅓" ><!--VULGAR FRACTION ONE THIRD --> +<!ENTITY frac15 "⅕" ><!--VULGAR FRACTION ONE FIFTH --> +<!ENTITY frac16 "⅙" ><!--VULGAR FRACTION ONE SIXTH --> +<!ENTITY frac23 "⅔" ><!--VULGAR FRACTION TWO THIRDS --> +<!ENTITY frac25 "⅖" ><!--VULGAR FRACTION TWO FIFTHS --> +<!ENTITY frac35 "⅗" ><!--VULGAR FRACTION THREE FIFTHS --> +<!ENTITY frac45 "⅘" ><!--VULGAR FRACTION FOUR FIFTHS --> +<!ENTITY frac56 "⅚" ><!--VULGAR FRACTION FIVE SIXTHS --> +<!ENTITY hairsp " " ><!--HAIR SPACE --> +<!ENTITY hearts "♥" ><!--BLACK HEART SUIT --> +<!ENTITY hellip "…" ><!--HORIZONTAL ELLIPSIS --> +<!ENTITY hybull "⁃" ><!--HYPHEN BULLET --> +<!ENTITY incare "℅" ><!--CARE OF --> +<!ENTITY ldquor "„" ><!--DOUBLE LOW-9 QUOTATION MARK --> +<!ENTITY lhblk "▄" ><!--LOWER HALF BLOCK --> +<!ENTITY loz "◊" ><!--LOZENGE --> +<!ENTITY lozf "⧫" ><!--BLACK LOZENGE --> +<!ENTITY lsquor "‚" ><!--SINGLE LOW-9 QUOTATION MARK --> +<!ENTITY ltri "◃" ><!--WHITE LEFT-POINTING SMALL TRIANGLE --> +<!ENTITY ltrif "◂" ><!--BLACK LEFT-POINTING SMALL TRIANGLE --> +<!ENTITY male "♂" ><!--MALE SIGN --> +<!ENTITY malt "✠" ><!--MALTESE CROSS --> +<!ENTITY marker "▮" ><!--BLACK VERTICAL RECTANGLE --> +<!ENTITY mdash "—" ><!--EM DASH --> +<!ENTITY mldr "…" ><!--HORIZONTAL ELLIPSIS --> +<!ENTITY natur "♮" ><!--MUSIC NATURAL SIGN --> +<!ENTITY ndash "–" ><!--EN DASH --> +<!ENTITY nldr "‥" ><!--TWO DOT LEADER --> +<!ENTITY numsp " " ><!--FIGURE SPACE --> +<!ENTITY phone "☎" ><!--BLACK TELEPHONE --> +<!ENTITY puncsp " " ><!--PUNCTUATION SPACE --> +<!ENTITY rdquor "”" ><!--RIGHT DOUBLE QUOTATION MARK --> +<!ENTITY rect "▭" ><!--WHITE RECTANGLE --> +<!ENTITY rsquor "’" ><!--RIGHT SINGLE QUOTATION MARK --> +<!ENTITY rtri "▹" ><!--WHITE RIGHT-POINTING SMALL TRIANGLE --> +<!ENTITY rtrif "▸" ><!--BLACK RIGHT-POINTING SMALL TRIANGLE --> +<!ENTITY rx "℞" ><!--PRESCRIPTION TAKE --> +<!ENTITY sext "✶" ><!--SIX POINTED BLACK STAR --> +<!ENTITY sharp "♯" ><!--MUSIC SHARP SIGN --> +<!ENTITY spades "♠" ><!--BLACK SPADE SUIT --> +<!ENTITY squ "□" ><!--WHITE SQUARE --> +<!ENTITY squf "▪" ><!--BLACK SMALL SQUARE --> +<!ENTITY star "☆" ><!--WHITE STAR --> +<!ENTITY starf "★" ><!--BLACK STAR --> +<!ENTITY target "⌖" ><!--POSITION INDICATOR --> +<!ENTITY telrec "⌕" ><!--TELEPHONE RECORDER --> +<!ENTITY thinsp " " ><!--THIN SPACE --> +<!ENTITY uhblk "▀" ><!--UPPER HALF BLOCK --> +<!ENTITY ulcrop "⌏" ><!--TOP LEFT CROP --> +<!ENTITY urcrop "⌎" ><!--TOP RIGHT CROP --> +<!ENTITY utri "▵" ><!--WHITE UP-POINTING SMALL TRIANGLE --> +<!ENTITY utrif "▴" ><!--BLACK UP-POINTING SMALL TRIANGLE --> +<!ENTITY vellip "⋮" ><!--VERTICAL ELLIPSIS --> diff --git a/Utilities/xml/docbook-4.5/ent/isotech.ent b/Utilities/xml/docbook-4.5/ent/isotech.ent new file mode 100644 index 0000000..07e8100 --- /dev/null +++ b/Utilities/xml/docbook-4.5/ent/isotech.ent @@ -0,0 +1,103 @@ + +<!-- + File isotech.ent produced by the XSL script entities.xsl + from input data in unicode.xml. + + Please report any errors to David Carlisle + via the public W3C list www-math@w3.org. + + The numeric character values assigned to each entity + (should) match the Unicode assignments in Unicode 4.0. + + Entity names in this file are derived from files carrying the + following notice: + + (C) International Organization for Standardization 1986 + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +--> + + +<!-- + Version: $Id: isotech.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $ + + Public identifier: ISO 8879:1986//ENTITIES General Technical//EN//XML + System identifier: http://www.w3.org/2003/entities/iso8879/isotech.ent + + The public identifier should always be used verbatim. + The system identifier may be changed to suit local requirements. + + Typical invocation: + + <!ENTITY % isotech PUBLIC + "ISO 8879:1986//ENTITIES General Technical//EN//XML" + "http://www.w3.org/2003/entities/iso8879/isotech.ent" + > + %isotech; + +--> + +<!ENTITY aleph "ℵ" ><!--ALEF SYMBOL --> +<!ENTITY and "∧" ><!--LOGICAL AND --> +<!ENTITY ang90 "∟" ><!--RIGHT ANGLE --> +<!ENTITY angsph "∢" ><!--SPHERICAL ANGLE --> +<!ENTITY angst "Å" ><!--ANGSTROM SIGN --> +<!ENTITY ap "≈" ><!--ALMOST EQUAL TO --> +<!ENTITY becaus "∵" ><!--BECAUSE --> +<!ENTITY bernou "ℬ" ><!--SCRIPT CAPITAL B --> +<!ENTITY bottom "⊥" ><!--UP TACK --> +<!ENTITY cap "∩" ><!--INTERSECTION --> +<!ENTITY compfn "∘" ><!--RING OPERATOR --> +<!ENTITY cong "≅" ><!--APPROXIMATELY EQUAL TO --> +<!ENTITY conint "∮" ><!--CONTOUR INTEGRAL --> +<!ENTITY cup "∪" ><!--UNION --> +<!ENTITY Dot "¨" ><!--DIAERESIS --> +<!ENTITY DotDot " ⃜" ><!--COMBINING FOUR DOTS ABOVE --> +<!ENTITY equiv "≡" ><!--IDENTICAL TO --> +<!ENTITY exist "∃" ><!--THERE EXISTS --> +<!ENTITY fnof "ƒ" ><!--LATIN SMALL LETTER F WITH HOOK --> +<!ENTITY forall "∀" ><!--FOR ALL --> +<!ENTITY ge "≥" ><!--GREATER-THAN OR EQUAL TO --> +<!ENTITY hamilt "ℋ" ><!--SCRIPT CAPITAL H --> +<!ENTITY iff "⇔" ><!--LEFT RIGHT DOUBLE ARROW --> +<!ENTITY infin "∞" ><!--INFINITY --> +<!ENTITY int "∫" ><!--INTEGRAL --> +<!ENTITY isin "∈" ><!--ELEMENT OF --> +<!ENTITY lagran "ℒ" ><!--SCRIPT CAPITAL L --> +<!ENTITY lang "〈" ><!--LEFT-POINTING ANGLE BRACKET --> +<!ENTITY lArr "⇐" ><!--LEFTWARDS DOUBLE ARROW --> +<!ENTITY le "≤" ><!--LESS-THAN OR EQUAL TO --> +<!ENTITY lowast "∗" ><!--ASTERISK OPERATOR --> +<!ENTITY minus "−" ><!--MINUS SIGN --> +<!ENTITY mnplus "∓" ><!--MINUS-OR-PLUS SIGN --> +<!ENTITY nabla "∇" ><!--NABLA --> +<!ENTITY ne "≠" ><!--NOT EQUAL TO --> +<!ENTITY ni "∋" ><!--CONTAINS AS MEMBER --> +<!ENTITY notin "∉" ><!--NOT AN ELEMENT OF --> +<!ENTITY or "∨" ><!--LOGICAL OR --> +<!ENTITY order "ℴ" ><!--SCRIPT SMALL O --> +<!ENTITY par "∥" ><!--PARALLEL TO --> +<!ENTITY part "∂" ><!--PARTIAL DIFFERENTIAL --> +<!ENTITY permil "‰" ><!--PER MILLE SIGN --> +<!ENTITY perp "⊥" ><!--UP TACK --> +<!ENTITY phmmat "ℳ" ><!--SCRIPT CAPITAL M --> +<!ENTITY Prime "″" ><!--DOUBLE PRIME --> +<!ENTITY prime "′" ><!--PRIME --> +<!ENTITY prop "∝" ><!--PROPORTIONAL TO --> +<!ENTITY radic "√" ><!--SQUARE ROOT --> +<!ENTITY rang "〉" ><!--RIGHT-POINTING ANGLE BRACKET --> +<!ENTITY rArr "⇒" ><!--RIGHTWARDS DOUBLE ARROW --> +<!ENTITY sim "∼" ><!--TILDE OPERATOR --> +<!ENTITY sime "≃" ><!--ASYMPTOTICALLY EQUAL TO --> +<!ENTITY square "□" ><!--WHITE SQUARE --> +<!ENTITY sub "⊂" ><!--SUBSET OF --> +<!ENTITY sube "⊆" ><!--SUBSET OF OR EQUAL TO --> +<!ENTITY sup "⊃" ><!--SUPERSET OF --> +<!ENTITY supe "⊇" ><!--SUPERSET OF OR EQUAL TO --> +<!ENTITY tdot " ⃛" ><!--COMBINING THREE DOTS ABOVE --> +<!ENTITY there4 "∴" ><!--THEREFORE --> +<!ENTITY tprime "‴" ><!--TRIPLE PRIME --> +<!ENTITY Verbar "‖" ><!--DOUBLE VERTICAL LINE --> +<!ENTITY wedgeq "≙" ><!--ESTIMATES --> diff --git a/Utilities/xml/docbook-4.5/htmltblx.mod b/Utilities/xml/docbook-4.5/htmltblx.mod new file mode 100644 index 0000000..cdaefed --- /dev/null +++ b/Utilities/xml/docbook-4.5/htmltblx.mod @@ -0,0 +1,245 @@ +<!-- ...................................................................... --> +<!-- DocBook XML HTML Table Module V4.5 ................................... --> +<!-- File htmltblx.mod .................................................... --> + +<!-- Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems, + Inc., and the Organization for the Advancement of Structured Information + Standards (OASIS). + + $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $ + + Permission to use, copy, modify and distribute the DocBook XML DTD + and its accompanying documentation for any purpose and without fee + is hereby granted in perpetuity, provided that the above copyright + notice and this paragraph appear in all copies. The copyright + holders make no representation about the suitability of the DTD for + any purpose. It is provided "as is" without expressed or implied + warranty. + + If you modify the DocBook XML DTD in any way, except for declaring and + referencing additional sets of general entities and declaring + additional notations, label your DTD as a variant of DocBook. See + the maintenance documentation for more information. + + Please direct all questions, bug reports, or suggestions for + changes to the docbook@lists.oasis-open.org mailing list. For more + information, see http://www.oasis-open.org/docbook/. +--> + +<!-- ...................................................................... --> + +<!-- This module contains the definitions for elements that are + isomorphic to the HTML elements. One could argue we should + instead have based ourselves on the XHTML Table Module, but the + HTML one is more like what browsers are likely to accept today + and users are likely to use. + + This module has been developed for use with the DocBook V4.5 + "union table model" in which elements and attlists common to both + models are defined (as the union) in the CALS table module by + setting various parameter entities appropriately in this file. + + In DTD driver files referring to this module, please use an entity + declaration that uses the public identifier shown below: + + <!ENTITY % htmltbl PUBLIC + "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" + "htmltblx.mod"> + %htmltbl; + + See the documentation for detailed information on the parameter + entity and module scheme used in DocBook, customizing DocBook and + planning for interchange, and changes made since the last release + of DocBook. +--> + +<!--======================= XHTML Tables =======================================--> + +<!ENTITY % html.coreattrs + "%common.attrib; + class CDATA #IMPLIED + style CDATA #IMPLIED + title CDATA #IMPLIED" + > + +<!-- Does not contain lang or dir because they are in %common.attribs --> +<![%sgml.features;[ +<!ENTITY % i18n ""> +]]> +<!ENTITY % i18n + "xml:lang NMTOKEN #IMPLIED" + > + +<!ENTITY % events + "onclick CDATA #IMPLIED + ondblclick CDATA #IMPLIED + onmousedown CDATA #IMPLIED + onmouseup CDATA #IMPLIED + onmouseover CDATA #IMPLIED + onmousemove CDATA #IMPLIED + onmouseout CDATA #IMPLIED + onkeypress CDATA #IMPLIED + onkeydown CDATA #IMPLIED + onkeyup CDATA #IMPLIED" + > + +<!ENTITY % attrs "%html.coreattrs; %i18n; %events;"> + +<!ENTITY % cellhalign + "align (left|center|right|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff CDATA #IMPLIED" + > + +<!ENTITY % cellvalign + "valign (top|middle|bottom|baseline) #IMPLIED" + > + +<!--doc:A group of columns in an HTML table.--> +<!ELEMENT colgroup %ho; (col)*> +<!--doc:Specifications for a column in an HTML table.--> +<!ELEMENT col %ho; EMPTY> +<!--doc:A row in an HTML table.--> +<!ELEMENT tr %ho; (th|td)+> +<!--doc:A table header entry in an HTML table.--> +<!ELEMENT th %ho; (%para.char.mix; | %tabentry.mix; | table | informaltable)*> +<!--doc:A table ntry in an HTML table.--> +<!ELEMENT td %ho; (%para.char.mix; | %tabentry.mix; | table | informaltable)*> + +<!ATTLIST colgroup + %attrs; + span CDATA "1" + width CDATA #IMPLIED + %cellhalign; + %cellvalign; + > + +<!ATTLIST col + %attrs; + span CDATA "1" + width CDATA #IMPLIED + %cellhalign; + %cellvalign; + > + +<!ATTLIST tr + %attrs; + %cellhalign; + %cellvalign; + bgcolor CDATA #IMPLIED + > + +<!ATTLIST th + %attrs; + abbr CDATA #IMPLIED + axis CDATA #IMPLIED + headers IDREFS #IMPLIED + scope (row|col|rowgroup|colgroup) #IMPLIED + rowspan CDATA "1" + colspan CDATA "1" + %cellhalign; + %cellvalign; + nowrap (nowrap) #IMPLIED + bgcolor CDATA #IMPLIED + width CDATA #IMPLIED + height CDATA #IMPLIED + > + +<!ATTLIST td + %attrs; + abbr CDATA #IMPLIED + axis CDATA #IMPLIED + headers IDREFS #IMPLIED + scope (row|col|rowgroup|colgroup) #IMPLIED + rowspan CDATA "1" + colspan CDATA "1" + %cellhalign; + %cellvalign; + nowrap (nowrap) #IMPLIED + bgcolor CDATA #IMPLIED + width CDATA #IMPLIED + height CDATA #IMPLIED + > + +<!-- ====================================================== --> +<!-- Set up to read in the CALS model configured to + merge with the XHTML table model --> +<!-- ====================================================== --> + +<!ENTITY % tables.role.attrib "%role.attrib;"> + +<!-- Add label and role attributes to table and informaltable --> +<!ENTITY % bodyatt " + floatstyle CDATA #IMPLIED + rowheader (firstcol|norowheader) #IMPLIED + %label.attrib;" +> + +<!-- Add common attributes to Table, TGroup, TBody, THead, TFoot, Row, + EntryTbl, and Entry (and InformalTable element). --> + +<!ENTITY % secur " + %common.attrib; + class CDATA #IMPLIED + style CDATA #IMPLIED + title CDATA #IMPLIED + %i18n; + %events; + %tables.role.attrib;"> + +<!ENTITY % common.table.attribs + "%bodyatt; + %secur;"> + +<!-- Content model for Table (that also allows HTML tables) --> +<!ENTITY % tbl.table.mdl + "((blockinfo?, + (%formalobject.title.content;), + (%ndxterm.class;)*, + textobject*, + (graphic+|mediaobject+|tgroup+)) + |(caption, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+)))"> + +<!ENTITY % informal.tbl.table.mdl + "(textobject*, + (graphic+|mediaobject+|tgroup+)) + | ((col*|colgroup*), thead?, tfoot?, (tbody+|tr+))"> + +<!-- Attributes for Table (including HTML ones) --> + +<!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd --> +<!-- that way because 'all' already occurs in a different enumeration in --> +<!-- CALS tables (frame). --> + +<!ENTITY % tbl.table.att ' + tabstyle CDATA #IMPLIED + tocentry %yesorno.attvals; #IMPLIED + shortentry %yesorno.attvals; #IMPLIED + orient (port|land) #IMPLIED + pgwide %yesorno.attvals; #IMPLIED + summary CDATA #IMPLIED + width CDATA #IMPLIED + border CDATA #IMPLIED + rules CDATA #IMPLIED + cellspacing CDATA #IMPLIED + cellpadding CDATA #IMPLIED + align (left|center|right) #IMPLIED + bgcolor CDATA #IMPLIED +'> + +<!ENTITY % tbl.frame.attval "void|above|below|hsides|lhs|rhs|vsides|box|border| +top|bottom|topbot|all|sides|none"> + +<!-- Allow either objects or inlines; beware of REs between elements. --> +<!ENTITY % tbl.entry.mdl "%para.char.mix; | %tabentry.mix;"> + +<!-- thead, tfoot, and tbody are defined in both table models, + so we set up parameter entities to define union models for them + --> + +<!ENTITY % tbl.hdft.mdl "(tr+|(colspec*,row+))"> +<!ENTITY % tbl.tbody.mdl "(tr+|row+)"> +<!ENTITY % tbl.valign.attval "top|middle|bottom|baseline"> + +<!-- End of DocBook XML HTML Table Module V4.5 ............................ --> +<!-- ...................................................................... --> diff --git a/Utilities/xml/docbook-4.5/soextblx.dtd b/Utilities/xml/docbook-4.5/soextblx.dtd new file mode 100644 index 0000000..4a92e11 --- /dev/null +++ b/Utilities/xml/docbook-4.5/soextblx.dtd @@ -0,0 +1,321 @@ +<!-- XML EXCHANGE TABLE MODEL DECLARATION MODULE --> + +<!-- This set of declarations defines the XML version of the Exchange + Table Model as of the date shown in the Formal Public Identifier + (FPI) for this entity. + + This set of declarations may be referred to using a public external + entity declaration and reference as shown in the following three + lines: + + <!ENTITY % calstblx + PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"> + %calstblx; + + If various parameter entities used within this set of declarations + are to be given non-default values, the appropriate declarations + should be given before calling in this package (i.e., before the + "%calstblx;" reference). +--> + +<!-- The motivation for this XML version of the Exchange Table Model + is simply to create an XML version of the SGML Exchange Table + Model. By design, no effort has been made to "improve" the model. + + This XML version incorporates the logical bare minimum changes + necessary to make the Exchange Table Model a valid XML DTD. + + It has been modified slightly for use in the combined HTML/CALS models + supported by DocBook V4.3 and later. +--> + +<!-- The XML version of the Exchange Table Model differs from + the SGML version in the following ways: + + The following parameter entities have been removed: + + - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep + There are no exceptions in XML. The following normative statement + is made in lieu of exceptions: the exchange table model explicitly + forbids a table from occurring within another table. If the + content model of an entry includes a table element, then this + cannot be enforced by the DTD, but it is a deviation from the + exchange table model to include a table within a table. + + - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att + The motivation for these elements was to change the table + header/footer elements. Since XML does not allow element declarations + to contain name groups, and the exchange table model does not + allow a table to contain footers, the continued presence of these + attributes seems unnecessary. + + The following parameter entity has been added: + + - tbl.thead.att + This entity parameterizes the attributes on thead. It replaces + the tbl.hdft.att parameter entity. + + Other miscellaneous changes: + + - Tag ommission indicators have been removed + - Comments have been removed from declarations + - NUMBER attributes have been changed to NMTOKEN + - NUTOKEN attributes have been to changed to NMTOKEN + - Removed the grouping characters around the content model + parameter entry for the 'entry' element. This is necessary + so that an entry can contain #PCDATA and be defined as an + optional, repeatable OR group beginning with #PCDATA. +--> + +<!-- This entity includes a set of element and attribute declarations + that partially defines the Exchange table model. However, the model + is not well-defined without the accompanying natural language + description of the semantics (meanings) of these various elements, + attributes, and attribute values. The semantic writeup, also available + from SGML Open, should be used in conjunction with this entity. +--> + +<!-- In order to use the Exchange table model, various parameter entity + declarations are required. A brief description is as follows: + + ENTITY NAME WHERE USED WHAT IT IS + + %yesorno In ATTLIST of: An attribute declared value + almost all elements for a "boolean" attribute + + %paracon In content model of: The "text" (logical content) + <entry> of the model group for <entry> + + %titles In content model of: The "title" part of the model + table element group for the table element + + %tbl.table.name In declaration of: The name of the "table" + table element element + + %tbl.table-titles.mdl In content model of: The model group for the title + table elements part of the content model for + table element + + %tbl.table.mdl In content model of: The model group for the content + table elements model for table element, + often (and by default) defined + in terms of %tbl.table-titles.mdl + and tgroup + + %tbl.table.att In ATTLIST of: Additional attributes on the + table element table element + + %bodyatt In ATTLIST of: Additional attributes on the + table element table element (for backward + compatibility with the SGML + model) + + %tbl.tgroup.mdl In content model of: The model group for the content + <tgroup> model for <tgroup> + + %tbl.tgroup.att In ATTLIST of: Additional attributes on the + <tgroup> <tgroup> element + + %tbl.thead.att In ATTLIST of: Additional attributes on the + <thead> <thead> element + + %tbl.tbody.att In ATTLIST of: Additional attributes on the + <tbody> <tbody> element + + %tbl.colspec.att In ATTLIST of: Additional attributes on the + <colspec> <colspec> element + + %tbl.row.mdl In content model of: The model group for the content + <row> model for <row> + + %tbl.row.att In ATTLIST of: Additional attributes on the + <row> <row> element + + %tbl.entry.mdl In content model of: The model group for the content + <entry> model for <entry> + + %tbl.entry.att In ATTLIST of: Additional attributes on the + <entry> <entry> element + + This set of declarations will use the default definitions shown below + for any of these parameter entities that are not declared before this + set of declarations is referenced. +--> + +<!-- These definitions are not directly related to the table model, but are + used in the default CALS table model and may be defined elsewhere (and + prior to the inclusion of this table module) in the referencing DTD. --> + +<!ENTITY % yesorno 'NMTOKEN'> <!-- no if zero(s), yes if any other value --> +<!ENTITY % titles 'title?'> +<!ENTITY % pcd "#PCDATA"> +<!ENTITY % paracon '%pcd;'> <!-- default for use in entry content --> + +<!-- +The parameter entities as defined below change and simplify the CALS table +model as published (as part of the Example DTD) in MIL-HDBK-28001. The +resulting simplified DTD has support from the SGML Open vendors and is +therefore more interoperable among different systems. + +These following declarations provide the Exchange default definitions +for these entities. However, these entities can be redefined (by giving +the appropriate parameter entity declaration(s) prior to the reference +to this Table Model declaration set entity) to fit the needs of the +current application. + +Note, however, that changes may have significant effect on the ability to +interchange table information. These changes may manifest themselves +in useability, presentation, and possible structure information degradation. +--> + +<!ENTITY % tbl.table.name "table"> +<!ENTITY % tbl.table-titles.mdl "%titles;,"> +<!ENTITY % tbl.table-main.mdl "tgroup+"> +<!ENTITY % tbl.table.mdl "%tbl.table-titles.mdl; %tbl.table-main.mdl;"> +<!ENTITY % tbl.table.att " + pgwide %yesorno; #IMPLIED "> +<!ENTITY % bodyatt ""> +<!ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody"> +<!ENTITY % tbl.tgroup.att ""> +<!ENTITY % tbl.thead.att ""> +<!ENTITY % tbl.tbody.att ""> +<!ENTITY % tbl.colspec.att ""> +<!ENTITY % tbl.row.mdl "entry+"> +<!ENTITY % tbl.row.att ""> +<!ENTITY % tbl.entry.mdl "(%paracon;)*"> +<!ENTITY % tbl.entry.att ""> + +<!ENTITY % tbl.frame.attval "top|bottom|topbot|all|sides|none"> +<!ENTITY % tbl.tbody.mdl "row+"> + +<!-- ===== Element and attribute declarations follow. ===== --> + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % tbl.table.name "table" + ENTITY % tbl.table-titles.mdl "%titles;," + ENTITY % tbl.table.mdl "%tbl.table-titles; tgroup+" + ENTITY % tbl.table.att " + pgwide %yesorno; #IMPLIED " +--> + +<!--doc:???--> +<!ELEMENT %tbl.table.name; (%tbl.table.mdl;)> + +<!ATTLIST %tbl.table.name; + frame (%tbl.frame.attval;) #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + %tbl.table.att; + %bodyatt; +> + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody" + ENTITY % tbl.tgroup.att "" +--> + +<!--doc:A wrapper for the main content of a table, or part of a table.--> +<!ELEMENT tgroup (%tbl.tgroup.mdl;) > + +<!ATTLIST tgroup + cols NMTOKEN #REQUIRED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + %tbl.tgroup.att; +> + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % tbl.colspec.att "" +--> + +<!--doc:Specifications for a column in a table.--> +<!ELEMENT colspec EMPTY > + +<!ATTLIST colspec + colnum NMTOKEN #IMPLIED + colname NMTOKEN #IMPLIED + colwidth CDATA #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff NMTOKEN #IMPLIED + %tbl.colspec.att; +> + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % tbl.thead.att "" +--> + +<!--doc:A table header consisting of one or more rows.--> +<!ELEMENT thead (row+)> + +<!ATTLIST thead + valign (top|middle|bottom) #IMPLIED + %tbl.thead.att; +> + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % tbl.tbody.att "" +--> + +<!--doc:A wrapper for the rows of a table or informal table.--> +<!ELEMENT tbody (%tbl.tbody.mdl;)> + +<!ATTLIST tbody + valign (top|middle|bottom) #IMPLIED + %tbl.tbody.att; +> + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % tbl.row.mdl "entry+" + ENTITY % tbl.row.att "" +--> + +<!--doc:A row in a table.--> +<!ELEMENT row (%tbl.row.mdl;)> + +<!ATTLIST row + rowsep %yesorno; #IMPLIED + valign (top|middle|bottom) #IMPLIED + %tbl.row.att; +> + + +<!-- + Default declarations previously defined in this entity and + referenced below include: + ENTITY % paracon "#PCDATA" + ENTITY % tbl.entry.mdl "(%paracon;)*" + ENTITY % tbl.entry.att "" +--> + +<!--doc:A cell in a table.--> +<!ELEMENT entry (%tbl.entry.mdl;)*> + +<!ATTLIST entry + colname NMTOKEN #IMPLIED + namest NMTOKEN #IMPLIED + nameend NMTOKEN #IMPLIED + morerows NMTOKEN #IMPLIED + colsep %yesorno; #IMPLIED + rowsep %yesorno; #IMPLIED + align (left|right|center|justify|char) #IMPLIED + char CDATA #IMPLIED + charoff NMTOKEN #IMPLIED + valign (top|middle|bottom) #IMPLIED + %tbl.entry.att; +> diff --git a/Utilities/xml/xhtml-lat1.ent b/Utilities/xml/xhtml1/xhtml-lat1.ent index ffee223..ffee223 100644 --- a/Utilities/xml/xhtml-lat1.ent +++ b/Utilities/xml/xhtml1/xhtml-lat1.ent diff --git a/Utilities/xml/xhtml-special.ent b/Utilities/xml/xhtml1/xhtml-special.ent index 3a83fb6..3a83fb6 100644 --- a/Utilities/xml/xhtml-special.ent +++ b/Utilities/xml/xhtml1/xhtml-special.ent diff --git a/Utilities/xml/xhtml-symbol.ent b/Utilities/xml/xhtml1/xhtml-symbol.ent index d0c77ee..d0c77ee 100644 --- a/Utilities/xml/xhtml-symbol.ent +++ b/Utilities/xml/xhtml1/xhtml-symbol.ent diff --git a/Utilities/xml/xhtml1-strict.dtd b/Utilities/xml/xhtml1/xhtml1-strict.dtd index e48fbea..e48fbea 100644 --- a/Utilities/xml/xhtml1-strict.dtd +++ b/Utilities/xml/xhtml1/xhtml1-strict.dtd @@ -160,6 +160,9 @@ CMAKE_PROBLEMATIC_FILES="\ CMakeSystem.cmake \ CMakeCCompiler.cmake \ CMakeCXXCompiler.cmake \ + */CMakeSystem.cmake \ + */CMakeCCompiler.cmake \ + */CMakeCXXCompiler.cmake \ Source/cmConfigure.h \ Source/CTest/Curl/config.h \ Utilities/cmexpat/expatConfig.h \ @@ -199,6 +202,9 @@ CMAKE_CXX_SOURCES="\ cmInstallDirectoryGenerator \ cmGeneratedFileStream \ cmGeneratorTarget \ + cmGeneratorExpressionEvaluator \ + cmGeneratorExpressionLexer \ + cmGeneratorExpressionParser \ cmGeneratorExpression \ cmGlobalGenerator \ cmLocalGenerator \ |