#!/bin/sh # Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. echo "generating Slime Mobile Edition ..." # remove old version if present rm -f slime_me.h rm -f slime_me.cpp # identify files to be included in the bundle, sort headers topologically based on include dependencies hfiles=$(for file in *.h; do echo $file $file; cat $file | sed -n -e "s/#include \"\(.*\.h\)\"/\1 $file/p"; done | tsort) cppfiles=$(echo *.cpp) # bundle header files echo "// Slime Mobile Edition" > slime_me.h for file in $hfiles; do echo -e "\n// ---> FILE: $file" >> slime_me.h cat $file >> slime_me.h echo -e "// <--- FILE: $file\n" >> slime_me.h done # bundle cpp files echo "// Slime Mobile Edition" > slime_me.cpp echo "INCLUDE_SLIME_ME_H_HERE" >> slime_me.cpp for file in $cppfiles; do echo -e "\n// ---> FILE: $file" >> slime_me.cpp cat $file >> slime_me.cpp echo -e "// <--- FILE: $file\n" >> slime_me.cpp done # remove includes to local headers and print remaining includes sed -i -e 's=#include "\(.*\)"=// include removed (\1)=' slime_me.h slime_me.cpp echo -n "includes: " cat slime_me.h slime_me.cpp | sed -n -e "s/#include \(.*\)/\1/p" | sort | uniq | xargs echo # include slime_me.h from slime_me.cpp sed -i -e 's=INCLUDE_SLIME_ME_H_HERE=#include "slime_me.h"=' slime_me.cpp # move code from the vespalib namespace to the my namespace sed -i -e 's/vespalib/my/g' slime_me.h slime_me.cpp sed -i -e 's/VESPALIB/MY/g' slime_me.h slime_me.cpp echo "running compilation tests ..." # prepare temporary test directory rm -rf tmp && mkdir tmp cp slime_me.h slime_me.cpp tmp/ # simple single file application cat > tmp/simple_app.cpp < tmp/include_app.cpp < tmp/include_app.h < tmp/multi_tools.h < tmp/multi_tools.cpp < tmp/multi_app.cpp <