diff --git a/src/build/Common.gmake b/src/build/Common.gmake index 95fe24a09f17f7724781ab6612bec271e229c4d6..763cd42ee9b41659abae21a50b57eea5ad6f25b2 100644 --- a/src/build/Common.gmake +++ b/src/build/Common.gmake @@ -264,6 +264,12 @@ ifeq ($(os),darwin) endif endif +ifeq ($(os),darwin) + RPATH := -rpath +else + RPATH := --rpath +endif + ifeq ($(machine_uname),x86_64) machine_uname := x64 endif diff --git a/src/sbbs3/GNUmakefile b/src/sbbs3/GNUmakefile index 8c682a859e673a2cd6861d1decff8b7af46d65f0..c0647d408b9f1e1c52bfa35426c164694c1a65a6 100644 --- a/src/sbbs3/GNUmakefile +++ b/src/sbbs3/GNUmakefile @@ -156,13 +156,16 @@ ifeq ($(os),sunos) SHLIBOPTS := else ifeq ($(os),darwin) - SHLIBOPTS = -shared -install_name `realpath $(SBBSDIR)`/$@ + SHLIBOPTS = -shared -install_name @rpath/`VAR=$@; echo $${VAR\#\#*/}` else SHLIBOPTS := -shared endif MKSHLIB := $(CC) MKSHPPLIB := $(CXX) endif +ifeq ($(os),darwin) + LIB_RPATH := -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../$(LIBDIR) +endif CFLAGS += $(JS_CFLAGS) $(CRYPT_CFLAGS) $(UIFC-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(SMBLIB_CFLAGS) $(CIOLIB-MT_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS) CFLAGS += -I../comio @@ -190,27 +193,27 @@ endif # FTP Server Link Rule $(FTPSRVR): $(MTOBJODIR)/ftpsrvr.o @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MTOBJODIR)/ftpsrvr.o $(SHLIBOPTS) -o $@ -lsbbs + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MTOBJODIR)/ftpsrvr.o $(SHLIBOPTS) $(LIB_RPATH) -o $@ -lsbbs # Mail Server Link Rule $(MAILSRVR): $(MAIL_OBJS) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) -o $@ -lsbbs + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) $(LIB_RPATH) -o $@ -lsbbs # Web Server Link Rule $(WEBSRVR): $(WEB_OBJS) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(WEB_OBJS) $(SHLIBOPTS) -o $@ $(ENCODE_LIBS) -lsbbs $(XPDEV-MT_LIBS) + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(WEB_OBJS) $(SHLIBOPTS) $(LIB_RPATH) -o $@ $(ENCODE_LIBS) -lsbbs $(XPDEV-MT_LIBS) # Services Link Rule $(SERVICES): $(SERVICE_OBJS) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) -o $@ -lsbbs + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) $(LIB_RPATH) -o $@ -lsbbs # Synchronet Console Build Rule $(SBBSCON): $(CON_OBJS) $(SBBS) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES) @echo Linking $@ - $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(CON_OBJS) $(CON_LIBS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS) + $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) $(LIB_RPATH) -o $@ $(CON_OBJS) $(CON_LIBS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS) # Baja Utility $(BAJA): $(BAJA_OBJS) | $(EXEODIR) @@ -280,7 +283,7 @@ endif # JSEXEC $(JSEXEC): $(JSEXEC_OBJS) $(SBBS) $(CIOLIB-MT) | $(EXEODIR) @echo Linking $@ - $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(JSEXEC_OBJS) -lsbbs $(JS_LIBS) $(SMBLIB_LIBS) $(UIFC-MT_LIBS) $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS) + $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) $(LIB_RPATH) -o $@ $(JSEXEC_OBJS) -lsbbs $(JS_LIBS) $(SMBLIB_LIBS) $(UIFC-MT_LIBS) $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS) ifeq ($(os), netbsd) paxctl +m $(JSEXEC) endif @@ -308,7 +311,7 @@ $(QWKNODES): $(QWKNODES_OBJS) | $(EXEODIR) # SLOG $(SLOG): $(SLOG_OBJS) $(SBBS) | $(EXEODIR) @echo Linking $@ - $(QUIET)$(CC) $(CONSOLE_LDFLAGS) -o $@ $(SLOG_OBJS) $(XPDEV_LIBS) -lsbbs + $(QUIET)$(CC) $(CONSOLE_LDFLAGS) $(LIB_RPATH) -o $@ $(SLOG_OBJS) $(XPDEV_LIBS) -lsbbs # DELFILES $(DELFILES): $(DELFILES_OBJS) $(ENCODE_LIB) | $(EXEODIR) diff --git a/src/sbbs3/gtkmonitor/GNUmakefile b/src/sbbs3/gtkmonitor/GNUmakefile index 2f6981002a5e202dd810e25bfeea0034afe8499c..bf51846d55c010cce137b07e0562d0703d86c1e6 100644 --- a/src/sbbs3/gtkmonitor/GNUmakefile +++ b/src/sbbs3/gtkmonitor/GNUmakefile @@ -30,17 +30,16 @@ EXTRA_LIBS += `pkg-config gtk+-3.0 --libs` # Because pkg-config for libglade uses --rpath, we need to also, LD_RUN_PATH # won't work. :-( ifeq ($(os),darwin) - RPATH := -rpath -else - RPATH := --rpath -endif -ifdef SBBSDIR - LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec -endif -PARENT_DIR = $(shell dirname `pwd`) -LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) -ifeq ($(os),sunos) - LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib + LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR) +else + ifdef SBBSDIR + LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec + endif + PARENT_DIR = $(shell dirname `pwd`) + LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) + ifeq ($(os),sunos) + LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib + endif endif $(GTKMONITOR): $(OBJS) diff --git a/src/sbbs3/gtkuseredit/GNUmakefile b/src/sbbs3/gtkuseredit/GNUmakefile index a35a9d0e04bf24379fc65d19bfc352e15bf855b6..a191fa17950ce198a6b660dd1cf24be1066f2f7a 100644 --- a/src/sbbs3/gtkuseredit/GNUmakefile +++ b/src/sbbs3/gtkuseredit/GNUmakefile @@ -30,17 +30,16 @@ EXTRA_LIBS += `pkg-config gtk+-3.0 --libs` # Because pkg-config for libglade uses --rpath, we need to also, LD_RUN_PATH # won't work. :-( ifeq ($(os),darwin) - RPATH := -rpath + LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR) else - RPATH := --rpath -endif -ifdef SBBSDIR - LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec -endif -PARENT_DIR = $(shell dirname `pwd`) -LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) -ifeq ($(os),sunos) - LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib + ifdef SBBSDIR + LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec + endif + PARENT_DIR = $(shell dirname `pwd`) + LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) + ifeq ($(os),sunos) + LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib + endif endif $(GTKUSEREDIT): $(OBJS) diff --git a/src/sbbs3/gtkuserlist/GNUmakefile b/src/sbbs3/gtkuserlist/GNUmakefile index 356ad3ad34141eb405d2272fd637ea147ee9119f..71b4086a16b6c6062a73bdf4e329868eac598237 100644 --- a/src/sbbs3/gtkuserlist/GNUmakefile +++ b/src/sbbs3/gtkuserlist/GNUmakefile @@ -30,17 +30,16 @@ EXTRA_LIBS += `pkg-config gtk+-3.0 --libs` # Because pkg-config for libglade uses --rpath, we need to also, LD_RUN_PATH # won't work. :-( ifeq ($(os),darwin) - RPATH := -rpath + LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR) else - RPATH := --rpath -endif -ifdef SBBSDIR - LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec -endif -PARENT_DIR = $(shell dirname `pwd`) -LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) -ifeq ($(os),sunos) - LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib + ifdef SBBSDIR + LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec + endif + PARENT_DIR = $(shell dirname `pwd`) + LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) + ifeq ($(os),sunos) + LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib + endif endif $(GTKUSERLIST): $(OBJS) diff --git a/src/sbbs3/userlist/GNUmakefile b/src/sbbs3/userlist/GNUmakefile index c241a7ff67a5535092f7c0b6dd73fdb0cf5d0f34..ae966ec3fa4c74e8924a266c62f4322523e75677 100644 --- a/src/sbbs3/userlist/GNUmakefile +++ b/src/sbbs3/userlist/GNUmakefile @@ -23,6 +23,9 @@ include ../Common.gmake CFLAGS += $(SBBS_CFLAGS) $(SMBLIB_CFLAGS) $(XPDEV-MT_CFLAGS) `$(WX_CONFIG) $(WX_CONFFLAGS) --cflags` CXXFLAGS += $(CFLAGS) LDFLAGS += `$(WX_CONFIG) $(WX_CONFFLAGS) --libs` $(SMBLIB_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS) $(SBBS_LDFLAGS) +ifeq ($(os),darwin) + LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR) +endif $(USERLIST): $(SBBS) $(OBJS) @echo Linking $@