Files
mars-dosutils/CMakeLists.txt
Mario Fetka 36d566939c add slist
2026-05-22 16:26:20 +02:00

123 lines
3.4 KiB
CMake

#################################
# 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)