"Fossies" - the Fresh Open Source Software Archive

Member "TeXmacs-2.1.2-src/CMakeLists.txt" (5 May 2022, 29203 Bytes) of package /linux/misc/TeXmacs-2.1.2-src.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "CMakeLists.txt": 2.1.1_vs_2.1.2.

    1 
    2 ###############################################################################
    3 #
    4 # MODULE      : CMakeLists.txt
    5 # DESCRIPTION : CMake file for TeXmacs
    6 # COPYRIGHT   : (C) 2008-2009  Massimiliano Gubinelli
    7 #               (C) 2017-2020  Darcy Shen
    8 #
    9 # This software falls under the GNU general public license version 3 or later.
   10 # It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
   11 # in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
   12 
   13 
   14 # The name of our project is "TEXMACS". CMakeLists files in this project can 
   15 # refer to the root source directory of the project as ${TEXMACS_SOURCE_DIR} and 
   16 # to the root binary directory of the project as ${TEXMACS_BINARY_DIR}. 
   17 
   18 
   19 ### --------------------------------------------------------------------
   20 ### Basic settings (project independent)
   21 ### --------------------------------------------------------------------
   22 
   23 cmake_minimum_required (VERSION 3.13)
   24 
   25 set (CMAKE_CXX_STANDARD 11)
   26 set (CMAKE_AUTOMOC ON)
   27 set (CMAKE_INCLUDE_CURRENT_DIR ON)
   28 
   29 if (NOT CMAKE_BUILD_TYPE)
   30   set (CMAKE_BUILD_TYPE Debug CACHE STRING
   31     "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
   32     FORCE)
   33 endif (NOT CMAKE_BUILD_TYPE)
   34 
   35 #INCLUDE(CMakeDetermineSystem)
   36 
   37 # Configure CCache if available
   38 find_program (CCACHE_FOUND ccache)
   39 if (CCACHE_FOUND)
   40   set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
   41   set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
   42 endif (CCACHE_FOUND)
   43 
   44 
   45 ### --------------------------------------------------------------------
   46 ### Project name 
   47 ### --------------------------------------------------------------------
   48 
   49 project (TEXMACS CXX C) # check for C/C++ compiler
   50 
   51 set (PACKAGE TeXmacs)
   52 set (CMAKE_MODULE_PATH ${TEXMACS_SOURCE_DIR}/cmake)
   53 
   54 set (VERSION_MAJOR "2")
   55 set (VERSION_MINOR "1")
   56 set (VERSION_BUILD "2")
   57 #set (TEXMACS_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD})
   58 set (TEXMACS_VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
   59 
   60 set (DEVEL_VERSION ${TEXMACS_VERSION})
   61 set (DEVEL_RELEASE "1")
   62 set (STABLE_VERSION ${TEXMACS_VERSION})
   63 set (STABLE_RELEASE "1")
   64 set (TEXMACS_REVISION ${TEXMACS_VERSION})
   65 
   66 
   67 ### --------------------------------------------------------------------
   68 ### Options
   69 ### --------------------------------------------------------------------
   70 if (NOT TEXMACS_GUI)
   71   if (APPLE)
   72     set (TEXMACS_GUI "Qt4" CACHE STRING "TeXmacs Gui (Qt, X11, Aqua)")
   73   else (APPLE)
   74     set (TEXMACS_GUI "Qt" CACHE STRING "TeXmacs Gui (Qt, X11, Aqua)")
   75   endif (APPLE)
   76 endif (NOT TEXMACS_GUI)
   77 
   78 option (QTPIPES "use Qt pipes" ON)
   79 
   80 option (USE_SQLITE3 "Use SQLite3" ON)
   81 if (USE_SQLITE3)
   82   find_package (SQLite3)
   83   option (LINKED_SQLITE3 "Use Linked SQLite3" ON)
   84 endif (USE_SQLITE3)
   85 
   86 option (USE_FREETYPE "use Freetype" ON)
   87 if (USE_FREETYPE)
   88   find_package (Freetype)
   89   option (LINKED_FREETYPE "linked Freetype" ON)
   90 endif (USE_FREETYPE)
   91 
   92 option (USE_CAIRO "use Cairo" OFF)
   93 if (USE_CAIRO)
   94   find_package(Cairo)
   95   option (LINKED_CAIRO "linked Cairo" ON)
   96 endif (USE_CAIRO)
   97 
   98 option (USE_IMLIB2 "use Imlib2" OFF)
   99 if (USE_IMLIB2)
  100   find_package(Imlib2)
  101   option (LINKED_IMLIB2 "linked Imlib2" ON)
  102 endif (USE_IMLIB2)
  103 
  104 option (USE_SPARKLE "use Sparkle" OFF)
  105 
  106 option (PDFHUMMUS_NO_TIFF "Disable TIFF in PDF Hummus" ON)
  107 
  108 option (USE_GMP "use GMP" ON)
  109 if (USE_GMP)
  110   find_package (GMP)
  111 endif (USE_GMP)
  112 
  113 if (WIN32)
  114   option (OS_MINGW "Using OS MINGW" ON)
  115 else (WIN32)
  116   option (OS_MINGW "Using OS MINGW" OFF)
  117 endif (WIN32)
  118 
  119 if (APPLE)
  120   set (MACOSX_EXTENSIONS 1)
  121   set (OS_MACOS 1)
  122   option (MACOS_QT_MENU "Disable MacOS native menu" OFF)
  123 endif (APPLE)
  124 
  125 
  126 ### --------------------------------------------------------------------
  127 ### Include standard modules
  128 ### --------------------------------------------------------------------
  129 
  130 include (CheckFunctionExists)
  131 include (CheckLibraryExists)
  132 include (CheckIncludeFile)
  133 include (CheckTypeSize)
  134 include (FindPkgConfig)
  135 include (CheckCSourceCompiles)
  136 include (FindX11)
  137 
  138 
  139 ### --------------------------------------------------------------------
  140 ### Check for standard functionalities
  141 ### --------------------------------------------------------------------
  142 check_type_size (FILE HAVE_FILE)
  143 check_type_size (intptr_t HAVE_INTPTR_T)
  144 check_type_size (time_t HAVE_TIME_T)
  145 check_include_file (inttypes.h HAVE_INTTYPES_H)
  146 check_include_file (memory.h HAVE_MEMORY_H)
  147 check_include_file (stdlib.h HAVE_STDLIB_H)
  148 check_include_file (strings.h HAVE_STRINGS_H)
  149 check_include_file (string.h HAVE_STRING_H)
  150 check_include_file (sys/stat.h HAVE_SYS_STAT_H)
  151 check_include_file (unistd.h HAVE_UNISTD_H)
  152 check_include_file (X11/Xlib.h HAVE_X11_XLIB_H)
  153 check_include_file (X11/Xutil.h HAVE_X11_XUTIL_H)
  154 check_include_file (pty.h HAVE_PTY_H)
  155 check_include_file (util.h HAVE_UTIL_H)
  156 check_function_exists (gettimeofday HAVE_GETTIMEOFDAY)
  157 
  158 
  159 ### --------------------------------------------------------------------
  160 ### Check for dl library
  161 ### --------------------------------------------------------------------
  162 
  163 check_function_exists (dlopen HAVE_DLOPEN)
  164 
  165 if (NOT ${HAVE_DLOPEN})
  166   check_library_exists (dl dlopen "" HAVE_DLOPEN)
  167   if (${HAVE_DLOPEN})
  168     set (CONFIG_BDL "-ldl")
  169   endif (${HAVE_DLOPEN})
  170 endif (NOT ${HAVE_DLOPEN})
  171 
  172 if (NOT ${HAVE_DLOPEN})
  173   check_library_exists (dld dld_link "" HAVE_DLOPEN)
  174   if (${HAVE_DLOPEN})
  175     set (CONFIG_BDL "-ldl")
  176   endif (${HAVE_DLOPEN})
  177 endif (NOT ${HAVE_DLOPEN})
  178 
  179 if (NOT ${HAVE_DLOPEN})
  180   check_function_exists (shl_load HAVE_DLOPEN)
  181   if (${HAVE_DLOPEN})
  182     set (CONFIG_BDL "-ldl")
  183   endif (${HAVE_DLOPEN})
  184 endif (NOT ${HAVE_DLOPEN})
  185 
  186 
  187 if (${HAVE_DLOPEN})
  188   #SET(TM_DYNAMIC_LINKING 1) # dynamic linking works
  189 endif (${HAVE_DLOPEN})
  190 
  191 ### --------------------------------------------------------------------
  192 ### Handle different systems case by case
  193 ### --------------------------------------------------------------------
  194 
  195 set (CONFIG_OS "GNU_LINUX")
  196 set (CONFIG_OS_SUFFIX "gnu-linux")
  197 set (CONFIG_CXXTEMPLATE "")
  198 set (CONFIG_STD_SETENV "#define STD_SETENV")
  199 set (CONFIG_SO "so")
  200 set (CONFIG_LIB_PATH "LD_LIBRARY_PATH")
  201 set (CONFIG_CHMOD "chmod -f")
  202 set (CONFIG_CXXOPTIMIZE "-O2")
  203 set (CONFIG_BSTATIC "-Wl,-Bstatic")
  204 set (CONFIG_BSHARED "-Wl,-Bdynamic")
  205 set (CONFIG_BFLAGS "")
  206 set (CONFIG_BPATH "-Wl,-rpath,")
  207 set (CONFIG_WORD_LENGTH "4")
  208 set (CONFIG_WORD_LENGTH_INC "3")
  209 set (CONFIG_WORD_MASK "0xfffffffc")
  210 set (CONFIG_MAX_FAST "260 // WORD_LENGTH more than power of 2")
  211 
  212 check_type_size ("void*" SIZE_OF_VOIDP)
  213 
  214 message (STATUS "Check if we are on a 64-bits computer")
  215 if (${SIZE_OF_VOIDP} EQUAL 8)
  216   set (CONFIG_WORD_LENGTH "8")
  217   set (CONFIG_WORD_LENGTH_INC "7")
  218   set (CONFIG_WORD_MASK "0xfffffffffffffff8")
  219   set (CONFIG_MAX_FAST "264 // WORD_LENGTH more than power of 2")
  220 endif (${SIZE_OF_VOIDP} EQUAL 8)
  221 
  222 
  223 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
  224   message (STATUS "final adjustments for an Intel or AMD GNU/Linux host")
  225   set (CONFIG_CXXOPTIMIZE "-O3 -fexpensive-optimizations")
  226 endif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
  227 
  228 if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
  229   message (STATUS "final adjustments for an Intel or AMD GNU/BSD host")
  230   set (CONFIG_CXXOPTIMIZE "-O3 -fexpensive-optimizations")
  231 endif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
  232 
  233 if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
  234   message (STATUS "final adjustments for an Intel or AMS Solaris host")
  235   set (CONFIG_CXXOPTIMIZE "-O3 -fexpensive-optimizations")
  236   set (CONFIG_CXXOPTIMIZE "-O3")
  237   set (CONFIG_BPATH "-Wl,-R,")
  238 #  SET(X11_LDFLAGS "${X_LIBS} -lXext -lX11 -lsocket")
  239 endif (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
  240 
  241 if (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN_NT-5.1")
  242   message (STATUS "final adjustments for cygwin host")
  243   set (CONFIG_OS "CYGWIN")
  244   set (CONFIG_BFLAGS "-Wl,-stack,8388608")
  245 endif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN_NT-5.1")
  246 
  247 ### --------------------------------------------------------------------
  248 ### Package Data
  249 ### --------------------------------------------------------------------
  250 
  251 set (PACKAGE_BUGREPORT 1)
  252 set (PACKAGE_NAME 1)
  253 set (PACKAGE_STRING 1)
  254 set (PACKAGE_TARNAME 1)
  255 set (PACKAGE_URL 1)
  256 set (PACKAGE_VERSION 1)
  257 
  258 ### --------------------------------------------------------------------
  259 ### Memory allocation options
  260 ### --------------------------------------------------------------------
  261 
  262 #if(${DISABLE_FASTALLOC})
  263 #  set(NO_FAST_ALLOC 1)
  264 #endif(${DISABLE_FASTALLOC})
  265 
  266 
  267 ### --------------------------------------------------------------------
  268 ### Experimental options
  269 ### --------------------------------------------------------------------
  270 
  271 #  SET(EXPERIMENTAL 1)
  272 
  273 ### --------------------------------------------------------------------
  274 ###  Test for Libraries
  275 ### --------------------------------------------------------------------
  276 
  277 find_package (PNG)
  278 find_package (Iconv)
  279 find_package (ZLIB)
  280 find_package (JPEG)
  281 #FIND_PACKAGE(Axel)
  282 
  283 ### --------------------------------------------------------------------
  284 ###  Some Guile related adjustements
  285 ### --------------------------------------------------------------------
  286 
  287 # Allow for selection of Scheme implementation
  288 set(SCHEME_IMPL "default" CACHE STRING "Implementation of Scheme to compile for.")
  289 set_property(CACHE SCHEME_IMPL PROPERTY STRINGS default guile-1.8 guile-2.0 guile-2.2 guile-3.0 chez s7)
  290 message(STATUS "Looking for Scheme implementation: " ${SCHEME_IMPL})
  291 
  292 if (${SCHEME_IMPL} STREQUAL "default")
  293   # Find Guile and determine which version we are using.
  294   # Look for guile versions in this order: 1.8 > 3.0 > 2.2 > 2.0
  295   pkg_search_module (Guile REQUIRED guile-1.8 guile-3.0 guile-2.2 guile-2.0)
  296   if (NOT Guile_FOUND)
  297     message(FATAL_ERROR "Guile not installed or pkg-config cannot detect it.")
  298   endif ()
  299 elseif ( (${SCHEME_IMPL} STREQUAL "guile-1.8")
  300          OR (${SCHEME_IMPL} STREQUAL "guile-2.0")
  301          OR (${SCHEME_IMPL} STREQUAL "guile-2.2")
  302          OR (${SCHEME_IMPL} STREQUAL "guile-3.0") )
  303   pkg_check_modules (Guile REQUIRED ${SCHEME_IMPL})
  304 elseif ((${SCHEME_IMPL} STREQUAL "chez") OR (${SCHEME_IMPL} STREQUAL "s7"))
  305   message(FATAL_ERROR "Selected Scheme implementation not implemented yet.")
  306 else ()
  307   message(FATAL_ERROR "Incorrect scheme implementation selected.")
  308 endif()
  309 
  310 if (Guile_VERSION VERSION_LESS 2.0)
  311   set (CONFIG_GUILE_SERIAL "C")
  312   option (GUILE_C "Using Guile 1.8.x" ON)
  313   message (STATUS "Using GUILE_C: " ${Guile_VERSION})
  314 else ()
  315   set (CONFIG_GUILE_SERIAL "D")
  316   option (GUILE_D "Using Guile 2.x or 3.x" ON)
  317   set (SCM_SIZET size_t)
  318   message (STATUS "Using GUILE_D: " ${Guile_VERSION})
  319 endif ()
  320 
  321 set (CMAKE_REQUIRED_FLAGS "-Werror ${Guile_CFLAGS}")
  322 set (CMAKE_REQUIRED_INCLUDES ${Guile_INCLUDE_DIRS})
  323 set (guile_str_size_t size_t)
  324 
  325 message (STATUS "Checking whether ... arguments behave correctly")
  326 
  327 check_c_source_compiles ("
  328 #include <guile/gh.h>
  329 #include <libguile.h>
  330 typedef SCM (*FN)(...);
  331 static SCM identity (SCM x) { return x; }
  332 void declare () { gh_new_procedure (\"identity\", (FN) identity, 1, 0, 0); }
  333 int main() { return 0; }
  334 " _guile_dots_test)
  335 
  336 if (_guile_dots_test)
  337   set (DOTS_OK 1)
  338 else (_guile_dots_test)
  339   set (DOTS_OK)
  340 endif (_guile_dots_test)
  341 
  342 ### --------------------------------------------------------------------
  343 ### Generate configure headers
  344 ### --------------------------------------------------------------------
  345 set (DEBUG_ASSERT 1)
  346 
  347 set (USE_GS 1)
  348 if (WIN32)
  349   set (GS_EXE bin/gs.exe)
  350 else (WIN32)
  351   set (GS_EXE /usr/bin/gs)
  352 endif (WIN32)
  353 set (GS_FONTS ../share/ghostscript/fonts:/usr/share/fonts:)
  354 set (GS_LIB ../share/ghostscript/9.06/lib:)
  355 
  356 set (GUILE_NUM 1)
  357 set (PDF_RENDERER 1)
  358 set (SIZEOF_VOID_P 8)
  359 set (STDC_HEADERS 1)
  360 
  361 if (WIN32)
  362   option (USE_STACK_TRACE "Use stack trace" OFF)
  363 else (WIN32)
  364   option (USE_STACK_TRACE "Use stack trace" ON)
  365 endif (WIN32)
  366 
  367 set (CONFIG_STD_SETENV "#define STD_SETENV")
  368 set (tm_orig ${TEXMACS_SOURCE_DIR})
  369 set (CONFIG_HOST_OS "linux-gnu") # TODO: should not be hard-coded
  370 set (CONFIG_HOST_VENDOR "pc") # TODO: should not be hard-coded
  371 set (CONFIG_HOST_CPU ${CMAKE_SYSTEM_PROCESSOR})
  372 set (CONFIG_USER $ENV{USER})
  373 string (TIMESTAMP CONFIG_DATE)
  374 set (tm_devel TeXmacs-${DEVEL_VERSION})
  375 set (tm_stable TeXmacs-${STABLE_VERSION})
  376 set (tm_devel_release ${tm_devel}-${DEVEL_RELEASE})
  377 set (tm_stable_release ${tm_stable}-${STABLE_RELEASE})
  378 
  379 set (prefix ${CMAKE_INSTALL_PREFIX})
  380 set (exec_prefix ${prefix})
  381 set (datarootdir ${prefix}/share)
  382 set (datadir ${datarootdir})
  383 set (tmdata ${datarootdir}/TeXmacs)
  384 set (tmbin ${exec_prefix}/lib/texmacs/TeXmacs)
  385 
  386 configure_file (${TEXMACS_SOURCE_DIR}/src/System/config.h.cmake ${TEXMACS_BINARY_DIR}/src/System/config.h)
  387 configure_file (${TEXMACS_SOURCE_DIR}/src/System/tm_configure.hpp.cmake ${TEXMACS_BINARY_DIR}/src/System/tm_configure.hpp)
  388 
  389 set (CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -include ${TEXMACS_BINARY_DIR}/src/System/config.h")
  390 
  391 ### --------------------------------------------------------------------
  392 ### the include dirs
  393 ### --------------------------------------------------------------------
  394 set (TeXmacs_Include_Dirs
  395   ${TEXMACS_SOURCE_DIR}/src/Data/Convert
  396   ${TEXMACS_SOURCE_DIR}/src/Data/Document
  397   ${TEXMACS_SOURCE_DIR}/src/Data/Drd
  398   ${TEXMACS_SOURCE_DIR}/src/Data/History
  399   ${TEXMACS_SOURCE_DIR}/src/Data/Observers
  400   ${TEXMACS_SOURCE_DIR}/src/Data/Parser
  401   ${TEXMACS_SOURCE_DIR}/src/Data/String
  402   ${TEXMACS_SOURCE_DIR}/src/Data/Tree
  403   ${TEXMACS_SOURCE_DIR}/src/Edit
  404   ${TEXMACS_SOURCE_DIR}/src/Edit/Editor
  405   ${TEXMACS_SOURCE_DIR}/src/Edit/Interface
  406   ${TEXMACS_SOURCE_DIR}/src/Edit/Modify
  407   ${TEXMACS_SOURCE_DIR}/src/Edit/Process
  408   ${TEXMACS_SOURCE_DIR}/src/Edit/Replace
  409   ${TEXMACS_SOURCE_DIR}/src/Graphics/Bitmap_fonts
  410   ${TEXMACS_SOURCE_DIR}/src/Graphics/Colors
  411   ${TEXMACS_SOURCE_DIR}/src/Graphics/Fonts
  412   ${TEXMACS_SOURCE_DIR}/src/Graphics/Gui
  413   ${TEXMACS_SOURCE_DIR}/src/Graphics/Handwriting
  414   ${TEXMACS_SOURCE_DIR}/src/Graphics/Mathematics
  415   ${TEXMACS_SOURCE_DIR}/src/Graphics/Pictures
  416   ${TEXMACS_SOURCE_DIR}/src/Graphics/Renderer
  417   ${TEXMACS_SOURCE_DIR}/src/Graphics/Spacial
  418   ${TEXMACS_SOURCE_DIR}/src/Graphics/Types
  419   ${TEXMACS_SOURCE_DIR}/src/Kernel/Abstractions
  420   ${TEXMACS_SOURCE_DIR}/src/Kernel/Containers
  421   ${TEXMACS_SOURCE_DIR}/src/Kernel/Types
  422   ${TEXMACS_SOURCE_DIR}/src/Plugins
  423   ${TEXMACS_SOURCE_DIR}/src/Plugins/Pdf/LibAesgm
  424   ${TEXMACS_SOURCE_DIR}/src/Scheme
  425   ${TEXMACS_SOURCE_DIR}/src/Scheme/Guile
  426   ${TEXMACS_SOURCE_DIR}/src/Scheme/Scheme
  427   ${TEXMACS_SOURCE_DIR}/src/Style/Environment
  428   ${TEXMACS_SOURCE_DIR}/src/Style/Evaluate
  429   ${TEXMACS_SOURCE_DIR}/src/Style/Memorizer
  430   ${TEXMACS_SOURCE_DIR}/src/System
  431   ${TEXMACS_SOURCE_DIR}/src/System/Boot
  432   ${TEXMACS_SOURCE_DIR}/src/System/Classes
  433   ${TEXMACS_SOURCE_DIR}/src/System/Files
  434   ${TEXMACS_SOURCE_DIR}/src/System/Language
  435   ${TEXMACS_SOURCE_DIR}/src/System/Link
  436   ${TEXMACS_SOURCE_DIR}/src/System/Misc
  437   ${TEXMACS_SOURCE_DIR}/src/Texmacs
  438   ${TEXMACS_SOURCE_DIR}/src/Texmacs/Data
  439   ${TEXMACS_SOURCE_DIR}/src/Typeset
  440   ${TEXMACS_SOURCE_DIR}/src/Typeset/Bridge
  441   ${TEXMACS_SOURCE_DIR}/src/Typeset/Concat
  442   ${TEXMACS_SOURCE_DIR}/src/Typeset/Page
  443   ${TEXMACS_SOURCE_DIR}/TeXmacs/include 
  444   ${TEXMACS_BINARY_DIR}/src/System/ 
  445 )
  446 
  447 if (WIN32)
  448   set (TeXmacs_Include_Dirs ${TeXmacs_Include_Dirs}
  449     ${TEXMACS_SOURCE_DIR}/src/Plugins/Windows
  450     ${TEXMACS_SOURCE_DIR}/src/Plugins/Windows/nowide
  451   )
  452 else (WIN32)
  453 endif (WIN32)
  454 
  455 set (TeXmacs_Include_Dirs ${TeXmacs_Include_Dirs}
  456   ${Guile_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ${Cairo_INCLUDE_DIRS}
  457   ${IMLIB2_INCLUDE_DIR} ${GMP_INCLUDES}
  458 )
  459 
  460 ### --------------------------------------------------------------------
  461 ### the main sources
  462 ### --------------------------------------------------------------------
  463 file (GLOB_RECURSE TeXmacs_Base_SRCS
  464   "${TEXMACS_SOURCE_DIR}/src/Data/*.cpp"
  465   "${TEXMACS_SOURCE_DIR}/src/Edit/*.cpp"
  466   "${TEXMACS_SOURCE_DIR}/src/Graphics/*.cpp"
  467   "${TEXMACS_SOURCE_DIR}/src/Kernel/*.cpp"
  468   "${TEXMACS_SOURCE_DIR}/src/Scheme/Scheme/*.cpp"
  469   "${TEXMACS_SOURCE_DIR}/src/Scheme/Guile/*.cpp"
  470   "${TEXMACS_SOURCE_DIR}/src/System/*.cpp"
  471   "${TEXMACS_SOURCE_DIR}/src/Texmacs/Data/*.cpp"
  472   "${TEXMACS_SOURCE_DIR}/src/Texmacs/Server/*.cpp"
  473   "${TEXMACS_SOURCE_DIR}/src/Texmacs/Window/*.cpp"
  474   "${TEXMACS_SOURCE_DIR}/src/Typeset/*.cpp"
  475 )
  476 
  477 file (GLOB_RECURSE TeXmacs_Std_Plugins_SRCS
  478   "${TEXMACS_SOURCE_DIR}/src/Plugins/Axel/*.cpp"
  479   "${TEXMACS_SOURCE_DIR}/src/Plugins/Bibtex/*.cpp"
  480   "${TEXMACS_SOURCE_DIR}/src/Plugins/Cairo/*.cpp"
  481   "${TEXMACS_SOURCE_DIR}/src/Plugins/Database/*.cpp"
  482   "${TEXMACS_SOURCE_DIR}/src/Plugins/Freetype/*.cpp"
  483   "${TEXMACS_SOURCE_DIR}/src/Plugins/Pdf/*.cpp"
  484   "${TEXMACS_SOURCE_DIR}/src/Plugins/Pdf/*.c"
  485   "${TEXMACS_SOURCE_DIR}/src/Plugins/Ghostscript/*.cpp"
  486   "${TEXMACS_SOURCE_DIR}/src/Plugins/Imlib2/*.cpp"
  487   "${TEXMACS_SOURCE_DIR}/src/Plugins/Ispell/*.cpp"
  488   "${TEXMACS_SOURCE_DIR}/src/Plugins/Metafont/*.cpp"
  489   "${TEXMACS_SOURCE_DIR}/src/Plugins/LaTeX_Preview/*.cpp"
  490   "${TEXMACS_SOURCE_DIR}/src/Plugins/Mplayer/*.cpp"
  491   "${TEXMACS_SOURCE_DIR}/src/Plugins/Openssl/*.cpp"
  492   "${TEXMACS_SOURCE_DIR}/src/Plugins/Sqlite3/*.cpp"
  493   "${TEXMACS_SOURCE_DIR}/src/Plugins/Updater/*.cpp"
  494 )
  495 
  496 file (GLOB_RECURSE TeXmacs_Style_SRCS
  497   "${TEXMACS_SOURCE_DIR}/src/Style/*.cpp"
  498 )
  499 
  500 set (TeXmacs_All_SRCS ${TeXmacs_Base_SRCS}  ${TeXmacs_Std_Plugins_SRCS})
  501 
  502 ### --------------------------------------------------------------------
  503 ### GUI Interfaces
  504 ### --------------------------------------------------------------------
  505 
  506 file (GLOB_RECURSE TeXmacs_Widkit_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Widkit/*.cpp")
  507 file (GLOB_RECURSE TeXmacs_X11_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/X11/*.cpp")
  508 file (GLOB_RECURSE TeXmacs_Qt_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/*.cpp")
  509 
  510 set (TeXmacs_Qt_Moc_HDRS
  511   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMApplication.hpp
  512   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMFileDialog.hpp
  513   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMGuiHelper.hpp
  514   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMInteractiveInputHelper.hpp
  515   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMInteractivePrompt.hpp
  516   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMMenuHelper.hpp
  517   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMPipeLink.hpp
  518   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMPrintDialog.hpp
  519   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMPrinterSettings.hpp
  520   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMScrollView.hpp
  521   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMSockets.hpp
  522   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMStyle.hpp
  523   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMTreeModel.hpp
  524   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMWidget.hpp
  525   ${TEXMACS_SOURCE_DIR}/src/Plugins/Qt/QTMWindow.hpp
  526 )
  527 
  528 set (TeXmacs_Cocoa_SRCS
  529   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_dialogues.mm
  530   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_gui.mm
  531   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_menu.mm
  532   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_renderer.mm
  533   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_utilities.mm
  534   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/aqua_widget.mm
  535   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/mac_utilities.mm
  536   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/TMButtonsController.m
  537   ${TEXMACS_SOURCE_DIR}/src/Plugins/Cocoa/TMView.mm
  538 )
  539 
  540 set (TeXmacs_MacOS_SRCS
  541   ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/HIDRemote.m
  542   ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_images.mm
  543   ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_spellservice.mm
  544   ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_utilities.mm
  545 )
  546 
  547 ### --------------------------------------------------------------------
  548 ### Determine TeXmacs_Libraries
  549 ### --------------------------------------------------------------------
  550 
  551 set (TeXmacs_Libraries
  552   ${Guile_LIBRARIES}
  553   ${ZLIB_LIBRARIES}
  554   ${JPEG_LIBRARIES}
  555   ${PNG_LIBRARIES}
  556   -lpthread
  557 )
  558 
  559 if (LINKED_CAIRO)
  560   set (TeXmacs_Libraries ${TeXmacs_Libraries} ${CAIRO_LIBRARIES})
  561 endif (LINKED_CAIRO)
  562 
  563 if (LINKED_SQLITE3)
  564   set (TeXmacs_Libraries ${TeXmacs_Libraries} ${SQLITE3_LIBRARIES})
  565 endif (LINKED_SQLITE3)
  566 
  567 if (LINKED_FREETYPE)
  568   set (TeXmacs_Libraries ${TeXmacs_Libraries} ${FREETYPE_LIBRARIES})
  569 endif (LINKED_FREETYPE)
  570 
  571 
  572 ### --------------------------------------------------------------------
  573 ### GUI selection
  574 ### --------------------------------------------------------------------
  575 
  576 set (GUI_TYPE) # nothing or WIN32, MACOSX bundles are treated independetly
  577 
  578 if (TEXMACS_GUI MATCHES "Qt.*")
  579 
  580   if (TEXMACS_GUI STREQUAL "Qt4")
  581     find_package (Qt4 REQUIRED)
  582     set (TeXmacs_Include_Dirs
  583       ${TeXmacs_Include_Dirs}
  584       ${QT_INCLUDE_DIR}
  585     )
  586     include (${QT_USE_FILE})
  587   else (TEXMACS_GUI STREQUAL "Qt4")
  588     # Homebrew installs Qt5 in /usr/local/opt/qt5
  589     if (APPLE AND EXISTS /usr/local/opt/qt5)
  590       list (APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5")
  591     endif ()
  592 
  593     if (WIN32 AND EXISTS ${QT_CMAKE_DIR})
  594       set (Qt5Core_DIR "${QT_CMAKE_DIR}/Qt5Core")
  595       set (Qt5Gui_DIR "${QT_CMAKE_DIR}/Qt5Gui")
  596       set (Qt5EventDispatcherSupport_DIR "${QT_CMAKE_DIR}/Qt5EventDispatcherSupport")
  597       set (Qt5FontDatabaseSupport_DIR "${QT_CMAKE_DIR}/Qt5FontDatabaseSupport")
  598       set (Qt5Svg_DIR "${QT_CMAKE_DIR}/Qt5Svg")
  599       set (Qt5Widgets_DIR "${QT_CMAKE_DIR}/Qt5Widgets")
  600       set (Qt5Network_DIR "${QT_CMAKE_DIR}/Qt5Network")
  601       set (Qt5ThemeSupport_DIR "${QT_CMAKE_DIR}/Qt5ThemeSupport")
  602       set (Qt5AccessibilitySupport_DIR "${QT_CMAKE_DIR}/Qt5AccessibilitySupport")
  603       set (Qt5WindowsUIAutomationSupport_DIR "${QT_CMAKE_DIR}/Qt5WindowsUIAutomationSupport")
  604       set (Qt5PrintSupport_DIR "${QT_CMAKE_DIR}/Qt5PrintSupport")
  605     endif ()
  606 
  607     if (APPLE)
  608       find_package (Qt5 COMPONENTS Core Gui Widgets PrintSupport Svg MacExtras REQUIRED)
  609     else (APPLE)
  610       find_package (Qt5 COMPONENTS Core Gui Widgets PrintSupport Svg REQUIRED)
  611     endif ()
  612     
  613     if (APPLE)
  614       set (QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Widgets Qt5::PrintSupport Qt5::Svg Qt5::MacExtras)
  615     else (APPLE)
  616       set (QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Widgets Qt5::PrintSupport Qt5::Svg)
  617     endif (APPLE)
  618 
  619     set (TeXmacs_Include_Dirs
  620       ${TeXmacs_Include_Dirs}
  621       ${Qt5Core_INCLUDE_DIRS}
  622       ${Qt5Gui_INCLUDE_DIRS}
  623       ${Qt5Widgets_INCLUDE_DIRS}
  624       ${Qt5PrintSupport_INCLUDE_DIRS}
  625       ${Qt5Svg_INCLUDE_DIRS}
  626       ${Qt5MacExtras_INCLUDE_DIRS}
  627     )
  628 
  629     if (Qt5_POSITION_INDEPENDENT_CODE)
  630       set (CMAKE_POSITION_INDEPENDENT_CODE ON)
  631     endif (Qt5_POSITION_INDEPENDENT_CODE)
  632 
  633     if (APPLE)
  634       add_definitions ("-DQ_WS_MAC")
  635     endif (APPLE)
  636   endif (TEXMACS_GUI STREQUAL "Qt4")
  637 
  638   add_definitions (${QT_DEFINITIONS})
  639   add_definitions ("-DQTTEXMACS")
  640 
  641   if (CMAKE_BUILD_TYPE STREQUAL "Release")
  642     add_definitions ("-DQT_NO_DEBUG")
  643   endif (CMAKE_BUILD_TYPE STREQUAL "Release")
  644 
  645   set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_Qt_SRCS} ${TeXmacs_Qt_Moc_HDRS})
  646   set (TeXmacs_Include_Dirs ${TeXmacs_Include_Dirs} ${QT_INCLUDES})
  647   set (TeXmacs_Libraries ${TeXmacs_Libraries}  ${QT_LIBRARIES})
  648 
  649   if (WIN32)
  650     set (GUI_TYPE WIN32)
  651   endif (WIN32)
  652 
  653   set (QTTEXMACS 1)
  654   set (CONFIG_GUI "QT")
  655   set (CONFIG_QT "Qt")
  656   message (STATUS "Enabling Qt port")
  657 elseif (TEXMACS_GUI STREQUAL "Aqua")
  658   find_library (COCOA_LIBRARY Cocoa)
  659   find_path (COCOA_INCLUDE_DIR Cocoa/Cocoa.h)
  660   set (TeXmacs_Include_Dirs
  661     ${TeXmacs_Include_Dirs}
  662     ${COCOA_INCLUDE_DIR}
  663   )
  664   set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_Cocoa_SRCS})
  665   set (TeXmacs_Libraries ${TeXmacs_Libraries} ${COCOA_LIBRARY})
  666 
  667   mark_as_advanced(COCOA_LIBRARY)
  668   mark_as_advanced(COCOA_INCLUDE_DIR)
  669 else (TEXMACS_GUI STREQUAL "Qt")
  670   find_package (X11)
  671 
  672   set (TeXmacs_Include_Dirs
  673     ${TeXmacs_Include_Dirs}
  674     ${X11_INCLUDE_DIR}
  675   )
  676   set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_Widkit_SRCS} ${TeXmacs_X11_SRCS})
  677   set (TeXmacs_Libraries ${TeXmacs_Libraries} ${X11_LIBRARIES})
  678 
  679   add_definitions ("-DX11TEXMACS")
  680   set (X11TEXMACS 1)
  681 
  682   set (CONFIG_X11 "X11 Widkit Ghostscript")
  683   set (CONFIG_GUI "X11")
  684 
  685   message (STATUS "Enabling standard X11 interface")
  686 endif (TEXMACS_GUI MATCHES "Qt.*")
  687 
  688 if (APPLE AND TEXMACS_GUI STREQUAL "X11")
  689   set (TeXmacs_MacOS_SRCS
  690     ${TeXmacs_MacOS_SRCS}
  691     ${TEXMACS_SOURCE_DIR}/src/Plugins/MacOS/mac_app.mm
  692   )
  693 endif (APPLE AND TEXMACS_GUI STREQUAL "X11")
  694 
  695 if (APPLE AND USE_SPARKLE)
  696   set (TeXmacs_MacOS_SRCS
  697     ${TeXmacs_MacOS_SRCS}
  698     ${TEXMACS_SOURCE_DIR}/src/Plugins/Updater/tm_sparkle.mm
  699   )
  700 endif (APPLE AND USE_SPARKLE)
  701 
  702 ### --------------------------------------------------------------------
  703 ### OS System selection
  704 ### --------------------------------------------------------------------
  705 
  706 if (WIN32)
  707   file (GLOB_RECURSE TeXmacs_System_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Windows/*.cpp")
  708 else (WIN32)
  709   file (GLOB_RECURSE TeXmacs_System_SRCS "${TEXMACS_SOURCE_DIR}/src/Plugins/Unix/*.cpp")
  710 endif (WIN32)
  711 
  712 set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_System_SRCS})
  713 
  714 if (APPLE)
  715   set (TeXmacs_Libraries
  716     ${TeXmacs_Libraries}
  717     "-framework ApplicationServices"
  718     "-framework CoreFoundation"
  719     "-framework Security"
  720     "-framework Carbon"
  721     "-framework AppKit"
  722     "-framework Cocoa"
  723     "-framework IOKit"
  724     "-framework CoreGraphics"
  725     "-framework CoreServices"
  726     "-framework CoreText"
  727     "-framework Foundation"
  728     "-framework ImageIO"
  729   )
  730   set (TeXmacs_All_SRCS ${TeXmacs_All_SRCS} ${TeXmacs_MacOS_SRCS})
  731 
  732   set (GUI_TYPE MACOSX_BUNDLE)
  733   set (NO_FAST_ALLOC 1)
  734   set (AQUATEXMACS 1)
  735   set (COCOA_CFLAGS "")
  736   set (COCOA_LDFLAGS "-framework COCOA")
  737   set (CONFIG_GUI "COCOA")
  738   set (CONFIG_COCOA "Cocoa")
  739 
  740   message (STATUS "Enabling experimental Cocoa port")
  741 else (APPLE)
  742 endif (APPLE)
  743 
  744 include_directories (${TeXmacs_Include_Dirs})
  745 
  746 ### --------------------------------------------------------------------
  747 ### Debugging options
  748 ### --------------------------------------------------------------------
  749 
  750 
  751 ### --------------------------------------------------------------------
  752 ### Warning options
  753 ### --------------------------------------------------------------------
  754 
  755 ### --------------------------------------------------------------------
  756 ### Optimization options
  757 ### --------------------------------------------------------------------
  758 
  759 ### --------------------------------------------------------------------
  760 ### Compile sources
  761 ### --------------------------------------------------------------------
  762 
  763 add_subdirectory (src)
  764 add_subdirectory (plugins)
  765 add_subdirectory (misc)
  766 add_subdirectory (TeXmacs)
  767 
  768 ### --------------------------------------------------------------------
  769 ### Installation
  770 ### --------------------------------------------------------------------
  771 
  772 if (APPLE)
  773   install (FILES packages/macos/TeXmacs.icns DESTINATION ${CMAKE_INSTALL_PREFIX})
  774   install (FILES packages/macos/TeXmacs-document.icns DESTINATION ${CMAKE_INSTALL_PREFIX})
  775   install (DIRECTORY src/Plugins/Cocoa/English.lproj DESTINATION ${CMAKE_INSTALL_PREFIX})
  776   install (DIRECTORY src/Plugins/Cocoa/zh_CN.lproj DESTINATION ${CMAKE_INSTALL_PREFIX})
  777 endif (APPLE)
  778 
  779 if (NOT WIN32)
  780   install (FILES ${TEXMACS_BINARY_DIR}/misc/scripts/texmacs
  781                  ${TEXMACS_BINARY_DIR}/misc/scripts/fig2ps
  782                  misc/scripts/tm_gs
  783           DESTINATION bin
  784           PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
  785                       GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
  786 endif (NOT WIN32)
  787 
  788 ### include/
  789 install (DIRECTORY TeXmacs/include DESTINATION ${CMAKE_INSTALL_PREFIX}
  790   FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
  791 
  792 ### share/
  793 if (WIN32)
  794   install (DIRECTORY plugins DESTINATION ${CMAKE_INSTALL_PREFIX}
  795     FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
  796     PATTERN "bin" EXCLUDE
  797     PATTERN "CMakeLists.txt" EXCLUDE
  798     PATTERN ".gitignore" EXCLUDE)
  799 else (WIN32)
  800   install (DIRECTORY plugins DESTINATION share/TeXmacs
  801     FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
  802     PATTERN "bin" EXCLUDE
  803     PATTERN "CMakeLists.txt" EXCLUDE
  804     PATTERN ".gitignore" EXCLUDE)
  805 endif (WIN32)
  806 
  807 install (FILES TeXmacs/misc/mime/texmacs.desktop DESTINATION share/applications)
  808 install (FILES TeXmacs/misc/images/texmacs.svg RENAME TeXmacs.svg
  809   DESTINATION share/icons/hicolor/scalable/apps)
  810 install (FILES TeXmacs/misc/images/text-x-texmacs.svg
  811   DESTINATION share/icons/hicolor/scalable/mimetypes)
  812 install (FILES TeXmacs/misc/mime/texmacs.xml DESTINATION share/mime/packages)
  813 install (FILES TeXmacs/misc/pixmaps/TeXmacs.xpm DESTINATION share/pixmaps)
  814 foreach (size IN ITEMS 16 22 24 32 48 64 128 256 512)
  815   message (STATUS ${size})
  816   install (FILES TeXmacs/misc/images/texmacs-${size}.png RENAME TeXmacs.png
  817     DESTINATION share/icons/hicolor/${size}x${size}/apps/)
  818 endforeach ()
  819 
  820 ### --------------------------------------------------------------------
  821 ### Testing
  822 ### --------------------------------------------------------------------
  823 
  824 option (BUILD_TESTS "Build unit tests" OFF)
  825 
  826 if (BUILD_TESTS)
  827   include (CTest)
  828   find_package(Qt5Test REQUIRED)
  829   enable_testing ()
  830   add_subdirectory (tests)
  831   # add_subdirectory (misc/benchmark)
  832 endif (BUILD_TESTS)
  833 
  834 ### ---------------------------------------------------------------------
  835 ### VSCode Support
  836 ### ---------------------------------------------------------------------
  837 foreach (DIR ${TeXmacs_Include_Dirs})
  838   set (VSCODE_INCLUDE_DIRS "${VSCODE_INCLUDE_DIRS}\"${DIR}\",\n                ")
  839 endforeach (DIR ${TeXmacs_Include_Dirs})
  840 
  841 configure_file (${TEXMACS_SOURCE_DIR}/misc/vscode/c_cpp_properties.json.in
  842   ${TEXMACS_SOURCE_DIR}/.vscode/c_cpp_properties.json
  843   @ONLY
  844 )
  845 
  846 message (STATUS "TeXmacs_Libraries" ${TeXmacs_Libraries})