summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNowar Gu <nowar100@gmail.com>2011-07-05 15:45:04 +0800
committerNowar Gu <nowar100@gmail.com>2011-07-05 15:45:04 +0800
commit3e688d7a44544ebf88f465d9f106ff96c9487e59 (patch)
treecb71f146830c86c1552b62e887451c98a80171a9
parentec14e1f3eee88971aa4321b1ea9a48863dec1875 (diff)
downloadgdk-3e688d7a44544ebf88f465d9f106ff96c9487e59.tar.gz
Add building rule.
Now we can use $(info ...) to check whether the rules is correct or not, but still not run practically.
-rw-r--r--build/core/build-local.mk13
-rw-r--r--build/core/build-modules.mk44
-rw-r--r--samples/hello-llvm/jni/Android-portable.mk2
-rw-r--r--samples/hello-llvm/jni/test.cpp (renamed from samples/hello-llvm/jni/test.c)8
4 files changed, 62 insertions, 5 deletions
diff --git a/build/core/build-local.mk b/build/core/build-local.mk
index 65d0ca4..6520a00 100644
--- a/build/core/build-local.mk
+++ b/build/core/build-local.mk
@@ -1,5 +1,7 @@
# TODO(Nowar): Let it more smart
GDK_PROJECT_ROOT := $(shell pwd)
+GDK_PROJECT_OBJ := $(GDK_PROJECT_ROOT)/obj/llvm
+GDK_PROJECT_OUT := $(GDK_PROJECT_ROOT)/res/raw
GDK_ROOT := $(GDK_PROJECT_ROOT)/../..
ifeq ($(NDK_ROOT),)
@@ -20,7 +22,14 @@ ALL_BITCODE_MODULES :=
-include $(GDK_PROJECT_ROOT)/jni/Android-portable.mk
# The first rule
-all: bitcode_modules
+all: clean bitcode_modules
+
+# TODO(Nowar): Do a real cleanup.
+clean:
+$(info rm -rf $(GDK_PROJECT_OBJ))
+$(info rm -rf $(GDK_PROJECT_OUT)/*.bc)
+$(info mkdir -p $(GDK_PROJECT_OBJ))
+$(info mkdir -p $(GDK_PROJECT_OUT))
bitcode_modules: $(ALL_BITCODE_MODULES)
@@ -33,4 +42,4 @@ include $(GDK_ROOT)/build/core/build-modules.mk
# Trasnfer the control to NDK
#
# ############################################################################
-include $(NDK_ROOT)/build/core/build-local.mk
+#include $(NDK_ROOT)/build/core/build-local.mk
diff --git a/build/core/build-modules.mk b/build/core/build-modules.mk
index f42a6ab..d3e3ae7 100644
--- a/build/core/build-modules.mk
+++ b/build/core/build-modules.mk
@@ -1,4 +1,44 @@
-# TODO(Nowar): Take out per each and build it.
+# TODO(Nowar): Make codes below work.
+
+#
+# $1: c source file name
+# $2: bc file name
+# $3: LOCAL_MODULE
+#
+define compile-c-to-bc
+$(info $(BITCODE_CC) $(BITCODE_MODULE.$(3).PATH)/$(1) $(BITCODE_MODULE.$(3).CFLAGS) -o $(GDK_PROJECT_OBJ)/$(2))
+endef
+
+#
+# $1: c++ source file name
+# $2: bc file name
+# $3: LOCAL_MODULE
+#
+define compile-cpp-to-bc
+$(info $(BITCODE_CPP) $(BITCODE_MODULE,$(3).PATH)/$(1) $(BITCODE_MODULE.$(3).CPPFLAGS) -o $(GDK_PROJECT_OBJ)/$(2))
+endef
+
+#
+# $1: source file names
+# $2: LOCAL_MODULE
+#
+# TODO(Nowar): How could we separate C++ from C source?
+# FIXME(Nowar): Handle C++ case
+define cmd-build-source
+$(foreach gdk_source, $(1),\
+ $(call compile-c-to-bc,$(gdk_source),$(gdk_source:%.c=%.bc),$(2))\
+)
+endef
+
+#
+# $1: bc obj files name
+# $2: LOCAL_MODULE
+#
+define cmd-link-bc
+$(info $(BITCODE_LD) $(patsubst %.c,$(GDK_PROJECT_OBJ)/%.bc,$(1)) -o $(GDK_PROJECT_OUT)/lib$(2).bc)
+endef
+
$(foreach gdk_module, $(ALL_BITCODE_MODULES),\
- $(info Android GDK: Compile $(BITCODE_MODULE.$(gdk_module).SRC_FILES) of LOCAL_MODULE $(gdk_module))\
+ $(call cmd-build-source,$(BITCODE_MODULE.$(gdk_module).SRC_FILES),$(gdk_module))\
+ $(call cmd-link-bc,$(BITCODE_MODULE.$(gdk_module).SRC_FILES),$(gdk_module))\
)
diff --git a/samples/hello-llvm/jni/Android-portable.mk b/samples/hello-llvm/jni/Android-portable.mk
index fb75899..7d0062a 100644
--- a/samples/hello-llvm/jni/Android-portable.mk
+++ b/samples/hello-llvm/jni/Android-portable.mk
@@ -4,7 +4,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE := hello_llvm
LOCAL_CFLAGS := -D NUM=7788
-LOCAL_SRC_FILES := hello_llvm.c test.c
+LOCAL_SRC_FILES := hello_llvm.c test.cpp
include $(BUILD_BITCODE)
diff --git a/samples/hello-llvm/jni/test.c b/samples/hello-llvm/jni/test.cpp
index 3af2201..bca7f1f 100644
--- a/samples/hello-llvm/jni/test.c
+++ b/samples/hello-llvm/jni/test.cpp
@@ -2,6 +2,14 @@
#define NUM 5566
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
int test_func2() {
return NUM;
}
+
+#ifdef __cplusplus
+}
+#endif