summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2005-11-01 16:42:51 +0000
committerBenny Prijono <bennylp@teluu.com>2005-11-01 16:42:51 +0000
commit81ecc233996dcddfbef707bd9a5099f5d9e5eb13 (patch)
treec735c382ff2dac0179b96505c4192ee70185372d /build
parentb5a1af6f999820564ead4867b1e5d5574778ee56 (diff)
Added suppor /and fix things for SunOS port
git-svn-id: http://svn.pjsip.org/repos/pjproject/main@2 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'build')
-rw-r--r--build/cc-gcc.mak44
-rw-r--r--build/cc-vc.mak40
-rw-r--r--build/host-mingw.mak26
-rw-r--r--build/host-unix.mak26
-rw-r--r--build/host-win32.mak24
-rw-r--r--build/m-alpha.mak8
-rw-r--r--build/m-i386.mak8
-rw-r--r--build/m-m68k.mak8
-rw-r--r--build/m-sparc.mak4
-rw-r--r--build/os-linux-kernel.mak86
-rw-r--r--build/os-linux.mak18
-rw-r--r--build/os-palmos.mak64
-rw-r--r--build/os-sunos.mak12
-rw-r--r--build/os-win32.mak22
-rw-r--r--build/rules.mak329
15 files changed, 368 insertions, 351 deletions
diff --git a/build/cc-gcc.mak b/build/cc-gcc.mak
index 9a48519d..9a5ff2f6 100644
--- a/build/cc-gcc.mak
+++ b/build/cc-gcc.mak
@@ -1,22 +1,22 @@
-export CC = $(CROSS_COMPILE)gcc -c
-export AR = $(CROSS_COMPILE)ar r
-export LD = $(CROSS_COMPILE)gcc
-export LDOUT = -o
-export RANLIB = $(CROSS_COMPILE)ranlib
-
-export OBJEXT := .o
-export LIBEXT := .a
-export LIBEXT2 :=
-
-export CC_OUT := -o
-export CC_INC := -I
-export CC_DEF := -D
-export CC_OPTIMIZE := -O2
-export CC_LIB := -l
-
-export CC_SOURCES :=
-export CC_CFLAGS := -Wall
-#export CC_CFLAGS += -Wdeclaration-after-statement
-#export CC_CXXFLAGS := -Wdeclaration-after-statement
-export CC_LDFLAGS :=
-
+export CC = $(CROSS_COMPILE)gcc -c
+export AR = $(CROSS_COMPILE)ar r
+export LD = $(CROSS_COMPILE)gcc
+export LDOUT = -o
+export RANLIB = $(CROSS_COMPILE)ranlib
+
+export OBJEXT := .o
+export LIBEXT := .a
+export LIBEXT2 :=
+
+export CC_OUT := -o
+export CC_INC := -I
+export CC_DEF := -D
+export CC_OPTIMIZE := -O2
+export CC_LIB := -l
+
+export CC_SOURCES :=
+export CC_CFLAGS := -Wall
+#export CC_CFLAGS += -Wdeclaration-after-statement
+#export CC_CXXFLAGS := -Wdeclaration-after-statement
+export CC_LDFLAGS :=
+
diff --git a/build/cc-vc.mak b/build/cc-vc.mak
index 68870ea5..187372d1 100644
--- a/build/cc-vc.mak
+++ b/build/cc-vc.mak
@@ -1,20 +1,20 @@
-export CC := cl /c /nologo
-export AR := lib /NOLOGO /OUT:
-export LD := cl /nologo
-export LDOUT := /Fe
-export RANLIB := echo ranlib
-
-export OBJEXT := .obj
-export LIBEXT := .lib
-export LIBEXT2 := .LIB
-
-export CC_OUT := /Fo
-export CC_INC := /I
-export CC_DEF := /D
-export CC_OPTIMIZE := /Ox
-export CC_LIB :=
-
-export CC_SOURCES :=
-export CC_CFLAGS := /W4 /MT
-export CC_CXXFLAGS := /GX
-export CC_LDFLAGS := /MT
+export CC := cl /c /nologo
+export AR := lib /NOLOGO /OUT:
+export LD := cl /nologo
+export LDOUT := /Fe
+export RANLIB := echo ranlib
+
+export OBJEXT := .obj
+export LIBEXT := .lib
+export LIBEXT2 := .LIB
+
+export CC_OUT := /Fo
+export CC_INC := /I
+export CC_DEF := /D
+export CC_OPTIMIZE := /Ox
+export CC_LIB :=
+
+export CC_SOURCES :=
+export CC_CFLAGS := /W4 /MT
+export CC_CXXFLAGS := /GX
+export CC_LDFLAGS := /MT
diff --git a/build/host-mingw.mak b/build/host-mingw.mak
index fc7eaf35..94d03af3 100644
--- a/build/host-mingw.mak
+++ b/build/host-mingw.mak
@@ -1,13 +1,13 @@
-export HOST_MV := mv
-export HOST_RM := rm -f @@
-export HOST_RMR := rm -rf @@
-export HOST_RMDIR := rm -rf @@
-export HOST_MKDIR := mkdir @@
-export HOST_EXE := .exe
-export HOST_PSEP := /
-
-export HOST_SOURCES :=
-export HOST_CFLAGS :=
-export HOST_CXXFLAGS :=
-export HOST_LDFLAGS := $(CC_LIB)stdc++$(LIBEXT2)
-
+export HOST_MV := mv
+export HOST_RM := rm -f @@
+export HOST_RMR := rm -rf @@
+export HOST_RMDIR := rm -rf @@
+export HOST_MKDIR := mkdir @@
+export HOST_EXE := .exe
+export HOST_PSEP := /
+
+export HOST_SOURCES :=
+export HOST_CFLAGS :=
+export HOST_CXXFLAGS :=
+export HOST_LDFLAGS := $(CC_LIB)stdc++$(LIBEXT2)
+
diff --git a/build/host-unix.mak b/build/host-unix.mak
index ae692a31..a84f3ec1 100644
--- a/build/host-unix.mak
+++ b/build/host-unix.mak
@@ -1,13 +1,13 @@
-export HOST_MV := mv
-export HOST_RM := rm -f @@
-export HOST_RMR := rm -rf @@
-export HOST_RMDIR := rm -rf @@
-export HOST_MKDIR := mkdir @@
-export HOST_EXE :=
-export HOST_PSEP := /
-
-export HOST_SOURCES :=
-export HOST_CFLAGS :=
-export HOST_CXXFLAGS :=
-export HOST_LDFLAGS :=
-
+export HOST_MV := mv
+export HOST_RM := rm -f @@
+export HOST_RMR := rm -rf @@
+export HOST_RMDIR := rm -rf @@
+export HOST_MKDIR := mkdir @@
+export HOST_EXE :=
+export HOST_PSEP := /
+
+export HOST_SOURCES :=
+export HOST_CFLAGS :=
+export HOST_CXXFLAGS :=
+export HOST_LDFLAGS :=
+
diff --git a/build/host-win32.mak b/build/host-win32.mak
index d9dc635e..9d0b379f 100644
--- a/build/host-win32.mak
+++ b/build/host-win32.mak
@@ -1,12 +1,12 @@
-export HOST_MV := ren
-export HOST_RM := if exist @@; del /F /Q @@
-export HOST_RMR := if exist @@; del /F /Q @@
-export HOST_RMDIR := if exist @@; rmdir @@
-export HOST_MKDIR := if not exist @@; mkdir @@
-export HOST_EXE := .exe
-export HOST_PSEP := \\
-
-export HOST_SOURCES :=
-export HOST_CFLAGS :=
-export HOST_CXXFLAGS :=
-export HOST_LDFLAGS :=
+export HOST_MV := ren
+export HOST_RM := if exist @@; del /F /Q @@
+export HOST_RMR := if exist @@; del /F /Q @@
+export HOST_RMDIR := if exist @@; rmdir @@
+export HOST_MKDIR := if not exist @@; mkdir @@
+export HOST_EXE := .exe
+export HOST_PSEP := \\
+
+export HOST_SOURCES :=
+export HOST_CFLAGS :=
+export HOST_CXXFLAGS :=
+export HOST_LDFLAGS :=
diff --git a/build/m-alpha.mak b/build/m-alpha.mak
index 90b76060..f1c75025 100644
--- a/build/m-alpha.mak
+++ b/build/m-alpha.mak
@@ -1,4 +1,4 @@
-export M_CFLAGS := $(CC_DEF)PJ_M_ALPHA=1
-export M_CXXFLAGS :=
-export M_LDFLAGS :=
-export M_SOURCES :=
+export M_CFLAGS := $(CC_DEF)PJ_M_ALPHA=1
+export M_CXXFLAGS :=
+export M_LDFLAGS :=
+export M_SOURCES :=
diff --git a/build/m-i386.mak b/build/m-i386.mak
index dc5c1328..1a8229d7 100644
--- a/build/m-i386.mak
+++ b/build/m-i386.mak
@@ -1,4 +1,4 @@
-export M_CFLAGS := $(CC_DEF)PJ_M_I386=1
-export M_CXXFLAGS :=
-export M_LDFLAGS :=
-export M_SOURCES :=
+export M_CFLAGS := $(CC_DEF)PJ_M_I386=1
+export M_CXXFLAGS :=
+export M_LDFLAGS :=
+export M_SOURCES :=
diff --git a/build/m-m68k.mak b/build/m-m68k.mak
index d5ba9e92..265a6eae 100644
--- a/build/m-m68k.mak
+++ b/build/m-m68k.mak
@@ -1,4 +1,4 @@
-export M_CFLAGS := $(CC_DEF)PJ_M_M68K=1
-export M_CXXFLAGS :=
-export M_LDFLAGS :=
-export M_SOURCES :=
+export M_CFLAGS := $(CC_DEF)PJ_M_M68K=1
+export M_CXXFLAGS :=
+export M_LDFLAGS :=
+export M_SOURCES :=
diff --git a/build/m-sparc.mak b/build/m-sparc.mak
new file mode 100644
index 00000000..fa27aacc
--- /dev/null
+++ b/build/m-sparc.mak
@@ -0,0 +1,4 @@
+export M_CFLAGS := $(CC_DEF)PJ_M_SPARC=1
+export M_CXXFLAGS :=
+export M_LDFLAGS :=
+export M_SOURCES :=
diff --git a/build/os-linux-kernel.mak b/build/os-linux-kernel.mak
index f9b3e1fa..f5591161 100644
--- a/build/os-linux-kernel.mak
+++ b/build/os-linux-kernel.mak
@@ -1,43 +1,43 @@
-
-include $(KERNEL_DIR)/.config
-
-#
-# Basic kernel compilation flags.
-#
-export OS_CFLAGS := $(CC_DEF)PJ_LINUX_KERNEL=1 -D__KERNEL__ \
- -I$(KERNEL_DIR)/include -iwithprefix include \
- -nostdinc -msoft-float
-
-#
-# Additional kernel compilation flags are taken from the kernel Makefile
-# itself.
-#
-
-KERNEL_CFLAGS := \
- $(shell cd $(KERNEL_DIR) ; \
- make script SCRIPT='@echo $$(CFLAGS) $$(CFLAGS_MODULE)' $(KERNEL_ARCH))
-
-export OS_CFLAGS += $(KERNEL_CFLAGS)
-
-# -DMODULE -I$(KERNEL_DIR)/include -nostdinc \
-# -Wstrict-prototypes \
-# -Wno-trigraphs -fno-strict-aliasing -fno-common \
-# -msoft-float -m32 -fno-builtin-sprintf -fno-builtin-log2\
-# -fno-builtin-puts -mpreferred-stack-boundary=2 \
-# -fno-unit-at-a-time -march=i686 -mregparm=3 \
-# -iwithprefix include
-
-#export OS_CFLAGS += -U__i386__ -Ui386 -D__arch_um__ -DSUBARCH=\"i386\" \
-# -D_LARGEFILE64_SOURCE -I$(KERNEL_DIR)/arch/um/include \
-# -Derrno=kernel_errno \
-# -I$(KERNEL_DIR)/arch/um/kernel/tt/include \
-# -I$(KERNEL_DIR)/arch/um/kernel/skas/include \
-
-
-export OS_CXXFLAGS :=
-
-export OS_LDFLAGS :=
-
-export OS_SOURCES :=
-
-
+
+include $(KERNEL_DIR)/.config
+
+#
+# Basic kernel compilation flags.
+#
+export OS_CFLAGS := $(CC_DEF)PJ_LINUX_KERNEL=1 -D__KERNEL__ \
+ -I$(KERNEL_DIR)/include -iwithprefix include \
+ -nostdinc -msoft-float
+
+#
+# Additional kernel compilation flags are taken from the kernel Makefile
+# itself.
+#
+
+KERNEL_CFLAGS := \
+ $(shell cd $(KERNEL_DIR) ; \
+ make script SCRIPT='@echo $$(CFLAGS) $$(CFLAGS_MODULE)' $(KERNEL_ARCH))
+
+export OS_CFLAGS += $(KERNEL_CFLAGS)
+
+# -DMODULE -I$(KERNEL_DIR)/include -nostdinc \
+# -Wstrict-prototypes \
+# -Wno-trigraphs -fno-strict-aliasing -fno-common \
+# -msoft-float -m32 -fno-builtin-sprintf -fno-builtin-log2\
+# -fno-builtin-puts -mpreferred-stack-boundary=2 \
+# -fno-unit-at-a-time -march=i686 -mregparm=3 \
+# -iwithprefix include
+
+#export OS_CFLAGS += -U__i386__ -Ui386 -D__arch_um__ -DSUBARCH=\"i386\" \
+# -D_LARGEFILE64_SOURCE -I$(KERNEL_DIR)/arch/um/include \
+# -Derrno=kernel_errno \
+# -I$(KERNEL_DIR)/arch/um/kernel/tt/include \
+# -I$(KERNEL_DIR)/arch/um/kernel/skas/include \
+
+
+export OS_CXXFLAGS :=
+
+export OS_LDFLAGS :=
+
+export OS_SOURCES :=
+
+
diff --git a/build/os-linux.mak b/build/os-linux.mak
index da44bc97..c0c4a445 100644
--- a/build/os-linux.mak
+++ b/build/os-linux.mak
@@ -1,9 +1,9 @@
-export OS_CFLAGS := $(CC_DEF)PJ_LINUX=1
-
-export OS_CXXFLAGS :=
-
-export OS_LDFLAGS := $(CC_LIB)pthread$(LIBEXT2)
-
-export OS_SOURCES :=
-
-
+export OS_CFLAGS := $(CC_DEF)PJ_LINUX=1
+
+export OS_CXXFLAGS :=
+
+export OS_LDFLAGS := $(CC_LIB)pthread$(LIBEXT2)
+
+export OS_SOURCES :=
+
+
diff --git a/build/os-palmos.mak b/build/os-palmos.mak
index 2a86b25a..43f83bb3 100644
--- a/build/os-palmos.mak
+++ b/build/os-palmos.mak
@@ -1,32 +1,32 @@
-#
-# make-mingw.inc: Mingw specific compilation switches.
-#
-PALM_OS_SDK_VER := 0x06000000
-PALM_OS_TARGET_HOST := TARGET_HOST_PALMOS
-PALM_OS_TARGET_PLATFORM := TARGET_PLATFORM_PALMSIM_WIN32
-PALM_OS_BUILD_TYPE := BUILD_TYPE_DEBUG
-PALM_OS_TRACE_OUTPUT := TRACE_OUTPUT_ON
-PALM_OS_CPU_TYPE := CPU_ARM
-
-export CROSS_COMPILE :=
-
-ifeq ($(CC_NAME),gcc)
- export CFLAGS += -mno-cygwin -fexceptions -frtti
-endif
-
-export OS_CFLAGS := $(CC_DEF)PJ_PALMOS=1 \
- $(CC_DEF)__PALMOS_KERNEL__=1 \
- $(CC_DEF)__PALMOS__=$(PALM_OS_SDK_VER) \
- $(CC_DEF)BUILD_TYPE=$(PALM_OS_BUILD_TYPE) \
- $(CC_DEF)TRACE_OUTPUT=$(PALM_OS_TRACE_OUTPUT) \
- $(CC_DEF)_SUPPORTS_NAMESPACE=0 \
- $(CC_DEF)_SUPPORTS_RTTI=0 \
- $(CC_DEF)TARGET_HOST=$(PALM_OS_TRAGET_HOST) \
- $(CC_DEF)TARGET_PLATFORM=$(PALM_OS_TARGET_PLATFORM)
-
-export OS_CXXFLAGS :=
-
-export OS_LDFLAGS :=
-
-export OS_SOURCES :=
-
+#
+# make-mingw.inc: Mingw specific compilation switches.
+#
+PALM_OS_SDK_VER := 0x06000000
+PALM_OS_TARGET_HOST := TARGET_HOST_PALMOS
+PALM_OS_TARGET_PLATFORM := TARGET_PLATFORM_PALMSIM_WIN32
+PALM_OS_BUILD_TYPE := BUILD_TYPE_DEBUG
+PALM_OS_TRACE_OUTPUT := TRACE_OUTPUT_ON
+PALM_OS_CPU_TYPE := CPU_ARM
+
+export CROSS_COMPILE :=
+
+ifeq ($(CC_NAME),gcc)
+ export CFLAGS += -mno-cygwin -fexceptions -frtti
+endif
+
+export OS_CFLAGS := $(CC_DEF)PJ_PALMOS=1 \
+ $(CC_DEF)__PALMOS_KERNEL__=1 \
+ $(CC_DEF)__PALMOS__=$(PALM_OS_SDK_VER) \
+ $(CC_DEF)BUILD_TYPE=$(PALM_OS_BUILD_TYPE) \
+ $(CC_DEF)TRACE_OUTPUT=$(PALM_OS_TRACE_OUTPUT) \
+ $(CC_DEF)_SUPPORTS_NAMESPACE=0 \
+ $(CC_DEF)_SUPPORTS_RTTI=0 \
+ $(CC_DEF)TARGET_HOST=$(PALM_OS_TRAGET_HOST) \
+ $(CC_DEF)TARGET_PLATFORM=$(PALM_OS_TARGET_PLATFORM)
+
+export OS_CXXFLAGS :=
+
+export OS_LDFLAGS :=
+
+export OS_SOURCES :=
+
diff --git a/build/os-sunos.mak b/build/os-sunos.mak
new file mode 100644
index 00000000..4af21040
--- /dev/null
+++ b/build/os-sunos.mak
@@ -0,0 +1,12 @@
+export OS_CFLAGS := $(CC_DEF)PJ_SUNOS=1
+
+export OS_CXXFLAGS :=
+
+export OS_LDFLAGS := $(CC_LIB)pthread$(LIBEXT2) \
+ $(CC_LIB)socket$(LIBEXT2) \
+ $(CC_LIB)rt$(LIBEXT2) \
+ $(CC_LIB)nsl$(LIBEXT2)
+
+export OS_SOURCES :=
+
+
diff --git a/build/os-win32.mak b/build/os-win32.mak
index 652502d6..3f29776c 100644
--- a/build/os-win32.mak
+++ b/build/os-win32.mak
@@ -1,11 +1,11 @@
-export OS_CFLAGS := $(CC_DEF)PJ_WIN32=1
-
-export OS_CXXFLAGS :=
-
-export OS_LDFLAGS := $(CC_LIB)wsock32$(LIBEXT2) \
- $(CC_LIB)ws2_32$(LIBEXT2)\
- $(CC_LIB)ole32$(LIBEXT2)
-
-export OS_SOURCES :=
-
-
+export OS_CFLAGS := $(CC_DEF)PJ_WIN32=1
+
+export OS_CXXFLAGS :=
+
+export OS_LDFLAGS := $(CC_LIB)wsock32$(LIBEXT2) \
+ $(CC_LIB)ws2_32$(LIBEXT2)\
+ $(CC_LIB)ole32$(LIBEXT2)
+
+export OS_SOURCES :=
+
+
diff --git a/build/rules.mak b/build/rules.mak
index d7634335..9757712e 100644
--- a/build/rules.mak
+++ b/build/rules.mak
@@ -1,164 +1,165 @@
-LIBDIR = ../lib
-BINDIR = ../bin
-
-#
-# The full path of output lib file (e.g. ../lib/libapp.a).
-#
-LIB = $($(APP)_LIB)
-
-#
-# The full path of output executable file (e.g. ../bin/app.exe).
-#
-EXE = $($(APP)_EXE)
-
-#
-# Source directory
-#
-SRCDIR = $($(APP)_SRCDIR)
-
-#
-# Output directory for object files (i.e. output/target)
-#
-OBJDIR = output/$(app)-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME)
-
-ifeq ($(OS_NAME),linux-kernel)
-export $(APP)_CFLAGS += -DKBUILD_MODNAME=$(app) -DKBUILD_BASENAME=$(app)
-endif
-
-
-#
-# OBJS is ./output/target/file.o
-#
-OBJS = $(foreach file, $($(APP)_OBJS), $(OBJDIR)/$(file))
-OBJDIRS := $(sort $(dir $(OBJS)))
-
-#
-# FULL_SRCS is ../src/app/file1.c ../src/app/file1.S
-#
-FULL_SRCS = $(foreach file, $($(APP)_OBJS), $(SRCDIR)/$(basename $(file)).c $(SRCDIR)/$(basename $(file)).cpp $(SRCDIR)/$(basename $(file)).S)
-
-#
-# When generating dependency (gcc -MM), ideally we use only either
-# CFLAGS or CXXFLAGS (not both). But I just couldn't make if/ifeq to work.
-#
-DEPFLAGS = $($(APP)_CXXFLAGS) $($(APP)_CFLAGS)
-
-# Dependency file
-DEP_FILE := .$(app)-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend
-
-
-print_common:
- @echo "###"
- @echo "### DUMPING MAKE VARIABLES (I WON'T DO ANYTHING ELSE):"
- @echo "###"
- @echo APP=$(APP)
- @echo OBJDIR=$(OBJDIR)
- @echo OBJDIRS=$(OBJDIRS)
- @echo OBJS=$(OBJS)
- @echo SRCDIR=$(SRCDIR)
- @echo FULL_SRCS=$(FULL_SRCS)
- @echo $(APP)_CFLAGS=$($(APP)_CFLAGS)
- @echo $(APP)_CXXFLAGS=$($(APP)_CXXFLAGS)
- @echo $(APP)_LDFLAGS=$($(APP)_LDFLAGS)
- @echo DEPFLAGS=$(DEPFLAGS)
-
-print_bin: print_common
- @echo EXE=$(EXE)
- @echo BINDIR=$(BINDIR)
-
-print_lib: print_common
- @echo LIB=$(LIB)
- @echo LIBDIR=$(LIBDIR)
-
-$(LIB): $(LIBDIR) $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
- $(AR)$(LIB) $(OBJS)
- $(RANLIB) $(LIB)
-
-$(EXE): $(BINDIR) $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
- $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(EXE)) \
- $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS)
-
-$(OBJDIR)/$(app).o: $(OBJDIRS) $(OBJS)
- $(CROSS_COMPILE)ld -r -o $@ $(OBJS)
-
-$(OBJDIR)/$(app).ko: $(OBJDIR)/$(app).o
- @echo Creating kbuild Makefile...
- @echo "# Our module name:" > $(OBJDIR)/Makefile
- @echo 'obj-m += $(app).o' >> $(OBJDIR)/Makefile
- @echo >> $(OBJDIR)/Makefile
- @echo "# Object members:" >> $(OBJDIR)/Makefile
- @echo -n '$(app)-objs += ' >> $(OBJDIR)/Makefile
- @for file in $($(APP)_OBJS); do \
- echo -n "$$file " >> $(OBJDIR)/Makefile; \
- done
- @echo >> $(OBJDIR)/Makefile
- @echo >> $(OBJDIR)/Makefile
- @echo "# Prevent .o files to be built by kbuild:" >> $(OBJDIR)/Makefile
- @for file in $($(APP)_OBJS); do \
- echo ".PHONY: `pwd`/$(OBJDIR)/$$file" >> $(OBJDIR)/Makefile; \
- done
- @echo >> $(OBJDIR)/Makefile
- @echo all: >> $(OBJDIR)/Makefile
- @echo -e "\tmake -C $(KERNEL_DIR) M=`pwd`/$(OBJDIR) modules $(KERNEL_ARCH)" >> $(OBJDIR)/Makefile
- @echo Invoking kbuild...
- make -C $(OBJDIR)
-
-../lib/$(app).ko: $(LIB) $(OBJDIR)/$(app).ko
- cp $(OBJDIR)/$(app).ko ../lib
-
-$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.c
- $(CC) $($(APP)_CFLAGS) \
- $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \
- $(subst /,$(HOST_PSEP),$<)
-
-$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.S
- $(CC) $($(APP)_CFLAGS) \
- $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \
- $(subst /,$(HOST_PSEP),$<)
-
-$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cpp
- $(CC) $($(APP)_CXXFLAGS) \
- $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \
- $(subst /,$(HOST_PSEP),$<)
-
-$(OBJDIRS):
- $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR))
-
-$(LIBDIR):
- $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR))
-
-$(BINDIR):
- $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR))
-
-clean:
- $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)/*),$(HOST_RMR))
- $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)),$(HOST_RMDIR))
-ifeq ($(OS_NAME),linux-kernel)
- rm -f ../lib/$(app).o
-endif
-
-realclean: clean
- $(subst @@,$(subst /,$(HOST_PSEP),$(LIB)) $(subst /,$(HOST_PSEP),$(EXE)),$(HOST_RM))
- $(subst @@,$(DEP_FILE),$(HOST_RM))
-ifeq ($(OS_NAME),linux-kernel)
- rm -f ../lib/$(app).ko
-endif
-
-depend:
- $(subst @@,$(DEP_FILE),$(HOST_RM))
- for F in $(FULL_SRCS); do \
- if test -f $$F; then \
- echo -n $(OBJDIR)/ >> $(DEP_FILE); \
- if gcc -MM $(DEPFLAGS) $$F | sed '/^#/d' >> $(DEP_FILE); then \
- true; \
- else \
- echo 'err:' >> $(DEP_FILE); \
- exit 1; \
- fi; \
- fi; \
- done
-
-dep: depend
-
--include $(DEP_FILE)
-
+LIBDIR = ../lib
+BINDIR = ../bin
+
+#
+# The full path of output lib file (e.g. ../lib/libapp.a).
+#
+LIB = $($(APP)_LIB)
+
+#
+# The full path of output executable file (e.g. ../bin/app.exe).
+#
+EXE = $($(APP)_EXE)
+
+#
+# Source directory
+#
+SRCDIR = $($(APP)_SRCDIR)
+
+#
+# Output directory for object files (i.e. output/target)
+#
+OBJDIR = output/$(app)-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME)
+
+ifeq ($(OS_NAME),linux-kernel)
+export $(APP)_CFLAGS += -DKBUILD_MODNAME=$(app) -DKBUILD_BASENAME=$(app)
+endif
+
+
+#
+# OBJS is ./output/target/file.o
+#
+OBJS = $(foreach file, $($(APP)_OBJS), $(OBJDIR)/$(file))
+OBJDIRS := $(sort $(dir $(OBJS)))
+
+#
+# FULL_SRCS is ../src/app/file1.c ../src/app/file1.S
+#
+FULL_SRCS = $(foreach file, $($(APP)_OBJS), $(SRCDIR)/$(basename $(file)).c $(SRCDIR)/$(basename $(file)).cpp $(SRCDIR)/$(basename $(file)).S)
+
+#
+# When generating dependency (gcc -MM), ideally we use only either
+# CFLAGS or CXXFLAGS (not both). But I just couldn't make if/ifeq to work.
+#
+DEPFLAGS = $($(APP)_CXXFLAGS) $($(APP)_CFLAGS)
+
+# Dependency file
+DEP_FILE := .$(app)-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend
+
+
+print_common:
+ @echo "###"
+ @echo "### DUMPING MAKE VARIABLES (I WON'T DO ANYTHING ELSE):"
+ @echo "###"
+ @echo APP=$(APP)
+ @echo OBJDIR=$(OBJDIR)
+ @echo OBJDIRS=$(OBJDIRS)
+ @echo OBJS=$(OBJS)
+ @echo SRCDIR=$(SRCDIR)
+ @echo FULL_SRCS=$(FULL_SRCS)
+ @echo $(APP)_CFLAGS=$($(APP)_CFLAGS)
+ @echo $(APP)_CXXFLAGS=$($(APP)_CXXFLAGS)
+ @echo $(APP)_LDFLAGS=$($(APP)_LDFLAGS)
+ @echo DEPFLAGS=$(DEPFLAGS)
+
+print_bin: print_common
+ @echo EXE=$(EXE)
+ @echo BINDIR=$(BINDIR)
+
+print_lib: print_common
+ @echo LIB=$(LIB)
+ @echo LIBDIR=$(LIBDIR)
+
+$(LIB): $(LIBDIR) $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
+ $(AR)$(LIB) $(OBJS)
+ $(RANLIB) $(LIB)
+
+$(EXE): $(BINDIR) $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
+ $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(EXE)) \
+ $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS)
+
+$(OBJDIR)/$(app).o: $(OBJDIRS) $(OBJS)
+ $(CROSS_COMPILE)ld -r -o $@ $(OBJS)
+
+$(OBJDIR)/$(app).ko: $(OBJDIR)/$(app).o
+ @echo Creating kbuild Makefile...
+ @echo "# Our module name:" > $(OBJDIR)/Makefile
+ @echo 'obj-m += $(app).o' >> $(OBJDIR)/Makefile
+ @echo >> $(OBJDIR)/Makefile
+ @echo "# Object members:" >> $(OBJDIR)/Makefile
+ @echo -n '$(app)-objs += ' >> $(OBJDIR)/Makefile
+ @for file in $($(APP)_OBJS); do \
+ echo -n "$$file " >> $(OBJDIR)/Makefile; \
+ done
+ @echo >> $(OBJDIR)/Makefile
+ @echo >> $(OBJDIR)/Makefile
+ @echo "# Prevent .o files to be built by kbuild:" >> $(OBJDIR)/Makefile
+ @for file in $($(APP)_OBJS); do \
+ echo ".PHONY: `pwd`/$(OBJDIR)/$$file" >> $(OBJDIR)/Makefile; \
+ done
+ @echo >> $(OBJDIR)/Makefile
+ @echo all: >> $(OBJDIR)/Makefile
+ @echo -e "\tmake -C $(KERNEL_DIR) M=`pwd`/$(OBJDIR) modules $(KERNEL_ARCH)" >> $(OBJDIR)/Makefile
+ @echo Invoking kbuild...
+ make -C $(OBJDIR)
+
+../lib/$(app).ko: $(LIB) $(OBJDIR)/$(app).ko
+ cp $(OBJDIR)/$(app).ko ../lib
+
+$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.c
+ $(CC) $($(APP)_CFLAGS) \
+ $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \
+ $(subst /,$(HOST_PSEP),$<)
+
+$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.S
+ $(CC) $($(APP)_CFLAGS) \
+ $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \
+ $(subst /,$(HOST_PSEP),$<)
+
+$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cpp
+ $(CC) $($(APP)_CXXFLAGS) \
+ $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \
+ $(subst /,$(HOST_PSEP),$<)
+
+$(OBJDIRS):
+ $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR))
+
+$(LIBDIR):
+ $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR))
+
+$(BINDIR):
+ $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR))
+
+clean:
+ $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)/*),$(HOST_RMR))
+ $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)),$(HOST_RMDIR))
+ifeq ($(OS_NAME),linux-kernel)
+ rm -f ../lib/$(app).o
+endif
+
+realclean: clean
+ $(subst @@,$(subst /,$(HOST_PSEP),$(LIB)) $(subst /,$(HOST_PSEP),$(EXE)),$(HOST_RM))
+ $(subst @@,$(DEP_FILE),$(HOST_RM))
+ifeq ($(OS_NAME),linux-kernel)
+ rm -f ../lib/$(app).ko
+endif
+
+depend:
+ $(subst @@,$(DEP_FILE),$(HOST_RM))
+ for F in $(FULL_SRCS); do \
+ if test -f $$F; then \
+ bash -c "echo -n $(OBJDIR)/" >> $(DEP_FILE); \
+ if gcc -MM $(DEPFLAGS) $$F | sed '/^#/d' >> $(DEP_FILE); then \
+ true; \
+ else \
+ echo 'err:' >> $(DEP_FILE); \
+ rm -f $(DEP_FILE); \
+ exit 1; \
+ fi; \
+ fi; \
+ done;
+
+dep: depend
+
+-include $(DEP_FILE)
+