Skip to content

Commit

Permalink
support building on illumos systems
Browse files Browse the repository at this point in the history
  • Loading branch information
jclulow committed Sep 15, 2024
1 parent 2f18797 commit 5675a89
Showing 1 changed file with 36 additions and 3 deletions.
39 changes: 36 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,28 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
endif()
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
# Determine if the host is running an illumos distribution:
execute_process(COMMAND /usr/bin/uname -o OUTPUT_VARIABLE UNAME_O
OUTPUT_STRIP_TRAILING_WHITESPACE)

if (UNAME_O STREQUAL "illumos")
set(ILLUMOS 1)
endif()

if (ILLUMOS)
#
# illumos systems require linking libsocket and libnsl to get various
# networking routines sometimes found in libc on other platforms:
#
if(NOT BUILD_SHARED_LIBS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lsocket -lnsl")
else()
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lsocket -lnsl")
endif()
endif()
endif()

# Tests and libssl both require the CXX language to be enabled. If a consumer
# chooses to disable building the tests and libssl, do not enable CXX
if(BUILD_TESTING OR BUILD_LIBSSL)
Expand Down Expand Up @@ -789,9 +811,20 @@ if(OPENSSL_NO_SSE2_FOR_TESTING)
add_definitions(-DOPENSSL_NO_SSE2_FOR_TESTING)
endif()

# Some consumers might use upper-case (e.g.) "X86" or "X86_64".
# Matching below is based on lower-case.
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LOWER)
if(ILLUMOS)
#
# CMAKE_SYSTEM_PROCESSOR unfortunately comes from the output of "uname -p",
# which on illumos systems emits "i386". Instead, use the value from
# "isainfo -n", which prints "the name of the native instruction set used by
# portable applications"; e.g., "amd64".
#
execute_process(COMMAND /usr/bin/isainfo -n OUTPUT_VARIABLE
CMAKE_SYSTEM_PROCESSOR_LOWER OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
# Some consumers might use upper-case (e.g.) "X86" or "X86_64".
# Matching below is based on lower-case.
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LOWER)
endif()

if(OPENSSL_NO_ASM)
add_definitions(-DOPENSSL_NO_ASM)
Expand Down

0 comments on commit 5675a89

Please sign in to comment.