diff --git a/docs/CMock_Summary.md b/docs/CMock_Summary.md index efd50a3..9a89634 100644 --- a/docs/CMock_Summary.md +++ b/docs/CMock_Summary.md @@ -477,6 +477,13 @@ from the defaults. We've tried to specify what the defaults are below. * default: `['(?:__attribute__\s*\(+.*?\)+)']` +* `:exclude_setjmp_h`: + Some embedded systems don't have available. Setting this to true + removes references to this header file and the ability to use cexception. + + * default: false + + * `:subdir`: This is a relative subdirectory for your mocks. Set this to e.g. "sys" in order to create a mock for `sys/types.h` in `(:mock_path)/sys/`. diff --git a/lib/cmock_config.rb b/lib/cmock_config.rb index 9515481..716a0c5 100644 --- a/lib/cmock_config.rb +++ b/lib/cmock_config.rb @@ -41,6 +41,7 @@ class CMockConfig :array_size_type => [], :array_size_name => 'size|len', :skeleton => false, + :exclude_setjmp_h => false, # Format to look for inline functions. # This is a combination of "static" and "inline" keywords ("static inline", "inline static", "inline", "static") diff --git a/lib/cmock_generator.rb b/lib/cmock_generator.rb index b442895..fdc29b1 100644 --- a/lib/cmock_generator.rb +++ b/lib/cmock_generator.rb @@ -19,6 +19,7 @@ class CMockGenerator @ordered = @config.enforce_strict_ordering @framework = @config.framework.to_s @fail_on_unexpected_calls = @config.fail_on_unexpected_calls + @exclude_setjmp_h = @config.exclude_setjmp_h @subdir = @config.subdir @folder = nil @@ -182,7 +183,9 @@ class CMockGenerator file << "/* AUTOGENERATED FILE. DO NOT EDIT. */\n" unless functions.empty? file << "#include \n" file << "#include \n" - file << "#include \n" + unless @exclude_setjmp_h + file << "#include \n" + end file << "#include \"cmock.h\"\n" @includes_c_pre_header.each { |inc| file << "#include #{inc}\n" } file << "#include \"#{header_file}\"\n" @@ -218,7 +221,9 @@ class CMockGenerator end def create_extern_declarations(file) - file << "extern jmp_buf AbortFrame;\n" + unless @exclude_setjmp_h + file << "extern jmp_buf AbortFrame;\n" + end if @ordered file << "extern int GlobalExpectCount;\n" file << "extern int GlobalVerifyOrder;\n" diff --git a/lib/cmock_generator_plugin_cexception.rb b/lib/cmock_generator_plugin_cexception.rb index a757669..7e2d7b6 100644 --- a/lib/cmock_generator_plugin_cexception.rb +++ b/lib/cmock_generator_plugin_cexception.rb @@ -12,6 +12,7 @@ class CMockGeneratorPluginCexception @config = config @utils = utils @priority = 7 + raise 'Error: cexception is not supported without setjmp support' if @config.exclude_setjmp_h end def include_files