Skip to content
Snippets Groups Projects
Commit 75691a66 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

For macOS, set install_name to @rpath/libNAME.dylib and use it

For the SBBS binaries, set @executable_path and
@executable_path/../${LIBODIR} so they can all be in one dir, or
they can be in the build output dirs and still work.

For utilities, set to @executable_path and
@executable_path/../../${LIBODIR} for the same reason.

With this, we shouldn't need to fiddle with DYLD_LIBRARY_PATH
parent 750dba01
No related branches found
No related tags found
No related merge requests found
...@@ -264,6 +264,12 @@ ifeq ($(os),darwin) ...@@ -264,6 +264,12 @@ ifeq ($(os),darwin)
endif endif
endif endif
ifeq ($(os),darwin)
RPATH := -rpath
else
RPATH := --rpath
endif
ifeq ($(machine_uname),x86_64) ifeq ($(machine_uname),x86_64)
machine_uname := x64 machine_uname := x64
endif endif
......
...@@ -156,13 +156,16 @@ ifeq ($(os),sunos) ...@@ -156,13 +156,16 @@ ifeq ($(os),sunos)
SHLIBOPTS := SHLIBOPTS :=
else else
ifeq ($(os),darwin) ifeq ($(os),darwin)
SHLIBOPTS = -shared -install_name `realpath $(SBBSDIR)`/$@ SHLIBOPTS = -shared -install_name @rpath/`VAR=$@; echo $${VAR\#\#*/}`
else else
SHLIBOPTS := -shared SHLIBOPTS := -shared
endif endif
MKSHLIB := $(CC) MKSHLIB := $(CC)
MKSHPPLIB := $(CXX) MKSHPPLIB := $(CXX)
endif 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 += $(JS_CFLAGS) $(CRYPT_CFLAGS) $(UIFC-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(SMBLIB_CFLAGS) $(CIOLIB-MT_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS)
CFLAGS += -I../comio CFLAGS += -I../comio
...@@ -190,27 +193,27 @@ endif ...@@ -190,27 +193,27 @@ endif
# FTP Server Link Rule # FTP Server Link Rule
$(FTPSRVR): $(MTOBJODIR)/ftpsrvr.o $(FTPSRVR): $(MTOBJODIR)/ftpsrvr.o
@echo Linking $@ @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 # Mail Server Link Rule
$(MAILSRVR): $(MAIL_OBJS) $(MAILSRVR): $(MAIL_OBJS)
@echo Linking $@ @echo Linking $@
$(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) -o $@ -lsbbs $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) $(LIB_RPATH) -o $@ -lsbbs
# Web Server Link Rule # Web Server Link Rule
$(WEBSRVR): $(WEB_OBJS) $(WEBSRVR): $(WEB_OBJS)
@echo Linking $@ @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 Link Rule
$(SERVICES): $(SERVICE_OBJS) $(SERVICES): $(SERVICE_OBJS)
@echo Linking $@ @echo Linking $@
$(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) -o $@ -lsbbs $(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) $(LIB_RPATH) -o $@ -lsbbs
# Synchronet Console Build Rule # Synchronet Console Build Rule
$(SBBSCON): $(CON_OBJS) $(SBBS) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES) $(SBBSCON): $(CON_OBJS) $(SBBS) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES)
@echo Linking $@ @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 Utility
$(BAJA): $(BAJA_OBJS) | $(EXEODIR) $(BAJA): $(BAJA_OBJS) | $(EXEODIR)
...@@ -280,7 +283,7 @@ endif ...@@ -280,7 +283,7 @@ endif
# JSEXEC # JSEXEC
$(JSEXEC): $(JSEXEC_OBJS) $(SBBS) $(CIOLIB-MT) | $(EXEODIR) $(JSEXEC): $(JSEXEC_OBJS) $(SBBS) $(CIOLIB-MT) | $(EXEODIR)
@echo Linking $@ @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) ifeq ($(os), netbsd)
paxctl +m $(JSEXEC) paxctl +m $(JSEXEC)
endif endif
...@@ -308,7 +311,7 @@ $(QWKNODES): $(QWKNODES_OBJS) | $(EXEODIR) ...@@ -308,7 +311,7 @@ $(QWKNODES): $(QWKNODES_OBJS) | $(EXEODIR)
# SLOG # SLOG
$(SLOG): $(SLOG_OBJS) $(SBBS) | $(EXEODIR) $(SLOG): $(SLOG_OBJS) $(SBBS) | $(EXEODIR)
@echo Linking $@ @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): $(DELFILES_OBJS) $(ENCODE_LIB) | $(EXEODIR) $(DELFILES): $(DELFILES_OBJS) $(ENCODE_LIB) | $(EXEODIR)
......
...@@ -30,17 +30,16 @@ EXTRA_LIBS += `pkg-config gtk+-3.0 --libs` ...@@ -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 # Because pkg-config for libglade uses --rpath, we need to also, LD_RUN_PATH
# won't work. :-( # won't work. :-(
ifeq ($(os),darwin) ifeq ($(os),darwin)
RPATH := -rpath LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR)
else else
RPATH := --rpath ifdef SBBSDIR
endif LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec
ifdef SBBSDIR endif
LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec PARENT_DIR = $(shell dirname `pwd`)
endif LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR)
PARENT_DIR = $(shell dirname `pwd`) ifeq ($(os),sunos)
LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib
ifeq ($(os),sunos) endif
LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib
endif endif
$(GTKMONITOR): $(OBJS) $(GTKMONITOR): $(OBJS)
......
...@@ -30,17 +30,16 @@ EXTRA_LIBS += `pkg-config gtk+-3.0 --libs` ...@@ -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 # Because pkg-config for libglade uses --rpath, we need to also, LD_RUN_PATH
# won't work. :-( # won't work. :-(
ifeq ($(os),darwin) ifeq ($(os),darwin)
RPATH := -rpath LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR)
else else
RPATH := --rpath ifdef SBBSDIR
endif LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec
ifdef SBBSDIR endif
LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec PARENT_DIR = $(shell dirname `pwd`)
endif LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR)
PARENT_DIR = $(shell dirname `pwd`) ifeq ($(os),sunos)
LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib
ifeq ($(os),sunos) endif
LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib
endif endif
$(GTKUSEREDIT): $(OBJS) $(GTKUSEREDIT): $(OBJS)
......
...@@ -30,17 +30,16 @@ EXTRA_LIBS += `pkg-config gtk+-3.0 --libs` ...@@ -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 # Because pkg-config for libglade uses --rpath, we need to also, LD_RUN_PATH
# won't work. :-( # won't work. :-(
ifeq ($(os),darwin) ifeq ($(os),darwin)
RPATH := -rpath LDFLAGS += -Wl,$(RPATH),@executable_path,$(RPATH),@executable_path/../../$(LIBODIR)
else else
RPATH := --rpath ifdef SBBSDIR
endif LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec
ifdef SBBSDIR endif
LDFLAGS += -Wl,$(RPATH),$(SBBSDIR)/exec PARENT_DIR = $(shell dirname `pwd`)
endif LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR)
PARENT_DIR = $(shell dirname `pwd`) ifeq ($(os),sunos)
LDFLAGS += -Wl,$(RPATH),$(PARENT_DIR)/$(LIBODIR) LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib
ifeq ($(os),sunos) endif
LDFLAGS += -Wl,$(RPATH),/opt/sfw/gcc-3/lib
endif endif
$(GTKUSERLIST): $(OBJS) $(GTKUSERLIST): $(OBJS)
......
...@@ -23,6 +23,9 @@ include ../Common.gmake ...@@ -23,6 +23,9 @@ include ../Common.gmake
CFLAGS += $(SBBS_CFLAGS) $(SMBLIB_CFLAGS) $(XPDEV-MT_CFLAGS) `$(WX_CONFIG) $(WX_CONFFLAGS) --cflags` CFLAGS += $(SBBS_CFLAGS) $(SMBLIB_CFLAGS) $(XPDEV-MT_CFLAGS) `$(WX_CONFIG) $(WX_CONFFLAGS) --cflags`
CXXFLAGS += $(CFLAGS) CXXFLAGS += $(CFLAGS)
LDFLAGS += `$(WX_CONFIG) $(WX_CONFFLAGS) --libs` $(SMBLIB_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS) $(SBBS_LDFLAGS) 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) $(USERLIST): $(SBBS) $(OBJS)
@echo Linking $@ @echo Linking $@
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment