Split the Open Watcom assembly glue into separate IPX and NCP requester modules. Keep the IPX socket and far-memory helper entry points in ipx.asm and move the INT 21h Net_Call plus Client32 requester entry points into ncpcall.asm. Split the former kern.h declarations accordingly into ipx.h and ncpcall.h, and update net.h and the Open Watcom build to use the new headers and object files. This matches the current source layout where ncpcall.c owns the low-level NCP transport helpers and ncpapi.c owns the ncpXX_YY_* protocol API wrappers. No behavior change.
278 lines
8.7 KiB
CMake
278 lines
8.7 KiB
CMake
# DOS utilities for mars-nwe.
|
|
#
|
|
# Default install mode uses a split:
|
|
# - legacy command names are installed from netold.exe
|
|
# - new command names that netold.exe does not contain are installed from net.exe
|
|
#
|
|
# Maintainer mode can rebuild the new net.exe with Open Watcom. The freshly
|
|
# built binary is only installed when MARS_NWE_INSTALL_NEW_DOSUTILS is ON, or
|
|
# for the new-only command names in the default split install.
|
|
|
|
option(MAINTAINER_BUILD "Enable maintainer-only DOS tool helpers and diagnostics" OFF)
|
|
|
|
set(MARS_DOSUTILS_LEGACY_NET_EXE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/netold.exe"
|
|
CACHE FILEPATH "Legacy/pre-Client32 DOS net.exe used by default for legacy command names"
|
|
)
|
|
|
|
set(MARS_DOSUTILS_NEW_NET_EXE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/net.exe"
|
|
CACHE FILEPATH "New/experimental DOS net.exe used for new-only tools or when MARS_NWE_INSTALL_NEW_DOSUTILS is ON"
|
|
)
|
|
|
|
set(MARS_DOSUTILS_LEGACY_TOOLS
|
|
net
|
|
login
|
|
profile
|
|
spawn
|
|
passwd
|
|
path
|
|
pathins
|
|
pathdel
|
|
map
|
|
mapdel
|
|
logout
|
|
capture
|
|
endcap
|
|
)
|
|
|
|
# Tools not present in netold.exe. These are installed from the new binary
|
|
# even in the default split mode.
|
|
set(MARS_DOSUTILS_NEW_ONLY_TOOLS
|
|
slist
|
|
flag
|
|
flagdir
|
|
rights
|
|
grant
|
|
revoke
|
|
remove
|
|
ndir
|
|
creator
|
|
whoami
|
|
ncopy
|
|
)
|
|
|
|
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
|
|
ndir.c
|
|
flag.c
|
|
flagdir.c
|
|
rights.c
|
|
grant.c
|
|
revoke.c
|
|
remove.c
|
|
trustee.c
|
|
ncpapi.c
|
|
nwcrypt.c
|
|
nwdebug.c
|
|
nwtests.c
|
|
capture.c
|
|
creator.c
|
|
whoami.c
|
|
ncopy.c
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ipx.obj"
|
|
COMMAND "${CMAKE_COMMAND}" -E env ${OPENWATCOM_ENV}
|
|
"${OPENWATCOM_WASM}"
|
|
-q
|
|
-zq
|
|
-fo="${CMAKE_CURRENT_BINARY_DIR}/ipx.obj"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/ipx.asm"
|
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/ipx.asm"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
VERBATIM
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ncpcall_asm.obj"
|
|
COMMAND "${CMAKE_COMMAND}" -E env ${OPENWATCOM_ENV}
|
|
"${OPENWATCOM_WASM}"
|
|
-q
|
|
-zq
|
|
-fo="${CMAKE_CURRENT_BINARY_DIR}/ncpcall_asm.obj"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/ncpcall.asm"
|
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/ncpcall.asm"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
VERBATIM
|
|
)
|
|
|
|
set(DOSUTILS_OBJECTS)
|
|
foreach(src IN LISTS DOSUTILS_C_SOURCES)
|
|
get_filename_component(obj_name "${src}" NAME_WE)
|
|
set(obj "${CMAKE_CURRENT_BINARY_DIR}/${obj_name}.obj")
|
|
list(APPEND DOSUTILS_OBJECTS "${obj}")
|
|
|
|
set(DOSUTILS_WCL_DEFS)
|
|
if(MAINTAINER_BUILD)
|
|
list(APPEND DOSUTILS_WCL_DEFS -dMAINTAINER_BUILD)
|
|
endif()
|
|
|
|
add_custom_command(
|
|
OUTPUT "${obj}"
|
|
COMMAND "${CMAKE_COMMAND}" -E env ${OPENWATCOM_ENV}
|
|
"${OPENWATCOM_WCL}"
|
|
-q
|
|
-zq
|
|
-bt=dos
|
|
-ml
|
|
-0
|
|
${DOSUTILS_WCL_DEFS}
|
|
-c
|
|
-fo="${obj}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${src}"
|
|
DEPENDS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${src}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/net.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/ipx.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/ncpcall.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/ncpapi.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/nwcrypt.h"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
VERBATIM
|
|
)
|
|
endforeach()
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/net.exe"
|
|
COMMAND "${CMAKE_COMMAND}" -E env ${OPENWATCOM_ENV}
|
|
"${OPENWATCOM_WCL}"
|
|
-q
|
|
-zq
|
|
-bt=dos
|
|
-ml
|
|
-0
|
|
-k32768
|
|
-fe="${CMAKE_CURRENT_BINARY_DIR}/net.exe"
|
|
${DOSUTILS_OBJECTS}
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ipx.obj"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ncpcall_asm.obj"
|
|
DEPENDS
|
|
${DOSUTILS_OBJECTS}
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ipx.obj"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ncpcall_asm.obj"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
VERBATIM
|
|
)
|
|
|
|
add_custom_target(dosutils_net ALL
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/net.exe"
|
|
)
|
|
|
|
set(MARS_DOSUTILS_BUILT_NET_EXE "${CMAKE_CURRENT_BINARY_DIR}/net.exe")
|
|
|
|
if(MAINTAINER_BUILD)
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/dlystrt.exe"
|
|
COMMAND "${CMAKE_COMMAND}" -E env ${OPENWATCOM_ENV}
|
|
"${OPENWATCOM_WCL}"
|
|
-q
|
|
-zq
|
|
-bt=dos
|
|
-ms
|
|
-0
|
|
-dMAINTAINER_BUILD
|
|
-fe="${CMAKE_CURRENT_BINARY_DIR}/dlystrt.exe"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/dlystrt.c"
|
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/dlystrt.c"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
VERBATIM
|
|
)
|
|
|
|
add_custom_target(dlystrt ALL
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/dlystrt.exe"
|
|
)
|
|
endif()
|
|
else()
|
|
set(MARS_DOSUTILS_BUILT_NET_EXE "")
|
|
endif()
|
|
|
|
if(MARS_NWE_BUILD_DOSUTILS)
|
|
set(MARS_DOSUTILS_SELECTED_NEW_EXE "${MARS_DOSUTILS_BUILT_NET_EXE}")
|
|
else()
|
|
set(MARS_DOSUTILS_SELECTED_NEW_EXE "${MARS_DOSUTILS_NEW_NET_EXE}")
|
|
endif()
|
|
|
|
if(MARS_NWE_INSTALL_NEW_DOSUTILS)
|
|
set(MARS_DOSUTILS_SELECTED_LEGACY_EXE "${MARS_DOSUTILS_SELECTED_NEW_EXE}")
|
|
else()
|
|
set(MARS_DOSUTILS_SELECTED_LEGACY_EXE "${MARS_DOSUTILS_LEGACY_NET_EXE}")
|
|
endif()
|
|
|
|
set(MARS_DOSUTILS_SELECTED_LEGACY_IS_BUILT FALSE)
|
|
set(MARS_DOSUTILS_SELECTED_NEW_IS_BUILT FALSE)
|
|
if(MARS_NWE_BUILD_DOSUTILS)
|
|
if(MARS_DOSUTILS_SELECTED_LEGACY_EXE STREQUAL MARS_DOSUTILS_BUILT_NET_EXE)
|
|
set(MARS_DOSUTILS_SELECTED_LEGACY_IS_BUILT TRUE)
|
|
endif()
|
|
if(MARS_DOSUTILS_SELECTED_NEW_EXE STREQUAL MARS_DOSUTILS_BUILT_NET_EXE)
|
|
set(MARS_DOSUTILS_SELECTED_NEW_IS_BUILT TRUE)
|
|
endif()
|
|
endif()
|
|
|
|
if(MARS_NWE_INSTALL_DOSUTILS)
|
|
if(NOT MARS_DOSUTILS_SELECTED_LEGACY_IS_BUILT AND NOT EXISTS "${MARS_DOSUTILS_SELECTED_LEGACY_EXE}")
|
|
message(FATAL_ERROR
|
|
"Selected legacy/default DOS utility missing: ${MARS_DOSUTILS_SELECTED_LEGACY_EXE}. "
|
|
"Commit dosutils/netold.exe, enable MARS_NWE_INSTALL_NEW_DOSUTILS, "
|
|
"or enable MARS_NWE_BUILD_DOSUTILS."
|
|
)
|
|
endif()
|
|
|
|
if(NOT MARS_DOSUTILS_SELECTED_NEW_IS_BUILT AND NOT EXISTS "${MARS_DOSUTILS_SELECTED_NEW_EXE}")
|
|
message(FATAL_ERROR
|
|
"Selected new DOS utility missing: ${MARS_DOSUTILS_SELECTED_NEW_EXE}. "
|
|
"Commit dosutils/net.exe or enable MARS_NWE_BUILD_DOSUTILS."
|
|
)
|
|
endif()
|
|
|
|
message(STATUS "DOS legacy/default utility binary: ${MARS_DOSUTILS_SELECTED_LEGACY_EXE}")
|
|
message(STATUS "DOS new-only utility binary: ${MARS_DOSUTILS_SELECTED_NEW_EXE}")
|
|
|
|
foreach(tool IN LISTS MARS_DOSUTILS_LEGACY_TOOLS)
|
|
if(tool STREQUAL "net")
|
|
install(FILES "${MARS_DOSUTILS_SELECTED_LEGACY_EXE}"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/public"
|
|
RENAME net.exe)
|
|
else()
|
|
install(FILES "${MARS_DOSUTILS_SELECTED_LEGACY_EXE}"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/public"
|
|
RENAME "${tool}.exe")
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach(tool IN LISTS MARS_DOSUTILS_NEW_ONLY_TOOLS)
|
|
install(FILES "${MARS_DOSUTILS_SELECTED_NEW_EXE}"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/public"
|
|
RENAME "${tool}.exe")
|
|
endforeach()
|
|
|
|
install(FILES "${MARS_DOSUTILS_SELECTED_LEGACY_EXE}"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/login"
|
|
RENAME login.exe)
|
|
|
|
install(FILES "${MARS_DOSUTILS_SELECTED_LEGACY_EXE}"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/login"
|
|
RENAME map.exe)
|
|
|
|
install(FILES "${MARS_DOSUTILS_SELECTED_LEGACY_EXE}"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/login"
|
|
RENAME slist.exe)
|
|
|
|
if(MAINTAINER_BUILD AND MARS_NWE_BUILD_DOSUTILS)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dlystrt.exe"
|
|
DESTINATION "${MARS_NWE_INSTALL_FULL_FILEDIR}/SYS/public"
|
|
RENAME dlystrt.exe)
|
|
endif()
|
|
endif()
|