commit c03d784a130c003dede83e93d2563f07a33f914e Author: heck Date: Thu Aug 10 15:49:49 2023 +0200 init diff --git a/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.pbxproj b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c67348e --- /dev/null +++ b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.pbxproj @@ -0,0 +1,510 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0699CAC43FF40F8C8353B6F3 /* include_juce_data_structures.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A38CBA134161AD8FA64899 /* include_juce_data_structures.mm */; }; + 0F0A60C569C0339E6F93D0DE /* include_juce_core.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2074B52EC43544A699F6A157 /* include_juce_core.mm */; }; + 183F99579A53365BD379126E /* include_juce_events.mm in Sources */ = {isa = PBXBuildFile; fileRef = C8B4DE0955A4E36F3F559F40 /* include_juce_events.mm */; }; + 1AAA3EF567822A8FB9573C33 /* include_juce_gui_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9AEC65989DCBE30E6C8DA7CB /* include_juce_gui_basics.mm */; }; + 33FDCBC88B2CC866A748B87C /* include_juce_graphics.mm in Sources */ = {isa = PBXBuildFile; fileRef = EB807D4F84D10CC55ED63A76 /* include_juce_graphics.mm */; }; + 50FE42A5C0417BF97C544A26 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1F338292664601BF133048D /* Cocoa.framework */; }; + 58F81FF61B2E3330A4DC84D5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD1AE6443A798B33984E52C9 /* Foundation.framework */; }; + 5B5A2F3BA0ADA4C6C0FCB89A /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4379C7B6AFDC3C5B757D5764 /* IOKit.framework */; }; + 5C4FFCDF8D6FDF200EC517F5 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A95C42174C07FAA2B2B65C4C /* Security.framework */; }; + 8A4DDBE72A850D4F0032C112 /* libch341eeprom.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A4DDBE62A850D190032C112 /* libch341eeprom.a */; }; + 8A4DDBE82A850D660032C112 /* libusb-1.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A4DDBE52A850BFC0032C112 /* libusb-1.0.a */; }; + A237F9B254E95B3173479FF5 /* Main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7DABA4EA84ACAB407A52BAE /* Main.cpp */; }; + F7500DD6050381FC1C00196C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0050B1C17FE29F9C95B64D51 /* QuartzCore.framework */; }; + FB5FD2A4E19C899FDDF1A2FF /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 6FC6928C1E798507B5702338 /* RecentFilesMenuTemplate.nib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0050B1C17FE29F9C95B64D51 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 099DCE12326CD7799FAE16B8 /* HelloWorldDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorldDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 2074B52EC43544A699F6A157 /* include_juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_core.mm; path = ../../JuceLibraryCode/include_juce_core.mm; sourceTree = SOURCE_ROOT; }; + 348AF3F1494791F99F14FB59 /* juce_data_structures */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_data_structures; path = "~/JUCE/modules/juce_data_structures"; sourceTree = ""; }; + 39A38CBA134161AD8FA64899 /* include_juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_data_structures.mm; path = ../../JuceLibraryCode/include_juce_data_structures.mm; sourceTree = SOURCE_ROOT; }; + 4379C7B6AFDC3C5B757D5764 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 5239859E7529454F519F922D /* JuceHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = SOURCE_ROOT; }; + 53A65963E302C9DE500EA512 /* HelloWorldDemo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HelloWorldDemo.h; path = ../../Source/HelloWorldDemo.h; sourceTree = SOURCE_ROOT; }; + 5E7B98148BAD54B9201CF2C7 /* juce_core */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_core; path = "~/JUCE/modules/juce_core"; sourceTree = ""; }; + 6FC6928C1E798507B5702338 /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; path = RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; }; + 800D138984C3A1FF22A52A42 /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = "~/JUCE/modules/juce_gui_basics"; sourceTree = ""; }; + 8A4DDBE52A850BFC0032C112 /* libusb-1.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libusb-1.0.a"; path = "../../../../../../../opt/local/lib/libusb-1.0.a"; sourceTree = ""; }; + 8A4DDBE62A850D190032C112 /* libch341eeprom.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libch341eeprom.a; path = ../../../../heck_fvflash/src/libch341eeprom.a; sourceTree = ""; }; + 957408F71F4B186C7A55CAA4 /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = "~/JUCE/modules/juce_events"; sourceTree = ""; }; + 9AEC65989DCBE30E6C8DA7CB /* include_juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_basics.mm; path = ../../JuceLibraryCode/include_juce_gui_basics.mm; sourceTree = SOURCE_ROOT; }; + A95C42174C07FAA2B2B65C4C /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + AD1C4EBB965C7DB7A55C0DA2 /* Info-App.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-App.plist"; sourceTree = SOURCE_ROOT; }; + C8B4DE0955A4E36F3F559F40 /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; }; + C93186D0B1869EF73963988F /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = "~/JUCE/modules/juce_graphics"; sourceTree = ""; }; + E1F338292664601BF133048D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + E7DABA4EA84ACAB407A52BAE /* Main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; }; + EB807D4F84D10CC55ED63A76 /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; }; + FD1AE6443A798B33984E52C9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D26239AED53B46CA2CE751E0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 50FE42A5C0417BF97C544A26 /* Cocoa.framework in Frameworks */, + 8A4DDBE72A850D4F0032C112 /* libch341eeprom.a in Frameworks */, + 58F81FF61B2E3330A4DC84D5 /* Foundation.framework in Frameworks */, + 5B5A2F3BA0ADA4C6C0FCB89A /* IOKit.framework in Frameworks */, + 8A4DDBE82A850D660032C112 /* libusb-1.0.a in Frameworks */, + F7500DD6050381FC1C00196C /* QuartzCore.framework in Frameworks */, + 5C4FFCDF8D6FDF200EC517F5 /* Security.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 18C51DEDCFFA23EC5A5B67CE /* Source */ = { + isa = PBXGroup; + children = ( + F1855BEAE974CAE58E8FD422 /* HelloWorldDemo */, + B7B926D77229D7E02EF99308 /* JUCE Modules */, + E5B60DEDED7A739A3E736B5D /* JUCE Library Code */, + 66B714D838BF3B4DB137F8CB /* Resources */, + F0AEE2DC91681642918BB3F7 /* Frameworks */, + 3907AEDA69EC2D3033063FB3 /* Products */, + ); + name = Source; + sourceTree = ""; + }; + 3907AEDA69EC2D3033063FB3 /* Products */ = { + isa = PBXGroup; + children = ( + 099DCE12326CD7799FAE16B8 /* HelloWorldDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + 66B714D838BF3B4DB137F8CB /* Resources */ = { + isa = PBXGroup; + children = ( + AD1C4EBB965C7DB7A55C0DA2 /* Info-App.plist */, + 6FC6928C1E798507B5702338 /* RecentFilesMenuTemplate.nib */, + ); + name = Resources; + sourceTree = ""; + }; + B7B926D77229D7E02EF99308 /* JUCE Modules */ = { + isa = PBXGroup; + children = ( + 5E7B98148BAD54B9201CF2C7 /* juce_core */, + 348AF3F1494791F99F14FB59 /* juce_data_structures */, + 957408F71F4B186C7A55CAA4 /* juce_events */, + C93186D0B1869EF73963988F /* juce_graphics */, + 800D138984C3A1FF22A52A42 /* juce_gui_basics */, + ); + name = "JUCE Modules"; + sourceTree = ""; + }; + E5B60DEDED7A739A3E736B5D /* JUCE Library Code */ = { + isa = PBXGroup; + children = ( + 2074B52EC43544A699F6A157 /* include_juce_core.mm */, + 39A38CBA134161AD8FA64899 /* include_juce_data_structures.mm */, + C8B4DE0955A4E36F3F559F40 /* include_juce_events.mm */, + EB807D4F84D10CC55ED63A76 /* include_juce_graphics.mm */, + 9AEC65989DCBE30E6C8DA7CB /* include_juce_gui_basics.mm */, + 5239859E7529454F519F922D /* JuceHeader.h */, + ); + name = "JUCE Library Code"; + sourceTree = ""; + }; + F0AEE2DC91681642918BB3F7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8A4DDBE62A850D190032C112 /* libch341eeprom.a */, + 8A4DDBE52A850BFC0032C112 /* libusb-1.0.a */, + E1F338292664601BF133048D /* Cocoa.framework */, + FD1AE6443A798B33984E52C9 /* Foundation.framework */, + 4379C7B6AFDC3C5B757D5764 /* IOKit.framework */, + 0050B1C17FE29F9C95B64D51 /* QuartzCore.framework */, + A95C42174C07FAA2B2B65C4C /* Security.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F1855BEAE974CAE58E8FD422 /* HelloWorldDemo */ = { + isa = PBXGroup; + children = ( + F7F77292F735014ADCFBAEEF /* Source */, + ); + name = HelloWorldDemo; + sourceTree = ""; + }; + F7F77292F735014ADCFBAEEF /* Source */ = { + isa = PBXGroup; + children = ( + E7DABA4EA84ACAB407A52BAE /* Main.cpp */, + 53A65963E302C9DE500EA512 /* HelloWorldDemo.h */, + ); + name = Source; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + E59C5F4C7E26F9BDDBE2018E /* HelloWorldDemo - App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40E862D067345E80CB5DDCA0 /* Build configuration list for PBXNativeTarget "HelloWorldDemo - App" */; + buildPhases = ( + 79B6891647E745A8589693B3 /* Resources */, + B173C572EFD1F97DE4F485A9 /* Sources */, + D26239AED53B46CA2CE751E0 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "HelloWorldDemo - App"; + productName = HelloWorldDemo; + productReference = 099DCE12326CD7799FAE16B8 /* HelloWorldDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D045F6BCDFCEC11D554F8C54 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1340; + ORGANIZATIONNAME = JUCE; + TargetAttributes = { + E59C5F4C7E26F9BDDBE2018E = { + SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 0; + }; + com.apple.HardenedRuntime = { + enabled = 0; + }; + com.apple.InAppPurchase = { + enabled = 0; + }; + com.apple.InterAppAudio = { + enabled = 0; + }; + com.apple.Push = { + enabled = 0; + }; + com.apple.Sandbox = { + enabled = 0; + }; + }; + }; + }; + }; + buildConfigurationList = 76B10EB67960F008165A1B9F /* Build configuration list for PBXProject "HelloWorldDemo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 18C51DEDCFFA23EC5A5B67CE /* Source */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + E59C5F4C7E26F9BDDBE2018E /* HelloWorldDemo - App */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 79B6891647E745A8589693B3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FB5FD2A4E19C899FDDF1A2FF /* RecentFilesMenuTemplate.nib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B173C572EFD1F97DE4F485A9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A237F9B254E95B3173479FF5 /* Main.cpp in Sources */, + 0F0A60C569C0339E6F93D0DE /* include_juce_core.mm in Sources */, + 0699CAC43FF40F8C8353B6F3 /* include_juce_data_structures.mm in Sources */, + 183F99579A53365BD379126E /* include_juce_events.mm in Sources */, + 33FDCBC88B2CC866A748B87C /* include_juce_graphics.mm in Sources */, + 1AAA3EF567822A8FB9573C33 /* include_juce_gui_basics.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2C242917C84054F84F935C4F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = NO; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_MODEL_TUNING = G5; + GCC_NO_COMMON_BLOCKS = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; + GCC_WARN_MISSING_PARENTHESES = YES; + GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; + GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = HelloWorldDemo; + SDKROOT = macosx; + WARNING_CFLAGS = "-Wreorder"; + ZERO_LINK = NO; + }; + name = Debug; + }; + 9FA88EC66C894C6E5BCE5B17 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_LINK_OBJC_RUNTIME = NO; + COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; + COPY_PHASE_STRIP = NO; + EXCLUDED_ARCHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "_DEBUG=1", + "DEBUG=1", + "JUCE_DISPLAY_SPLASH_SCREEN=1", + "JUCE_USE_DARK_SPLASH_SCREEN=1", + "JUCE_PROJUCER_VERSION=0x70006", + "JUCE_MODULE_AVAILABLE_juce_core=1", + "JUCE_MODULE_AVAILABLE_juce_data_structures=1", + "JUCE_MODULE_AVAILABLE_juce_events=1", + "JUCE_MODULE_AVAILABLE_juce_graphics=1", + "JUCE_MODULE_AVAILABLE_juce_gui_basics=1", + "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", + "JUCE_STRICT_REFCOUNTEDPOINTER=1", + "JUCE_STANDALONE_APPLICATION=1", + "PIP_JUCE_EXAMPLES_DIRECTORY=L1VzZXJzL2hlY2svSlVDRS9leGFtcGxlcw==", + "JUCER_XCODE_MAC_F6D2F4CF=1", + "JUCE_APP_VERSION=1.0.0", + "JUCE_APP_VERSION_HEX=0x10000", + "JucePlugin_Build_VST=0", + "JucePlugin_Build_VST3=0", + "JucePlugin_Build_AU=0", + "JucePlugin_Build_AUv3=0", + "JucePlugin_Build_AAX=0", + "JucePlugin_Build_Standalone=0", + "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", + ); + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../JuceLibraryCode", + "$(HOME)/JUCE/modules", + "$(inherited)", + /Users/heck/src/heck_fvflash/src, + ); + INFOPLIST_FILE = "Info-App.plist"; + INFOPLIST_PREPROCESS = NO; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + /Users/heck/src/heck_fvflash/src, + /opt/local/lib, + ); + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(HOME)/JUCE/modules"; + OTHER_LDFLAGS = ( + "-weak_framework", + Metal, + "-weak_framework", + MetalKit, + ); + PRODUCT_BUNDLE_IDENTIFIER = com.JUCE.HelloWorldDemo; + PRODUCT_NAME = HelloWorldDemo; + USE_HEADERMAP = NO; + VALID_ARCHS = "i386 x86_64 arm64 arm64e"; + }; + name = Debug; + }; + AF8DAF58053535EC8337DC36 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_LINK_OBJC_RUNTIME = NO; + COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; + DEAD_CODE_STRIPPING = YES; + EXCLUDED_ARCHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "_NDEBUG=1", + "NDEBUG=1", + "JUCE_DISPLAY_SPLASH_SCREEN=1", + "JUCE_USE_DARK_SPLASH_SCREEN=1", + "JUCE_PROJUCER_VERSION=0x70006", + "JUCE_MODULE_AVAILABLE_juce_core=1", + "JUCE_MODULE_AVAILABLE_juce_data_structures=1", + "JUCE_MODULE_AVAILABLE_juce_events=1", + "JUCE_MODULE_AVAILABLE_juce_graphics=1", + "JUCE_MODULE_AVAILABLE_juce_gui_basics=1", + "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1", + "JUCE_STRICT_REFCOUNTEDPOINTER=1", + "JUCE_STANDALONE_APPLICATION=1", + "PIP_JUCE_EXAMPLES_DIRECTORY=L1VzZXJzL2hlY2svSlVDRS9leGFtcGxlcw==", + "JUCER_XCODE_MAC_F6D2F4CF=1", + "JUCE_APP_VERSION=1.0.0", + "JUCE_APP_VERSION_HEX=0x10000", + "JucePlugin_Build_VST=0", + "JucePlugin_Build_VST3=0", + "JucePlugin_Build_AU=0", + "JucePlugin_Build_AUv3=0", + "JucePlugin_Build_AAX=0", + "JucePlugin_Build_Standalone=0", + "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", + ); + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../JuceLibraryCode", + "$(HOME)/JUCE/modules", + "$(inherited)", + /Users/heck/src/heck_fvflash/src, + ); + INFOPLIST_FILE = "Info-App.plist"; + INFOPLIST_PREPROCESS = NO; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + /Users/heck/src/heck_fvflash/src, + /opt/local/lib, + ); + LLVM_LTO = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(HOME)/JUCE/modules"; + OTHER_LDFLAGS = ( + "-weak_framework", + Metal, + "-weak_framework", + MetalKit, + ); + PRODUCT_BUNDLE_IDENTIFIER = com.JUCE.HelloWorldDemo; + PRODUCT_NAME = HelloWorldDemo; + USE_HEADERMAP = NO; + VALID_ARCHS = "i386 x86_64 arm64 arm64e"; + }; + name = Release; + }; + C89B59521DF6B8BC92EF1DCD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = NO; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_MODEL_TUNING = G5; + GCC_NO_COMMON_BLOCKS = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; + GCC_WARN_MISSING_PARENTHESES = YES; + GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; + GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRODUCT_NAME = HelloWorldDemo; + SDKROOT = macosx; + WARNING_CFLAGS = "-Wreorder"; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 40E862D067345E80CB5DDCA0 /* Build configuration list for PBXNativeTarget "HelloWorldDemo - App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9FA88EC66C894C6E5BCE5B17 /* Debug */, + AF8DAF58053535EC8337DC36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 76B10EB67960F008165A1B9F /* Build configuration list for PBXProject "HelloWorldDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2C242917C84054F84F935C4F /* Debug */, + C89B59521DF6B8BC92EF1DCD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = D045F6BCDFCEC11D554F8C54 /* Project object */; +} diff --git a/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/xcuserdata/heck.xcuserdatad/UserInterfaceState.xcuserstate b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/xcuserdata/heck.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..872f6c6 Binary files /dev/null and b/Builds/MacOSX/HelloWorldDemo.xcodeproj/project.xcworkspace/xcuserdata/heck.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Builds/MacOSX/HelloWorldDemo.xcodeproj/xcuserdata/heck.xcuserdatad/xcschemes/xcschememanagement.plist b/Builds/MacOSX/HelloWorldDemo.xcodeproj/xcuserdata/heck.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..bcf7b8c --- /dev/null +++ b/Builds/MacOSX/HelloWorldDemo.xcodeproj/xcuserdata/heck.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + HelloWorldDemo - App.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Builds/MacOSX/Info-App.plist b/Builds/MacOSX/Info-App.plist new file mode 100644 index 0000000..f1ec728 --- /dev/null +++ b/Builds/MacOSX/Info-App.plist @@ -0,0 +1,29 @@ + + + + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.JUCE.HelloWorldDemo + CFBundleName + HelloWorldDemo + CFBundleDisplayName + HelloWorldDemo + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0.0 + CFBundleVersion + 1.0.0 + NSHumanReadableCopyright + + NSHighResolutionCapable + + + diff --git a/Builds/MacOSX/RecentFilesMenuTemplate.nib b/Builds/MacOSX/RecentFilesMenuTemplate.nib new file mode 100644 index 0000000..cec7f7c Binary files /dev/null and b/Builds/MacOSX/RecentFilesMenuTemplate.nib differ diff --git a/HelloWorldDemo.jucer b/HelloWorldDemo.jucer new file mode 100644 index 0000000..38a6a21 --- /dev/null +++ b/HelloWorldDemo.jucer @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JuceLibraryCode/JuceHeader.h b/JuceLibraryCode/JuceHeader.h new file mode 100644 index 0000000..e87e99f --- /dev/null +++ b/JuceLibraryCode/JuceHeader.h @@ -0,0 +1,46 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + + This is the header file that your files should include in order to get all the + JUCE library headers. You should avoid including the JUCE headers directly in + your own source files, because that wouldn't pick up the correct configuration + options for your app. + +*/ + +#pragma once + + +#include +#include +#include +#include +#include + + +#if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION + /** If you've hit this error then the version of the Projucer that was used to generate this project is + older than the version of the JUCE modules being included. To fix this error, re-save your project + using the latest version of the Projucer or, if you aren't using the Projucer to manage your project, + remove the JUCE_PROJUCER_VERSION define. + */ + #error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error." +#endif + +#if ! DONT_SET_USING_JUCE_NAMESPACE + // If your code uses a lot of JUCE classes, then this will obviously save you + // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. + using namespace juce; +#endif + +#if ! JUCE_DONT_DECLARE_PROJECTINFO +namespace ProjectInfo +{ + const char* const projectName = "HelloWorldDemo"; + const char* const companyName = "JUCE"; + const char* const versionString = "1.0.0"; + const int versionNumber = 0x10000; +} +#endif diff --git a/JuceLibraryCode/ReadMe.txt b/JuceLibraryCode/ReadMe.txt new file mode 100644 index 0000000..091a5aa --- /dev/null +++ b/JuceLibraryCode/ReadMe.txt @@ -0,0 +1,12 @@ + + Important Note!! + ================ + +The purpose of this folder is to contain files that are auto-generated by the Projucer, +and ALL files in this folder will be mercilessly DELETED and completely re-written whenever +the Projucer saves your project. + +Therefore, it's a bad idea to make any manual changes to the files in here, or to +put any of your own files in here if you don't want to lose them. (Of course you may choose +to add the folder's contents to your version-control system so that you can re-merge your own +modifications after the Projucer has saved its changes). diff --git a/JuceLibraryCode/include_juce_core.cpp b/JuceLibraryCode/include_juce_core.cpp new file mode 100644 index 0000000..84fe988 --- /dev/null +++ b/JuceLibraryCode/include_juce_core.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_core.mm b/JuceLibraryCode/include_juce_core.mm new file mode 100644 index 0000000..9ee67bf --- /dev/null +++ b/JuceLibraryCode/include_juce_core.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_data_structures.cpp b/JuceLibraryCode/include_juce_data_structures.cpp new file mode 100644 index 0000000..152980a --- /dev/null +++ b/JuceLibraryCode/include_juce_data_structures.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_data_structures.mm b/JuceLibraryCode/include_juce_data_structures.mm new file mode 100644 index 0000000..02b9711 --- /dev/null +++ b/JuceLibraryCode/include_juce_data_structures.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_events.cpp b/JuceLibraryCode/include_juce_events.cpp new file mode 100644 index 0000000..39268e2 --- /dev/null +++ b/JuceLibraryCode/include_juce_events.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_events.mm b/JuceLibraryCode/include_juce_events.mm new file mode 100644 index 0000000..191a998 --- /dev/null +++ b/JuceLibraryCode/include_juce_events.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_graphics.cpp b/JuceLibraryCode/include_juce_graphics.cpp new file mode 100644 index 0000000..8ccabef --- /dev/null +++ b/JuceLibraryCode/include_juce_graphics.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_graphics.mm b/JuceLibraryCode/include_juce_graphics.mm new file mode 100644 index 0000000..6bb7456 --- /dev/null +++ b/JuceLibraryCode/include_juce_graphics.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_gui_basics.cpp b/JuceLibraryCode/include_juce_gui_basics.cpp new file mode 100644 index 0000000..71d04b2 --- /dev/null +++ b/JuceLibraryCode/include_juce_gui_basics.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_gui_basics.mm b/JuceLibraryCode/include_juce_gui_basics.mm new file mode 100644 index 0000000..e449e0b --- /dev/null +++ b/JuceLibraryCode/include_juce_gui_basics.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/Source/HelloWorldDemo.h b/Source/HelloWorldDemo.h new file mode 100644 index 0000000..2499e2c --- /dev/null +++ b/Source/HelloWorldDemo.h @@ -0,0 +1,168 @@ +/* + ============================================================================== + + This file is part of the JUCE examples. + Copyright (c) 2022 - Raw Material Software Limited + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, + WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR + PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + +/******************************************************************************* + The block below describes the properties of this PIP. A PIP is a short snippet + of code that can be read by the Projucer and used to generate a JUCE project. + + BEGIN_JUCE_PIP_METADATA + + name: HelloWorldDemo + version: 1.0.0 + vendor: JUCE + website: http://juce.com + description: Simple HelloWorld application. + + dependencies: juce_core, juce_data_structures, juce_events, juce_graphics, + juce_gui_basics + exporters: xcode_mac, vs2022, linux_make, xcode_iphone + + moduleFlags: JUCE_STRICT_REFCOUNTEDPOINTER=1 + + type: Component + mainClass: HelloWorldDemo + + useLocalCopy: 1 + + END_JUCE_PIP_METADATA + +*******************************************************************************/ + +#pragma once + +#include + +//============================================================================== +class HelloWorldDemo : public Component, public juce::FilenameComponentListener +{ +public: + int fv1flash_write(std::string &filename) { + ch341_operation_desc opdesc{}; + opdesc.operation = 'w'; + opdesc.filename = strdup(filename.data()); + opdesc.eepromname = strdup("24c32"); + + return ch341_operation(opdesc); + } + + int fv1flash_erase() { + ch341_operation_desc opdesc{}; + opdesc.operation = 'e'; + opdesc.eepromname = strdup("24c32"); + + return ch341_operation(opdesc); + } + + + //============================================================================== + HelloWorldDemo() + { + fileComp.reset (new juce::FilenameComponent ("fileComp", + {}, // current file + false, // can edit file name, + false, // is directory, + false, // is for saving, + {}, // browser wildcard suffix, + {}, // enforced suffix, + "Drop fv-1 program \n\nHere\n\nto upload (bin file)")); // text when nothing selected + addAndMakeVisible (fileComp.get()); + fileComp->addListener (this); + + addAndMakeVisible (helloWorldLabel); + + helloWorldLabel.setFont (Font (40.00f, Font::bold)); + helloWorldLabel.setJustificationType (Justification::centred); + helloWorldLabel.setEditable (false, false, false); + helloWorldLabel.setColour (Label::textColourId, Colours::green); + + addAndMakeVisible (status_label); + + status_label.setFont (Font (20.00f, Font::plain)); + status_label.setJustificationType (Justification::left); + status_label.setEditable (false, false, false); + status_label.setColour (Label::textColourId, Colours::white); + + addAndMakeVisible (helloWorldLabel2); + + helloWorldLabel2.setFont (Font (12.00f, Font::plain)); + helloWorldLabel2.setJustificationType (Justification::right); + helloWorldLabel2.setEditable (false, false, false); + helloWorldLabel2.setColour (Label::textColourId, Colours::white); + + + addAndMakeVisible (quitButton); + quitButton.onClick = [this]{ + if (fv1flash_erase() == 0) { + status_label.setColour (Label::textColourId, Colours::green); + status_label.setText("Erase Successful", juce::NotificationType::dontSendNotification); + } else { + status_label.setColour (Label::textColourId, Colours::red); + status_label.setText("Erase Error: fv-1 board not found)", juce::NotificationType::dontSendNotification); + } + }; + + setSize (500, 400); + } + + //============================================================================== + void paint (Graphics& g) override + { + g.fillAll (Colour (0,0,0)); + + } + + void resized() override + { + helloWorldLabel.setBounds (10, 10, getWidth()- 10, 60); + fileComp->setBounds(30, 100, getWidth() - 60, 200); + status_label.setBounds(25, 290, getWidth()- 10, 60); + helloWorldLabel2.setBounds(10, 360, 380, 30); + quitButton.setBounds (350, 307, 120, 32); + + } + + void filenameComponentChanged (juce::FilenameComponent* fileComponentThatHasChanged) override + { + if (fileComponentThatHasChanged == fileComp.get()) { + std::string filename = fileComp->getCurrentFile().getFullPathName().toStdString(); + status_label.setText("Uploading...", juce::NotificationType::dontSendNotification); + if (fv1flash_write(filename) == 0) { + status_label.setColour (Label::textColourId, Colours::green); + status_label.setText("Upload Successful", juce::NotificationType::dontSendNotification); + } else { + status_label.setColour (Label::textColourId, Colours::red); + status_label.setText("Upload Error: fv-1 board not found)", juce::NotificationType::dontSendNotification); + } + } + } + + + +private: + //============================================================================== + std::unique_ptr fileComp; + Label helloWorldLabel { {}, TRANS("FlipFloater FV-1 Fun") }; + Label helloWorldLabel2 { {}, TRANS("made by @ homemade23 4 FlipFloater") }; + Label status_label { {}, TRANS("") }; + TextButton quitButton { TRANS("Erase") }; + + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (HelloWorldDemo) +}; diff --git a/Source/Main.cpp b/Source/Main.cpp new file mode 100644 index 0000000..bea5ef2 --- /dev/null +++ b/Source/Main.cpp @@ -0,0 +1,63 @@ +/* + ============================================================================== + + This file contains the startup code for a PIP. + + ============================================================================== +*/ + +#include +#include "HelloWorldDemo.h" + +class Application : public juce::JUCEApplication +{ +public: + //============================================================================== + Application() = default; + + const juce::String getApplicationName() override { return "HelloWorldDemo"; } + const juce::String getApplicationVersion() override { return "1.0.0"; } + + void initialise (const juce::String&) override + { + mainWindow.reset (new MainWindow ("HelloWorldDemo", new HelloWorldDemo, *this)); + } + + void shutdown() override { mainWindow = nullptr; } + +private: + class MainWindow : public juce::DocumentWindow + { + public: + MainWindow (const juce::String& name, juce::Component* c, JUCEApplication& a) + : DocumentWindow (name, juce::Desktop::getInstance().getDefaultLookAndFeel() + .findColour (ResizableWindow::backgroundColourId), + juce::DocumentWindow::allButtons), + app (a) + { + setUsingNativeTitleBar (true); + setContentOwned (c, true); + + setResizable (false, false); + centreWithSize (getWidth(), getHeight()); + + setVisible (true); + } + + void closeButtonPressed() override + { + app.systemRequestedQuit(); + } + + private: + JUCEApplication& app; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) + }; + + std::unique_ptr mainWindow; +}; + +//============================================================================== +START_JUCE_APPLICATION (Application)