File: create-dummy-class.sh

package info (click to toggle)
gnustep-xcode 0.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 1,168 kB
  • sloc: objc: 9,258; sh: 61; makefile: 20
file content (52 lines) | stat: -rw-r--r-- 1,980 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash

#
# This script is meant to build the dummy framework class needed to get the class list from the framework bundle.
#

FILES=$1
NAME=$2

classes="";
for object_file in ${FILES} __dummy__; do
  if [ "$object_file" != "__dummy__" ]; then
    sym=`nm -Pg $object_file | sed -n -e '/^._OBJC_CLASS_[A-Za-z0-9_.]* [^U]/ {s/^._OBJC_CLASS_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}' -e '/^__objc_class_name_[A-Za-z0-9_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}'`;
    classes="$classes $sym";
  fi;
done;
classlist="";
classarray="";
for f in $classes __dummy__ ; do
  if [ "$f" != "__dummy__" ]; then
    if [ "$classlist" = "" ]; then
      classlist="@\"$f\"";
      classarray="(\"$f\"";
    else
      classlist="$classlist, @\"$f\"";
      classarray="$classarray, \"$f\"";
    fi;
  fi;
done;
if [ "$classlist" = "" ]; then
  classlist="NULL";
  classarray="()";
else
  classlist="$classlist, NULL";
  classarray="$classarray)";
fi;

rm -rf ./derived_src
mkdir ./derived_src

echo "$classarray" > ./derived_src/${NAME}-class-list;
echo "#include <Foundation/NSObject.h>" > derived_src/NSFramework_${NAME}.m;
echo "#include <Foundation/NSString.h>" >> derived_src/NSFramework_${NAME}.m;
echo "@interface NSFramework_${NAME} : NSObject" >> derived_src/NSFramework_${NAME}.m;
echo "+ (NSString *)frameworkVersion;" >> derived_src/NSFramework_${NAME}.m;
echo "+ (NSString *const*)frameworkClasses;" >> derived_src/NSFramework_${NAME}.m;
echo "@end" >> derived_src/NSFramework_${NAME}.m;
echo "@implementation NSFramework_${NAME}" >> derived_src/NSFramework_${NAME}.m;
echo "+ (NSString *)frameworkVersion { return @\"0\"; }" >> derived_src/NSFramework_${NAME}.m;
echo "static NSString *allClasses[] = {$classlist};" >> derived_src/NSFramework_${NAME}.m;
echo "+ (NSString *const*)frameworkClasses { return allClasses; }" >> derived_src/NSFramework_${NAME}.m;
echo "@end" >> derived_src/NSFramework_${NAME}.m