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

Some CMakeLists.txt cleanup

Remove more of the obsolete stuff.
parent 22c6fecb
No related branches found
No related tags found
No related merge requests found
project (ConIOLib C)
cmake_minimum_required(VERSION 3.11)
project (ConIOLib C)
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")
......@@ -9,31 +9,31 @@ 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)
INCLUDE (CheckSymbolExists)
find_package(Threads REQUIRED)
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
set(CURSES_NEED_WIDE TRUE)
find_package(Threads REQUIRED)
if(NOT WIN32)
find_package(Curses)
find_package(PkgConfig)
if(NOT WITHOUT_SDL)
pkg_check_modules(SDL2 sdl2)
find_package(Curses)
find_package(PkgConfig)
if(NOT WITHOUT_SDL)
find_package(SDL2 CONFIG PATHS /Library/Frameworks)
endif()
if(NOT WITHOUT_X11)
if(NOT WITHOUT_XRENDER)
pkg_check_modules(XRENDER xrender)
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()
if(NOT WITHOUT_XINERAMA)
pkg_check_modules(XINERAMA xinerama)
endif()
if(NOT WITHOUT_XRANDR)
pkg_check_modules(XRANDR xrandr)
endif()
endif()
......@@ -66,16 +66,16 @@ if(WIN32)
list(APPEND SOURCE ciolib.rc)
endif()
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(CURSES_FOUND)
if(CURSES_FOUND)
list(APPEND SOURCE curs_cio.c)
set(USE_CURSES_ANYWAY TRUE)
else()
if(${CMAKE_SYSTEM_NAME} MATCHES "(Free|Open|Net)BSD")
list(APPEND SOURCE curs_cio.c)
set(USE_CURSES_ANYWAY TRUE)
else()
if(${CMAKE_SYSTEM_NAME} MATCHES "(Free|Open|Net)BSD")
list(APPEND SOURCE curs_cio.c)
set(USE_CURSES_ANYWAY TRUE)
else()
message(FATAL_ERROR "ncursesw not found")
if(NOT WIN32)
message(FATAL_ERROR "No wide-capable curses found")
endif()
endif()
endif()
......@@ -84,29 +84,19 @@ 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(NOT WITHOUT_SDL)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(NOT SDL2_FOUND)
find_library(SDL2_LIBRARY SDL2)
if(SDL2_LIBRARY)
set(SDL2_FOUND ON)
endif()
endif()
endif()
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()
set(NEED_BITMAP TRUE)
set(NEED_DLOPEN TRUE)
set(NEED_SCALE TRUE)
endif()
endif()
......@@ -118,14 +108,10 @@ if(NEED_SCALE)
list(APPEND SOURCE scale.c xbr.c)
endif()
check_symbol_exists(vasprintf stdio.h HAVE_VASPRINTF)
add_library(ciolib OBJECT ${SOURCE})
target_include_directories(ciolib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
if(CURSES_FOUND)
if(${CMAKE_SYSTEM_NAME} MATCHES "(Free|Open|Net)BSD")
list(APPEND SOURCE curs_cio.c)
set(USE_CURSES_ANYWAY TRUE)
endif()
endif()
if(WITHOUT_X11)
target_compile_definitions(ciolib PRIVATE NO_X)
......@@ -151,26 +137,17 @@ else()
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")
set(WITHOUT_X11 ON CACHE BOOL "Disable X11 video support" FORCE)
endif()
endif()
if(NOT WITHOUT_SDL)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(SDL2_LIBRARY)
target_link_libraries(ciolib ${SDL2_LIBRARY})
target_include_directories(ciolib PUBLIC ${SDL2_LIBRARY}/Headers)
target_include_directories(ciolib PUBLIC ${SDL2_LIBRARY})
if(SDL2_FOUND)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
target_compile_definitions(ciolib PUBLIC STATIC_SDL)
target_compile_definitions(ciolib PUBLIC WITH_SDL)
endif()
else()
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()
target_include_directories(ciolib PUBLIC ${SDL2_INCLUDE_DIRS})
target_compile_definitions(ciolib PUBLIC WITH_SDL)
endif()
endif()
......@@ -207,7 +184,6 @@ if(USE_CURSES_ANYWAY)
endif()
endif()
CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF)
if(HAVE_VASPRINTF)
target_compile_definitions(ciolib PRIVATE HAVE_VASPRINTF)
endif()
......
project (XPDev C)
cmake_minimum_required(VERSION 3.11)
include(CheckSymbolExists)
project (XPDev C)
set(WITHOUT_OSS OFF CACHE BOOL "Disable OSS Audio")
set(WITHOUT_SDL_AUDIO OFF CACHE BOOL "Disable SDL Audio")
......@@ -9,19 +8,24 @@ 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)
include(CheckSymbolExists)
include(CheckIncludeFiles)
find_package(Threads)
if(NOT WIN32)
find_package(PkgConfig)
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)
if(NOT WITHOUT_SDL_AUDIO)
find_package(SDL2 CONFIG PATHS /Library/Frameworks)
endif()
if(NOT WITHOUT_PULSEAUDIO)
find_package(PulseAudio CONFIG PATHS /usr/local)
endif()
find_package(PkgConfig)
if(PKGCONFIG_FOUND)
pkg_check_modules(ALSA alsa)
pkg_check_modules(PORTAUDIO portaudio-2.0)
if(NOT PORTAUDIO_FOUND)
find_path(PORTAUDIO_INCLUDEDIR portaudio.h)
if(PORTAUDIO_INCLUDEDIR)
set(PORTAUDIO_FOUND TRUE)
endif()
endif()
endif()
......@@ -88,22 +92,12 @@ set(HEADER
xpsem.h
)
check_symbol_exists(strlcpy string.h HAS_STRLCPY)
if(NOT WIN32)
list(APPEND SOURCE xpevent.c)
list(APPEND SOURCE xpsem.c)
endif()
if(NOT WITHOUT_SDL_AUDIO)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(NOT SDL2_FOUND)
find_library(SDL2_LIBRARY SDL2)
if(SDL2_LIBRARY)
set(SDL2_FOUND ON)
endif()
endif()
endif()
if(SDL2_FOUND)
list(APPEND SOURCE sdlfuncs.c)
if(WIN32)
......@@ -112,32 +106,70 @@ if(NOT WITHOUT_SDL_AUDIO)
endif()
endif()
check_symbol_exists(strlcpy string.h HAS_STRLCPY)
check_symbol_exists(random stdlib.h HAS_RANDOM_FUNC)
check_symbol_exists(srandomdev stdlib.h HAS_SRANDOMDEV_FUNC)
check_include_files(inttypes.h HAS_INTTYPES_H)
check_include_files(stdint.h HAS_STDINT_H)
check_include_files(dev/speaker/speaker.h HAS_DEV_SPEAKER_SPEAKER_H)
check_include_files(dev/machine/speaker.h HAS_MACHINE_SPEAKER_H)
check_include_files(dev/speaker/spkr.h HAS_MACHINE_SPKR_H)
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)
endif()
add_library(xpdev OBJECT ${SOURCE})
target_compile_features(xpdev PUBLIC c_std_11)
target_include_directories(xpdev PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(xpdev PUBLIC ${XPDevPlus_BINARY_DIR})
target_link_libraries(xpdev ${CMAKE_DL_LIBS})
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
if(WIN32)
target_compile_definitions(xpdev PUBLIC _WIN32 _WIN32_WINNT=0x0501 WINVER=0x0501 MSVCRT_VERSION=0x0501 _WIN32_IE=0x0500)
target_link_libraries(xpdev iphlpapi ws2_32 winmm netapi32)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
target_link_libraries(xpdev network m)
elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
target_link_libraries(xpdev m)
if(NOT WITHOUT_OSS)
target_link_libraries(xpdev ossaudio)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
target_link_libraries(xpdev m)
if(NOT WITHOUT_OSS)
target_link_libraries(xpdev ossaudio)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
target_link_libraries(xpdev socket m)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_compile_definitions(xpdev PUBLIC __unix__ __DARWIN__ USE_SNPRINTF)
target_link_libraries(xpdev m)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_compile_definitions(xpdev PUBLIC POSIX_C_SOURCE=200809L _DEFAULT_SOURCE _BSD_SOURCE SPEED_MACROS_ONLY _GNU_SOURCE _FILE_OFFSET_BITS=64)
target_link_libraries(xpdev m)
else()
target_link_libraries(xpdev m)
endif()
target_compile_features(xpdev PUBLIC c_std_11)
target_link_libraries(xpdev ${CMAKE_DL_LIBS})
target_link_libraries(xpdev ${CMAKE_THREAD_LIBS_INIT})
target_include_directories(xpdev PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
if(NOT WIN32)
target_compile_definitions(xpdev PUBLIC USE_XP_SEMAPHORES)
endif()
CHECK_INCLUDE_FILES(inttypes.h HAS_INTTYPES_H)
CHECK_INCLUDE_FILES(stdint.h HAS_STDINT_H)
target_compile_definitions(xpdev PUBLIC LINK_LIST_THREADSAFE)
if(HAS_INTTYPES_H)
target_compile_definitions(xpdev PUBLIC HAS_INTTYPES_H)
target_compile_definitions(xpdev PUBLIC HAS_INTTYPES_H)
endif()
if(HAS_STDINT_H)
target_compile_definitions(xpdev PUBLIC HAS_STDINT_H)
target_compile_definitions(xpdev PUBLIC HAS_STDINT_H)
endif()
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)
......@@ -149,45 +181,16 @@ if(NOT WITHOUT_OSS)
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_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_MACHINE_SPKR_H)
if(HAS_MACHINE_SPKR_H)
target_compile_definitions(xpdev PRIVATE HAS_MACHINE_SPKR_H)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_compile_definitions(xpdev PUBLIC POSIX_C_SOURCE=200809L _DEFAULT_SOURCE _BSD_SOURCE SPEED_MACROS_ONLY _GNU_SOURCE _FILE_OFFSET_BITS=64)
endif()
if(WIN32)
target_compile_definitions(xpdev PUBLIC _WIN32 _WIN32_WINNT=0x0501 WINVER=0x0501 MSVCRT_VERSION=0x0501 _WIN32_IE=0x0500)
target_link_libraries(xpdev iphlpapi ws2_32 winmm netapi32)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
target_link_libraries(xpdev network m)
elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
target_link_libraries(xpdev m)
if(NOT WITHOUT_OSS)
target_link_libraries(xpdev ossaudio)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
target_link_libraries(xpdev m)
if(NOT WITHOUT_OSS)
target_link_libraries(xpdev ossaudio)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
target_link_libraries(xpdev socket m)
else()
target_link_libraries(xpdev m)
endif()
target_link_libraries(xpdev ${CMAKE_THREAD_LIBS_INIT})
if(EXISTS /dev/urandom)
target_compile_definitions(xpdev PRIVATE HAS_DEV_URANDOM URANDOM_DEV="/dev/urandom")
endif()
......@@ -195,47 +198,21 @@ if(EXISTS /dev/random)
target_compile_definitions(xpdev PRIVATE HAS_DEV_RANDOM RANDOM_DEV="/dev/random")
endif()
CHECK_FUNCTION_EXISTS(random HAS_RANDOM_FUNC)
if(HAS_RANDOM_FUNC)
target_compile_definitions(xpdev PRIVATE HAS_RANDOM_FUNC)
endif()
CHECK_FUNCTION_EXISTS(srandomdev HAS_SRANDOMDEV_FUNC)
if(HAS_SRANDOMDEV_FUNC)
target_compile_definitions(xpdev PRIVATE HAS_SRANDOMDEV_FUNC)
endif()
if(NOT WITHOUT_SDL_AUDIO)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(SDL2_LIBRARY)
target_link_libraries(xpdev ${SDL2_LIBRARY})
target_include_directories(xpdev PUBLIC ${SDL2_LIBRARY}/Headers)
target_include_directories(xpdev PUBLIC ${SDL2_LIBRARY})
target_compile_definitions(xpdev PUBLIC STATIC_SDL)
target_compile_definitions(xpdev PUBLIC WITH_SDL_AUDIO)
endif()
else()
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()
endif()
if (PKG_CONFIG_FOUND)
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()
if(SDL2_FOUND)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
target_compile_definitions(ciolib PUBLIC STATIC_SDL)
endif()
target_include_directories(xpdev PUBLIC ${SDL2_INCLUDE_DIRS})
target_compile_definitions(xpdev PUBLIC WITH_SDL_AUDIO)
endif()
endif()
......@@ -248,7 +225,7 @@ endif()
if(NOT WITHOUT_PULSEAUDIO)
if(PULSEAUDIO_FOUND)
target_include_directories(xpdev PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
target_include_directories(xpdev PUBLIC ${PULSEAUDIO_INCLUDE_DIR})
target_compile_definitions(xpdev PUBLIC WITH_PULSEAUDIO)
endif()
endif()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment