Skip to content
Snippets Groups Projects
Commit 84f14940 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Make all listed build options optional in CMake builds

PC Speaker can't actually be disabled, so remove it from build options
listing.
parent b23123eb
Branches
Tags
No related merge requests found
Pipeline #6760 passed
......@@ -2,8 +2,17 @@ project (ConIOLib C)
cmake_minimum_required(VERSION 3.11)
set(WITHOUT_GDI OFF CACHE BOOL "Disable GDI video support")
set(WITHOUT_SDL OFF CACHE BOOL "Disable SDL video support")
set(WITHOUT_X11 OFF CACHE BOOL "Disable X11 video support")
set(WITHOUT_XRANDR OFF CACHE BOOL "Disable X11 video support")
set(WITHOUT_XRENDER OFF CACHE BOOL "Disable X11 video support")
set(WITHOUT_XINERAMA OFF CACHE BOOL "Disable X11 video support")
INCLUDE (CheckFunctionExists)
find_package(X11)
if(NOT WITHOUT_X11)
find_package(X11)
endif()
# So on BSD, this causes the find to fail. However, it's required for Linux
# This is because on BSD, ncursesw.h does not exist, but libraries use
# ncurses.h
......@@ -12,12 +21,23 @@ find_package(Threads REQUIRED)
if(NOT WIN32)
find_package(Curses)
find_package(PkgConfig)
pkg_check_modules(SDL2 sdl2)
pkg_check_modules(XRENDER xrender)
pkg_check_modules(XINERAMA xinerama)
pkg_check_modules(XRANDR xrandr)
if(NOT WITHOUT_SDL)
pkg_check_modules(SDL2 sdl2)
endif()
if(NOT WITHOUT_X11)
if(NOT WITHOUT_XRENDER)
pkg_check_modules(XRENDER xrender)
endif()
if(NOT WITHOUT_XINERAMA)
pkg_check_modules(XINERAMA xinerama)
endif()
if(NOT WITHOUT_XRANDR)
pkg_check_modules(XRANDR xrandr)
endif()
endif()
endif()
# TODO: Don't require allfonts.c when building without bitmap support
set(SOURCE
allfonts.c
ansi_cio.c
......@@ -28,7 +48,6 @@ set(SOURCE
syncicon64.c
utf8_codepages.c
vidmodes.c
xbr.c
)
set(HEADER
......@@ -41,7 +60,10 @@ set(HEADER
)
if(WIN32)
list(APPEND SOURCE win32cio.c ciolib.rc)
if(NOT WITHOUT_GDI)
list(APPEND SOURCE win32cio.c)
endif()
list(APPEND SOURCE ciolib.rc)
endif()
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
......@@ -58,25 +80,29 @@ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
endif()
endif()
if(X11_FOUND)
list(APPEND SOURCE x_events.c x_cio.c)
set(NEED_BITMAP TRUE)
set(NEED_DLOPEN TRUE)
set(NEED_SCALE TRUE)
if(NOT WITHOUT_X1!)
if(X11_FOUND)
list(APPEND SOURCE x_events.c x_cio.c)
set(NEED_BITMAP TRUE)
set(NEED_DLOPEN TRUE)
set(NEED_SCALE TRUE)
endif()
endif()
if(SDL2_INCLUDE_DIRS)
list(APPEND SOURCE sdl_con.c)
list(APPEND SOURCE sdlfuncs.c)
set(NEED_SCALE TRUE)
if(WIN32)
list(APPEND SOURCE SDL_win32_main.c)
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND SOURCE SDLMain.m)
if(NOT WITHOUT_SDL)
if(SDL2_FOUND)
list(APPEND SOURCE sdl_con.c)
list(APPEND SOURCE sdlfuncs.c)
set(NEED_SCALE TRUE)
if(WIN32)
list(APPEND SOURCE SDL_win32_main.c)
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND SOURCE SDLMain.m)
endif()
set(NEED_BITMAP TRUE)
set(NEED_DLOPEN TRUE)
endif()
set(NEED_BITMAP TRUE)
set(NEED_DLOPEN TRUE)
endif()
if(NEED_BITMAP)
......@@ -84,7 +110,7 @@ if(NEED_BITMAP)
endif()
if(NEED_SCALE)
list(APPEND SOURCE scale.c)
list(APPEND SOURCE scale.c xbr.c)
endif()
add_library(ciolib OBJECT ${SOURCE})
......@@ -96,28 +122,48 @@ if(CURSES_FOUND)
endif()
endif()
if(X11_FOUND)
target_include_directories(ciolib PRIVATE ${X11_INCLUDE_DIR})
if(XRENDER_FOUND)
target_compile_definitions(ciolib PUBLIC WITH_XRENDER)
endif()
if(XINERAMA_FOUND)
target_compile_definitions(ciolib PUBLIC WITH_XINERAMA)
endif()
if(XRANDR_FOUND)
target_compile_definitions(ciolib PUBLIC WITH_XRANDR)
endif()
else()
if(WITHOUT_X11)
target_compile_definitions(ciolib PRIVATE NO_X)
target_compile_definitions(ciolib PUBLIC DISABLE_X11=1)
else()
if(X11_FOUND)
target_include_directories(ciolib PRIVATE ${X11_INCLUDE_DIR})
if(NOT WITHOUT_XRENDER)
if(XRENDER_FOUND)
target_compile_definitions(ciolib PUBLIC WITH_XRENDER)
endif()
endif()
if(NOT WITHOUT_XINERAMA)
if(XINERAMA_FOUND)
target_compile_definitions(ciolib PUBLIC WITH_XINERAMA)
endif()
endif()
if(NOT WITHOUT_XRANDR)
if(XRANDR_FOUND)
target_compile_definitions(ciolib PUBLIC WITH_XRANDR)
endif()
endif()
else()
target_compile_definitions(ciolib PRIVATE NO_X)
target_compile_definitions(ciolib PUBLIC DISABLE_X11=1)
message(WARNING "libx11 not found, X11 support disabled")
set(WITHOUT_X11 ON CACHE BOOL "Disable X11 video support")
endif()
endif()
if(SDL2_INCLUDE_DIRS)
target_include_directories(ciolib PUBLIC ${SDL2_INCLUDE_DIRS})
set(WITH_SDL TRUE PARENT_SCOPE)
target_compile_definitions(ciolib PUBLIC WITH_SDL)
if(NOT WITHOUT_SDL)
if(SDL2_FOUND)
target_include_directories(ciolib PUBLIC ${SDL2_INCLUDE_DIRS})
set(WITH_SDL TRUE PARENT_SCOPE)
target_compile_definitions(ciolib PUBLIC WITH_SDL)
endif()
endif()
if(NOT WIN32)
if(WIN32)
if(NOT WITHOUT_GDI)
target_compile_definitions(ciolib PUBLIC WITH_GDI)
endif()
else()
target_link_libraries(ciolib pthread)
endif()
......
cmake_minimum_required(VERSION 3.5)
project (SyncTERM C)
set(WITHOUT_CRYPTLIB OFF CACHE BOOL "Disable cryptlib (ssh and telnet over TLS")
set(WITHOUT_OOII OFF CACHE BOOL "Disable Operation Overkill ][ Terminal")
# CPack stuff...
set(CPACK_PACKAGE_NAME SyncTERM)
set(CPACK_PACKAGE_VENDOR Deuce)
......@@ -30,17 +33,10 @@ set(SOURCE
fonts.c
menu.c
modem.c
ooii.c
ooii_bmenus.c
ooii_cmenus.c
ooii_logons.c
ooii_sounds.c
ripper.c
rlogin.c
ssh.c
syncterm.c
telnet_io.c
telnets.c
term.c
uifcinit.c
window.c
......@@ -54,7 +50,8 @@ if(NOT WIN32)
NAMES gmake make
)
if(${3RDP_GNU_MAKE} STREQUAL "3RDP_GNU_MAKE-NOTFOUND")
set(WITHOUT_CRYPTLIB 1)
set(WITHOUT_CRYPTLIB ON CACHE BOOL "Disable cryptlib (ssh and telnet over TLS" FORCE)
message(WARNING "GNU Make not found, cannot build cryptlib")
else()
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
set(BUILD_TYPE_FLAG DEBUG=1)
......@@ -79,13 +76,26 @@ if(NOT WIN32)
endif()
endif()
if(NOT WITHOUT_OOII)
list(APPEND SOURCE ooii.c ooii_bmenus.c ooii_cmenus.c ooii_logons.c ooii_sounds.c)
endif()
if(NOT WITHOUT_CRYPTLIB)
list(APPEND SOURCE ssh.c telnets.c)
if(WIN32)
find_library(3RDP_CRYPTLIB_LIB cl32 PATHS ${CMAKE_CURRENT_LIST_DIR}/../../3rdp/win32.release/cryptlib/bin NO_DEFAULT_PATH)
endif()
endif()
add_executable(syncterm ${SOURCE})
require_libs(syncterm ciolib comio encode hash sftp uifc xpdev)
if(WITHOUT_OOII)
target_compile_definitions(syncterm PRIVATE WITHOUT_OOII=1)
endif()
if(WITHOUT_CRYPTLIB)
target_compile_definitions(syncterm PRIVATE WITHOUT_CRYPTLIB)
else()
if(WIN32)
find_library(3RDP_CRYPTLIB_LIB cl32 PATHS ${CMAKE_CURRENT_LIST_DIR}/../../3rdp/win32.release/cryptlib/bin NO_DEFAULT_PATH)
target_include_directories(syncterm PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../../3rdp/win32.release/cryptlib/include)
target_link_libraries(syncterm ${3RDP_CRYPTLIB_LIB})
else()
......
......@@ -3388,8 +3388,7 @@ show_bbslist(char *current, int connected)
" %s SDL\n"
" %s ALSA\n"
" %s PortAudio\n"
" %s PulseAudio\n"
" %s PC Speaker\n",
" %s PulseAudio\n",
#ifdef WITHOUT_CRYPTLIB
"[ ]",
#else
......@@ -3451,13 +3450,6 @@ show_bbslist(char *current, int connected)
"[ ]",
#endif
#ifdef WITH_PULSEAUDIO
"[`\xFB`]",
#else
"[ ]",
#endif
#if (defined(__FreeBSD__) && defined(HAS_MACHINE_SPEAKER_H)) || ((defined(__OpenBSD__) || defined(__NetBSD__)) && defined(HAS_MACHINE_SPKR_H))
"[`\xFB`]"
#elif !defined(__GNU__) && !defined(__QNX__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__APPLE__) && !defined(__CYGWIN__) && !defined(__HAIKU__) && !defined(__EMSCRIPTEN__)
"[`\xFB`]"
#else
"[ ]"
......
......@@ -2,15 +2,26 @@ project (XPDev C)
cmake_minimum_required(VERSION 3.11)
set(WITHOUT_OSS OFF CACHE BOOL "Disable OSS Audio")
set(WITHOUT_SDL_AUDIO OFF CACHE BOOL "Disable SDL Audio")
set(WITHOUT_ALSA OFF CACHE BOOL "Disable ALSA Audio")
set(WITHOUT_PORTAUDIO OFF CACHE BOOL "Disable PortAudio Audio")
set(WITHOUT_PULSEAUDIO OFF CACHE BOOL "Disable PulseAudio Audio")
INCLUDE (CheckIncludeFiles)
INCLUDE (CheckFunctionExists)
find_package(Threads)
find_package(X11)
if(NOT WIN32)
find_package(PkgConfig)
pkg_check_modules(SDL2 sdl2)
pkg_check_modules(PULSEAUDIO libpulse-simple)
pkg_check_modules(ALSA alsa)
if(NOT WITHOUT_SDL_AUDIO)
pkg_check_modules(SDL2 sdl2)
endif()
if(NOT WITHOUT_PULSEAUDIO)
pkg_check_modules(PULSEAUDIO libpulse-simple)
endif()
if(NOT WITHOUT_ALSA)
pkg_check_modules(ALSA alsa)
endif()
endif()
set(SOURCE
......@@ -78,16 +89,18 @@ set(HEADER
if(NOT WIN32)
list(APPEND SOURCE xpevent.c)
list(APPEND SOURCE xpsem.c)
list(APPEND SOURCE xpsem.c)
endif()
if(SDL2_INCLUDE_DIRS)
list(APPEND SOURCE sdlfuncs.c)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND SOURCE SDLMain.m)
endif()
if(WIN32)
list(APPEND SOURCE SDL_win32_main.c)
if(NOT WITHOUT_SDL_AUDIO)
if(SDL2_INCLUDE_DIRS)
list(APPEND SOURCE sdlfuncs.c)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND SOURCE SDLMain.m)
endif()
if(WIN32)
list(APPEND SOURCE SDL_win32_main.c)
endif()
endif()
endif()
......@@ -106,28 +119,32 @@ if(HAS_STDINT_H)
target_compile_definitions(xpdev PUBLIC HAS_STDINT_H)
endif()
CHECK_INCLUDE_FILES(sys/soundcard.h HAS_SYS_SOUNDCARD_H)
CHECK_INCLUDE_FILES(soundcard.h HAS_SOUNDCARD_H)
CHECK_INCLUDE_FILES(linux/inttypes.h HAS_LINUX_SOUNDCARD_H)
if(HAS_SYS_SOUNDCARD_H)
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=1)
elseif(HAS_SOUNDCARD_H)
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=2)
elseif(HAS_LINUX_SOUNDCARD_H)
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=3)
if(NOT WITHOUT_OSS)
CHECK_INCLUDE_FILES(sys/soundcard.h HAS_SYS_SOUNDCARD_H)
CHECK_INCLUDE_FILES(soundcard.h HAS_SOUNDCARD_H)
CHECK_INCLUDE_FILES(linux/soundcard.h HAS_LINUX_SOUNDCARD_H)
if(HAS_SYS_SOUNDCARD_H)
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=1)
elseif(HAS_SOUNDCARD_H)
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=2)
elseif(HAS_LINUX_SOUNDCARD_H)
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=3)
else()
target_compile_definitions(xpdev PUBLIC SOUNDCARD_H_IN=0)
endif()
endif()
CHECK_INCLUDE_FILES(dev/speaker/speaker.h HAS_DEV_SPEAKER_SPEAKER_H)
if(HAS_DEV_SPEAKER_SPEAKER_H)
target_compile_definitions(xpdev PRIVATE HAS_DEV_SPEAKER_SPEAKER_H)
endif()
CHECK_INCLUDE_FILES(dev/machine/speaker.h HAS_DEV_MACHINE_SPEAKER_H)
if(HAS_DEV_MACHINE_SPEAKER_H)
target_compile_definitions(xpdev PRIVATE HAS_DEV_MACHINE_SPEAKER_H)
CHECK_INCLUDE_FILES(dev/machine/speaker.h HAS_MACHINE_SPEAKER_H)
if(HAS_MACHINE_SPEAKER_H)
target_compile_definitions(xpdev PRIVATE HAS_MACHINE_SPEAKER_H)
endif()
CHECK_INCLUDE_FILES(dev/speaker/spkr.h HAS_DEV_MACHINE_SPKR_H)
if(HAS_DEV_MACHINE_SPKR_H)
target_compile_definitions(xpdev PRIVATE HAS_DEV_MACHINE_SPKR_H)
CHECK_INCLUDE_FILES(dev/speaker/spkr.h HAS_MACHINE_SPKR_H)
if(HAS_MACHINE_SPKR_H)
target_compile_definitions(xpdev PRIVATE HAS_MACHINE_SPKR_H)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
......@@ -140,9 +157,15 @@ if(WIN32)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
target_link_libraries(xpdev network m)
elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
target_link_libraries(xpdev ossaudio m)
target_link_libraries(xpdev m)
if(NOT WITHOUT_OSS)
target_link_libraries(ossaudio)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
target_link_libraries(xpdev ossaudio m)
target_link_libraries(xpdev m)
if(NOT WITHOUT_OSS)
target_link_libraries(ossaudio)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
target_link_libraries(xpdev socket m)
else()
......@@ -167,46 +190,52 @@ if(HAS_SRANDOMDEV_FUNC)
target_compile_definitions(xpdev PRIVATE HAS_SRANDOMDEV_FUNC)
endif()
if(SDL2_INCLUDE_DIRS)
target_include_directories(xpdev PUBLIC ${SDL2_INCLUDE_DIRS})
set(WITH_SDL_AUDIO TRUE PARENT_SCOPE)
target_compile_definitions(xpdev PUBLIC WITH_SDL_AUDIO)
endif()
if(X11_FOUND)
target_include_directories(xpdev PRIVATE ${X11_INCLUDE_DIR})
if(NOT WITHOUT_SDL_AUDIO)
if(SDL2_FOUND)
target_include_directories(xpdev PUBLIC ${SDL2_INCLUDE_DIRS})
set(WITH_SDL_AUDIO TRUE PARENT_SCOPE)
target_compile_definitions(xpdev PUBLIC WITH_SDL_AUDIO)
endif()
endif()
if (PKG_CONFIG_FOUND)
pkg_check_modules(PORTAUDIO2 portaudio-2.0)
if(PORTAUDIO2_FOUND)
set(PORTAUDIO_FOUND TRUE)
set(PORTAUDIO_LIBS PORTAUDIO2_LIBS)
set(PORTAUDIO_CFLAGS PORTAUDIO2_CFLAGS)
else()
find_path(PORTAUDIO_INCLUDEDIR portaudio.h)
if(PORTAUDIO_INCLUDEDIR)
if(NOT WITHOUT_PORTAUDIO)
pkg_check_modules(PORTAUDIO2 portaudio-2.0)
if(PORTAUDIO2_FOUND)
set(PORTAUDIO_FOUND TRUE)
set(PORTAUDIO_LIBS PORTAUDIO2_LIBS)
set(PORTAUDIO_CFLAGS PORTAUDIO2_CFLAGS)
else()
find_path(PORTAUDIO_INCLUDEDIR portaudio.h)
if(PORTAUDIO_INCLUDEDIR)
set(PORTAUDIO_FOUND TRUE)
endif()
endif()
endif()
endif()
if(PORTAUDIO_FOUND)
target_include_directories(xpdev PRIVATE ${PORTAUDIO_INCLUDEDIR})
target_compile_definitions(xpdev PUBLIC WITH_PORTAUDIO)
if(NOT WITHOUT_PORTAUDIO)
if(PORTAUDIO_FOUND)
target_include_directories(xpdev PRIVATE ${PORTAUDIO_INCLUDEDIR})
target_compile_definitions(xpdev PUBLIC WITH_PORTAUDIO)
endif()
endif()
if(PULSEAUDIO_FOUND)
target_include_directories(xpdev PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
target_compile_definitions(xpdev PUBLIC WITH_PULSEAUDIO)
if(NOT WITHOUT_PULSEAUDIO)
if(PULSEAUDIO_FOUND)
target_include_directories(xpdev PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
target_compile_definitions(xpdev PUBLIC WITH_PULSEAUDIO)
endif()
endif()
if(ALSA_FOUND)
target_include_directories(xpdev PUBLIC ${ALSA_INCLUDE_DIRS})
target_compile_definitions(xpdev PUBLIC USE_ALSA_SOUND)
else()
CHECK_INCLUDE_FILES(alsa/asoundlib.h USE_ALSA_SOUND)
if(USE_ALSA_SOUND)
if(NOT WITHOUT_ALSA)
if(ALSA_FOUND)
target_include_directories(xpdev PUBLIC ${ALSA_INCLUDE_DIRS})
target_compile_definitions(xpdev PUBLIC USE_ALSA_SOUND)
else()
CHECK_INCLUDE_FILES(alsa/asoundlib.h USE_ALSA_SOUND)
if(USE_ALSA_SOUND)
target_compile_definitions(xpdev PUBLIC USE_ALSA_SOUND)
endif()
endif()
endif()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment