diff options
Diffstat (limited to 'make/gcc-linux.mk')
-rw-r--r-- | make/gcc-linux.mk | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/make/gcc-linux.mk b/make/gcc-linux.mk new file mode 100644 index 0000000..d34ecf0 --- /dev/null +++ b/make/gcc-linux.mk @@ -0,0 +1,87 @@ +# +# This file primarily exists for making it possible to test the build +# system and external library support from Linux. However, its use is +# strongly discouraged; use the (default) libtool rules for building +# on Linux. +# + +# --- Required interface definitions --- + +OBJ=o +LOBJ=o + +# Usage: $(call libname,base) +define libname +lib$(1).so +endef + +# Usage: $(call binname,base) +define binname +$(1) +endef + +# --- Required rule definitions --- + +# 1 2 +# Usage: $(call compile,src,includes) +define compile + $(CXX) $(CPPFLAGS) $(CXXFLAGS) \ + $(call depflags,$(basename $(call src_to_obj,$(1)))) \ + $(foreach I,$(2),-I$(I)) \ + -c $(1) -o $(call src_to_obj,$(1)) +endef + +# 1 2 +# Usage: $(call c_compile,src,includes) +define c_compile + $(CC) $(CPPFLAGS) $(CFLAGS) \ + $(call depflags,$(basename $(call c_src_to_obj,$(1)))) \ + $(foreach I,$(2),-I$(I)) \ + -c $(1) -o $(call c_src_to_obj,$(1)) +endef + +define libcompile + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fpic \ + $(call depflags,$(basename $(call src_to_lobj,$(1)))) \ + $(foreach I,$(2),-I$(I)) \ + -c $(1) -o $(call src_to_lobj,$(1)) +endef +define c_libcompile + $(CC) $(CPPFLAGS) $(CXXFLAGS) -fpic \ + $(call depflags,$(basename $(call c_src_to_lobj,$(1)))) \ + $(foreach I,$(2),-I$(I)) \ + -c $(1) -o $(call c_src_to_lobj,$(1)) +endef + + +# 1 2 +# Usage: $(call makeslib,objs,library) +define makeslib + $(RM) $2 + $(AR) cru $(2) $(1) + $(RANLIB) $(2) +endef + +# 1 2 3 4 5 6 7 +# Usage: $(call makelib,objs,library,ldflags,libs,current,revision,age) +define makelib + $(RM) $(2) $(2).* + major=$$(( $(5) - $(7) )); \ + versuffix=$$major.$(7).$(6); \ + $(CXX) $(CXXFLAGS) -shared -o $(2).$$versuffix $(1) \ + -Wl,--soname -Wl,`basename $(2)`.$$major \ + $(3) $(4) && \ + ln -s `basename $(2)`.$$versuffix $(2) && \ + ln -s `basename $(2)`.$$versuffix $(2).$$major +endef + +# 1 2 3 4 +# Usage: $(call makebin,objs,binary,ldflags,libs) +define makebin + $(CXX) $(CXXFLAGS) $(1) -o $(2) $(LDFLAGS) $(3) $(4) +endef + +# Install target + +install: all + @echo Automated installation is not supported for buildrules=$(BUILDRULES) |