From 11b6604196e9794a6d44e89fab84aecdf1cb3d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Tue, 12 Jan 2021 18:22:40 +0100 Subject: [PATCH] Add CMake build files --- CMakeLists.txt | 52 +++++++ cmake/TargetArch.cmake | 141 ++++++++++++++++++ src/CMakeLists.txt | 94 ++++++++++++ src/cdrom/CMakeLists.txt | 1 + src/chipset/CMakeLists.txt | 18 +++ src/codegen/CMakeLists.txt | 17 +++ src/codegen_new/CMakeLists.txt | 37 +++++ src/cpu/CMakeLists.txt | 17 +++ src/device/CMakeLists.txt | 9 ++ src/disk/CMakeLists.txt | 10 ++ src/disk/minivhd/CMakeLists.txt | 3 + src/floppy/CMakeLists.txt | 2 + src/game/CMakeLists.txt | 2 + src/include/86box/version.h.in | 31 ++++ src/{include => include_make}/86box/version.h | 2 +- src/machine/CMakeLists.txt | 48 ++++++ src/mem/CMakeLists.txt | 2 + src/network/CMakeLists.txt | 5 + src/network/slirp/CMakeLists.txt | 5 + src/printer/CMakeLists.txt | 1 + src/scsi/CMakeLists.txt | 3 + src/sio/CMakeLists.txt | 9 ++ src/sound/CMakeLists.txt | 30 ++++ src/sound/munt/CMakeLists.txt | 11 ++ src/sound/resid-fp/CMakeLists.txt | 4 + src/video/CMakeLists.txt | 40 +++++ src/win/86Box.rc | 94 ++++++------ src/win/CMakeLists.txt | 33 ++++ src/win/Makefile.mingw | 4 +- 29 files changed, 679 insertions(+), 46 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 cmake/TargetArch.cmake create mode 100644 src/CMakeLists.txt create mode 100644 src/cdrom/CMakeLists.txt create mode 100644 src/chipset/CMakeLists.txt create mode 100644 src/codegen/CMakeLists.txt create mode 100644 src/codegen_new/CMakeLists.txt create mode 100644 src/cpu/CMakeLists.txt create mode 100644 src/device/CMakeLists.txt create mode 100644 src/disk/CMakeLists.txt create mode 100644 src/disk/minivhd/CMakeLists.txt create mode 100644 src/floppy/CMakeLists.txt create mode 100644 src/game/CMakeLists.txt create mode 100644 src/include/86box/version.h.in rename src/{include => include_make}/86box/version.h (93%) create mode 100644 src/machine/CMakeLists.txt create mode 100644 src/mem/CMakeLists.txt create mode 100644 src/network/CMakeLists.txt create mode 100644 src/network/slirp/CMakeLists.txt create mode 100644 src/printer/CMakeLists.txt create mode 100644 src/scsi/CMakeLists.txt create mode 100644 src/sio/CMakeLists.txt create mode 100644 src/sound/CMakeLists.txt create mode 100644 src/sound/munt/CMakeLists.txt create mode 100644 src/sound/resid-fp/CMakeLists.txt create mode 100644 src/video/CMakeLists.txt create mode 100644 src/win/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..37b44585f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,52 @@ +cmake_minimum_required(VERSION 3.16) + +project(86Box + VERSION 2.10 + DESCRIPTION "Emulator of x86-based systems" + HOMEPAGE_URL "https://86box.github.io/" + LANGUAGES C CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(TargetArch) +target_architecture(CMAKE_TARGET_ARCHITECTURES) + +include(CMakeDependentOption) + +add_compile_definitions(CMAKE) + +option(RELEASE "Release build" OFF) +option(USB "USB support" OFF) +option(DYNAREC "Dynamic recompiler" ON) +option(FLUIDSYNTH "FluidSynth" ON) +option(MUNT "MUNT" ON) +option(VRAMDUMP "Video RAM dumping" OFF) +option(DINPUT "DirectInput" OFF) +option(DISCORD "Discord integration" ON) + +option(NEW_DYNAREC "Use the PCem v15 (\"new\") dynamic recompiler" OFF) + +option(DEV_BRANCH "Development branch" OFF) +CMAKE_DEPENDENT_OPTION(AMD_K5 "AMD K5" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(CL5422 "Cirrus Logic CL-GD 5402/5420/5422" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(CYRIX_6X86 "Cyrix 6x86" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(GUSMAX "Gravis UltraSound MAX" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(HEDAKA "Hedaka HED-919" ON "DEV_BRANCH" OFF) +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(NO_SIO "Machines without emulated Super I/O chips" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(OPEN_AT "OpenAT" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(PAS16 "Pro Audio Spectrum 16" OFF "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(PS1M2133 "IBM PS/1 model 2133" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(PS2M70T4 "IBM PS/2 model 70 (type 4)" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(S3TRIO3D2X "S3 Trio3D/2X" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(SIO_DETECT "Super I/O Detection Helper" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(STPC "STPC machines" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(M1489 "ALi M1489" 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" ON "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) +CMAKE_DEPENDENT_OPTION(DELLS4 "Dell Dimension XPS P60; Dell OptiPlex 560/L" ON "DEV_BRANCH" OFF) + +add_subdirectory(src) diff --git a/cmake/TargetArch.cmake b/cmake/TargetArch.cmake new file mode 100644 index 000000000..c8eb27735 --- /dev/null +++ b/cmake/TargetArch.cmake @@ -0,0 +1,141 @@ +# Based on the Qt 5 processor detection code, so should be very accurate +# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h +# Currently handles arm (v5, v6, v7, v8), x86 (32/64), ia64, and ppc (32/64) + +# Regarding POWER/PowerPC, just as is noted in the Qt source, +# "There are many more known variants/revisions that we do not handle/detect." + +set(archdetect_c_code " +#if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(_M_ARM64) + #if defined(__ARM64_ARCH_8__) \\ + || defined(__aarch64__) \\ + || defined(__ARMv8__) \\ + || defined(__ARMv8_A__) \\ + || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 8) \\ + || (defined(_M_ARM64) && _M_ARM64 >= 1) + #error cmake_ARCH armv8 + #elif defined(__ARM_ARCH_7__) \\ + || defined(__ARM_ARCH_7A__) \\ + || defined(__ARM_ARCH_7R__) \\ + || defined(__ARM_ARCH_7M__) \\ + || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7) \\ + || (defined(_M_ARM) && _M_ARM >= 7) + #error cmake_ARCH armv7 + #elif defined(__ARM_ARCH_6__) \\ + || defined(__ARM_ARCH_6J__) \\ + || defined(__ARM_ARCH_6T2__) \\ + || defined(__ARM_ARCH_6Z__) \\ + || defined(__ARM_ARCH_6K__) \\ + || defined(__ARM_ARCH_6ZK__) \\ + || defined(__ARM_ARCH_6M__) \\ + || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6) + #error cmake_ARCH armv6 + #elif defined(__ARM_ARCH_5TEJ__) \\ + || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5) + #error cmake_ARCH armv5 + #else + #error cmake_ARCH arm + #endif +#elif defined(__i386) || defined(__i386__) || defined(_M_IX86) + #error cmake_ARCH i386 +#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) + #error cmake_ARCH x86_64 +#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64) + #error cmake_ARCH ia64 +#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\ + || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\ + || defined(_M_MPPC) || defined(_M_PPC) + #if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__) + #error cmake_ARCH ppc64 + #else + #error cmake_ARCH ppc + #endif +#endif +#error cmake_ARCH unknown +") + +# Set ppc_support to TRUE before including this file or ppc and ppc64 +# will be treated as invalid architectures since they are no longer supported by Apple + +function(target_architecture output_var) + if(APPLE AND CMAKE_OSX_ARCHITECTURES) + # On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set + # First let's normalize the order of the values + + # Note that it's not possible to compile PowerPC applications if you are using + # the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we + # disable it by default + # See this page for more information: + # http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4 + + # Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime. + # On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise. + + foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES}) + if("${osx_arch}" STREQUAL "ppc" AND ppc_support) + set(osx_arch_ppc TRUE) + elseif("${osx_arch}" STREQUAL "i386") + set(osx_arch_i386 TRUE) + elseif("${osx_arch}" STREQUAL "x86_64") + set(osx_arch_x86_64 TRUE) + elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support) + set(osx_arch_ppc64 TRUE) + else() + message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}") + endif() + endforeach() + + # Now add all the architectures in our normalized order + if(osx_arch_ppc) + list(APPEND ARCH ppc) + endif() + + if(osx_arch_i386) + list(APPEND ARCH i386) + endif() + + if(osx_arch_x86_64) + list(APPEND ARCH x86_64) + endif() + + if(osx_arch_ppc64) + list(APPEND ARCH ppc64) + endif() + else() + file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}") + + enable_language(C) + + # Detect the architecture in a rather creative way... + # This compiles a small C program which is a series of ifdefs that selects a + # particular #error preprocessor directive whose message string contains the + # target architecture. The program will always fail to compile (both because + # file is not a valid C program, and obviously because of the presence of the + # #error preprocessor directives... but by exploiting the preprocessor in this + # way, we can detect the correct target architecture even when cross-compiling, + # since the program itself never needs to be run (only the compiler/preprocessor) + try_run( + run_result_unused + compile_result_unused + "${CMAKE_BINARY_DIR}" + "${CMAKE_BINARY_DIR}/arch.c" + COMPILE_OUTPUT_VARIABLE ARCH + CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} + ) + + # Parse the architecture name from the compiler output + string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}") + + # Get rid of the value marker leaving just the architecture name + string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}") + + # If we are compiling with an unknown architecture this variable should + # already be set to "unknown" but in the case that it's empty (i.e. due + # to a typo in the code), then set it to unknown + if (NOT ARCH) + set(ARCH unknown) + endif() + endif() + + set(${output_var} "${ARCH}" PARENT_SCOPE) +endfunction() \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 000000000..18ce46481 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,94 @@ +# WIN32 marks us as a GUI app on Windows +add_executable(86Box WIN32 pc.c config.c random.c timer.c io.c acpi.c apm.c + dma.c ddma.c nmi.c pic.c pit.c port_92.c ppi.c pci.c mca.c usb.c + device.c nvr.c nvr_at.c nvr_ps2.c) + +if(NEW_DYNAREC) + add_compile_definitions(USE_NEW_DYNAREC) +endif() + +if(RELEASE) + add_compile_definitions(RELEASE_BUILD) +endif() + +if(DYNAREC) + add_compile_definitions(USE_DYNAREC) +endif() + +if(VRAMDUMP) + add_compile_definitions(ENABLE_VRAM_DUMP) +endif() + +if(DEV_BRANCH) + add_compile_definitions(DEV_BRANCH) +endif() + +if(VNC) + add_compile_definitions(USE_VNC) + add_library(vnc OBJECT vnc.c vnc_keymap.c) + target_link_libraries(86Box vnc vncserver ws2_32) +endif() + +if(STPC) + add_compile_definitions(USE_STPC) +endif() + +target_link_libraries(86Box cpu chipset mch dev mem fdd game cdrom zip mo hdd + net print scsi sio snd vid plat ui) + +find_package(Freetype REQUIRED) +include_directories(${FREETYPE_INCLUDE_DIRS}) + +find_package(OpenAL CONFIG REQUIRED) +include_directories(${OPENAL_INCLUDE_DIRS}) +target_link_libraries(86Box OpenAL::OpenAL) + +find_package(SDL2 CONFIG REQUIRED) +include_directories(${SDL2_INCLUDE_DIRS}) +target_link_libraries(86Box SDL2::SDL2) + +find_package(PNG REQUIRED) +include_directories(${PNG_INCLUDE_DIRS}) +target_link_libraries(86Box PNG::PNG) + +if(CMAKE_TARGET_ARCHITECTURES STREQUAL "i386") + if(MSVC) + set_target_properties(86Box PROPERTIES LINK_FLAGS "/LARGEADDRESSAWARE") + elseif(MINGW) + set_target_properties(86Box PROPERTIES LINK_FLAGS "-Wl,--large-address-aware") + endif() +endif() + +configure_file(include/86box/version.h.in include/86box/version.h @ONLY) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) + +include_directories(include) +if(NEW_DYNAREC) + include_directories(cpu codegen_new) +else() + include_directories(cpu codegen) +endif() + +add_subdirectory(cdrom) +add_subdirectory(chipset) + +add_subdirectory(cpu) +if(NEW_DYNAREC) + add_subdirectory(codegen_new) +else() + add_subdirectory(codegen) +endif() + +add_subdirectory(device) +add_subdirectory(disk) +add_subdirectory(floppy) +add_subdirectory(game) +add_subdirectory(machine) +add_subdirectory(mem) +add_subdirectory(network) +add_subdirectory(printer) +add_subdirectory(sio) +add_subdirectory(scsi) +add_subdirectory(sound) +add_subdirectory(video) +add_subdirectory(win) \ No newline at end of file diff --git a/src/cdrom/CMakeLists.txt b/src/cdrom/CMakeLists.txt new file mode 100644 index 000000000..2756e0be8 --- /dev/null +++ b/src/cdrom/CMakeLists.txt @@ -0,0 +1 @@ +add_library(cdrom OBJECT cdrom.c cdrom_image_backend.c cdrom_image.c) \ No newline at end of file diff --git a/src/chipset/CMakeLists.txt b/src/chipset/CMakeLists.txt new file mode 100644 index 000000000..9b6d78a30 --- /dev/null +++ b/src/chipset/CMakeLists.txt @@ -0,0 +1,18 @@ +add_library(chipset OBJECT acc2168.c cs8230.c ali1429.c headland.c intel_82335.c + cs4031.c intel_420ex.c intel_4x0.c intel_sio.c intel_piix.c ../ioapic.c + neat.c opti495.c opti895.c opti5x7.c scamp.c scat.c via_vt82c49x.c + via_vt82c505.c sis_85c310.c sis_85c4xx.c sis_85c496.c sis_85c50x.c + opti283.c opti291.c umc491.c via_apollo.c via_pipc.c wd76c10.c + vl82c480.c) + +if(STPC) + target_sources(chipset PRIVATE stpc.c) +endif() + +if(M1489) + target_sources(chipset PRIVATE ali1489.c) +endif() + +if(M6117) + target_sources(chipset PRIVATE ali6117.c) +endif() \ No newline at end of file diff --git a/src/codegen/CMakeLists.txt b/src/codegen/CMakeLists.txt new file mode 100644 index 000000000..040f2deab --- /dev/null +++ b/src/codegen/CMakeLists.txt @@ -0,0 +1,17 @@ +if(DYNAREC) + add_library(dynarec OBJECT codegen.c codegen_ops.c) + + if(CMAKE_TARGET_ARCHITECTURES STREQUAL "i386") + target_sources(dynarec PRIVATE codegen_x86.c + codegen_accumulate_x86.c) + elseif(CMAKE_TARGET_ARCHITECTURES STREQUAL "x86_64") + target_sources(dynarec PRIVATE codegen_x86-64.c + codegen_accumulate_x86-64.c) + else() + message(SEND_ERROR + "Dynarec is incompatible with target platform " + ${CMAKE_TARGET_ARCHITECTURES}) + endif() + + target_link_libraries(86Box dynarec cgt) +endif() \ No newline at end of file diff --git a/src/codegen_new/CMakeLists.txt b/src/codegen_new/CMakeLists.txt new file mode 100644 index 000000000..a560c4581 --- /dev/null +++ b/src/codegen_new/CMakeLists.txt @@ -0,0 +1,37 @@ +if(DYNAREC) + add_library(dynarec OBJECT codegen.c codegen_accumulate.c + codegen_allocator.c codegen_block.c codegen_ir.c codegen_ops.c + codegen_ops_3dnow.c codegen_ops_branch.c codegen_ops_arith.c + codegen_ops_fpu_arith.c codegen_ops_fpu_constant.c + codegen_ops_fpu_loadstore.c codegen_ops_fpu_misc.c + codegen_ops_helpers.c codegen_ops_jump.c codegen_ops_logic.c + codegen_ops_misc.c codegen_ops_mmx_arith.c codegen_ops_mmx_cmp.c + codegen_ops_mmx_loadstore.c codegen_ops_mmx_logic.c + codegen_ops_mmx_pack.c codegen_ops_mmx_shift.c codegen_ops_mov.c + codegen_ops_shift.c codegen_ops_stack.c codegen_reg.c) + + if(CMAKE_TARGET_ARCHITECTURES STREQUAL "i386") + target_sources(dynarec PRIVATE codegen_backend_x86.c + codegen_backend_x86_ops.c codegen_backend_x86_ops_fpu.c + codegen_backend_x86_ops_sse.c + codegen_backend_x86_uops.c) + elseif(CMAKE_TARGET_ARCHITECTURES STREQUAL "x86_64") + target_sources(dynarec PRIVATE codegen_backend_x86-64.c + codegen_backend_x86-64_ops.c + codegen_backend_x86-64_ops_sse.c + codegen_backend_x86-64_uops.c) + elseif(CMAKE_TARGET_ARCHITECTURES STREQUAL "armv8") + target_sources(dynarec PRIVATE codegen_backend_arm64.c + codegen_backend_arm64_ops.c codegen_backend_arm64_uops.c + codegen_backend_arm64_imm.c) + elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "arm") + target_sources(dynarec PRIVATE codegen_backend_arm.c + codegen_backend_arm_ops.c codegen_backend_arm_uops.c) + else() + message(SEND_ERROR + "Dynarec is incompatible with target platform " + ${CMAKE_TARGET_ARCHITECTURES}) + endif() + + target_link_libraries(86Box dynarec cgt) +endif() \ No newline at end of file diff --git a/src/cpu/CMakeLists.txt b/src/cpu/CMakeLists.txt new file mode 100644 index 000000000..4c5c6d53e --- /dev/null +++ b/src/cpu/CMakeLists.txt @@ -0,0 +1,17 @@ +add_library(cpu OBJECT cpu.c cpu_table.c 808x.c 386.c 386_common.c 386_dynarec.c + 386_dynarec_ops.c x86seg.c x87.c x87_timings.c) + +if(AMD_K5) + target_compile_definitions(cpu PRIVATE USE_AMD_K5) +endif() + +if(CYRIX_6X86) + target_compile_definitions(cpu PRIVATE USE_CYRIX_6X86) +endif() + +if(DYNAREC) + add_library(cgt OBJECT codegen_timing_486.c codegen_timing_686.c + codegen_timing_common.c codegen_timing_k6.c + codegen_timing_pentium.c codegen_timing_p6.c + codegen_timing_winchip.c codegen_timing_winchip2.c) +endif() \ No newline at end of file diff --git a/src/device/CMakeLists.txt b/src/device/CMakeLists.txt new file mode 100644 index 000000000..9460b5b88 --- /dev/null +++ b/src/device/CMakeLists.txt @@ -0,0 +1,9 @@ +add_library(dev OBJECT bugger.c hwm.c hwm_lm75.c hwm_lm78.c hwm_gl518sm.c + hwm_vt82c686.c ibm_5161.c isamem.c isartc.c ../lpt.c pci_bridge.c + postcard.c serial.c vpc2007.c clock_ics9xxx.c i2c.c i2c_gpio.c + smbus_piix4.c keyboard.c keyboard_xt.c keyboard_at.c mouse.c mouse_bus.c + mouse_serial.c mouse_ps2.c phoenix_486_jumper.c) + +if(LASERXT) + target_compile_definitions(dev PRIVATE USE_LASERXT) +endif() \ No newline at end of file diff --git a/src/disk/CMakeLists.txt b/src/disk/CMakeLists.txt new file mode 100644 index 000000000..2a31f56d2 --- /dev/null +++ b/src/disk/CMakeLists.txt @@ -0,0 +1,10 @@ +add_library(hdd OBJECT hdd.c hdd_image.c hdd_table.c hdc.c hdc_st506_xt.c + hdc_st506_at.c hdc_xta.c hdc_esdi_at.c hdc_esdi_mca.c hdc_xtide.c + hdc_ide.c hdc_ide_opti611.c hdc_ide_cmd640.c hdc_ide_sff8038i.c) + +add_library(zip OBJECT zip.c) + +add_library(mo OBJECT mo.c) + +add_subdirectory(minivhd) +target_link_libraries(86Box minivhd) \ No newline at end of file diff --git a/src/disk/minivhd/CMakeLists.txt b/src/disk/minivhd/CMakeLists.txt new file mode 100644 index 000000000..0d346da17 --- /dev/null +++ b/src/disk/minivhd/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(minivhd STATIC cwalk.c libxml2_encoding.c minivhd_convert.c + minivhd_create.c minivhd_io.c minivhd_manage.c minivhd_struct_rw.c + minivhd_util.c) \ No newline at end of file diff --git a/src/floppy/CMakeLists.txt b/src/floppy/CMakeLists.txt new file mode 100644 index 000000000..60b2893f3 --- /dev/null +++ b/src/floppy/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(fdd OBJECT fdd.c fdc.c fdc_pii15xb.c fdi2raw.c fdd_common.c + fdd_86f.c fdd_fdi.c fdd_imd.c fdd_img.c fdd_json.c fdd_mfm.c fdd_td0.c) \ No newline at end of file diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt new file mode 100644 index 000000000..b38921770 --- /dev/null +++ b/src/game/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(game OBJECT gameport.c joystick_standard.c + joystick_ch_flightstick_pro.c joystick_sw_pad.c joystick_tm_fcs.c) \ No newline at end of file diff --git a/src/include/86box/version.h.in b/src/include/86box/version.h.in new file mode 100644 index 000000000..67832258d --- /dev/null +++ b/src/include/86box/version.h.in @@ -0,0 +1,31 @@ +/* + * 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. + * + * Definitions for project version, branding, and external links. + * + * Authors: Miran Grca, + * + * Copyright 2020 Miran Grca. + */ + +/* Version info. */ +#define EMU_NAME "@CMAKE_PROJECT_NAME@" +#define EMU_NAME_W L"@CMAKE_PROJECT_NAME@" + +#define EMU_VERSION "@CMAKE_PROJECT_VERSION@" +#define EMU_VERSION_W L"@CMAKE_PROJECT_VERSION@" +#define EMU_VERSION_EX "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@0" +#define EMU_VERSION_MAJ @CMAKE_PROJECT_VERSION_MAJOR@ +#define EMU_VERSION_MIN @CMAKE_PROJECT_VERSION_MINOR@ + +#define COPYRIGHT_YEAR "2020" + +/* Web URL info. */ +#define EMU_SITE L"@CMAKE_PROJECT_HOMEPAGE_URL@" +#define EMU_ROMS_URL L"https://github.com/86Box/roms/releases/latest" +#define EMU_DOCS_URL L"https://86box.readthedocs.io" diff --git a/src/include/86box/version.h b/src/include_make/86box/version.h similarity index 93% rename from src/include/86box/version.h rename to src/include_make/86box/version.h index ce286e89f..b3da62c6e 100644 --- a/src/include/86box/version.h +++ b/src/include_make/86box/version.h @@ -28,4 +28,4 @@ /* Web URL info. */ #define EMU_SITE L"86box.net" #define EMU_ROMS_URL L"https://github.com/86Box/roms/releases/latest" -#define EMU_DOCS_URL L"https://86box.readthedocs.io" +#define EMU_DOCS_URL L"https://86box.readthedocs.io" \ No newline at end of file diff --git a/src/machine/CMakeLists.txt b/src/machine/CMakeLists.txt new file mode 100644 index 000000000..ec932d11f --- /dev/null +++ b/src/machine/CMakeLists.txt @@ -0,0 +1,48 @@ +add_library(mch OBJECT machine.c machine_table.c m_xt.c m_xt_compaq.c + m_xt_t1000.c m_xt_t1000_vid.c m_xt_xi8088.c m_xt_zenith.c m_pcjr.c + m_amstrad.c m_europc.c m_xt_olivetti.c m_tandy.c m_at.c m_at_commodore.c + m_at_t3100e.c m_at_t3100e_vid.c m_ps1.c m_ps1_hdc.c m_ps2_isa.c + m_ps2_mca.c m_at_compaq.c m_at_286_386sx.c m_at_386dx_486.c + m_at_socket4_5.c m_at_socket7.c m_at_sockets7.c m_at_socket8.c + m_at_slot1.c m_at_slot2.c m_at_socket370.c m_at_misc.c) + +if(HEDAKA) + target_compile_definitions(mch PRIVATE USE_HEDAKA) +endif() + +if(LASERXT) + target_sources(mch PRIVATE m_xt_laserxt.c) + target_compile_definitions(mch PRIVATE USE_LASERXT) +endif() + +if(NO_SIO) + target_compile_definitions(mch PRIVATE NO_SIO) +endif() + +if(OPEN_AT) + target_compile_definitions(mch PRIVATE USE_OPEN_AT) +endif() + +if(PS1M2133) + target_compile_definitions(mch PRIVATE USE_PS1M2133) +endif() + +if(PS2M70T4) + target_compile_definitions(mch PRIVATE USE_PS2M70T4) +endif() + +if(M1489) + target_compile_definitions(mch PRIVATE USE_M1489) +endif() + +if(M6117) + target_compile_definitions(mch PRIVATE USE_M6117) +endif() + +if(VECT486VL) + target_compile_definitions(mch PRIVATE USE_VECT486VL) +endif() + +if(DELLS4) + target_compile_definitions(mch PRIVATE USE_DELLS4) +endif() \ No newline at end of file diff --git a/src/mem/CMakeLists.txt b/src/mem/CMakeLists.txt new file mode 100644 index 000000000..2f8865f9b --- /dev/null +++ b/src/mem/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(mem OBJECT catalyst_flash.c i2c_eeprom.c intel_flash.c mem.c rom.c + smram.c spd.c sst_flash.c) \ No newline at end of file diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt new file mode 100644 index 000000000..d157342fb --- /dev/null +++ b/src/network/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(net OBJECT network.c net_pcap.c net_slirp.c net_dp8390.c net_3c503.c + net_ne2000.c net_pcnet.c net_wd8003.c net_plip.c) + +add_subdirectory(slirp) +target_link_libraries(86Box slirp) \ No newline at end of file diff --git a/src/network/slirp/CMakeLists.txt b/src/network/slirp/CMakeLists.txt new file mode 100644 index 000000000..1a12399ea --- /dev/null +++ b/src/network/slirp/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(slirp STATIC arp_table.c bootp.c cksum.c dnssearch.c if.c ip_icmp.c + ip_input.c ip_output.c mbuf.c misc.c sbuf.c slirp.c socket.c tcp_input.c + tcp_output.c tcp_subr.c tcp_timer.c udp.c util.c version.c) + +target_link_libraries(slirp wsock32 iphlpapi) \ No newline at end of file diff --git a/src/printer/CMakeLists.txt b/src/printer/CMakeLists.txt new file mode 100644 index 000000000..d347aaab0 --- /dev/null +++ b/src/printer/CMakeLists.txt @@ -0,0 +1 @@ +add_library(print OBJECT png.c prt_cpmap.c prt_escp.c prt_text.c prt_ps.c) \ No newline at end of file diff --git a/src/scsi/CMakeLists.txt b/src/scsi/CMakeLists.txt new file mode 100644 index 000000000..d5dadfb8d --- /dev/null +++ b/src/scsi/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(scsi OBJECT scsi.c scsi_device.c scsi_cdrom.c scsi_disk.c + scsi_x54x.c scsi_aha154x.c scsi_buslogic.c scsi_ncr5380.c + scsi_ncr53c8xx.c scsi_pcscsi.c scsi_spock.c) \ No newline at end of file diff --git a/src/sio/CMakeLists.txt b/src/sio/CMakeLists.txt new file mode 100644 index 000000000..adc7475f1 --- /dev/null +++ b/src/sio/CMakeLists.txt @@ -0,0 +1,9 @@ +add_library(sio OBJECT sio_acc3221.c sio_f82c710.c sio_82091aa.c sio_fdc37c661.c + sio_fdc37c66x.c sio_fdc37c669.c sio_fdc37c93x.c sio_fdc37m60x.c + sio_pc87306.c sio_pc87307.c sio_pc87309.c sio_pc87311.c sio_pc87332.c + sio_prime3c.c sio_w83787f.c sio_w83877f.c sio_w83977f.c sio_um8669f.c + sio_vt82c686.c) + +if(SIO_DETECT) + target_sources(sio PRIVATE sio_detect.c) +endif() \ No newline at end of file diff --git a/src/sound/CMakeLists.txt b/src/sound/CMakeLists.txt new file mode 100644 index 000000000..138f42ebc --- /dev/null +++ b/src/sound/CMakeLists.txt @@ -0,0 +1,30 @@ +add_library(snd OBJECT sound.c openal.c snd_opl.c snd_opl_nuked.c snd_resid.cc + midi.c midi_system.c snd_speaker.c snd_pssj.c snd_lpt_dac.c + snd_lpt_dss.c snd_adlib.c snd_adlibgold.c snd_ad1848.c snd_audiopci.c + snd_azt2316a.c snd_cms.c snd_gus.c snd_sb.c snd_sb_dsp.c snd_emu8k.c + snd_mpu401.c snd_sn76489.c snd_ssi2001.c snd_wss.c snd_ym7128.c) + +if(FLUIDSYNTH) + target_compile_definitions(snd PRIVATE USE_FLUIDSYNTH) + target_sources(snd PRIVATE midi_fluidsynth.c) +endif() + +if(MUNT) + target_compile_definitions(snd PRIVATE USE_MUNT) + target_sources(snd PRIVATE midi_mt32.c) + + add_subdirectory(munt) + target_link_libraries(86Box mt32emu) +endif() + +if(PAS16) + target_compile_definitions(snd PRIVATE USE_PAS16) + target_sources(snd PRIVATE snd_pas16.c) +endif() + +if(GUSMAX) + target_compile_definitions(snd PRIVATE USE_GUSMAX) +endif() + +add_subdirectory(resid-fp) +target_link_libraries(86Box resid-fp) \ No newline at end of file diff --git a/src/sound/munt/CMakeLists.txt b/src/sound/munt/CMakeLists.txt new file mode 100644 index 000000000..0f2b7a268 --- /dev/null +++ b/src/sound/munt/CMakeLists.txt @@ -0,0 +1,11 @@ +add_library(mt32emu STATIC Analog.cpp BReverbModel.cpp File.cpp FileStream.cpp + LA32Ramp.cpp LA32FloatWaveGenerator.cpp LA32WaveGenerator.cpp + MidiStreamParser.cpp Part.cpp Partial.cpp PartialManager.cpp + Poly.cpp ROMInfo.cpp SampleRateConverter.cpp + srchelper/srctools/src/FIRResampler.cpp + srchelper/srctools/src/IIR2xResampler.cpp + srchelper/srctools/src/LinearResampler.cpp + srchelper/srctools/src/ResamplerModel.cpp + srchelper/srctools/src/SincResampler.cpp + srchelper/InternalResampler.cpp Synth.cpp Tables.cpp TVA.cpp TVF.cpp + TVP.cpp sha1/sha1.cpp c_interface/c_interface.cpp) \ No newline at end of file diff --git a/src/sound/resid-fp/CMakeLists.txt b/src/sound/resid-fp/CMakeLists.txt new file mode 100644 index 000000000..8575c1c93 --- /dev/null +++ b/src/sound/resid-fp/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(resid-fp STATIC convolve-sse.cc convolve.cc envelope.cc extfilt.cc + filter.cc pot.cc sid.cc voice.cc wave.cc wave6581_PST.cc + wave6581_PS_.cc wave6581_P_T.cc wave6581__ST.cc wave8580_PST.cc + wave8580_PS_.cc wave8580_P_T.cc wave8580__ST.cc) \ No newline at end of file diff --git a/src/video/CMakeLists.txt b/src/video/CMakeLists.txt new file mode 100644 index 000000000..2b21a149c --- /dev/null +++ b/src/video/CMakeLists.txt @@ -0,0 +1,40 @@ +add_library(vid OBJECT video.c vid_table.c vid_cga.c vid_cga_comp.c + vid_compaq_cga.c vid_mda.c vid_hercules.c vid_herculesplus.c + vid_incolor.c vid_colorplus.c vid_genius.c vid_pgc.c vid_im1024.c + vid_sigma.c vid_wy700.c vid_ega.c vid_ega_render.c vid_svga.c + vid_svga_render.c vid_ddc.c vid_vga.c vid_ati_eeprom.c vid_ati18800.c + vid_ati28800.c vid_ati_mach64.c vid_ati68860_ramdac.c vid_bt48x_ramdac.c + vid_av9194.c vid_icd2061.c vid_ics2494.c vid_ics2595.c vid_cl54xx.c + vid_et4000.c vid_sc1148x_ramdac.c vid_sc1502x_ramdac.c vid_et4000w32.c + vid_stg_ramdac.c vid_ht216.c vid_oak_oti.c vid_paradise.c + vid_ti_cf62011.c vid_tvga.c vid_tgui9440.c vid_tkd8001_ramdac.c + vid_att20c49x_ramdac.c vid_s3.c vid_s3_virge.c vid_ibm_rgb528_ramdac.c + vid_sdac_ramdac.c vid_voodoo.c vid_voodoo_banshee.c + vid_voodoo_banshee_blitter.c vid_voodoo_blitter.c vid_voodoo_display.c + vid_voodoo_fb.c vid_voodoo_fifo.c vid_voodoo_reg.c vid_voodoo_render.c + vid_voodoo_setup.c vid_voodoo_texture.c vid_ogc.c vid_nga.c) + +if(NOT MSVC) + target_compile_options(vid PRIVATE "-msse2") +endif() + +if(CL5422) + target_compile_definitions(vid PRIVATE USE_CL5422) +endif() + +if(MGA) + target_compile_definitions(vid PRIVATE USE_MGA) + target_sources(vid PRIVATE vid_mga.c) +endif() + +if(S3TRIO3D2X) + target_compile_definitions(vid PRIVATE USE_S3TRIO3D2X) +endif() + +if(VGAWONDER) + target_compile_definitions(vid PRIVATE USE_VGAWONDER) +endif() + +if(XL24) + target_compile_definitions(vid PRIVATE USE_XL24) +endif() \ No newline at end of file diff --git a/src/win/86Box.rc b/src/win/86Box.rc index b71f49e80..8dfa152db 100644 --- a/src/win/86Box.rc +++ b/src/win/86Box.rc @@ -696,68 +696,76 @@ BEGIN END +#ifndef NO_INCLUDE_MANIFEST ///////////////////////////////////////////////////////////////////////////// // // 24 // 1 24 MOVEABLE PURE "86Box.manifest" +#endif ///////////////////////////////////////////////////////////////////////////// // // Icon // +#ifdef CMAKE +#define ICON_PATH +#else +#define ICON_PATH "win/" +#endif + // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. #ifdef RELEASE_BUILD /* Icon by Devcore - https://commons.wikimedia.org/wiki/File:Icon_PC_256x256.png */ - 10 ICON DISCARDABLE "win/icons/86Box-RB.ico" + 10 ICON DISCARDABLE ICON_PATH "icons/86Box-RB.ico" #else /* Icon by Devcore - https://commons.wikimedia.org/wiki/File:Icon_PC2_256x256.png */ - 10 ICON DISCARDABLE "win/icons/86Box.ico" + 10 ICON DISCARDABLE ICON_PATH "icons/86Box.ico" #endif - 16 ICON DISCARDABLE "win/icons/floppy_525.ico" - 17 ICON DISCARDABLE "win/icons/floppy_525_active.ico" - 24 ICON DISCARDABLE "win/icons/floppy_35.ico" - 25 ICON DISCARDABLE "win/icons/floppy_35_active.ico" - 32 ICON DISCARDABLE "win/icons/cdrom.ico" - 33 ICON DISCARDABLE "win/icons/cdrom_active.ico" - 48 ICON DISCARDABLE "win/icons/zip.ico" - 49 ICON DISCARDABLE "win/icons/zip_active.ico" - 56 ICON DISCARDABLE "win/icons/mo.ico" - 57 ICON DISCARDABLE "win/icons/mo_active.ico" - 64 ICON DISCARDABLE "win/icons/cassette.ico" - 65 ICON DISCARDABLE "win/icons/cassette_active.ico" - 80 ICON DISCARDABLE "win/icons/hard_disk.ico" - 81 ICON DISCARDABLE "win/icons/hard_disk_active.ico" - 96 ICON DISCARDABLE "win/icons/network.ico" - 97 ICON DISCARDABLE "win/icons/network_active.ico" -144 ICON DISCARDABLE "win/icons/floppy_525_empty.ico" -145 ICON DISCARDABLE "win/icons/floppy_525_empty_active.ico" -152 ICON DISCARDABLE "win/icons/floppy_35_empty.ico" -153 ICON DISCARDABLE "win/icons/floppy_35_empty_active.ico" -160 ICON DISCARDABLE "win/icons/cdrom_empty.ico" -161 ICON DISCARDABLE "win/icons/cdrom_empty_active.ico" -176 ICON DISCARDABLE "win/icons/zip_empty.ico" -177 ICON DISCARDABLE "win/icons/zip_empty_active.ico" -184 ICON DISCARDABLE "win/icons/mo_empty.ico" -185 ICON DISCARDABLE "win/icons/mo_empty_active.ico" -192 ICON DISCARDABLE "win/icons/cassette_empty.ico" -193 ICON DISCARDABLE "win/icons/cassette_empty_active.ico" -240 ICON DISCARDABLE "win/icons/machine.ico" -241 ICON DISCARDABLE "win/icons/display.ico" -242 ICON DISCARDABLE "win/icons/input_devices.ico" -243 ICON DISCARDABLE "win/icons/sound.ico" -244 ICON DISCARDABLE "win/icons/ports.ico" -245 ICON DISCARDABLE "win/icons/other_peripherals.ico" -246 ICON DISCARDABLE "win/icons/floppy_and_cdrom_drives.ico" -247 ICON DISCARDABLE "win/icons/other_removable_devices.ico" -248 ICON DISCARDABLE "win/icons/floppy_disabled.ico" -249 ICON DISCARDABLE "win/icons/cdrom_disabled.ico" -250 ICON DISCARDABLE "win/icons/zip_disabled.ico" -251 ICON DISCARDABLE "win/icons/mo_disabled.ico" -252 ICON DISCARDABLE "win/icons/storage_controllers.ico" + 16 ICON DISCARDABLE ICON_PATH "icons/floppy_525.ico" + 17 ICON DISCARDABLE ICON_PATH "icons/floppy_525_active.ico" + 24 ICON DISCARDABLE ICON_PATH "icons/floppy_35.ico" + 25 ICON DISCARDABLE ICON_PATH "icons/floppy_35_active.ico" + 32 ICON DISCARDABLE ICON_PATH "icons/cdrom.ico" + 33 ICON DISCARDABLE ICON_PATH "icons/cdrom_active.ico" + 48 ICON DISCARDABLE ICON_PATH "icons/zip.ico" + 49 ICON DISCARDABLE ICON_PATH "icons/zip_active.ico" + 56 ICON DISCARDABLE ICON_PATH "icons/mo.ico" + 57 ICON DISCARDABLE ICON_PATH "icons/mo_active.ico" + 64 ICON DISCARDABLE ICON_PATH "icons/cassette.ico" + 65 ICON DISCARDABLE ICON_PATH "icons/cassette_active.ico" + 80 ICON DISCARDABLE ICON_PATH "icons/hard_disk.ico" + 81 ICON DISCARDABLE ICON_PATH "icons/hard_disk_active.ico" + 96 ICON DISCARDABLE ICON_PATH "icons/network.ico" + 97 ICON DISCARDABLE ICON_PATH "icons/network_active.ico" +144 ICON DISCARDABLE ICON_PATH "icons/floppy_525_empty.ico" +145 ICON DISCARDABLE ICON_PATH "icons/floppy_525_empty_active.ico" +152 ICON DISCARDABLE ICON_PATH "icons/floppy_35_empty.ico" +153 ICON DISCARDABLE ICON_PATH "icons/floppy_35_empty_active.ico" +160 ICON DISCARDABLE ICON_PATH "icons/cdrom_empty.ico" +161 ICON DISCARDABLE ICON_PATH "icons/cdrom_empty_active.ico" +176 ICON DISCARDABLE ICON_PATH "icons/zip_empty.ico" +177 ICON DISCARDABLE ICON_PATH "icons/zip_empty_active.ico" +184 ICON DISCARDABLE ICON_PATH "icons/mo_empty.ico" +185 ICON DISCARDABLE ICON_PATH "icons/mo_empty_active.ico" +192 ICON DISCARDABLE ICON_PATH "icons/cassette_empty.ico" +193 ICON DISCARDABLE ICON_PATH "icons/cassette_empty_active.ico" +240 ICON DISCARDABLE ICON_PATH "icons/machine.ico" +241 ICON DISCARDABLE ICON_PATH "icons/display.ico" +242 ICON DISCARDABLE ICON_PATH "icons/input_devices.ico" +243 ICON DISCARDABLE ICON_PATH "icons/sound.ico" +244 ICON DISCARDABLE ICON_PATH "icons/ports.ico" +245 ICON DISCARDABLE ICON_PATH "icons/other_peripherals.ico" +246 ICON DISCARDABLE ICON_PATH "icons/floppy_and_cdrom_drives.ico" +247 ICON DISCARDABLE ICON_PATH "icons/other_removable_devices.ico" +248 ICON DISCARDABLE ICON_PATH "icons/floppy_disabled.ico" +249 ICON DISCARDABLE ICON_PATH "icons/cdrom_disabled.ico" +250 ICON DISCARDABLE ICON_PATH "icons/zip_disabled.ico" +251 ICON DISCARDABLE ICON_PATH "icons/mo_disabled.ico" +252 ICON DISCARDABLE ICON_PATH "icons/storage_controllers.ico" #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// diff --git a/src/win/CMakeLists.txt b/src/win/CMakeLists.txt new file mode 100644 index 000000000..6727b8367 --- /dev/null +++ b/src/win/CMakeLists.txt @@ -0,0 +1,33 @@ +enable_language(RC) + +add_library(plat OBJECT win.c win_dynld.c win_thread.c win_cdrom.c + win_keyboard.c win_crashdump.c win_midi.c win_mouse.c) + +add_library(ui OBJECT win_ui.c win_stbar.c win_sdl.c win_dialog.c win_about.c + win_settings.c win_devconf.c win_snd_gain.c win_new_floppy.c + win_jsconf.c win_media_menu.c 86Box.rc) + +if(MSVC) + # MSVC complains when we include the manifest from 86Box.rc... + # On the bright side, CMake supports passing the manifest as a source + # file when using MSVC, so we might just as well do that! + target_compile_definitions(ui PRIVATE NO_INCLUDE_MANIFEST) + target_sources(86Box PRIVATE 86Box.manifest) +endif() + +if(DINPUT) + target_sources(plat PRIVATE win_joystick.cpp) + target_link_libraries(86Box dinput8) +else() + target_sources(plat PRIVATE win_joystick_rawinput.c) +endif() + +if(DISCORD) + # PUBLIC due to config.c and pc.c + target_compile_definitions(ui PUBLIC USE_DISCORD) + + target_sources(ui PRIVATE win_discord.c) +endif() + +target_link_libraries(86Box advapi32 comctl32 comdlg32 gdi32 shell32 iphlpapi + dxguid imm32 hid setupapi uxtheme version winmm psapi) \ No newline at end of file diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw index 46f5d619a..84482185b 100644 --- a/src/win/Makefile.mingw +++ b/src/win/Makefile.mingw @@ -318,7 +318,7 @@ DEPFILE := win/.depends # Set up the correct toolchain flags. OPTS := $(EXTRAS) $(STUFF) -OPTS += -Iinclude \ +OPTS += -Iinclude -Iinclude_make \ -iquote $(CODEGEN) -iquote cpu ifdef EXFLAGS OPTS += $(EXFLAGS) @@ -369,7 +369,7 @@ ifeq ($(ARM64), y) AOPTIM := AFLAGS := -mfloat-abi=hard endif -RFLAGS := --input-format=rc -O coff -Iinclude +RFLAGS := --input-format=rc -O coff -Iinclude -Iinclude_make ifeq ($(RELEASE), y) OPTS += -DRELEASE_BUILD RFLAGS += -DRELEASE_BUILD