# This module is shared by multiple languages; use include blocker.
include_guard()

set(CMAKE_BUILD_TYPE_INIT Debug)

if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
  string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " system os2")
  string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system os2_dll")
  string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system os2_dll")
else()
  string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " system os2v2")
  string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system os2v2_dll")
  string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system os2v2_dll")
endif()

set(CMAKE_C_COMPILE_OPTIONS_DLL "-bd") # Note: This variable is a ';' separated list
set(CMAKE_SHARED_LIBRARY_C_FLAGS "-bd") # ... while this is a space separated string.

string(APPEND CMAKE_C_FLAGS_INIT " -bt=os2")
string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=os2 -xs")

if(NOT CMAKE_C_STANDARD_INCLUDE_DIRECTORIES)
  if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
    set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/os21x)
  else()
    set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/os2)
  endif()
endif()
if(NOT CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES)
  if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
    set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/os21x)
  else()
    set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/os2)
  endif()
endif()
