Re: [Powertop] csstoh shell-script for cross-compiling PowerTOP

Igor Zhbanov <i.zhbanov at samsung.com> Wed, 11 Jul 2012 11:15:58 +0400
Newsgroups dev.linux.lists.powertop
Message-ID <[email protected]>
Here is the new version:

--8<--Cut-here----------------------------------------------------------------
diff -purN powertop/Android.mk powertop-csstoh/Android.mk
--- powertop/Android.mk	2012-07-11 11:09:18.388958856 +0400
+++ powertop-csstoh/Android.mk	2012-07-11 11:09:56.884957818 +0400
@@ -2,13 +2,11 @@ LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)

  LOCAL_MODULE_TAGS := optional
-CSSTOH_SOURCE := $(LOCAL_PATH)/csstoh.c
  POWERTOP_CSS_SOURCE := $(LOCAL_PATH)/powertop.css
-GEN_CSSTOH := $(LOCAL_PATH)/csstoh
+GEN_CSSTOH := $(LOCAL_PATH)/csstoh.sh
  GEN_CSS_H := $(LOCAL_PATH)/css.h
  $(GEN_CSS_H):
-	$(CC) -o $(GEN_CSSTOH) $(CSSTOH_SOURCE)
-	./$(GEN_CSSTOH) $(POWERTOP_CSS_SOURCE) $@
+	$(SHELL) ./$(GEN_CSSTOH) $(POWERTOP_CSS_SOURCE) $@

  LOCAL_GENERATED_SOURCES += $(GEN_CSS_H)

diff -purN powertop/.gitignore powertop-csstoh/.gitignore
--- powertop/.gitignore	2012-07-11 11:09:18.372958855 +0400
+++ powertop-csstoh/.gitignore	2012-07-11 11:09:34.180958433 +0400
@@ -39,7 +39,6 @@ po/*.gmo
  po/stamp-po
  src/powertop
  src/css.h
-src/csstoh
  src/Makefile.in
  src/.deps/
  src/Makefile
diff -purN powertop/src/csstoh.sh powertop-csstoh/src/csstoh.sh
--- powertop/src/csstoh.sh	1970-01-01 03:00:00.000000000 +0300
+++ powertop-csstoh/src/csstoh.sh	2012-07-11 11:10:54.716956259 +0400
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# This program file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in a file named COPYING; if not, write to the
+# Free Software Foundation, Inc,
+# 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301 USA
+# or just google for it.
+#
+# Written by Igor Zhbanov<i.zhbanov(a)samsung.com>
+
+if [ $# -lt 2 ]; then
+	echo "Usage: csstoh.sh cssfile header.h"
+	exit 1
+fi
+
+if [ ! -r $1 ]; then
+	echo "Can't find file $1"
+	exit 1
+fi
+
+if ! echo -n>$2; then
+	echo "Can't open file $2 for writing."
+	exit 1
+fi
+
+echo "#ifndef __INCLUDE_GUARD_CCS_H">>  $2
+echo "#define __INCLUDE_GUARD_CCS_H">>  $2
+echo>>  $2
+echo "const char css[] = ">>  $2
+
+sed -r 's/^(.*)$/\t\"\1\\n\"/' $1>>  $2
+
+echo ";">>  $2
+echo "#endif">>  $2
diff -purN powertop/src/Makefile.am powertop-csstoh/src/Makefile.am
--- powertop/src/Makefile.am	2012-07-11 11:09:18.376958857 +0400
+++ powertop-csstoh/src/Makefile.am	2012-07-11 11:10:13.888957361 +0400
@@ -1,9 +1,6 @@
  AUTOMAKE_OPTIONS = subdir-objects
  ACLOCAL_AMFLAGS = -I ../m4

-noinst_PROGRAMS = csstoh
-csstoh_SOURCES = csstoh.c
-
  sbin_PROGRAMS = powertop
  nodist_powertop_SOURCES = css.h

@@ -44,6 +41,6 @@ AM_LDFLAGS = $(LIBS) $(NCURSES_LIBS) $(P

  BUILT_SOURCES = css.h
  CLEANFILES = css.h
-css.h: csstoh powertop.css
-	./csstoh powertop.css css.h
+css.h: powertop.css
+	$(SHELL) ./csstoh.sh powertop.css css.h


--8<--------------------------------------------------------------------------


Magnus Fromreide wrote:
> On Wed, 2012-07-11 at 10:17 +0400, Igor Zhbanov wrote:
>> Hello!
>>
>> I have tried to build PowerTOP for ARM with a cross-compiler. But PowerTOP
>> uses internal csstoh utility that converts powertop.css to powertoh.h
>> for inclusion in *.cpp source files.
>>
>> When you use the cross-compiler (without making complicated rules
>> in the Makefile) this utility will be compiled for ARM platform too.
>> And you cannot run it on x86 build host.
>>
>> To solve this issue (and because of simplicity of the utility)
>> I have rewritten it in a shell script.
> Why /bin/bash?
>
> The script doesn't depend on any bashisms so /bin/sh should be enough,
> right?
>
> Why all the games with chmod?
> $(SHELL) csstoh.sh powertop.css css.h
> should also run the script correctly, shouldn't it?
>
> /MF
>
>
-- 
Best regards,
Igor Zhbanov,
Expert Software Engineer,
phone: +7 (495) 797 25 00 ext 3806
e-mail: i.zhbanov(a)samsung.com

ASWG, Moscow R&D center, Samsung Electronics
12 Dvintsev street, building 1
127018, Moscow, Russian Federation
02-powertop-cross-csstoh.diff (text/x-diff, 3 KB)
diff -purN powertop/Android.mk powertop-csstoh/Android.mk
--- powertop/Android.mk	2012-07-11 11:09:18.388958856 +0400
+++ powertop-csstoh/Android.mk	2012-07-11 11:09:56.884957818 +0400
@@ -2,13 +2,11 @@ LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := optional
-CSSTOH_SOURCE := $(LOCAL_PATH)/csstoh.c
 POWERTOP_CSS_SOURCE := $(LOCAL_PATH)/powertop.css
-GEN_CSSTOH := $(LOCAL_PATH)/csstoh
+GEN_CSSTOH := $(LOCAL_PATH)/csstoh.sh
 GEN_CSS_H := $(LOCAL_PATH)/css.h
 $(GEN_CSS_H):
-	$(CC) -o $(GEN_CSSTOH) $(CSSTOH_SOURCE)
-	./$(GEN_CSSTOH) $(POWERTOP_CSS_SOURCE) $@
+	$(SHELL) ./$(GEN_CSSTOH) $(POWERTOP_CSS_SOURCE) $@
 
 LOCAL_GENERATED_SOURCES += $(GEN_CSS_H)
 
diff -purN powertop/.gitignore powertop-csstoh/.gitignore
--- powertop/.gitignore	2012-07-11 11:09:18.372958855 +0400
+++ powertop-csstoh/.gitignore	2012-07-11 11:09:34.180958433 +0400
@@ -39,7 +39,6 @@ po/*.gmo
 po/stamp-po
 src/powertop
 src/css.h
-src/csstoh
 src/Makefile.in
 src/.deps/
 src/Makefile
diff -purN powertop/src/csstoh.sh powertop-csstoh/src/csstoh.sh
--- powertop/src/csstoh.sh	1970-01-01 03:00:00.000000000 +0300
+++ powertop-csstoh/src/csstoh.sh	2012-07-11 11:10:54.716956259 +0400
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# This program file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in a file named COPYING; if not, write to the
+# Free Software Foundation, Inc,
+# 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301 USA
+# or just google for it.
+#
+# Written by Igor Zhbanov <[email protected]>
+
+if [ $# -lt 2 ]; then
+	echo "Usage: csstoh.sh cssfile header.h"
+	exit 1
+fi
+
+if [ ! -r $1 ]; then
+	echo "Can't find file $1"
+	exit 1
+fi
+
+if ! echo -n >$2; then
+	echo "Can't open file $2 for writing."
+	exit 1
+fi
+
+echo "#ifndef __INCLUDE_GUARD_CCS_H" >> $2
+echo "#define __INCLUDE_GUARD_CCS_H" >> $2
+echo >> $2
+echo "const char css[] = " >> $2
+
+sed -r 's/^(.*)$/\t\"\1\\n\"/' $1 >> $2
+
+echo ";" >> $2
+echo "#endif" >> $2
diff -purN powertop/src/Makefile.am powertop-csstoh/src/Makefile.am
--- powertop/src/Makefile.am	2012-07-11 11:09:18.376958857 +0400
+++ powertop-csstoh/src/Makefile.am	2012-07-11 11:10:13.888957361 +0400
@@ -1,9 +1,6 @@
 AUTOMAKE_OPTIONS = subdir-objects
 ACLOCAL_AMFLAGS = -I ../m4 
 
-noinst_PROGRAMS = csstoh
-csstoh_SOURCES = csstoh.c 
-
 sbin_PROGRAMS = powertop
 nodist_powertop_SOURCES = css.h
 
@@ -44,6 +41,6 @@ AM_LDFLAGS = $(LIBS) $(NCURSES_LIBS) $(P
 
 BUILT_SOURCES = css.h
 CLEANFILES = css.h
-css.h: csstoh powertop.css
-	./csstoh powertop.css css.h
+css.h: powertop.css
+	$(SHELL) ./csstoh.sh powertop.css css.h