Initial Commit

This commit is contained in:
Mario Fetka
2023-05-18 07:33:02 +02:00
parent 882a9c99d6
commit 774ad0e693
95 changed files with 6818 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
set(CMAKE_ASM_WDC_SOURCE_FILE_EXTENSIONS asm;S;s)
set(CMAKE_ASM_WDC_COMPILER_ARG1 "")
set(CMAKE_ASM_WDC_DEFINE_FLAG "-D")
set(CMAKE_ASM_WDC_FLAGS_DEBUG_INIT "-g -DDEBUG")
set(CMAKE_ASM_WDC_VERBOSE_FLAG "-V" )
set(CMAKE_DEPFILE_FLAGS_ASM_WDC "-K <DEP_FILE>")
set(CMAKE_ASM_WDC_COMPILER_AR wdclib CACHE PATH "WDC archiver")
set(CMAKE_LINKER wdcld CACHE PATH "WDC linker")
set(CMAKE_ASM_WDC_COMPILE_OBJECT
"<CMAKE_ASM_WDC_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -O <OBJECT> <SOURCE>")
set(CMAKE_ASM_WDC_LINK_EXECUTABLE
"<CMAKE_LINKER> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -O <TARGET>")
set(ASM_DIALECT "_WDC")
include(CMakeASMInformation)
set(CMAKE_INCLUDE_FLAG_ASM_WDC "-I")
set(ASM_DIALECT)

View File

@@ -0,0 +1,36 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
if(NOT CMAKE_ASM_WDC_COMPILER)
SET(_COMPILER_LIST ca65)
find_program(
CMAKE_ASM_WDC_COMPILER
NAMES ${_COMPILER_LIST}
DOC "WDC assembler")
unset(_COMPILER_LIST)
if(CMAKE_ASM_WDC_COMPILER)
set(CMAKE_ASM_WDC_COMPILER_ID CA65 CACHE PATH "WDC assembler ID")
execute_process(
COMMAND ${CMAKE_ASM_WDC_COMPILER} --version
OUTPUT_VARIABLE _OUTPUT1
ERROR_VARIABLE _OUTPUT2)
if("${_OUTPUT1};${_OUTPUT2}" MATCHES ".*ca65 V([^\n]*)-.*")
set(CMAKE_ASM_WDC_COMPILER_VERSION "${CMAKE_MATCH_1}" CACHE PATH "WDC assembler version")
endif()
unset(_OUTPUT1)
unset(_OUTPUT2)
include(Compiler/WDC)
endif()
endif()
set(ASM_DIALECT "_WDC")
include(CMakeDetermineASMCompiler)
set(ASM_DIALECT)

View File

@@ -0,0 +1,7 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
set(ASM_DIALECT "_WDC")
include(CMakeTestASMCompiler)
set(ASM_DIALECT)

View File

@@ -0,0 +1,31 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
include(Compiler/WDC)
set(CMAKE_C_COMPILER_ID_RUN YES)
set(CMAKE_C_COMPILER_ID_WORKS YES)
set(CMAKE_C_COMPILER_ID_FORCED YES)
set(CMAKE_C_DEFINE_FLAG "-D")
set(CMAKE_C_VERBOSE_FLAG "-V" )
set(CMAKE_C_FLAGS_DEBUG_INIT "-g -DDEBUG")
set(CMAKE_DEPFILE_FLAGS_C "--create-dep <DEP_FILE>")
set(CMAKE_INCLUDE_FLAG_C "-I ")
set(CMAKE_C90_STANDARD_COMPILE_OPTION "--standard c89")
set(CMAKE_C99_STANDARD_COMPILE_OPTION "--standard c99")
set(CMAKE_C_CREATE_ASSEMBLY_SOURCE
"<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -A -O <OBJECT> <SOURCE>")
set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
"<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -LT -O <PREPROCESSED_SOURCE> <SOURCE>")
set(CMAKE_C_COMPILE_OBJECT
"<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -O <OBJECT> <SOURCE> && \
<CMAKE_ASM_WDC_COMPILER> -O <OBJECT> <OBJECT>")
set(CMAKE_C_LINK_EXECUTABLE
"<CMAKE_LINKER> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -O <TARGET>")

104
CMake/Compiler/WDC.cmake Normal file
View File

@@ -0,0 +1,104 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
include_guard()
if(CMAKE_SYSTEM_NAME)
if(CMAKE_SYSTEM_NAME MATCHES AppleII)
set(_SYSTEM apple2)
elseif(CMAKE_SYSTEM_NAME MATCHES AppleIIeEnhanced)
set(_SYSTEM apple2enh)
set(_CPU 65C02)
elseif(CMAKE_SYSTEM_NAME MATCHES Atari2600)
set(_SYSTEM atari2600)
elseif(CMAKE_SYSTEM_NAME MATCHES Atari5200)
set(_SYSTEM atari5200)
elseif(CMAKE_SYSTEM_NAME MATCHES Atmos)
set(_SYSTEM atmos)
elseif(CMAKE_SYSTEM_NAME MATCHES BBCMicro)
set(_SYSTEM bbc)
elseif(CMAKE_SYSTEM_NAME MATCHES CBMIIB)
set(_SYSTEM cbm610)
elseif(CMAKE_SYSTEM_NAME MATCHES CBMIIP)
set(_SYSTEM cbm510)
elseif(CMAKE_SYSTEM_NAME MATCHES Challenger1P)
set(_SYSTEM osic1p)
elseif(CMAKE_SYSTEM_NAME MATCHES CommanderX16)
set(_SYSTEM cx16)
set(_CPU 65C02)
elseif(CMAKE_SYSTEM_NAME MATCHES Commodore16)
set(_SYSTEM c16)
elseif(CMAKE_SYSTEM_NAME MATCHES Commodore64)
set(_SYSTEM c64)
elseif(CMAKE_SYSTEM_NAME MATCHES Commodore128)
set(_SYSTEM c128)
elseif(CMAKE_SYSTEM_NAME MATCHES CreatiVision)
set(_SYSTEM creativision)
elseif(CMAKE_SYSTEM_NAME MATCHES Gamate)
set(_SYSTEM gamate)
elseif(CMAKE_SYSTEM_NAME MATCHES Lynx)
set(_SYSTEM lynx)
set(_CPU 65SC02)
elseif(CMAKE_SYSTEM_NAME MATCHES LUnix)
set(_SYSTEM lunix)
elseif(CMAKE_SYSTEM_NAME MATCHES NES)
set(_SYSTEM nes)
elseif(CMAKE_SYSTEM_NAME MATCHES PCEngine)
set(_SYSTEM pce)
set(_CPU HuC6280)
elseif(CMAKE_SYSTEM_NAME MATCHES PET)
set(_SYSTEM pet)
elseif(CMAKE_SYSTEM_NAME MATCHES Plus4)
set(_SYSTEM plus4)
elseif(CMAKE_SYSTEM_NAME MATCHES Supervision)
set(_SYSTEM supervision)
set(_CPU 65SC02)
elseif(CMAKE_SYSTEM_NAME MATCHES Telestrat)
set(_SYSTEM telestrat)
elseif(CMAKE_SYSTEM_NAME MATCHES VIC20)
set(_SYSTEM vic20)
endif()
endif()
if(NOT _SYSTEM)
set(_SYSTEM none)
endif()
if(NOT _CPU)
set(_CPU 6502)
endif()
add_compile_options(--cpu ${_CPU} --target ${_SYSTEM})
unset(_SYSTEM)
unset(_CPU)
find_program(CMAKE_AR wdclib DOC "WDC archiver")
set(CMAKE_${lang}_COMPILER_AR ${CMAKE_AR} CACHE FILEPATH "WDC archiver" FORCE)
find_program(CMAKE_LINKER wdcld DOC "WDC linker")
set(CMAKE_${lang}_RANLIB "" CACHE FILEPATH "")

View File

@@ -0,0 +1,33 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
if(NOT CMAKE_C_COMPILER)
SET(_COMPILER_LIST WDC)
find_program(
CMAKE_C_COMPILER
NAMES ${_COMPILER_LIST}
DOC "WDC C compiler")
unset(_COMPILER_LIST)
if(CMAKE_C_COMPILER)
set(CMAKE_C_COMPILER_ID WDC CACHE PATH "C compiler ID")
execute_process(
COMMAND ${CMAKE_C_COMPILER} --version
OUTPUT_VARIABLE _OUTPUT1
ERROR_VARIABLE _OUTPUT2)
if("${_OUTPUT1};${_OUTPUT2}" MATCHES ".*WDC V([^\n]*)-.*")
set(CMAKE_C_COMPILER_VERSION "${CMAKE_MATCH_1}" CACHE PATH "C compiler version")
endif()
unset(_OUTPUT1)
unset(_OUTPUT2)
set(CMAKE_C_ABI_COMPILED YES)
set(CMAKE_C_COMPILER_WORKS YES)
endif()
endif()

6
CMake/Platform/NES.cmake Normal file
View File

@@ -0,0 +1,6 @@
# WDC toolchain for CMake
# Copyright (C) 2021 Tentei Ltd.
# DISTRIBUTED AS PUBLIC DOMAIN. No restrictions apply.
set(NES 1)
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS NO)