A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.
1 cmake_minimum_required(VERSION 2.6) 2 project(Teapot) 3 4 set(Teapot_VERSION_MAJOR 2) 5 set(Teapot_VERSION_MINOR 3) 6 set(Teapot_VERSION_PATCH 0) 7 8 option(ENABLE_HELP "Enable built-in documentation" ON) 9 option(ENABLE_UTF8 "Enable UTF-8 support" ON) 10 option(ENABLE_STATIC "Link FLTK statically" OFF) 11 12 add_library(teapotlib context.c csv.c eval.c func.c htmlio.c latex.c main.c misc.c parser.c sc.c scanner.c sheet.c utf8.c wk1.c xdr.c) 13 14 find_library(LIB_PORTABLEXDR portablexdr) 15 if (NOT LIB_PORTABLEXDR) 16 set(LIB_PORTABLEXDR "") 17 endif () 18 19 find_package(Curses) 20 if (CURSES_FOUND AND ENABLE_UTF8) 21 find_library(LIB_CURSESW ncursesw) 22 if (NOT LIB_CURSESW) 23 find_library(LIB_CURSESW ncursesw5) 24 endif () 25 if (LIB_CURSESW) 26 set(teapot_DEB_DEPENDS ", libncursesw5 (>= 5.6+20071006-3)") 27 set(CURSES_CURSES_LIBRARY ${LIB_CURSESW}) 28 else () 29 set(ENABLE_UTF8 OFF) 30 set(teapot_DEB_DEPENDS ", libncurses5 (>= 5.6+20071006-3)") 31 endif () 32 elseif (CURSES_FOUND) 33 set(teapot_DEB_DEPENDS ", libncurses5 (>= 5.6+20071006-3)") 34 endif () 35 36 if (CURSES_FOUND) 37 include_directories("${CURSES_INCLUDE_DIR}") 38 add_executable(teapot display.c complete.c) 39 target_link_libraries(teapot teapotlib m ${CURSES_CURSES_LIBRARY} ${LIB_PORTABLEXDR}) 40 install(TARGETS teapot DESTINATION bin) 41 endif () 42 43 find_package(FLTK NO_MODULE) 44 if (FLTK_FOUND) 45 include("${FLTK_USE_FILE}") 46 47 fltk_wrap_ui(fteapot fteapot.fl) 48 add_executable(fteapot WIN32 ${fteapot_FLTK_UI_SRCS}) 49 set(fteapot_DEB_DEPENDS ", libstdc++6 (>= 4.1.1), libfltk1.3") 50 if (ENABLE_HELP) 51 set(fteapot_DEB_DEPENDS "${fteapot_DEB_DEPENDS}, libfltk-images1.3") 52 if (ENABLE_STATIC) 53 target_link_libraries(fteapot teapotlib fltk fltk_images ${LIB_PORTABLEXDR}) 54 else () 55 target_link_libraries(fteapot teapotlib fltk_SHARED fltk_images_SHARED ${LIB_PORTABLEXDR}) 56 endif () 57 else () 58 if (ENABLE_STATIC) 59 target_link_libraries(fteapot teapotlib fltk fltk_images ${LIB_PORTABLEXDR}) 60 else () 61 target_link_libraries(fteapot teapotlib fltk_SHARED ${LIB_PORTABLEXDR}) 62 endif () 63 endif () 64 install(TARGETS fteapot DESTINATION bin) 65 endif () 66 67 if (ENABLE_HELP) 68 add_custom_command( 69 OUTPUT teapot.tex teapot.lyx 70 MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/doc/teapot.lyx 71 VERBATIM 72 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/teapot.lyx teapot.lyx 73 COMMAND lyx -e pdflatex -f main teapot.lyx 74 ) 75 add_custom_command( 76 OUTPUT teapot.pdf teapot.aux.old teapot.log teapot.toc 77 MAIN_DEPENDENCY teapot.tex 78 VERBATIM 79 COMMAND pdflatex teapot.tex; diff -q teapot.aux.old teapot.aux && cp teapot.aux teapot.aux.old 80 COMMAND pdflatex teapot.tex; diff -q teapot.aux.old teapot.aux && cp teapot.aux teapot.aux.old 81 ) 82 add_custom_command(OUTPUT teapot.pdf teapot.out MAIN_DEPENDENCY teapot.tex teapot.aux.old VERBATIM COMMAND pdflatex teapot.tex; diff -q teapot.aux.old teapot.aux && cp teapot.aux teapot.aux.old) 83 add_custom_command( 84 OUTPUT html/ html/index.html .latex2html-init 85 MAIN_DEPENDENCY teapot.tex 86 DEPENDS teapot.tex teapot.pdf ${CMAKE_CURRENT_SOURCE_DIR}/doc/.latex2html-init 87 VERBATIM 88 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/.latex2html-init .latex2html-init 89 COMMAND ${CMAKE_COMMAND} -E make_directory html 90 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/contents.png html/ 91 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/next.png html/ 92 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/next_g.png html/ 93 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/prev.png html/ 94 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/prev_g.png html/ 95 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/up.png html/ 96 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/doc/up_g.png html/ 97 COMMAND latex2html teapot.tex 98 ) 99 add_custom_target(pdf DEPENDS teapot.pdf) 100 add_custom_target(html DEPENDS html/index.html) 101 add_custom_target(doc ALL DEPENDS teapot.pdf html/index.html) 102 install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/teapot FILES_MATCHING PATTERN *.html PATTERN *.png) 103 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/teapot.pdf DESTINATION share/doc/teapot) 104 set(HELPFILE "${CMAKE_INSTALL_PREFIX}/share/doc/teapot/index.html") 105 endif () 106 107 install(FILES COPYING README DESTINATION share/doc/teapot) 108 install(FILES teapot.1 DESTINATION share/man/man1) 109 110 add_custom_target(dist 111 COMMAND ${CMAKE_COMMAND} -E remove_directory teapot-${Teapot_VERSION_MAJOR}.${Teapot_VERSION_MINOR}.${Teapot_VERSION_PATCH} 112 COMMAND ${CMAKE_COMMAND} -E make_directory teapot-${Teapot_VERSION_MAJOR}.${Teapot_VERSION_MINOR}.${Teapot_VERSION_PATCH} 113 COMMAND LANG=C bash -c "cp -r ${CMAKE_CURRENT_SOURCE_DIR}/doc ${CMAKE_CURRENT_SOURCE_DIR}/examples ${CMAKE_CURRENT_SOURCE_DIR}/[A-Z]*[A-Z] ${CMAKE_CURRENT_SOURCE_DIR}/*.*[a-z1] teapot-${Teapot_VERSION_MAJOR}.${Teapot_VERSION_MINOR}.${Teapot_VERSION_PATCH}" 114 COMMAND tar czf teapot-${Teapot_VERSION_MAJOR}.${Teapot_VERSION_MINOR}.${Teapot_VERSION_PATCH}.tar.gz teapot-${Teapot_VERSION_MAJOR}.${Teapot_VERSION_MINOR}.${Teapot_VERSION_PATCH} 115 COMMAND setarch ${CPACK_RPM_PACKAGE_ARCHITECTURE} cpack 116 COMMAND bash -c "[ ! -f fteapot ] || for i in Teapot-*-Linux.*; do mv \"\$i\" \"\${i%-Linux.*}-Linux-${CPACK_RPM_PACKAGE_ARCHITECTURE}.\${i##*-Linux.}\"; done" 117 COMMAND bash -c "[ ! -f fteapot.exe -o ${ENABLE_HELP} != OFF ] || { rm Teapot-*.zip; i586-mingw32msvc-strip fteapot.exe && upx -9 -o Teapot-${Teapot_VERSION_MAJOR}.${Teapot_VERSION_MINOR}.${Teapot_VERSION_PATCH}-win32-minimal.exe fteapot.exe; }" 118 VERBATIM 119 ) 120 121 configure_file("${PROJECT_SOURCE_DIR}/config.h.in" "${PROJECT_BINARY_DIR}/config.h") 122 include_directories("${PROJECT_BINARY_DIR}") 123 include_directories("${PROJECT_SOURCE_DIR}") 124 125 set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ARCH-NOTFOUND CACHE ".deb Architecture" STRING) 126 set(CPACK_RPM_PACKAGE_ARCHITECTURE ARCH-NOTFOUND CACHE ".rpm Architecture" STRING) 127 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Table Editor And Planner, Or: Teapot!") 128 set(CPACK_PACKAGE_DESCRIPTION "A three-dimensional spreadsheet specialized in advanced calculations. Comes in GUI (FLTK) and console (curses) flavours.") 129 set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") 130 set(CPACK_PACKAGE_VENDOR "Jörg Walter, http://www.syntax-k.de/projekte/teapot") 131 132 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") 133 set(CPACK_PACKAGE_VERSION_MAJOR "${Teapot_VERSION_MAJOR}") 134 set(CPACK_PACKAGE_VERSION_MINOR "${Teapot_VERSION_MINOR}") 135 set(CPACK_PACKAGE_VERSION_PATCH "${Teapot_VERSION_PATCH}") 136 set(CPACK_PACKAGE_CONTACT "Jörg Walter <info@syntax-k.de>") 137 set(CPACK_PACKAGE_EXECUTABLES "fteapot" "Teapot") 138 set(CPACK_STRIP_FILES TRUE) 139 140 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.11), libgcc1 (>= 1:4.1.1)${teapot_DEB_DEPENDS}${fteapot_DEB_DEPENDS}") 141 include(InstallRequiredSystemLibraries) 142 include(CPack) 143 144 if (NOT CMAKE_BUILD_TYPE) 145 set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) 146 endif ()