diff options
author | Benny Prijono <bennylp@teluu.com> | 2005-11-01 16:42:51 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2005-11-01 16:42:51 +0000 |
commit | 81ecc233996dcddfbef707bd9a5099f5d9e5eb13 (patch) | |
tree | c735c382ff2dac0179b96505c4192ee70185372d /build | |
parent | b5a1af6f999820564ead4867b1e5d5574778ee56 (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.mak | 44 | ||||
-rw-r--r-- | build/cc-vc.mak | 40 | ||||
-rw-r--r-- | build/host-mingw.mak | 26 | ||||
-rw-r--r-- | build/host-unix.mak | 26 | ||||
-rw-r--r-- | build/host-win32.mak | 24 | ||||
-rw-r--r-- | build/m-alpha.mak | 8 | ||||
-rw-r--r-- | build/m-i386.mak | 8 | ||||
-rw-r--r-- | build/m-m68k.mak | 8 | ||||
-rw-r--r-- | build/m-sparc.mak | 4 | ||||
-rw-r--r-- | build/os-linux-kernel.mak | 86 | ||||
-rw-r--r-- | build/os-linux.mak | 18 | ||||
-rw-r--r-- | build/os-palmos.mak | 64 | ||||
-rw-r--r-- | build/os-sunos.mak | 12 | ||||
-rw-r--r-- | build/os-win32.mak | 22 | ||||
-rw-r--r-- | build/rules.mak | 329 |
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) + |