genode/repos/libports/src/lib/qt5/tools/lib_mk_file_generator/create_generated_inc

130 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
LANG=C
function extract_defines()
{
sed -e '/DEFINES =/!d' \
-e 's/DEFINES = /QT_DEFINES += /' Makefile > defines.inc
echo -e "" >> defines.inc
}
function extract_incpath()
{
sed -e '/INCPATH =/!d' \
-e 's/INCPATH = //' \
-e 's/ / \\\n/g' \
Makefile > incpath.inc.tmp
echo -e "QT_INCPATH += \\" > incpath.inc
sed -e '/\/qt-everywhere-src.*\//!d' \
-e 's/.*\/qt-everywhere-src-[^\/]*\// /' \
-e 's/linux-g++/genode-g++/' \
incpath.inc.tmp >> incpath.inc
echo -e "" >> incpath.inc
}
function extract_sources()
{
sed \
-e ':a;N;$!ba;s/\n//g' \
-e 's/OBJECTS .*//' \
-e 's/.*SOURCES =/QT_SOURCES += \\/' \
-e 's/\\/\\\n/g' \
-e 's/\.cpp \.moc/\.cpp \\\n\t\t\.moc/g' \
-e 's/\.cpp \.rcc/\.cpp \\\n\t\t\.rcc/g' \
-e 's/\.cc generated/\.cc \\\n\t\tgenerated/g' \
Makefile > sources.inc.tmp
sed -e 's/.*\// /' \
sources.inc.tmp > sources.inc
echo -e "" >> sources.inc
}
function extract_vpath()
{
sed \
-e ':a;N;$!ba;s/\n//g' \
-e 's/OBJECTS .*//' \
-e 's/.*SOURCES =//' \
-e 's/\\/\\\n/g' \
-e 's/\.cpp \.moc/\.cpp \\\n\t\t\.moc/' \
-e 's/\.cpp \.rcc/\.cpp \\\n\t\t\.rcc/' \
-e 's/\.cc generated/\.cc \\\n\t\tgenerated/g' \
Makefile > vpath.inc.tmp
echo -e "QT_VPATH += \\" > vpath.inc
sed -e '/\/qt-everywhere-src.*\//!d' \
-e 's/.*\/qt-everywhere-src-[^\/]*\// /' \
-e 's/\/[^\/]* [\\]*$/ \\/' \
vpath.inc.tmp | sort -u >> vpath.inc
echo -e "" >> vpath.inc
}
function extract_compiler_moc_header_make_all()
{
sed -e '/compiler_moc_header_make_all:/!d' \
-e 's/compiler_moc_header_make_all:/COMPILER_MOC_HEADER_MAKE_ALL_FILES = \\\n /' \
-e 's/\.moc\/release-static-emb-x86_64\///g' \
-e 's/\.cpp /\.cpp \\\n /g' \
Makefile > compiler_moc_header_make_all.inc.tmp
sed -e 's/.*\// /' \
compiler_moc_header_make_all.inc.tmp > compiler_moc_header_make_all.inc
echo -e "" >> compiler_moc_header_make_all.inc
}
function extract_compiler_moc_source_make_all()
{
sed -e '/compiler_moc_source_make_all:/!d' \
-e 's/compiler_moc_source_make_all:/COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \\\n /' \
-e 's/\.moc\/release-static-emb-x86_64\///g' \
-e 's/\.moc /\.moc \\\n /g' \
Makefile > compiler_moc_source_make_all.inc.tmp
sed -e 's/.*\// /' \
compiler_moc_source_make_all.inc.tmp > compiler_moc_source_make_all.inc
echo -e "" >> compiler_moc_source_make_all.inc
}
extract_defines
extract_incpath
extract_sources
extract_vpath
extract_compiler_moc_header_make_all
extract_compiler_moc_source_make_all
cat defines.inc > $1_generated.inc
cat incpath.inc >> $1_generated.inc
cat sources.inc >> $1_generated.inc
cat vpath.inc >> $1_generated.inc
echo -e "# some source files need to be generated by moc from other source/header files before" >> $1_generated.inc
echo -e "# they get #included again by the original source file in the compiling stage\n" >> $1_generated.inc
echo -e "# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc)" >> $1_generated.inc
echo -e "# extracted from 'compiler_moc_header_make_all' target\n" >> $1_generated.inc
cat compiler_moc_header_make_all.inc >> $1_generated.inc
echo -e "# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc)" >> $1_generated.inc
echo -e "# extracted from 'compiler_moc_source_make_all' rule\n" >> $1_generated.inc
cat compiler_moc_source_make_all.inc >> $1_generated.inc