Merge branch 'master' of https://github.com/86Box/86Box into qt
This commit is contained in:
@@ -20,3 +20,11 @@ tab_width = 8
|
|||||||
[*.manifest]
|
[*.manifest]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.yml]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[**/CMakeLists.txt]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
4
.github/workflows/cmake.yml
vendored
4
.github/workflows/cmake.yml
vendored
@@ -84,7 +84,7 @@ jobs:
|
|||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: '86Box-${{ matrix.build.name }}-MSYS2-${{ matrix.environment.msystem }}-${{ github.sha }}'
|
name: '86Box-${{ matrix.build.name }}-MSYS2-${{ matrix.environment.msystem }}-${{ github.sha }}'
|
||||||
path: build/artifacts/bin/**
|
path: build/artifacts/**
|
||||||
|
|
||||||
vs2019:
|
vs2019:
|
||||||
name: VS2019 ${{ matrix.build.name }} ${{ matrix.target-arch }} build (${{ matrix.toolset }})
|
name: VS2019 ${{ matrix.build.name }} ${{ matrix.target-arch }} build (${{ matrix.toolset }})
|
||||||
@@ -130,7 +130,7 @@ jobs:
|
|||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: '86Box-${{ matrix.build.name }}-VS2019-${{ matrix.target-arch }}-${{ matrix.toolset }}-${{ github.sha }}'
|
name: '86Box-${{ matrix.build.name }}-VS2019-${{ matrix.target-arch }}-${{ matrix.toolset }}-${{ github.sha }}'
|
||||||
path: build/artifacts/bin/**
|
path: build/artifacts/**
|
||||||
|
|
||||||
linux:
|
linux:
|
||||||
name: "Linux GCC 11"
|
name: "Linux GCC 11"
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,7 +5,6 @@
|
|||||||
CMakeFiles
|
CMakeFiles
|
||||||
Makefile
|
Makefile
|
||||||
*.a
|
*.a
|
||||||
*.cmake
|
|
||||||
/src/*.exe
|
/src/*.exe
|
||||||
/src/86Box
|
/src/86Box
|
||||||
/src/include/86box/version.h
|
/src/include/86box/version.h
|
||||||
@@ -22,7 +21,6 @@ Makefile
|
|||||||
/src/*.log
|
/src/*.log
|
||||||
/src/*.dmp
|
/src/*.dmp
|
||||||
/src/nvr/
|
/src/nvr/
|
||||||
/src/printer/
|
|
||||||
/src/roms/
|
/src/roms/
|
||||||
/src/screenshots/
|
/src/screenshots/
|
||||||
|
|
||||||
|
105
CMakeLists.txt
105
CMakeLists.txt
@@ -18,16 +18,22 @@ cmake_minimum_required(VERSION 3.16)
|
|||||||
cmake_policy(SET CMP0091 NEW)
|
cmake_policy(SET CMP0091 NEW)
|
||||||
cmake_policy(SET CMP0079 NEW)
|
cmake_policy(SET CMP0079 NEW)
|
||||||
|
|
||||||
if(VCPKG_TOOLCHAIN AND VCPKG_TARGET_TRIPLET MATCHES "static")
|
|
||||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
project(86Box
|
project(86Box
|
||||||
VERSION 3.1
|
VERSION 3.1
|
||||||
DESCRIPTION "Emulator of x86-based systems"
|
DESCRIPTION "Emulator of x86-based systems"
|
||||||
HOMEPAGE_URL "https://86box.net"
|
HOMEPAGE_URL "https://86box.net"
|
||||||
LANGUAGES C CXX)
|
LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(WIN32 AND VCPKG_TOOLCHAIN)
|
||||||
|
if(VCPKG_TARGET_TRIPLET MATCHES "-windows-static$")
|
||||||
|
# `-static` triplet, use the statically linked CRT
|
||||||
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
|
else()
|
||||||
|
# Regular triplet (or `-static-md`), use the dynamically linked CRT
|
||||||
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Detect the target architecture by trying to compile `src/arch_detect.c`
|
# Detect the target architecture by trying to compile `src/arch_detect.c`
|
||||||
try_compile(RESULT_VAR ${CMAKE_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/src/arch_detect.c" OUTPUT_VARIABLE ARCH)
|
try_compile(RESULT_VAR ${CMAKE_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/src/arch_detect.c" OUTPUT_VARIABLE ARCH)
|
||||||
string(REGEX MATCH "ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")
|
string(REGEX MATCH "ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")
|
||||||
@@ -56,6 +62,10 @@ endif()
|
|||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
|
||||||
|
# Optional features
|
||||||
|
#
|
||||||
|
# Option Description Def.
|
||||||
|
# ------ ----------- ----
|
||||||
option(RELEASE "Release build" OFF)
|
option(RELEASE "Release build" OFF)
|
||||||
option(USB "USB support" OFF)
|
option(USB "USB support" OFF)
|
||||||
option(DYNAREC "Dynamic recompiler" ON)
|
option(DYNAREC "Dynamic recompiler" ON)
|
||||||
@@ -64,62 +74,67 @@ option(MUNT "MUNT" ON)
|
|||||||
option(VRAMDUMP "Video RAM dumping" OFF)
|
option(VRAMDUMP "Video RAM dumping" OFF)
|
||||||
option(DINPUT "DirectInput" OFF)
|
option(DINPUT "DirectInput" OFF)
|
||||||
option(DISCORD "Discord integration" ON)
|
option(DISCORD "Discord integration" ON)
|
||||||
option(QT "QT GUI" ON)
|
|
||||||
option(CPPTHREADS "C++11 threads" ON)
|
option(CPPTHREADS "C++11 threads" ON)
|
||||||
|
|
||||||
option(NEW_DYNAREC "Use the PCem v15 (\"new\") dynamic recompiler" OFF)
|
option(NEW_DYNAREC "Use the PCem v15 (\"new\") dynamic recompiler" OFF)
|
||||||
|
|
||||||
option(MINITRACE "Enable Chrome tracing using the modified minitrace library" OFF)
|
option(MINITRACE "Enable Chrome tracing using the modified minitrace library" OFF)
|
||||||
|
|
||||||
option(DEV_BRANCH "Development branch" OFF)
|
option(DEV_BRANCH "Development branch" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(AMD_K5 "AMD K5" ON "DEV_BRANCH" OFF)
|
option(QT "QT GUI" ON)
|
||||||
CMAKE_DEPENDENT_OPTION(CYRIX_6X86 "Cyrix 6x86" ON "DEV_BRANCH" OFF)
|
|
||||||
CMAKE_DEPENDENT_OPTION(GUSMAX "Gravis UltraSound MAX" ON "DEV_BRANCH" OFF)
|
# Development branch features
|
||||||
CMAKE_DEPENDENT_OPTION(HEDAKA "Hedaka HED-919" ON "DEV_BRANCH" OFF)
|
#
|
||||||
CMAKE_DEPENDENT_OPTION(I450KX "Intel i450KX" ON "DEV_BRANCH" OFF)
|
# Option Description Def. Condition Otherwise
|
||||||
CMAKE_DEPENDENT_OPTION(LASERXT "VTech Laser XT" ON "DEV_BRANCH" OFF)
|
# ------ ----------- ---- --------- ---------
|
||||||
CMAKE_DEPENDENT_OPTION(MGA "Matrox Mystique graphics adapters" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(AMD_K5 "AMD K5" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(NO_SIO "Machines without emulated Super I/O chips" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(CYRIX_6X86 "Cyrix 6x86" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(OLIVETTI "Olivetti M290" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(GUSMAX "Gravis UltraSound MAX" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(OPEN_AT "OpenAT" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(HEDAKA "Hedaka HED-919" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(OPENGL "OpenGL 3.0 Core renderer" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(I450KX "Intel i450KX" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(PAS16 "Pro Audio Spectrum 16" OFF "DEV_BRANCH" OFF)
|
cmake_dependent_option(LASERXT "VTech Laser XT" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(PS2M70T4 "IBM PS/2 model 70 (type 4)" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(MGA "Matrox Mystique graphics adapters" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(S3TRIO3D2X "S3 Trio3D/2X" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(NO_SIO "Machines without emulated Super I/O chips" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(SIO_DETECT "Super I/O Detection Helper" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(OLIVETTI "Olivetti M290" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(M154X "ALi ALADDiN IV" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(OPEN_AT "OpenAT" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(M6117 "ALi M6117" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(OPENGL "OpenGL 3.0 Core renderer" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(VGAWONDER "ATI VGA Wonder (ATI-18800)" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(PAS16 "Pro Audio Spectrum 16" OFF "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(VNC "VNC renderer" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(PS2M70T4 "IBM PS/2 model 70 (type 4)" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(XL24 "ATI VGA Wonder XL24 (ATI-28800-6)" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(S3TRIO3D2X "S3 Trio3D/2X" ON "DEV_BRANCH" OFF)
|
||||||
CMAKE_DEPENDENT_OPTION(VECT486VL "HP Vectra 486VL" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(SIO_DETECT "Super I/O Detection Helper" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(M154X "ALi ALADDiN IV" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(M6117 "ALi M6117" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(VGAWONDER "ATI VGA Wonder (ATI-18800)" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(VNC "VNC renderer" OFF "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(XL24 "ATI VGA Wonder XL24 (ATI-28800-6)" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(VECT486VL "HP Vectra 486VL" ON "DEV_BRANCH" OFF)
|
||||||
|
|
||||||
|
# Determine the build type
|
||||||
|
set(RELEASE_BUILD OFF)
|
||||||
|
set(BETA_BUILD OFF)
|
||||||
|
set(ALPHA_BUILD OFF)
|
||||||
|
|
||||||
string(TOLOWER "${BUILD_TYPE}" BUILD_TYPE_LOWER)
|
string(TOLOWER "${BUILD_TYPE}" BUILD_TYPE_LOWER)
|
||||||
if(BUILD_TYPE_LOWER STREQUAL "release")
|
if(BUILD_TYPE_LOWER STREQUAL "release")
|
||||||
|
# Release build
|
||||||
|
set(RELEASE_BUILD ON)
|
||||||
add_compile_definitions(RELEASE_BUILD)
|
add_compile_definitions(RELEASE_BUILD)
|
||||||
elseif(BUILD_TYPE_LOWER STREQUAL "beta")
|
elseif(BUILD_TYPE_LOWER STREQUAL "beta")
|
||||||
|
# Beta build
|
||||||
|
set(BETA_BUILD ON)
|
||||||
add_compile_definitions(BETA_BUILD)
|
add_compile_definitions(BETA_BUILD)
|
||||||
elseif(BUILD_TYPE_LOWER STREQUAL "alpha")
|
elseif(BUILD_TYPE_LOWER STREQUAL "alpha")
|
||||||
|
# Alpha build
|
||||||
|
set(ALPHA_BUILD ON)
|
||||||
add_compile_definitions(ALPHA_BUILD)
|
add_compile_definitions(ALPHA_BUILD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# HACK: Avoid a MSVC2019 compiler bug on ARM64 Debug builds
|
# Variables introduced by richardg867 for versioning stuff
|
||||||
if(MSVC_TOOLSET_VERSION GREATER_EQUAL 142 AND ARCH STREQUAL "arm64")
|
if(NOT CMAKE_PROJECT_VERSION_PATCH)
|
||||||
# Define a cache option in case somebody wants to disable this workaround
|
set(CMAKE_PROJECT_VERSION_PATCH 0)
|
||||||
set(AVOID_LNK1322 ON CACHE BOOL "Prevent LNK1322 on MSVC2019 ARM64 debug builds")
|
|
||||||
|
|
||||||
if(AVOID_LNK1322)
|
|
||||||
message(STATUS "Working around LNK1322 (86Box#1268)")
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Gy")
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Gy")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT EMU_BUILD_NUM)
|
||||||
# HACK: MinGW and macOS <10.15 does not have `timespec_get`
|
set(EMU_BUILD_NUM 0)
|
||||||
include(CheckSymbolExists)
|
endif()
|
||||||
check_symbol_exists(timespec_get time.h HAS_TIMESPEC_GET)
|
if(NOT EMU_COPYRIGHT_YEAR)
|
||||||
if(HAS_TIMESPEC_GET)
|
set(EMU_COPYRIGHT_YEAR 2021)
|
||||||
add_compile_definitions(HAS_TIMESPEC_GET)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
4
cmake/flags-gcc-arm64.cmake
Normal file
4
cmake/flags-gcc-arm64.cmake
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "-march=armv8-a -mfloat-abi=hard ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-march=armv8-a -mfloat-abi=hard ${CMAKE_CXX_FLAGS}")
|
4
cmake/flags-gcc-armv7.cmake
Normal file
4
cmake/flags-gcc-armv7.cmake
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard ${CMAKE_CXX_FLAGS}")
|
4
cmake/flags-gcc-i686.cmake
Normal file
4
cmake/flags-gcc-i686.cmake
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "-m32 -march=i686 -msse2 -mfpmath=sse ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-m32 -march=i686 -msse2 -mfpmath=sse ${CMAKE_CXX_FLAGS}")
|
4
cmake/flags-gcc-x86_64.cmake
Normal file
4
cmake/flags-gcc-x86_64.cmake
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "-m64 -march=x86-64 -msse2 -mfpmath=sse ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-m64 -march=x86-64 -msse2 -mfpmath=sse ${CMAKE_CXX_FLAGS}")
|
10
cmake/flags-gcc.cmake
Normal file
10
cmake/flags-gcc.cmake
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
set(CMAKE_CONFIGURATION_TYPES Debug;Release;Optimized)
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "-fomit-frame-pointer -mstackrealign -Wall -fno-strict-aliasing")
|
||||||
|
set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
|
||||||
|
set(CMAKE_C_FLAGS_RELEASE "-g0 -O3")
|
||||||
|
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "-ggdb -Og")
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
||||||
|
set(CMAKE_C_FLAGS_OPTIMIZED "-march=native -mtune=native -O3 -ffp-contract=fast -flto")
|
||||||
|
set(CMAKE_CXX_FLAGS_OPTIMIZED ${CMAKE_C_FLAGS_OPTIMIZED})
|
10
cmake/llvm-win32-arm64.cmake
Normal file
10
cmake/llvm-win32-arm64.cmake
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc-arm64.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER clang)
|
||||||
|
set(CMAKE_CXX_COMPILER clang++)
|
||||||
|
set(CMAKE_RC_COMPILER rc)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET aarch64-pc-windows-msvc)
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET aarch64-pc-windows-msvc)
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR ARM64)
|
10
cmake/llvm-win32-i686.cmake
Normal file
10
cmake/llvm-win32-i686.cmake
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc-i686.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER clang)
|
||||||
|
set(CMAKE_CXX_COMPILER clang++)
|
||||||
|
set(CMAKE_RC_COMPILER rc)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET i686-pc-windows-msvc)
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET i686-pc-windows-msvc)
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR X86)
|
10
cmake/llvm-win32-x86_64.cmake
Normal file
10
cmake/llvm-win32-x86_64.cmake
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/flags-gcc-x86_64.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER clang)
|
||||||
|
set(CMAKE_CXX_COMPILER clang++)
|
||||||
|
set(CMAKE_RC_COMPILER rc)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET x86_64-pc-windows-msvc)
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET x86_64-pc-windows-msvc)
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR AMD64)
|
@@ -15,37 +15,15 @@
|
|||||||
# Copyright 2021 dob205.
|
# Copyright 2021 dob205.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Prepare the macOS app bundle icon depending on the release channel
|
|
||||||
set(APP_ICON_MACOSX)
|
|
||||||
if (APPLE)
|
|
||||||
if(RELEASE_BUILD)
|
|
||||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/release/86Box.icns)
|
|
||||||
elseif(BETA_BUILD)
|
|
||||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/beta/86Box.icns)
|
|
||||||
elseif(ALPHA_BUILD)
|
|
||||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/dev/86Box.icns)
|
|
||||||
else()
|
|
||||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/branch/86Box.icns)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES
|
|
||||||
MACOSX_PACKAGE_LOCATION "Resources")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# WIN32 marks us as a GUI app on Windows
|
# WIN32 marks us as a GUI app on Windows
|
||||||
# MACOSX_BUNDLE prepares a macOS application bundle including with the app icon
|
|
||||||
add_executable(86Box WIN32 MACOSX_BUNDLE 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c
|
add_executable(86Box WIN32 MACOSX_BUNDLE 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c
|
||||||
dma.c ddma.c nmi.c pic.c pit.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c fifo8.c
|
dma.c ddma.c nmi.c pic.c pit.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c fifo8.c
|
||||||
device.c nvr.c nvr_at.c nvr_ps2.c ${APP_ICON_MACOSX})
|
device.c nvr.c nvr_at.c nvr_ps2.c)
|
||||||
|
|
||||||
if(CPPTHREADS)
|
if(CPPTHREADS)
|
||||||
target_sources(86Box PRIVATE thread.cpp)
|
target_sources(86Box PRIVATE thread.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
target_link_libraries(86Box "-framework AppKit")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NEW_DYNAREC)
|
if(NEW_DYNAREC)
|
||||||
add_compile_definitions(USE_NEW_DYNAREC)
|
add_compile_definitions(USE_NEW_DYNAREC)
|
||||||
endif()
|
endif()
|
||||||
@@ -79,10 +57,10 @@ target_link_libraries(86Box cpu chipset mch dev mem fdd game cdrom zip mo hdd
|
|||||||
net print scsi sio snd vid voodoo plat ui)
|
net print scsi sio snd vid voodoo plat ui)
|
||||||
|
|
||||||
if(WIN32 AND ARCH STREQUAL "i386")
|
if(WIN32 AND ARCH STREQUAL "i386")
|
||||||
if(MSVC)
|
if(MINGW)
|
||||||
target_link_options(86Box PRIVATE "/LARGEADDRESSAWARE")
|
|
||||||
else()
|
|
||||||
target_link_options(86Box PRIVATE "LINKER:--large-address-aware")
|
target_link_options(86Box PRIVATE "LINKER:--large-address-aware")
|
||||||
|
else()
|
||||||
|
target_link_options(86Box PRIVATE "LINKER:/LARGEADDRESSAWARE")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -91,46 +69,12 @@ if(MINGW)
|
|||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".dll.a")
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".dll.a")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Variables introduced by richardg867 for versioning stuff
|
|
||||||
if(NOT CMAKE_PROJECT_VERSION_PATCH)
|
|
||||||
set(CMAKE_PROJECT_VERSION_PATCH 0)
|
|
||||||
endif()
|
|
||||||
if(NOT EMU_BUILD_NUM)
|
|
||||||
set(EMU_BUILD_NUM 0)
|
|
||||||
endif()
|
|
||||||
if(NOT EMU_COPYRIGHT_YEAR)
|
|
||||||
set(EMU_COPYRIGHT_YEAR 2021)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
#some macOS specific configuration steps
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
# Force using the newest library if it's installed by homebrew
|
# Force using the newest library if it's installed by homebrew
|
||||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||||
|
|
||||||
|
|
||||||
# prepare stuff for macOS app bundles
|
|
||||||
set(CMAKE_MACOSX_BUNDLE 1)
|
|
||||||
|
|
||||||
# setting our compilation target to macOS 10.13 High Sierra
|
# setting our compilation target to macOS 10.13 High Sierra
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
|
||||||
|
|
||||||
# set the Info.plist properly
|
|
||||||
set_target_properties(86Box PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist.in)
|
|
||||||
set(MACOSX_BUNDLE_GUI_IDENTIFIER net.86Box.86Box)
|
|
||||||
set(MACOSX_BUNDLE_BUNDLE_NAME 86Box)
|
|
||||||
set(MACOSX_BUNDLE_BUNDLE_VERSION 3.1.${EMU_BUILD_NUM})
|
|
||||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "3.1.${EMU_BUILD_NUM}")
|
|
||||||
set(MACOSX_BUNDLE_LONG_VERSION_STRING "3.1.${EMU_BUILD_NUM}")
|
|
||||||
set(MACOSX_BUNDLE_ICON_FILE 86Box.icns)
|
|
||||||
set(MACOSX_BUNDLE_INFO_STRING "A emulator of old computers")
|
|
||||||
set(MACOSX_BUNDLE_COPYRIGHT "© 2007-${EMU_COPYRIGHT_YEAR} 86Box contributors")
|
|
||||||
|
|
||||||
|
|
||||||
# preparing the code signing for easier distribution, Apple dev certificate needed at one point
|
|
||||||
#set(XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "YES")
|
|
||||||
#set(XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-")
|
|
||||||
#set(XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${CMAKE_CURRENT_SOURCE_DIR}/mac/codesign/dev/app.entitlements)
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(QT)
|
if(QT)
|
||||||
@@ -149,7 +93,9 @@ endif()
|
|||||||
find_package(Freetype REQUIRED)
|
find_package(Freetype REQUIRED)
|
||||||
include_directories(${FREETYPE_INCLUDE_DIRS})
|
include_directories(${FREETYPE_INCLUDE_DIRS})
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
target_link_libraries(86Box Freetype::Freetype) # bundles freetype for the macOS app bundle
|
# Freetype is dynamically loaded by the emulator, however, we link it
|
||||||
|
# on macOS so it gets copied to the bundle by the installation process
|
||||||
|
target_link_libraries(86Box Freetype::Freetype)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(OpenAL REQUIRED)
|
find_package(OpenAL REQUIRED)
|
||||||
@@ -158,16 +104,12 @@ target_link_libraries(86Box ${OPENAL_LIBRARY})
|
|||||||
|
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
include_directories(${SDL2_INCLUDE_DIRS})
|
include_directories(${SDL2_INCLUDE_DIRS})
|
||||||
if(MINGW)
|
if(WIN32 AND TARGET SDL2::SDL2-static)
|
||||||
target_link_libraries(86Box SDL2::SDL2-static)
|
target_link_libraries(86Box SDL2::SDL2-static)
|
||||||
elseif(WIN32)
|
elseif(TARGET SDL2::SDL2)
|
||||||
target_link_libraries(86Box SDL2::SDL2)
|
target_link_libraries(86Box SDL2::SDL2)
|
||||||
else()
|
else()
|
||||||
if (TARGET SDL2::SDL2)
|
|
||||||
target_link_libraries(86Box SDL2::SDL2)
|
|
||||||
else()
|
|
||||||
target_link_libraries(86Box ${SDL2_LIBRARIES})
|
target_link_libraries(86Box ${SDL2_LIBRARIES})
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PNG REQUIRED)
|
find_package(PNG REQUIRED)
|
||||||
@@ -214,21 +156,23 @@ if(MINITRACE)
|
|||||||
target_link_libraries(86Box minitrace)
|
target_link_libraries(86Box minitrace)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(WIN32 OR APPLE)
|
||||||
install(TARGETS 86Box DESTINATION "bin")
|
# Copy the binary to the root of the install prefix on Windows and macOS
|
||||||
|
install(TARGETS 86Box DESTINATION ".")
|
||||||
else()
|
else()
|
||||||
|
# On Linux we want to copy the binary to the `bin` folder.
|
||||||
install(TARGETS 86Box)
|
install(TARGETS 86Box)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# adjustments for macOS app bundles
|
# Install our dependencies to the macOS bundle
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(APPS ${CMAKE_CURRENT_BINARY_DIR}/86Box.app)
|
|
||||||
install(CODE "
|
install(CODE "
|
||||||
include(InstallRequiredSystemLibraries)
|
|
||||||
include(BundleUtilities)
|
include(BundleUtilities)
|
||||||
fixup_bundle(\"${APPS}\" \"\" \"\")"
|
get_filename_component(CMAKE_INSTALL_PREFIX_ABSOLUTE \${CMAKE_INSTALL_PREFIX} ABSOLUTE)
|
||||||
|
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/86Box.app\" \"\" \"\")"
|
||||||
COMPONENT Runtime)
|
COMPONENT Runtime)
|
||||||
|
|
||||||
|
if (QT)
|
||||||
# needed for Qt packaging
|
# needed for Qt packaging
|
||||||
# get the macdeployqt path
|
# get the macdeployqt path
|
||||||
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
|
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
|
||||||
@@ -242,16 +186,29 @@ if(APPLE)
|
|||||||
-always-overwrite
|
-always-overwrite
|
||||||
COMMENT "Running macdeployqt..."
|
COMMENT "Running macdeployqt..."
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Install our dependencies if using vcpkg
|
||||||
if(VCPKG_TOOLCHAIN)
|
if(VCPKG_TOOLCHAIN)
|
||||||
x_vcpkg_install_local_dependencies(TARGETS 86Box DESTINATION "bin")
|
x_vcpkg_install_local_dependencies(TARGETS 86Box DESTINATION ".")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Install the PDB file on Windows builds
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
|
# CMake fully supports PDB files on MSVC-compatible compilers
|
||||||
install(FILES $<TARGET_PDB_FILE:86Box>
|
install(FILES $<TARGET_PDB_FILE:86Box>
|
||||||
CONFIGURATIONS Debug RelWithDebInfo
|
CONFIGURATIONS Debug RelWithDebInfo
|
||||||
DESTINATION "bin")
|
DESTINATION ".")
|
||||||
|
elseif(WIN32)
|
||||||
|
# Other compilers/linkers (such as Clang in GCC-compatible mode) also
|
||||||
|
# emit PDB files when targeting Windows, however, CMake only supports
|
||||||
|
# the relevant properties with MSVC and clones. Try to install
|
||||||
|
# the PDB file assuming it's in the same path as the EXE.
|
||||||
|
install(FILES "$<TARGET_FILE_DIR:86Box>/$<TARGET_FILE_BASE_NAME:86Box>.pdb"
|
||||||
|
CONFIGURATIONS Debug RelWithDebInfo
|
||||||
|
DESTINATION "."
|
||||||
|
OPTIONAL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(device)
|
add_subdirectory(device)
|
||||||
|
@@ -81,10 +81,12 @@ static const struct {
|
|||||||
const joystick_if_t *joystick;
|
const joystick_if_t *joystick;
|
||||||
} joysticks[] = {
|
} joysticks[] = {
|
||||||
{ "none", &joystick_none },
|
{ "none", &joystick_none },
|
||||||
{ "standard_2button", &joystick_standard },
|
{ "2axis_2button", &joystick_2axis_2button },
|
||||||
{ "standard_4button", &joystick_standard_4button },
|
{ "2axis_4button", &joystick_2axis_4button },
|
||||||
{ "standard_6button", &joystick_standard_6button },
|
{ "2axis_6button", &joystick_2axis_6button },
|
||||||
{ "standard_8button", &joystick_standard_8button },
|
{ "2axis_8button", &joystick_2axis_8button },
|
||||||
|
{ "3axis_2button", &joystick_3axis_2button },
|
||||||
|
{ "3axis_4button", &joystick_3axis_4button },
|
||||||
{ "4axis_4button", &joystick_4axis_4button },
|
{ "4axis_4button", &joystick_4axis_4button },
|
||||||
{ "ch_flighstick_pro", &joystick_ch_flightstick_pro },
|
{ "ch_flighstick_pro", &joystick_ch_flightstick_pro },
|
||||||
{ "sidewinder_pad", &joystick_sw_pad },
|
{ "sidewinder_pad", &joystick_sw_pad },
|
||||||
@@ -452,6 +454,15 @@ const device_t gameport_201_device = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const device_t gameport_208_device = {
|
||||||
|
"Game port (Port 208h-20fh)",
|
||||||
|
0, 0x080208,
|
||||||
|
gameport_init,
|
||||||
|
gameport_close,
|
||||||
|
NULL, { NULL }, NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
const device_t gameport_pnp_device = {
|
const device_t gameport_pnp_device = {
|
||||||
"Game port (Plug and Play only)",
|
"Game port (Plug and Play only)",
|
||||||
0, 0x080000,
|
0, 0x080000,
|
||||||
|
@@ -145,6 +145,26 @@ static int joystick_standard_read_axis_4button(void *p, int axis)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int joystick_standard_read_axis_3axis(void *p, int axis)
|
||||||
|
{
|
||||||
|
if (!JOYSTICK_PRESENT(0))
|
||||||
|
return AXIS_NOT_PRESENT;
|
||||||
|
|
||||||
|
switch (axis)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return joystick_state[0].axis[0];
|
||||||
|
case 1:
|
||||||
|
return joystick_state[0].axis[1];
|
||||||
|
case 2:
|
||||||
|
return joystick_state[0].axis[2];
|
||||||
|
case 3:
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int joystick_standard_read_axis_4axis(void *p, int axis)
|
static int joystick_standard_read_axis_4axis(void *p, int axis)
|
||||||
{
|
{
|
||||||
if (!JOYSTICK_PRESENT(0))
|
if (!JOYSTICK_PRESENT(0))
|
||||||
@@ -216,9 +236,9 @@ static void joystick_standard_a0_over(void *p)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
const joystick_if_t joystick_standard =
|
const joystick_if_t joystick_2axis_2button =
|
||||||
{
|
{
|
||||||
"Standard 2-button joystick(s)",
|
"2-axis, 2-button joystick(s)",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read,
|
joystick_standard_read,
|
||||||
@@ -232,9 +252,9 @@ const joystick_if_t joystick_standard =
|
|||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"Button 1", "Button 2"}
|
{"Button 1", "Button 2"}
|
||||||
};
|
};
|
||||||
const joystick_if_t joystick_standard_4button =
|
const joystick_if_t joystick_2axis_4button =
|
||||||
{
|
{
|
||||||
"Standard 4-button joystick",
|
"2-axis, 4-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
@@ -248,9 +268,41 @@ const joystick_if_t joystick_standard_4button =
|
|||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
||||||
};
|
};
|
||||||
|
const joystick_if_t joystick_3axis_2button =
|
||||||
|
{
|
||||||
|
"3-axis, 2-button joystick",
|
||||||
|
joystick_standard_init,
|
||||||
|
joystick_standard_close,
|
||||||
|
joystick_standard_read,
|
||||||
|
joystick_standard_write,
|
||||||
|
joystick_standard_read_axis_3axis,
|
||||||
|
joystick_standard_a0_over,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
{"X axis", "Y axis", "Z axis"},
|
||||||
|
{"Button 1", "Button 2"}
|
||||||
|
};
|
||||||
|
const joystick_if_t joystick_3axis_4button =
|
||||||
|
{
|
||||||
|
"3-axis, 4-button joystick",
|
||||||
|
joystick_standard_init,
|
||||||
|
joystick_standard_close,
|
||||||
|
joystick_standard_read_4button,
|
||||||
|
joystick_standard_write,
|
||||||
|
joystick_standard_read_axis_3axis,
|
||||||
|
joystick_standard_a0_over,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
{"X axis", "Y axis", "Z axis"},
|
||||||
|
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
||||||
|
};
|
||||||
const joystick_if_t joystick_4axis_4button =
|
const joystick_if_t joystick_4axis_4button =
|
||||||
{
|
{
|
||||||
"4-axis 4-button joystick",
|
"4-axis, 4-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
@@ -264,9 +316,9 @@ const joystick_if_t joystick_4axis_4button =
|
|||||||
{"X axis", "Y axis", "Z axis", "zX axis"},
|
{"X axis", "Y axis", "Z axis", "zX axis"},
|
||||||
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
||||||
};
|
};
|
||||||
const joystick_if_t joystick_standard_6button =
|
const joystick_if_t joystick_2axis_6button =
|
||||||
{
|
{
|
||||||
"Standard 6-button joystick",
|
"2-axis, 6-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
@@ -280,9 +332,9 @@ const joystick_if_t joystick_standard_6button =
|
|||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"}
|
{"Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"}
|
||||||
};
|
};
|
||||||
const joystick_if_t joystick_standard_8button =
|
const joystick_if_t joystick_2axis_8button =
|
||||||
{
|
{
|
||||||
"Standard 8-button joystick",
|
"2-axis, 8-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* connected
|
* connected
|
||||||
* - Packet preceeded by high data (currently 50us), and
|
* - Packet preceeded by high data (currently 50us), and
|
||||||
* followed by low data (currently 160us) - timings are
|
* followed by low data (currently 160us) - timings are
|
||||||
* probably wrong, but good enoughfor everything I've tried
|
* probably wrong, but good enough for everything I've tried
|
||||||
* - Analog inputs are only used to time ID packet request.
|
* - Analog inputs are only used to time ID packet request.
|
||||||
* If A0 timing out is followed after ~64us by another 0x201
|
* If A0 timing out is followed after ~64us by another 0x201
|
||||||
* write then an ID packet is triggered
|
* write then an ID packet is triggered
|
||||||
|
@@ -108,6 +108,7 @@ extern "C" {
|
|||||||
#ifdef EMU_DEVICE_H
|
#ifdef EMU_DEVICE_H
|
||||||
extern const device_t gameport_device;
|
extern const device_t gameport_device;
|
||||||
extern const device_t gameport_201_device;
|
extern const device_t gameport_201_device;
|
||||||
|
extern const device_t gameport_208_device;
|
||||||
extern const device_t gameport_pnp_device;
|
extern const device_t gameport_pnp_device;
|
||||||
extern const device_t gameport_pnp_6io_device;
|
extern const device_t gameport_pnp_6io_device;
|
||||||
extern const device_t gameport_sio_device;
|
extern const device_t gameport_sio_device;
|
||||||
|
@@ -35,8 +35,10 @@
|
|||||||
* USA.
|
* USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern const joystick_if_t joystick_standard;
|
extern const joystick_if_t joystick_2axis_2button;
|
||||||
extern const joystick_if_t joystick_standard_4button;
|
extern const joystick_if_t joystick_2axis_4button;
|
||||||
|
extern const joystick_if_t joystick_3axis_2button;
|
||||||
|
extern const joystick_if_t joystick_3axis_4button;
|
||||||
extern const joystick_if_t joystick_4axis_4button;
|
extern const joystick_if_t joystick_4axis_4button;
|
||||||
extern const joystick_if_t joystick_standard_6button;
|
extern const joystick_if_t joystick_2axis_6button;
|
||||||
extern const joystick_if_t joystick_standard_8button;
|
extern const joystick_if_t joystick_2axis_8button;
|
||||||
|
@@ -1,3 +1,53 @@
|
|||||||
include_directories("./mac")
|
#
|
||||||
target_sources(86Box PUBLIC "./macOSXGlue.m")
|
# 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||||
|
# running old operating systems and software designed for IBM
|
||||||
|
# PC systems and compatibles from 1981 through fairly recent
|
||||||
|
# system designs based on the PCI bus.
|
||||||
|
#
|
||||||
|
# This file is part of the 86Box distribution.
|
||||||
|
#
|
||||||
|
# CMake build script.
|
||||||
|
#
|
||||||
|
# Authors: dob205,
|
||||||
|
# Jerome Vernet
|
||||||
|
# David Hrdlička, <hrdlickadavid@outlook.com>
|
||||||
|
#
|
||||||
|
# Copyright 2021 dob205.
|
||||||
|
# Copyright 2021 Jerome Vernet.
|
||||||
|
# Copyright 2021 David Hrdlička.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Pick the bundle icon depending on the release channel
|
||||||
|
if(RELEASE_BUILD)
|
||||||
|
set(APP_ICON_MACOSX icons/release/86Box.icns)
|
||||||
|
elseif(BETA_BUILD)
|
||||||
|
set(APP_ICON_MACOSX icons/beta/86Box.icns)
|
||||||
|
elseif(ALPHA_BUILD)
|
||||||
|
set(APP_ICON_MACOSX icons/dev/86Box.icns)
|
||||||
|
else()
|
||||||
|
set(APP_ICON_MACOSX icons/branch/86Box.icns)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(86Box "-framework AppKit")
|
||||||
|
target_sources(86Box PRIVATE macOSXGlue.m ${APP_ICON_MACOSX})
|
||||||
|
|
||||||
|
# Make sure the icon is copied to the bundle
|
||||||
|
set_source_files_properties(${APP_ICON_MACOSX}
|
||||||
|
TARGET_DIRECTORY 86Box
|
||||||
|
PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
|
||||||
|
|
||||||
|
# Prepare long version string
|
||||||
|
if(EMU_BUILD)
|
||||||
|
set(LONG_VER_STRING "${CMAKE_PROJECT_VERSION} [${EMU_BUILD}]")
|
||||||
|
else()
|
||||||
|
set(LONG_VER_STRING "${CMAKE_PROJECT_VERSION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Generate Info.plist
|
||||||
|
configure_file(Info.plist.in Info.plist @ONLY)
|
||||||
|
set_target_properties(86Box
|
||||||
|
PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
|
||||||
|
|
||||||
|
#set(XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "YES")
|
||||||
|
#set(XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-")
|
||||||
|
#set(XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${CMAKE_CURRENT_SOURCE_DIR}/mac/codesign/dev/app.entitlements)
|
@@ -7,29 +7,29 @@
|
|||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
<string>An emulator of old computers</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
<string>86Box.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
<string>net.86Box.86Box</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleLongVersionString</key>
|
<key>CFBundleLongVersionString</key>
|
||||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
<string>@LONG_VER_STRING@</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
<string>86Box</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
<string>@CMAKE_PROJECT_VERSION@</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
<string>@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@EMU_BUILD_NUM@</string>
|
||||||
<key>CSResourcesFileMapped</key>
|
<key>CSResourcesFileMapped</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
<string>© 2007-@EMU_COPYRIGHT_YEAR@ 86Box contributors</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
<string>NSApplication</string>
|
<string>NSApplication</string>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
|
@@ -1,3 +1,20 @@
|
|||||||
|
#
|
||||||
|
# 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||||
|
# running old operating systems and software designed for IBM
|
||||||
|
# PC systems and compatibles from 1981 through fairly recent
|
||||||
|
# system designs based on the PCI bus.
|
||||||
|
#
|
||||||
|
# This file is part of the 86Box distribution.
|
||||||
|
#
|
||||||
|
# CMake build script.
|
||||||
|
#
|
||||||
|
# Authors: Cacodemon345
|
||||||
|
# David Hrdlička, <hrdlickadavid@outlook.com>
|
||||||
|
#
|
||||||
|
# Copyright 2021 Cacodemon345.
|
||||||
|
# Copyright 2021 David Hrdlička.
|
||||||
|
#
|
||||||
|
|
||||||
add_library(plat OBJECT unix.c)
|
add_library(plat OBJECT unix.c)
|
||||||
|
|
||||||
if (NOT CPPTHREADS)
|
if (NOT CPPTHREADS)
|
||||||
|
@@ -27,18 +27,18 @@ if(NOT CPPTHREADS)
|
|||||||
target_sources(plat PRIVATE win_thread.c)
|
target_sources(plat PRIVATE win_thread.c)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(NOT MINGW)
|
||||||
# MSVC complains when we include the manifest from 86Box.rc...
|
# MSVC linker adds its own manifest to the executable, which fails if
|
||||||
# On the bright side, CMake supports passing the manifest as a source
|
# we include ours in 86Box.rc. We therefore need to pass the manifest
|
||||||
# file when using MSVC, so we might just as well do that!
|
# directly as as a source file, so the linker can use that instead.
|
||||||
target_compile_definitions(ui PRIVATE NO_INCLUDE_MANIFEST)
|
set_property(SOURCE 86Box.rc PROPERTY COMPILE_DEFINITIONS NO_INCLUDE_MANIFEST)
|
||||||
target_sources(86Box PRIVATE 86Box.manifest)
|
target_sources(86Box PRIVATE 86Box.manifest)
|
||||||
|
|
||||||
# Append null to resource strings (fixes file dialogs)
|
# Append null to resource strings (fixes file dialogs)
|
||||||
set_property(SOURCE 86Box.rc PROPERTY COMPILE_FLAGS -n)
|
set_property(SOURCE 86Box.rc PROPERTY COMPILE_FLAGS -n)
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT MINGW)
|
# `opendir` is only included in MinGW, so include an implementation
|
||||||
|
# for other builds.
|
||||||
target_sources(plat PRIVATE win_opendir.c)
|
target_sources(plat PRIVATE win_opendir.c)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "86box",
|
"name": "86box",
|
||||||
"version-string": "3.0",
|
"version-string": "3.1",
|
||||||
"homepage": "https://86box.net/",
|
"homepage": "https://86box.net/",
|
||||||
"documentation": "http://86box.readthedocs.io/",
|
"documentation": "http://86box.readthedocs.io/",
|
||||||
"license": "GPL-2.0-only",
|
"license": "GPL-2.0-only",
|
||||||
|
Reference in New Issue
Block a user