diff --git a/src/conio/CMakeLists.txt b/src/conio/CMakeLists.txt index e3fcefcdc12ea75fd2f951ee317d47a878dda47a..f34bcda15f7a684380d0255359dd526c7825b7fc 100644 --- a/src/conio/CMakeLists.txt +++ b/src/conio/CMakeLists.txt @@ -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() diff --git a/src/syncterm/CMakeLists.txt b/src/syncterm/CMakeLists.txt index 17711321e2c834ca4c65dc9e08777ad587406c52..59c461c9f72aaccc3acdf1c1e8377ca6573e03ed 100644 --- a/src/syncterm/CMakeLists.txt +++ b/src/syncterm/CMakeLists.txt @@ -1,6 +1,9 @@ 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() diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index 7f5ce49b79b5cf5e6cf3160bc2daeec1a028ac83..8cb94997cb9ccaac1fc503ab62bee5ee02d47320 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -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 "[ ]" diff --git a/src/xpdev/CMakeLists.txt b/src/xpdev/CMakeLists.txt index c1aca0bc167b9b8d9a91be256eec17d88848aba5..8e6aac0359a64a6216abf613cf69edebdcea1366 100644 --- a/src/xpdev/CMakeLists.txt +++ b/src/xpdev/CMakeLists.txt @@ -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()