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
######################################
install: subdirs-install _install
+ifdef MAKE_EXPORTS
+
# Exports
######################################
-ifdef MAKE_EXPORTS
-
EXPORTS_C = exports.c
EXPORTS_H = exports.h
$(EXPORTS_H): $(EXPORTS_C)
-$(EXPORTS_C): $(SOURCES)
+$(EXPORTS_C): $(SOURCES) $(MKEXPORTS_EXTRA_DEPS)
$(MKEXPORTS) -module $(MAKE_EXPORTS) -o $(EXPORTS_C) -h $(EXPORTS_H) \
$(SOURCES) $(MKEXPORTS_EXTRAS)
+# Exports documentation
+######################################
+
+EXPORTS_DOC = exports.tex
+
+TO_CLEAN := $(TO_CLEAN) $(EXPORTS_DOC)
+
+_exports_doc: $(EXPORTS_DOC)
+
+$(EXPORTS_DOC): $(SOURCES) $(LUA_SOURCES) $(MKEXPORTS_EXTRA_DEPS)
+ $(MKEXPORTS) -mkdoc -module $(MAKE_EXPORTS) -o $(EXPORTS_DOC) \
+ $(SOURCES) $(LUA_SOURCES) $(MKEXPORTS_EXTRAS)
+
else # !MAKE_EXPORTS
EXPORTS_C =
EXPORTS_H =
+EXPORTS_DOC =
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)
module_install: module_stub_install
$(INSTALLDIR) $(MODULEDIR)
- $(INSTALL) -m $(BIN_MODE) $(MODULE).so $(MODULEDIR)
+ $(INSTALLBIN) $(MODULE).so $(MODULEDIR)
else # PRELOAD_MODULES
_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)