summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNowar Gu <nowar100@gmail.com>2011-07-06 01:20:25 +0800
committerNowar Gu <nowar100@gmail.com>2011-07-06 01:20:25 +0800
commit07b01d98ed4d018d7105ecedf4033153db255c1f (patch)
tree647e2bab7d8d2a239590d2cdf08faf333edc40c3
parent10d69bd12edff2f67b44d399e461bfdd960229b9 (diff)
downloadgdk-07b01d98ed4d018d7105ecedf4033153db255c1f.tar.gz
Fix compilation rules.
-rw-r--r--build/core/build-bitcode.mk2
-rw-r--r--build/core/build-modules.mk39
-rw-r--r--samples/hello-llvm/jni/Android.mk2
-rw-r--r--toolchains/llvm/setup.mk21
4 files changed, 42 insertions, 22 deletions
diff --git a/build/core/build-bitcode.mk b/build/core/build-bitcode.mk
index 9cf6f53..dda8e16 100644
--- a/build/core/build-bitcode.mk
+++ b/build/core/build-bitcode.mk
@@ -6,4 +6,4 @@ BITCODE_MODULE.$(LOCAL_MODULE).PATH := $(LOCAL_PATH)
BITCODE_MODULE.$(LOCAL_MODULE).SRC_FILES := $(LOCAL_SRC_FILES)
BITCODE_MODULE.$(LOCAL_MODULE).C_INCLUDES := $(LOCAL_C_INCLUDES)
BITCODE_MODULE.$(LOCAL_MODULE).CFLAGS := $(LOCAL_CFLAGS)
-BITCODE_MODULE.$(LOCAL_MODULE).CPPFLAGS := $(LOCAL_CPPFLAGS)
+BITCODE_MODULE.$(LOCAL_MODULE).CPPFLAGS := $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS)
diff --git a/build/core/build-modules.mk b/build/core/build-modules.mk
index d3e3ae7..cac190c 100644
--- a/build/core/build-modules.mk
+++ b/build/core/build-modules.mk
@@ -1,32 +1,44 @@
-# TODO(Nowar): Make codes below work.
+# TODO(Nowar): Make below rules work.
#
# $1: c source file name
-# $2: bc file name
-# $3: LOCAL_MODULE
+# $2: LOCAL_MODULE
#
define compile-c-to-bc
-$(info $(BITCODE_CC) $(BITCODE_MODULE.$(3).PATH)/$(1) $(BITCODE_MODULE.$(3).CFLAGS) -o $(GDK_PROJECT_OBJ)/$(2))
+$(info $(BITCODE_CC) $(BITCODE_MODULE.$(2).PATH)/$(1)\
+ $(BITCODE_MODULE.$(2).CFLAGS) $(BITCODE_CFLAGS)\
+ -I$(BITCODE_MODULE.$(2).PATH)\
+ -c -o $(GDK_PROJECT_OBJ)/$(2)/$(1:%.c=%.bc))
endef
#
# $1: c++ source file name
-# $2: bc file name
-# $3: LOCAL_MODULE
+# $2: LOCAL_MODULE
#
define compile-cpp-to-bc
-$(info $(BITCODE_CPP) $(BITCODE_MODULE,$(3).PATH)/$(1) $(BITCODE_MODULE.$(3).CPPFLAGS) -o $(GDK_PROJECT_OBJ)/$(2))
+$(info $(BITCODE_CPP) $(BITCODE_MODULE.$(2).PATH)/$(1)\
+ $(BITCODE_MODULE.$(2).CPPFLAGS) $(BITCODE_CPPFLAGS)\
+ -I$(BITCODE_MODULE.$(2).PATH)\
+ -c -o $(GDK_PROJECT_OBJ)/$(2)/$(1:%.cpp=%.bc))
+endef
+
+#
+# $1: source file names
+# $2: LOCAL_MODULE
+#
+define cmd-build-c-source
+$(foreach gdk_source, $(1),\
+ $(call compile-c-to-bc,$(gdk_source),$(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
+define cmd-build-cpp-source
$(foreach gdk_source, $(1),\
- $(call compile-c-to-bc,$(gdk_source),$(gdk_source:%.c=%.bc),$(2))\
+ $(call compile-cpp-to-bc,$(gdk_source),$(2))\
)
endef
@@ -35,10 +47,11 @@ endef
# $2: LOCAL_MODULE
#
define cmd-link-bc
-$(info $(BITCODE_LD) $(patsubst %.c,$(GDK_PROJECT_OBJ)/%.bc,$(1)) -o $(GDK_PROJECT_OUT)/lib$(2).bc)
+$(info $(BITCODE_LD) $(GDK_PROJECT_OBJ)/$(2)/*.bc -o $(GDK_PROJECT_OUT)/lib$(2).bc)
endef
$(foreach gdk_module, $(ALL_BITCODE_MODULES),\
- $(call cmd-build-source,$(BITCODE_MODULE.$(gdk_module).SRC_FILES),$(gdk_module))\
+ $(call cmd-build-c-source,$(filter %.c,$(BITCODE_MODULE.$(gdk_module).SRC_FILES)),$(gdk_module))\
+ $(call cmd-build-cpp-source,$(filter %.cpp,$(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.mk b/samples/hello-llvm/jni/Android.mk
index 09c5ad1..fab8150 100644
--- a/samples/hello-llvm/jni/Android.mk
+++ b/samples/hello-llvm/jni/Android.mk
@@ -4,6 +4,6 @@ include $(CLEAR_VARS)
LOCAL_MODULE := hellollvmDSO
LOCAL_CFLAGS := -D NUM=7788
-LOCAL_SRC_FILES := hello_llvm.c test.c
+LOCAL_SRC_FILES := hello_llvm.c test.cpp
include $(BUILD_SHARED_LIBRARY)
diff --git a/toolchains/llvm/setup.mk b/toolchains/llvm/setup.mk
index e99c5b1..6b47802 100644
--- a/toolchains/llvm/setup.mk
+++ b/toolchains/llvm/setup.mk
@@ -1,14 +1,21 @@
GDK_TOOLCHAIN_PREFIX := $(GDK_TOOLCHAIN_ROOT)/llvm/prebuilt/
-# TODO(Nowar): In future, we use llvm-ndk-cc.
-BITCODE_CC := $(GDK_TOOLCHAIN_PREFIX)clang
-BITCODE_CFLAGS := -ccc-host-triple armv7-none-linux-gnueabi -emit-llvm
+# FIXME(Nowar): In future, we use llvm-ndk-cc and llvm-ndk-link.
+#BITCODE_CC := $(GDK_TOOLCHAIN_PREFIX)llvm-ndk-cc
+#BITCODE_CFLAGS :=
+#
+#BITCODE_CPP := $(GDK_TOOLCHAIN_PREFIX)llvm-ndk-cc
+#BITCODE_CPPFLAGS := $(BITCODE_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
+#
+#BITCODE_LD := $(GDK_TOOLCHAIN_PREFIX)llvm-ndk-link
+#BITCODE_LDFLAGS :=
-BITCODE_CPP := $(GDK_TOOLCHAIN_PREFIX)clang++
+BITCODE_CC := clang
+BITCODE_CFLAGS := -ccc-host-triple armv7-none-linux-gnueabi -emit-llvm
+BITCODE_CPP := clang++
BITCODE_CPPFLAGS := $(BITCODE_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
-
-BITCODE_LD := $(GDK_TOOLCHAIN_PREFIX)llvm-link
-BITCODE_LDFLAGS :=
+BITCODE_LD := llvm-link
+BITCODE_LDFLAGS :=
BITCODE_C_INCLUDES := \
$(GDK_PLATFORM_ROOT)/usr/include