Warning, /education/cantor/thirdparty/discount-2.2.6-patched/cmake/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 2.8.12)
0002 
0003 project(DISCOUNT C)
0004 
0005 get_filename_component(_ROOT "${CMAKE_CURRENT_LIST_DIR}" PATH)
0006 
0007 file(READ "${_ROOT}/VERSION" ${PROJECT_NAME}_VERSION)
0008 string(STRIP "${${PROJECT_NAME}_VERSION}" ${PROJECT_NAME}_VERSION)
0009 
0010 set(${PROJECT_NAME}_WITH_TABSTOPS "4" CACHE STRING
0011     "Set tabstops to N characters (default is 4)")
0012 set(TABSTOP "${${PROJECT_NAME}_WITH_TABSTOPS}")
0013 
0014 set(${PROJECT_NAME}_MAKE_INSTALL ON CACHE BOOL
0015     "Set to OFF to disable install rules (default is ON)")
0016 
0017 set(${PROJECT_NAME}_INSTALL_SAMPLES OFF CACHE BOOL
0018     "Set to ON to install sample programs (default is OFF)")
0019 
0020 set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL
0021     "Set to ON to only build markdown library (default is OFF)")
0022 
0023 # Check headers
0024 include(CheckIncludeFile)
0025 check_include_file(libgen.h HAVE_LIBGEN_H)
0026 check_include_file(pwd.h HAVE_PWD_H)
0027 check_include_file(alloca.h HAVE_ALLOCA_H)
0028 check_include_file(malloc.h HAVE_MALLOC_H)
0029 check_include_file(sys/stat.h HAVE_STAT)
0030 
0031 # Types detection (from configure.inc: AC_SCALAR_TYPES ())
0032 include(CheckTypeSize)
0033 check_type_size("unsigned long" SIZEOF_ULONG BUILTIN_TYPES_ONLY)
0034 check_type_size("unsigned int" SIZEOF_UINT BUILTIN_TYPES_ONLY)
0035 check_type_size("unsigned short" SIZEOF_USHORT BUILTIN_TYPES_ONLY)
0036 
0037 if(SIZEOF_ULONG EQUAL 4)
0038     set(DWORD "unsigned long")
0039 elseif(SIZEOF_UINT EQUAL 4)
0040     set(DWORD "unsigned int")
0041 else()
0042     message(FATAL_ERROR "Could not detect DWORD type")
0043 endif()
0044 
0045 if(SIZEOF_UINT EQUAL 2)
0046     set(WORD "unsigned int")
0047 elseif(SIZEOF_USHORT EQUAL 2)
0048     set(WORD "unsigned short")
0049 else()
0050     message(FATAL_ERROR "Could not detect WORD type")
0051 endif()
0052 
0053 set(BYTE "unsigned char")
0054 
0055 # Check symbols
0056 include(CheckSymbolExists)
0057 foreach(_symbol
0058         bzero
0059         strcasecmp _stricmp
0060         strncasecmp _strnicmp)
0061     string(TOUPPER ${_symbol} _SYMBOL)
0062     check_symbol_exists(${_symbol} string.h HAVE_${_SYMBOL})
0063 endforeach()
0064 check_symbol_exists(random stdlib.h HAVE_RANDOM)
0065 check_symbol_exists(srandom stdlib.h HAVE_SRANDOM)
0066 check_symbol_exists(getpwuid pwd.h HAVE_GETPWUID)
0067 check_symbol_exists(basename libgen.h HAVE_BASENAME)
0068 check_symbol_exists(fchdir unistd.h HAVE_FCHDIR)
0069 if(HAVE_STAT)
0070     check_symbol_exists(S_ISCHR sys/stat.h HAVE_S_ISCHR)
0071     check_symbol_exists(S_ISFIFO sys/stat.h HAVE_S_ISFIFO)
0072     check_symbol_exists(S_ISSOCK sys/stat.h HAVE_S_ISSOCK)
0073 endif()
0074 
0075 if(NOT HAVE_BZERO)
0076     set(DEFINE_BZERO "#define bzero(p, n) memset(p, 0, n)")
0077 endif()
0078 
0079 if(NOT HAVE_STRCASECMP)
0080     if(HAVE__STRICMP)
0081         set(DEFINE_STRCASECMP "#define strcasecmp _stricmp")
0082     else()
0083         set(DEFINE_STRCASECMP "#error The symbol strcasecmp is not defined.")
0084     endif()
0085 endif()
0086 
0087 if(NOT HAVE_STRNCASECMP)
0088     if(HAVE__STRNICMP)
0089         set(DEFINE_STRNCASECMP "#define strncasecmp _strnicmp")
0090     else()
0091         set(DEFINE_STRNCASECMP "#error The symbol strncasecmp is not defined.")
0092     endif()
0093 endif()
0094 
0095 if(NOT HAVE_S_ISCHR OR NOT HAVE_S_ISFIFO OR NOT HAVE_S_ISSOCK)
0096     set(HAVE_STAT "")
0097 endif()
0098 
0099 configure_file(config.h.in
0100     "${_ROOT}/config.h"
0101     @ONLY)
0102 
0103 configure_file("${_ROOT}/version.c.in"
0104     "${_ROOT}/version.c"
0105     @ONLY)
0106 set_property(SOURCE "${_ROOT}/version.c" APPEND PROPERTY COMPILE_DEFINITIONS
0107     BRANCH=""
0108     VERSION="${${PROJECT_NAME}_VERSION}")
0109 
0110 configure_file("${_ROOT}/mkdio.h.in"
0111     "${_ROOT}/mkdio.h"
0112     @ONLY)
0113 
0114 include_directories("${_ROOT}")
0115 
0116 add_executable(mktags
0117     "${_ROOT}/mktags.c")
0118 
0119 add_custom_command(OUTPUT "${_ROOT}/blocktags"
0120     COMMAND mktags > blocktags
0121     WORKING_DIRECTORY "${_ROOT}")
0122 
0123 add_library(libmarkdown
0124     "${_ROOT}/mkdio.c"
0125     "${_ROOT}/markdown.c"
0126     "${_ROOT}/dumptree.c"
0127     "${_ROOT}/generate.c"
0128     "${_ROOT}/resource.c"
0129     "${_ROOT}/docheader.c"
0130     "${_ROOT}/version.c"
0131     "${_ROOT}/toc.c"
0132     "${_ROOT}/css.c"
0133     "${_ROOT}/xml.c"
0134     "${_ROOT}/Csio.c"
0135     "${_ROOT}/xmlpage.c"
0136     "${_ROOT}/basename.c"
0137     "${_ROOT}/emmatch.c"
0138     "${_ROOT}/github_flavoured.c"
0139     "${_ROOT}/setup.c"
0140     "${_ROOT}/blocktags" "${_ROOT}/tags.c"
0141     "${_ROOT}/html5.c"
0142     "${_ROOT}/flags.c")
0143 
0144 if(NOT MSVC)
0145     set_target_properties(libmarkdown PROPERTIES
0146         OUTPUT_NAME markdown)
0147 endif()
0148 
0149 if(NOT ${PROJECT_NAME}_ONLY_LIBRARY)
0150     add_library(common OBJECT
0151         "${_ROOT}/pgm_options.c"
0152         "${_ROOT}/gethopt.c")
0153 
0154     add_executable(markdown
0155         "${_ROOT}/main.c"
0156         $<TARGET_OBJECTS:common>)
0157 
0158     target_link_libraries(markdown PRIVATE libmarkdown)
0159 
0160     add_executable(mkd2html
0161         "${_ROOT}/mkd2html.c"
0162         $<TARGET_OBJECTS:common>
0163         "${_ROOT}/notspecial.c")
0164 
0165     target_link_libraries(mkd2html PRIVATE libmarkdown)
0166 
0167     add_executable(makepage
0168         "${_ROOT}/makepage.c"
0169         $<TARGET_OBJECTS:common>)
0170 
0171     target_link_libraries(makepage PRIVATE libmarkdown)
0172 endif()
0173 
0174 if(${PROJECT_NAME}_MAKE_INSTALL)
0175     string(TOLOWER ${PROJECT_NAME} _PACKAGE_NAME)
0176     include(GNUInstallDirs)
0177     if(NOT DEFINED CMAKE_INSTALL_CMAKEDIR)
0178         set(CMAKE_INSTALL_CMAKEDIR
0179             "${CMAKE_INSTALL_LIBDIR}/cmake/${_PACKAGE_NAME}"
0180             CACHE STRING "CMake packages")
0181     endif()
0182     install(FILES "${_ROOT}/mkdio.h"
0183         DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
0184     target_include_directories(libmarkdown INTERFACE
0185       $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
0186     )
0187     set(_TARGETS libmarkdown markdown)
0188     if(${PROJECT_NAME}_INSTALL_SAMPLES)
0189         list(APPEND _TARGETS mkd2html makepage)
0190     endif()
0191     install(TARGETS ${_TARGETS} EXPORT ${_PACKAGE_NAME}-targets
0192         RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
0193         LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
0194         ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
0195     install(EXPORT ${_PACKAGE_NAME}-targets
0196         NAMESPACE ${_PACKAGE_NAME}::
0197         DESTINATION "${CMAKE_INSTALL_CMAKEDIR}")
0198     include(CMakePackageConfigHelpers)
0199     write_basic_package_version_file(
0200       "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config-version.cmake"
0201       VERSION ${${PROJECT_NAME}_VERSION}
0202       COMPATIBILITY AnyNewerVersion
0203     )
0204     configure_file("${CMAKE_CURRENT_LIST_DIR}/discount-config.cmake.in"
0205         "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config.cmake"
0206         @ONLY)
0207     install(FILES
0208         "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config.cmake"
0209         "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config-version.cmake"
0210         DESTINATION "${CMAKE_INSTALL_CMAKEDIR}")
0211     unset(_TARGETS)
0212     unset(_PACKAGE_NAME)
0213 endif()
0214 
0215 unset(_ROOT)