X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=build%2Frules.mk;h=d538bbcf6df361238f58f305bbe4106fac4015f4;hb=refs%2Ftags%2F20080207-1;hp=f4f18d1f261e0b88175759a482da7c796d477bad;hpb=f869221ce49f0fb7cca48eee28daff8684305963;p=ion3.git diff --git a/build/rules.mk b/build/rules.mk index f4f18d1..d538bbc 100644 --- a/build/rules.mk +++ b/build/rules.mk @@ -2,10 +2,6 @@ ## Some make rules ## -ifdef RELOCATABLE -DEFINES += -DCF_RELOCATABLE -endif - ifdef MODULE ifeq ($(PRELOAD_MODULES),1) MODULE_TARGETS := $(MODULE).a $(MODULE).lc @@ -20,6 +16,17 @@ LUA_COMPILED := $(subst .lua,.lc, $(LUA_SOURCES)) TARGETS := $(TARGETS) $(LUA_COMPILED) endif +ifdef EXTRA_EXECUTABLE +EXECUTABLE := $(EXTRA_EXECUTABLE) +BINDIR_ := $(EXTRABINDIR) +endif + +ifdef EXECUTABLE +BINDIR_ ?= $(BINDIR) +EXECUTABLE_ := $(EXECUTABLE)$(BIN_SUFFIX) +TARGETS := $(TARGETS) $(EXECUTABLE_) +endif + # Main targets ###################################### @@ -91,6 +98,42 @@ endif # !MAKE_EXPORTS OBJS=$(subst .c,.o,$(SOURCES) $(EXPORTS_C)) + +ifdef EXECUTABLE + +ifdef MODULE_LIST +ifdef MODULE_PATH +ifeq ($(PRELOAD_MODULES),1) +EXT_OBJS += $(foreach mod, $(MODULE_LIST), $(MODULE_PATH)/$(mod)/$(mod).a) +DEPEND_DEPENDS += preload.c +SOURCES += preload.c +TO_CLEAN += preload.c +else # !PRELOAD_MODULES +LDFLAGS += $(EXPORT_DYNAMIC) +WHOLEA = -Wl,-whole-archive +NO_WHOLEA = -Wl,-no-whole-archive +endif # !PRELOAD_MODULES + +preload.c: + $(LUA) $(TOPDIR)/build/mkpreload.lua $(MODULE_LIST) > preload.c + +endif # MODULE_PATH +endif # MODULE_LIST + +ifeq ($(RELOCATABLE),1) +DEFINES += -DCF_RELOCATABLE_BIN_LOCATION=\"$(BINDIR_)/$(EXECUTABLE)\" +endif + +$(EXECUTABLE_): $(OBJS) $(EXT_OBJS) + $(CC) $(OBJS) $(WHOLEA) $(EXT_OBJS) $(NO_WHOLEA) $(LDFLAGS) -o $@ + +executable_install: + $(INSTALLDIR) $(BINDIR_) + $(INSTALLBIN) $(EXECUTABLE_) $(BINDIR_) + +endif # EXECUTABLE + + ifdef MODULE ifneq ($(PRELOAD_MODULES),1) @@ -107,7 +150,7 @@ $(MODULE).so: $(OBJS) $(EXT_OBJS) module_install: module_stub_install $(INSTALLDIR) $(MODULEDIR) - $(INSTALL) -m $(BIN_MODE) $(MODULE).so $(MODULEDIR) + $(INSTALLBIN) $(MODULE).so $(MODULEDIR) else # PRELOAD_MODULES @@ -220,3 +263,9 @@ TO_CLEAN += potfiles_c potfiles_lua _potfiles: echo "$(SOURCES)"|tr ' ' '\n' > potfiles_c echo "$(LUA_SOURCES) $(ETC)"|tr ' ' '\n' > potfiles_lua + +# Defaults +###################################### + +INSTALL_STRIP ?= -s +INSTALLBIN ?= $(INSTALL) $(INSTALL_STRIP) -m $(BIN_MODE)