################################# # mars-dosutils ############## set(MARS_DOSUTILS_NET_EXE "${CMAKE_CURRENT_SOURCE_DIR}/net.exe" CACHE FILEPATH "Prebuilt DOS net.exe used for installation" ) set(MARS_DOSUTILS_STACK_SIZE "32768" CACHE STRING "DOS stack size for mars-dosutils net.exe") set(MARS_DOSUTILS_PUBLIC_TOOLS net login profile spawn passwd path pathins pathdel map mapdel logout slist capture endcap ) if(MARS_NWE_BUILD_DOSUTILS) find_package(OpenWatcom REQUIRED) set(DOSUTILS_C_SOURCES net.c tools.c netcall.c ncpcall.c login.c map.c slist.c nwcrypt.c nwdebug.c nwtests.c capture.c ) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/kern.obj" COMMAND "${CMAKE_COMMAND}" -E env "WATCOM=${OPENWATCOM_ROOT}" "PATH=${OPENWATCOM_BINDIR}:$ENV{PATH}" "INCLUDE=${OPENWATCOM_INCLUDE}" "EDPATH=${OPENWATCOM_ROOT}/eddat" "${OPENWATCOM_WASM}" -q -zq -fo="${CMAKE_CURRENT_BINARY_DIR}/kern.obj" "${CMAKE_CURRENT_SOURCE_DIR}/kern_wasm.asm" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/kern_wasm.asm" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" VERBATIM ) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/net.exe" COMMAND "${CMAKE_COMMAND}" -E env "WATCOM=${OPENWATCOM_ROOT}" "PATH=${OPENWATCOM_BINDIR}:$ENV{PATH}" "INCLUDE=${OPENWATCOM_INCLUDE}" "EDPATH=${OPENWATCOM_ROOT}/eddat" "${OPENWATCOM_WCL}" -q -zq -bt=dos -ml -0 -k${MARS_DOSUTILS_STACK_SIZE} -fe="${CMAKE_CURRENT_BINARY_DIR}/net.exe" ${DOSUTILS_C_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/kern.obj" DEPENDS ${DOSUTILS_C_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/kern.obj" net.h kern.h nwcrypt.h WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" VERBATIM ) add_custom_target(dosutils_net ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/net.exe" ) set(MARS_DOSUTILS_NET_EXE "${CMAKE_CURRENT_BINARY_DIR}/net.exe") else() if(NOT EXISTS "${MARS_DOSUTILS_NET_EXE}") message(FATAL_ERROR "Prebuilt DOS utility missing: ${MARS_DOSUTILS_NET_EXE}. " "Either commit net.exe into dosutils or configure with " "-DMARS_NWE_BUILD_DOSUTILS=ON and OpenWatcom installed." ) endif() endif() foreach(tool IN LISTS MARS_DOSUTILS_PUBLIC_TOOLS) if(tool STREQUAL "net") install(FILES "${MARS_DOSUTILS_NET_EXE}" DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/public") else() install(FILES "${MARS_DOSUTILS_NET_EXE}" DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/public" RENAME "${tool}.exe") endif() endforeach() install(FILES "${MARS_DOSUTILS_NET_EXE}" DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/login" RENAME login.exe) install(FILES "${MARS_DOSUTILS_NET_EXE}" DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/login" RENAME map.exe)