87 lines
2.2 KiB
CMake
87 lines
2.2 KiB
CMake
# FindOpenWatcom.cmake
|
|
#
|
|
# Locate an Open Watcom v2 toolchain usable for building the 16-bit DOS
|
|
# mars-nwe DOS utilities on a Linux host.
|
|
#
|
|
# Result variables:
|
|
# OpenWatcom_FOUND
|
|
# OPENWATCOM_WCL
|
|
# OPENWATCOM_WCC
|
|
# OPENWATCOM_WASM
|
|
# OPENWATCOM_WLINK
|
|
# OPENWATCOM_BIN_DIR
|
|
# OPENWATCOM_ROOT
|
|
# OPENWATCOM_ENV
|
|
#
|
|
# This module intentionally does not enable a CMake language/toolchain. The
|
|
# DOS utilities are built via custom commands. OPENWATCOM_ENV is provided so
|
|
# wcl can find its helper programs such as wcc, wlink and include files.
|
|
|
|
set(_OPENWATCOM_HINTS)
|
|
|
|
if(DEFINED ENV{WATCOM})
|
|
list(APPEND _OPENWATCOM_HINTS "$ENV{WATCOM}")
|
|
endif()
|
|
|
|
list(APPEND _OPENWATCOM_HINTS
|
|
/opt/watcom
|
|
/usr/local/watcom
|
|
/usr/local/open-watcom-v2
|
|
/opt/open-watcom-v2
|
|
)
|
|
|
|
find_program(OPENWATCOM_WCL
|
|
NAMES wcl owcc
|
|
HINTS ${_OPENWATCOM_HINTS}
|
|
PATH_SUFFIXES binl binnt binw bin
|
|
)
|
|
|
|
find_program(OPENWATCOM_WCC
|
|
NAMES wcc
|
|
HINTS ${_OPENWATCOM_HINTS}
|
|
PATH_SUFFIXES binl binnt binw bin
|
|
)
|
|
|
|
find_program(OPENWATCOM_WASM
|
|
NAMES wasm
|
|
HINTS ${_OPENWATCOM_HINTS}
|
|
PATH_SUFFIXES binl binnt binw bin
|
|
)
|
|
|
|
find_program(OPENWATCOM_WLINK
|
|
NAMES wlink
|
|
HINTS ${_OPENWATCOM_HINTS}
|
|
PATH_SUFFIXES binl binnt binw bin
|
|
)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(OpenWatcom
|
|
REQUIRED_VARS
|
|
OPENWATCOM_WCL
|
|
OPENWATCOM_WCC
|
|
OPENWATCOM_WASM
|
|
OPENWATCOM_WLINK
|
|
)
|
|
|
|
if(OpenWatcom_FOUND)
|
|
get_filename_component(OPENWATCOM_BIN_DIR "${OPENWATCOM_WCL}" DIRECTORY)
|
|
get_filename_component(OPENWATCOM_ROOT "${OPENWATCOM_BIN_DIR}" DIRECTORY)
|
|
|
|
# wcl starts helper tools such as wcc/wlink by name. Therefore finding the
|
|
# absolute wcl path is not enough; the Watcom bin directory must be in PATH
|
|
# at build time. WATCOM and INCLUDE are also expected by many installations.
|
|
set(OPENWATCOM_ENV
|
|
"WATCOM=${OPENWATCOM_ROOT}"
|
|
"INCLUDE=${OPENWATCOM_ROOT}/h:${OPENWATCOM_ROOT}/h/nt:${OPENWATCOM_ROOT}/h/os2"
|
|
"EDPATH=${OPENWATCOM_ROOT}/eddat"
|
|
"PATH=${OPENWATCOM_BIN_DIR}:$ENV{PATH}"
|
|
)
|
|
endif()
|
|
|
|
mark_as_advanced(
|
|
OPENWATCOM_WCL
|
|
OPENWATCOM_WCC
|
|
OPENWATCOM_WASM
|
|
OPENWATCOM_WLINK
|
|
)
|