mirror of
https://github.com/InvisibleUp/uvmac.git
synced 2024-12-22 07:31:39 +00:00
198 lines
4.2 KiB
Meson
198 lines
4.2 KiB
Meson
# Project definition
|
|
project('microvmac', 'c', default_options: ['warning_level=everything', 'prefer_static=true', 'c_std=c17'])
|
|
|
|
# Configuration data
|
|
conf = configuration_data({
|
|
# verify ROM checksum on startup?
|
|
'RomStartCheckSum': 1,
|
|
# Enable drag/drop of disk images?
|
|
'EnableDragDrop': 1,
|
|
# Allow user to choose location for new disks?
|
|
'SaveDialogEnable': 1,
|
|
# Start in full-screen mode?
|
|
'WantInitFullScreen': 0,
|
|
# Full screen is an option?
|
|
'MayFullScreen': 1,
|
|
# Windowed is an option?
|
|
'MayNotFullScreen': 1,
|
|
# Start magnified?
|
|
'WantInitMagnify': 0,
|
|
# Magnificaton power
|
|
'WindowScale': 2,
|
|
# Allow background running by default?
|
|
'WantInitRunInBackground': 1,
|
|
# Initial clock multiplied (0 = 1x)
|
|
'WantInitSpeedValue': 0,
|
|
# Enable interrupt key? (on prog. switch)
|
|
'WantEnblCtrlInt': 1,
|
|
# Enable reset key? (on prog. switch)
|
|
'WantEnblCtrlRst': 1,
|
|
# Emulated control key toggle via Ctrl+K?
|
|
'WantEnblCrtlKtg': 1,
|
|
# Use Ctrl+num to insert "./disk#.dsk"
|
|
'NeedRequestIthDisk': 0,
|
|
# Disk open dialog on Ctrl+O
|
|
'NeedRequestInsertDisk': 1,
|
|
# Special > More Commands tutorial message
|
|
'NeedDoMoreCommandsMsg': 1,
|
|
# Enable about dialog
|
|
'NeedDoAboutMsg': 1,
|
|
# Enable Control Mode (options menu)
|
|
'UseControlKeys': 0,
|
|
# Include international characters for Control Mode
|
|
'NeedIntlChars': 0,
|
|
# Force keyboard to match Mac layout on Windows
|
|
'ItnlKyBdFix': 1,
|
|
# Version information
|
|
'kStrAppName': '"micro vMac"',
|
|
'kAppVariationStr': '"0.37.0"',
|
|
'kStrCopyrightYear': '"1996-2023"',
|
|
'kMaintainerName': '"InvisibleUp"',
|
|
'kStrHomePage': '"https://github.com/invisibleup/uvmac/"',
|
|
'kBldOpts': '"obsolete"'
|
|
})
|
|
configure_file(
|
|
output: 'CNFGRAPI.h',
|
|
configuration: conf
|
|
)
|
|
|
|
# Dependencies
|
|
lSDL2 = dependency('SDL2', static: true, default_options: ['test=false'])
|
|
|
|
# Windows resources
|
|
if target_machine.system() == 'windows'
|
|
windows = import('windows')
|
|
WIN_RSRC = windows.compile_resources(
|
|
'rsrc/WIN32/main.rc',
|
|
depend_files: [
|
|
'rsrc/WIN32/app.manifest',
|
|
'rsrc/WIN32/ICONAPPW.ico',
|
|
'rsrc/WIN32/ICONDSKW.ico',
|
|
'rsrc/WIN32/ICONROMW.ico',
|
|
'rsrc/SONYDRV.bin',
|
|
'rsrc/SONYICO.bin',
|
|
]
|
|
)
|
|
else
|
|
WIN_RSRC = []
|
|
endif
|
|
|
|
# Hardware libraries
|
|
HW_SRC = {
|
|
'ADB': [
|
|
'src/HW/ADB/ADBEMDEV.c'
|
|
],
|
|
'DISK': [
|
|
'src/HW/DISK/IWMEMDEV.c',
|
|
'src/HW/DISK/SONYEMDV.c',
|
|
'src/PATCHES/SONYDRV.c'
|
|
],
|
|
'KBRD': [
|
|
'src/HW/KBRD/KBRDEMDV.c',
|
|
],
|
|
'M68K': [
|
|
# 'src/HW/M68K/DISAM68K.c',
|
|
'src/HW/M68K/M68KITAB.c',
|
|
'src/HW/M68K/MINEM68K.c',
|
|
# 'src/HW/M68K/FPCPEMDV.c',
|
|
],
|
|
'MOUSE': [
|
|
'src/HW/MOUSE/MOUSEMDV.c',
|
|
],
|
|
'POWERMAN': [
|
|
'src/HW/POWERMAN/PMUEMDEV.c',
|
|
],
|
|
'RTC': [
|
|
'src/HW/RTC/RTCEMDEV.c',
|
|
],
|
|
'SCC': [
|
|
'src/HW/SCC/SCCEMDEV.c',
|
|
],
|
|
'SCREEN': [
|
|
'src/HW/SCREEN/SCRNEMDV.c',
|
|
'src/PATCHES/SCRNHACK.c',
|
|
],
|
|
'SCSI': [
|
|
'src/HW/SCSI/SCSIEMDV.c',
|
|
],
|
|
'SOUND': [
|
|
'src/HW/SOUND/SNDEMDEV.c',
|
|
],
|
|
'SOUND_ASC': [
|
|
'src/HW/SOUND/ASCEMDEV.c',
|
|
],
|
|
'VIA1': [
|
|
'src/HW/VIA/VIAEMDEV.c',
|
|
],
|
|
'VIA2': [
|
|
'src/HW/VIA/VIA2EMDV.c',
|
|
],
|
|
'VIDCARD': [
|
|
'src/HW/VIDCARD/VIDEMDEV.c',
|
|
],
|
|
'RAM': [
|
|
],
|
|
'ROM': [
|
|
'src/HW/ROM/ROMEMDEV.c',
|
|
]
|
|
}
|
|
|
|
MAC_SRC_COMMON = HW_SRC['DISK'] + HW_SRC['M68K'] + HW_SRC['RTC'] + HW_SRC['SOUND'] + HW_SRC['VIA1'] + HW_SRC['SCREEN'] + HW_SRC['SCC'] + HW_SRC['SCSI'] + HW_SRC['MOUSE'] + HW_SRC['ROM']
|
|
|
|
# Macintosh definitions
|
|
MAC_SRC = {
|
|
'Plus':
|
|
MAC_SRC_COMMON +
|
|
HW_SRC['KBRD'],
|
|
'II':
|
|
MAC_SRC_COMMON +
|
|
HW_SRC['VIDCARD'] +
|
|
HW_SRC['ADB'] +
|
|
HW_SRC['VIA2'] +
|
|
HW_SRC['SOUND_ASC']
|
|
}
|
|
|
|
# User interface definitions
|
|
UI_SRC = [
|
|
'src/UI/COMOSGLU.c',
|
|
'src/UI/CONTROLM.c',
|
|
'src/UI/SDL2/OSGLUSD2.c',
|
|
#'src/UI/SDL2/CLIPBRD.c',
|
|
'src/UI/SDL2/DBGLOG.c',
|
|
'src/UI/SDL2/DRIVES.c',
|
|
'src/UI/SDL2/INTL.c',
|
|
'src/UI/SDL2/KEYBOARD.c',
|
|
'src/UI/SDL2/MOUSE.c',
|
|
'src/UI/SDL2/ROM.c',
|
|
'src/UI/SDL2/SOUND.c',
|
|
'src/UI/SDL2/TIMEDATE.c',
|
|
'src/UI/SDL2/VIDEO.c',
|
|
]
|
|
|
|
EMU_SRC = [
|
|
'src/PROGMAIN.c',
|
|
'src/GLOBGLUE.c',
|
|
'src/CFGMAN.c',
|
|
'src/PATCHES/ROMEMDEV.c',
|
|
'src/UTIL/DATE2SEC.c',
|
|
'src/LANG/INTLCHAR.c',
|
|
'lib/tomlc99/toml.c',
|
|
]
|
|
|
|
EMU_INC = include_directories([
|
|
'cfg/',
|
|
'src/',
|
|
'lib/'
|
|
])
|
|
|
|
## Final compiled program definition
|
|
# Just gonna do an SDL2 Mac Plus for now
|
|
executable(
|
|
'microvmac',
|
|
sources: MAC_SRC['Plus'] + UI_SRC + EMU_SRC + WIN_RSRC,
|
|
dependencies: [lSDL2],
|
|
include_directories: EMU_INC,
|
|
gui_app: true
|
|
)
|
|
|