@@ -81,6 +81,7 @@ option(WITH_CLISP "Include CLISP in the installer." YES)
8181option (WITH_SBCL "Include SBCL in the installer." YES )
8282option (WITH_ABCL "Include ABCL in the installer." NO )
8383option (WITH_CCL64 "Include CCL64 in the installer." NO )
84+ option (WITH_ECL "Include ECL in the installer." NO )
8485
8586# Concerning the used Lisp versions:
8687# - SBCL is fast, but sometimes runs out of memory in places it really shouldn't
@@ -131,7 +132,7 @@ else()
131132endif ()
132133
133134set (WITH_DEFAULT_LISP "sbcl" CACHE STRING "Which Lisp should be used by default?" )
134- set_property (CACHE WITH_DEFAULT_LISP PROPERTY STRINGS "clisp" "sbcl" "abcl" "ccl64" )
135+ set_property (CACHE WITH_DEFAULT_LISP PROPERTY STRINGS "clisp" "sbcl" "abcl" "ccl64" "ecl" )
135136
136137# If you want to use a updated version of a program,
137138# update the version number and the checksum.
@@ -188,6 +189,10 @@ endif()
188189
189190execute_process (COMMAND "${CMAKE_CXX_COMPILER} " -print-file-name=libstdc++-6.dll OUTPUT_VARIABLE MINGW_LIBSTDCPP OUTPUT_STRIP_TRAILING_WHITESPACE )
190191
192+ # wxMaxima and ECL uses C++ threads, include the required mingw library.
193+ execute_process (COMMAND "${CMAKE_CXX_COMPILER} " -print-file-name=libwinpthread-1.dll OUTPUT_VARIABLE MINGW_LIBWINPTHREAD OUTPUT_STRIP_TRAILING_WHITESPACE )
194+ message (STATUS "Found libwinpthread at ${MINGW_LIBWINPTHREAD} " )
195+
191196message (STATUS "Found libstdc++ at ${MINGW_LIBSTDCPP} " )
192197
193198message (STATUS "Found libgcc at ${MINGW_LIBGCC} " )
@@ -274,26 +279,41 @@ else()
274279 set (CCL64_DEPENDS "" )
275280 set (CCL_ENABLED 0)
276281endif ()
282+ if (WITH_ECL)
283+ add_subdirectory ("gmplib/" )
284+ add_subdirectory ("ecl/" )
285+ add_subdirectory ("winlibs/" )
286+ set (ECL_CONFIGURE --enable-ecl --with-ecl=${CMAKE_BINARY_DIR} /wine-ecl.sh)
287+ set (ECL_DEPENDS ecl winlibs)
288+ set (ECL_ENABLED 1)
289+ else ()
290+ set (ECL_CONFIGURE "" )
291+ set (ECL_DEPENDS "" )
292+ set (ECL_ENABLED 1)
293+ endif ()
277294
278295configure_file ("${CMAKE_SOURCE_DIR} /wine-clisp.sh.tmpl" "${CMAKE_BINARY_DIR} /wine-clisp.sh" )
279296configure_file ("${CMAKE_SOURCE_DIR} /wine-lisp.sh.tmpl" "${CMAKE_BINARY_DIR} /wine-lisp.sh" )
280297configure_file ("${CMAKE_SOURCE_DIR} /wine-sbcl.sh.tmpl" "${CMAKE_BINARY_DIR} /wine-sbcl.sh" )
281298configure_file ("${CMAKE_SOURCE_DIR} /wine-ccl.sh.tmpl" "${CMAKE_BINARY_DIR} /wine-ccl.sh" )
299+ configure_file ("${CMAKE_SOURCE_DIR} /wine-ecl.sh.tmpl" "${CMAKE_BINARY_DIR} /wine-ecl.sh" )
300+ configure_file ("${CMAKE_SOURCE_DIR} /ecl/ecl-lisp-build.sh.tmpl" "${CMAKE_BINARY_DIR} /ecl-lisp-build.sh" )
282301
283302externalproject_add (maxima
284303 # first copy the maxima source to a build directory, since out-of-source-builds do not work
285304 DOWNLOAD_COMMAND rsync -a --exclude=crosscompile-windows/build/ "${CMAKE_SOURCE_DIR} /../" "${CMAKE_BINARY_DIR} /maxima-prefix/src/maxima"
286- DEPENDS tcl tk texinfo ${CLISP_DEPENDS} ${SBCL_DEPENDS} ${ABCL_DEPENDS} ${CCL64_DEPENDS}
305+ DEPENDS tcl tk texinfo ${CLISP_DEPENDS} ${SBCL_DEPENDS} ${ABCL_DEPENDS} ${CCL64_DEPENDS} ${ECL_DEPENDS}
287306 BUILD_IN_SOURCE 1
288307 CONFIGURE_COMMAND sh -c "test -x ./bootstrap && ./bootstrap || return 0"
289- COMMAND PATH=${CMAKE_BINARY_DIR} /texinfo-installroot/bin:$ENV{PATH} LANG=C ./configure --host=${HOST} ${CLISP_CONFIGURE} ${SBCL_CONFIGURE} ${ABCL_CONFIGURE} ${CCL64_CONFIGURE} --with-default-lisp=${WITH_DEFAULT_LISP} --prefix =${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION}
308+ COMMAND PATH=${CMAKE_BINARY_DIR} /texinfo-installroot/bin:$ENV{PATH} LANG=C ./configure --host=${HOST} ${CLISP_CONFIGURE} ${SBCL_CONFIGURE} ${ABCL_CONFIGURE} ${CCL64_CONFIGURE} ${ECL_CONFIGURE} --with-default-lisp=${WITH_DEFAULT_LISP} --prefix =${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION}
290309 # during the crosscompiling procedure, we call configure with shell scripts (wine-xyz.sh) to use the Windows versions.
291310 # change that after compiliation to the real binaries (clisp.exe for CLISP, sbcl.exe for SBCL, wx86cl64.exe for CCL64).
292311 BUILD_COMMAND PATH=${CMAKE_BINARY_DIR} /texinfo-installroot/bin:$ENV{PATH} LANG=C $(MAKE)
293312 COMMAND PATH=${CMAKE_BINARY_DIR} /texinfo-installroot/bin:$ENV{PATH} LANG=C $(MAKE) pdf
294313 COMMAND sed -i s+^.*wine-clisp.sh+clisp.exe+g src/maxima.bat
295314 COMMAND sed -i s+^.*wine-sbcl.sh+sbcl.exe+g src/maxima.bat
296315 COMMAND sed -i s+^.*wine-ccl.sh+wx86cl64.exe+g src/maxima.bat
316+ COMMAND sed -i s+^.*wine-ecl.sh+ecl/ecl.exe+g src/maxima.bat
297317 INSTALL_COMMAND PATH=${CMAKE_BINARY_DIR} /texinfo-installroot/bin:$ENV{PATH} LANG=C $(MAKE) install DESTDIR=${CMAKE_BINARY_DIR} /maxima-installroot/
298318 COMMAND PATH=${CMAKE_BINARY_DIR} /texinfo-installroot/bin:$ENV{PATH} LANG=C $(MAKE) extradocinstall DESTDIR=${CMAKE_BINARY_DIR} /maxima-installroot/
299319)
@@ -321,8 +341,12 @@ install(FILES "${CMAKE_SOURCE_DIR}/../interfaces/xmaxima/win32/win_signals.lisp"
321341
322342
323343install (DIRECTORY ${CMAKE_BINARY_DIR} /maxima-installroot/${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION} /
324- DESTINATION . COMPONENT Maxima
325- PATTERN "binary-clisp" EXCLUDE PATTERN "binary-sbcl" EXCLUDE PATTERN "binary-abcl" EXCLUDE PATTERN "binary-ccl64" EXCLUDE)
344+ DESTINATION . COMPONENT Maxima
345+ PATTERN "binary-clisp" EXCLUDE
346+ PATTERN "binary-sbcl" EXCLUDE
347+ PATTERN "binary-abcl" EXCLUDE
348+ PATTERN "binary-ccl64" EXCLUDE
349+ PATTERN "binary-ecl" EXCLUDE)
326350if (WITH_ABCL)
327351 install (DIRECTORY ${CMAKE_BINARY_DIR} /maxima-installroot/${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION} /
328352 DESTINATION . COMPONENT ABCL PATTERN "binary-abcl" )
@@ -331,6 +355,10 @@ if(WITH_CLISP)
331355 install (DIRECTORY ${CMAKE_BINARY_DIR} /maxima-installroot/${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION} /
332356 DESTINATION . COMPONENT CLISP PATTERN "binary-clisp" )
333357endif ()
358+ if (WITH_ECL)
359+ install (DIRECTORY ${CMAKE_BINARY_DIR} /maxima-installroot/${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION} /
360+ DESTINATION . COMPONENT ECL PATTERN "binary-ecl" )
361+ endif ()
334362if (WITH_SBCL)
335363 install (DIRECTORY ${CMAKE_BINARY_DIR} /maxima-installroot/${WINDOWS_DRIVELETTER} :/maxima-${MAXIMAVERSION} /
336364 DESTINATION . COMPONENT SBCL PATTERN "binary-sbcl" )
@@ -403,7 +431,6 @@ if(WITH_SBCL)
403431 cpack_add_component (SBCL
404432 DESCRIPTION "The SBCL Lisp compiler.\n One Lisp compiler is required." )
405433endif ()
406-
407434if (WITH_ABCL)
408435 cpack_add_component (ABCL
409436 DESCRIPTION "The ABCL Lisp compiler.\n A Java installation is required.\n One Lisp compiler is required." )
@@ -412,6 +439,10 @@ if(WITH_CCL64)
412439 cpack_add_component (CCL64
413440 DESCRIPTION "The CCL (64Bit) Lisp compiler.\n One Lisp compiler is required." )
414441endif ()
442+ if (WITH_ECL)
443+ cpack_add_component (ECL
444+ DESCRIPTION "The ECL Lisp compiler.\n One Lisp compiler is required." )
445+ endif ()
415446
416447cpack_add_component (TclTk
417448 DISPLAY_NAME "Tcl/Tk"
0 commit comments