From 4c545e1fdd0308a820ca998eafd40f7988911dab Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Wed, 29 Apr 2015 17:48:39 +0200 Subject: [PATCH] Simplify building of rpp_lib --- rpp/blocks/.gitignore | 1 + rpp/blocks/Makefile | 59 +++++++++++++++++------------ rpp/blocks/_rm48_hdk/rpp_lib.slx | Bin 9364 -> 0 bytes rpp/blocks/_tms570_hdk/rpp_lib.slx | Bin 9363 -> 0 bytes rpp/blocks/rpp_generate_lib.m | 34 +++++++---------- rpp/blocks/rpp_lib.slx | Bin 21536 -> 0 bytes 6 files changed, 49 insertions(+), 45 deletions(-) delete mode 100644 rpp/blocks/_rm48_hdk/rpp_lib.slx delete mode 100644 rpp/blocks/_tms570_hdk/rpp_lib.slx delete mode 100644 rpp/blocks/rpp_lib.slx diff --git a/rpp/blocks/.gitignore b/rpp/blocks/.gitignore index 218432a..b1a8c88 100644 --- a/rpp/blocks/.gitignore +++ b/rpp/blocks/.gitignore @@ -1,2 +1,3 @@ *.mexa64 *.html +/rpp_lib.slx diff --git a/rpp/blocks/Makefile b/rpp/blocks/Makefile index 2247164..131a914 100644 --- a/rpp/blocks/Makefile +++ b/rpp/blocks/Makefile @@ -14,30 +14,18 @@ include ../lib/Makefile.config -BLOCKS = $(blocks_$(TARGET)) - -blocks_rm48_hdk = $(BLOCKS_HDK) -blocks_tms570_hdk = $(BLOCKS_HDK) - -BLOCKS_HDK = \ - 'rpp_can_rx', \ - 'rpp_can_setup', \ - 'rpp_can_tx', \ - 'rpp_gio_in', \ - 'rpp_gio_out', \ - 'rpp_hdk_ain', \ - 'rpp_overrun', \ - 'rpp_sci_cfg', \ - 'rpp_sci_printf', \ - 'rpp_sci_rx', \ - 'rpp_sci_tx' - -SF=$(wildcard sfunction_*.c) - +SF = $(wildcard sfunction_*.c) HTML = $(SF:%.c=%.html) MEX = $(SF:%.c=%.mexa64) -all: $(MEX) $(HTML) +all: $(MEX) $(HTML) rpp_lib.slx + +clean:: + rm -rf $(MEX) $(HTML) rpp_lib.slx + +################################ +# S-functions and documentation +################################ %.mexa64: %.c mex $(CFLAGS) $^ @@ -56,13 +44,34 @@ diff-doc: $(HTML) update-doc: $(HTML) matlab -nodesktop -nojvm -r "try, rpp_update_doc('update'); catch ME, disp(getReport(ME)); exit(1); end; exit(0)" | sed -e "s/\x1b\(\[?1[hl]\|[=>]\)//g" | tee update-doc.log -generate-lib: - matlab -nodesktop -nojvm -r "try, rpp_generate_lib('_$(TARGET)', $(BLOCKS)); catch ME, disp(getReport(ME)); exit(1); end; exit(0)" - cp --force ./_$(TARGET)/rpp_lib.slx ./rpp_lib.slx - define PRINT_COMMIT_MSG (echo "Update block masks by running rpp_update_doc.m"; echo; echo "Changelog:"; sed -n -e '/^Processing rpp_lib/,$$ p' update-doc.log) endef commit-doc: update-doc $(PRINT_COMMIT_MSG) | git commit -F - rpp_lib.slx + +################################ +# Block library +################################ + +BLOCKS = $(blocks_$(TARGET)) + +blocks_rm48_hdk = $(BLOCKS_HDK) +blocks_tms570_hdk = $(BLOCKS_HDK) + +BLOCKS_HDK = \ + rpp_can_rx \ + rpp_can_setup \ + rpp_can_tx \ + rpp_gio_in \ + rpp_gio_out \ + rpp_hdk_ain \ + rpp_overrun \ + rpp_sci_cfg \ + rpp_sci_printf \ + rpp_sci_rx \ + rpp_sci_tx + +rpp_lib.slx: + matlab -nodesktop -nojvm -r "try, rpp_generate_lib $(BLOCKS); catch ME, disp(getReport(ME)); exit(1); end; exit(0)" diff --git a/rpp/blocks/_rm48_hdk/rpp_lib.slx b/rpp/blocks/_rm48_hdk/rpp_lib.slx deleted file mode 100644 index 2d08af6bdc33aadd1ffa94d118a4b440e1e0a638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9364 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 ClAYlI diff --git a/rpp/blocks/rpp_generate_lib.m b/rpp/blocks/rpp_generate_lib.m index 7a57124..f17c819 100644 --- a/rpp/blocks/rpp_generate_lib.m +++ b/rpp/blocks/rpp_generate_lib.m @@ -1,4 +1,4 @@ -% Copyright (C) 2013-2014 Czech Technical University in Prague +% Copyright (C) 2013-2015 Czech Technical University in Prague % % Authors: % - Michal Horn @@ -17,43 +17,37 @@ % http://www.mathworks.com/help/matlab/matlab_external/custom-building-mex-files.html function rpp_generate_lib(varargin) + blocks = varargin; d = fullfile(getpref('rpp', 'TargetRoot'), '..', 'blocks'); cd(d) - - if nargin > 1, - resultLibName = 'rpp_lib'; - generate_lib(resultLibName, varargin{1}, varargin); - else - error('Not enough arguments for the function.'); - end -end -function generate_lib(resultLibName, target, blocks) - disp(['Generating library for target: ', target]); - libFilePath=[target, '/', resultLibName, '.slx']; - load_system(libFilePath); - set_param(resultLibName, 'Lock', 'off'); - oldBlocks = find_system(resultLibName, 'Type', 'block'); + try, + load_system('rpp_lib.slx'); + catch ME + new_system('rpp_lib', 'Library'); + end + set_param('rpp_lib', 'Lock', 'off'); + oldBlocks = find_system('rpp_lib', 'Type', 'block'); disp('Removing old blocks:'); for j=1:length(oldBlocks), disp([' ', oldBlocks{j}]); delete_block(oldBlocks{j}); end disp('Adding new blocks:'); - for j=2:length(blocks), + for j=1:length(blocks), blockFilePath=[blocks{j}, '.slx']; disp([' from: ', blockFilePath, ':']); load_system(blockFilePath) newBlocks = find_system(blocks{j}, 'Type', 'block'); for k=1:length(newBlocks), [tok, blockName] = strtok(newBlocks{k}, '/'); - blockName = [resultLibName, blockName]; + blockName = ['rpp_lib', blockName]; disp([' ', newBlocks{k}, ' as ', blockName]); add_block(newBlocks{k}, blockName); end close_system(blockFilePath, 0); end - disp(['Closing and saving file ', libFilePath]); - set_param(resultLibName, 'Lock', 'on'); - close_system(libFilePath, 1); + disp(['Closing and saving file ', 'rpp_lib.slx']); + set_param('rpp_lib', 'Lock', 'on'); + close_system('rpp_lib.slx', 1); end diff --git a/rpp/blocks/rpp_lib.slx b/rpp/blocks/rpp_lib.slx deleted file mode 100644 index 160bcd50bca61640b9b4eecfaabbc4b9b28ff50b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21536 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 -- 2.39.2