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

Initial stab at making the macOS cmake build work

parent 6964306f
No related branches found
No related tags found
No related merge requests found
Pipeline #6763 passed
......@@ -90,6 +90,14 @@ if(NOT WITHOUT_X1!)
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)
......@@ -97,9 +105,6 @@ if(NOT WITHOUT_SDL)
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()
......@@ -152,10 +157,20 @@ else()
endif()
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)
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})
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()
endif()
endif()
......
......@@ -2003,7 +2003,7 @@ CIOLIBEXPORT void ciolib_setscaling_type(enum ciolib_scaling newval)
cio_api.setscaling_type(newval);
}
#if defined(__DARWIN__)
#if defined(WITH_SDL) && defined(__DARWIN__)
#ifdef main
#undef main
#endif
......
......@@ -22,6 +22,6 @@ set(HEADER
)
add_library(encode OBJECT ${SOURCE})
target_compile_features(encode PUBLIC c_std_99)
target_compile_features(encode PUBLIC c_std_11)
target_include_directories(encode PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(encode xpdev)
......@@ -19,6 +19,6 @@ set(HEADER
)
add_library(sftp OBJECT ${SOURCE})
target_compile_features(sftp PUBLIC c_std_99)
target_compile_features(sftp PUBLIC c_std_11)
target_include_directories(sftp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(sftp xpdev)
......@@ -80,6 +80,11 @@ if(NOT WITHOUT_OOII)
list(APPEND SOURCE ooii.c ooii_bmenus.c ooii_cmenus.c ooii_logons.c ooii_sounds.c)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
list(APPEND SOURCE DarwinWrappers.m)
find_library(FOUNDATION_LIBRARY Foundation)
endif()
if(NOT WITHOUT_CRYPTLIB)
list(APPEND SOURCE ssh.c telnets.c)
if(WIN32)
......@@ -87,7 +92,14 @@ if(NOT WITHOUT_CRYPTLIB)
endif()
endif()
add_executable(syncterm ${SOURCE})
add_executable(syncterm MACOSX_BUNDLE ${SOURCE})
set_target_properties(syncterm PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist
)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_sources(syncterm PRIVATE SyncTERM.icns)
set_source_files_properties(SyncTERM.icns PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
endif()
require_libs(syncterm ciolib comio encode hash sftp uifc xpdev)
if(WITHOUT_OOII)
target_compile_definitions(syncterm PRIVATE WITHOUT_OOII=1)
......@@ -116,6 +128,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
target_link_libraries(syncterm util)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_link_libraries(syncterm util)
target_link_libraries(syncterm ${FOUNDATION_LIBRARY})
endif()
install(TARGETS syncterm DESTINATION bin)
......
project (XPDev C)
cmake_minimum_required(VERSION 3.11)
include(CheckSymbolExists)
set(WITHOUT_OSS OFF CACHE BOOL "Disable OSS Audio")
set(WITHOUT_SDL_AUDIO OFF CACHE BOOL "Disable SDL Audio")
......@@ -87,17 +88,24 @@ 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(SDL2_INCLUDE_DIRS)
list(APPEND SOURCE sdlfuncs.c)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND SOURCE SDLMain.m)
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)
list(APPEND SOURCE SDL_win32_main.c)
endif()
......@@ -105,9 +113,16 @@ if(NOT WITHOUT_SDL_AUDIO)
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")
target_compile_definitions(xpdev PUBLIC __unix__ __DARWIN__ USE_SNPRINTF)
endif()
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)
......@@ -191,10 +206,20 @@ if(HAS_SRANDOMDEV_FUNC)
endif()
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)
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()
......@@ -239,3 +264,7 @@ if(NOT WITHOUT_ALSA)
endif()
endif()
endif()
if(NOT HAS_STRLCPY)
target_compile_definitions(xpdev PUBLIC NEEDS_STRLCPY)
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