Add support for Solaris 2.6 on sun4m builds
It is an excellent platform for catching bugs: big-endian, slow enough that a context switch in the middle of an operation becomes a regular occurrence, and all that on a SMP box. Or: I just wanted to see if it would work. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
47920df65c
commit
fda285e2f5
52 changed files with 1266 additions and 4197 deletions
264
ports/solaris2.6/config.mk
Normal file
264
ports/solaris2.6/config.mk
Normal file
|
@ -0,0 +1,264 @@
|
|||
ifeq "$(CONFIG)" ""
|
||||
override CONFIG := $(shell $(dir $(lastword $(MAKEFILE_LIST)))/guess-config)
|
||||
ifeq "$(CONFIG)" ""
|
||||
$(error "Failed to guess config")
|
||||
endif
|
||||
endif
|
||||
|
||||
OS := $(shell echo $(CONFIG) | sed -e 's/^[^.]*\.//' -e 's/^\([^-_]*\)[-_].*/\1/')
|
||||
PROC := $(shell echo $(CONFIG) | sed -e 's/^\([^.]*\)\..*/\1/')
|
||||
|
||||
ifeq "$(OS)" "darwin"
|
||||
DDSRT = $(OS) posix
|
||||
RULES = darwin
|
||||
CC = clang
|
||||
LD = $(CC)
|
||||
OPT = -fsanitize=address #-O3 -DNDEBUG
|
||||
PROF =
|
||||
CPPFLAGS += -Wall -g $(OPT) $(PROF)
|
||||
CFLAGS += $(CPPFLAGS) #-fno-inline
|
||||
LDFLAGS += -g $(OPT) $(PROF)
|
||||
X =
|
||||
O = .o
|
||||
A = .a
|
||||
SO = .dylib
|
||||
LIBPRE = lib
|
||||
endif
|
||||
ifeq "$(OS)" "solaris2.6"
|
||||
DDSRT = $(OS) posix
|
||||
RULES = unix
|
||||
CC = gcc -std=gnu99 -mcpu=v8
|
||||
LD = $(CC)
|
||||
OPT = -O2 -DNDEBUG
|
||||
PROF =
|
||||
CPPFLAGS += -Wall -g $(OPT) $(PROF) -D_REENTRANT -D__EXTENSIONS__ -D__SunOS_5_6 -I$(PWD)/ports/solaris2.6/include
|
||||
CFLAGS += $(CPPFLAGS)
|
||||
LDFLAGS += -g $(OPT) $(PROF)
|
||||
LDLIBS += -lposix4 -lsocket -lnsl -lc
|
||||
X =
|
||||
O = .o
|
||||
A = .a
|
||||
SO = .so
|
||||
LIBPRE = lib
|
||||
endif
|
||||
ifeq "$(OS)" "linux"
|
||||
DDSRT = posix
|
||||
RULES = unix
|
||||
CC = gcc-6.2 -std=gnu99 -fpic -mcx16
|
||||
OPT = #-fsanitize=address
|
||||
# CC = gcc-6.2 -std=gnu99 -fpic -mcx16
|
||||
# OPT = -O3 -DNDEBUG -flto
|
||||
LD = $(CC)
|
||||
PROF =
|
||||
CPPFLAGS += -Wall -g $(OPT) $(PROF)
|
||||
CFLAGS += $(CPPFLAGS) #-fno-inline
|
||||
LDFLAGS += -g $(OPT) $(PROF)
|
||||
X =
|
||||
O = .o
|
||||
A = .a
|
||||
SO = .so
|
||||
LIBPRE = lib
|
||||
endif
|
||||
ifeq "$(OS)" "win32"
|
||||
DDSRT = windows
|
||||
RULES = windows
|
||||
CC = cl
|
||||
LD = link
|
||||
# OPT = -O2 -DNDEBUG
|
||||
OPT = -MDd
|
||||
PROF =
|
||||
CPPFLAGS = -Zi -W3 $(OPT) $(PROF) -TC # -bigobj
|
||||
CFLAGS += $(CPPFLAGS)
|
||||
LDFLAGS += -nologo -incremental:no -subsystem:console -debug
|
||||
X = .exe
|
||||
O = .obj
|
||||
A = .lib
|
||||
SO = .dll
|
||||
LIBPRE =
|
||||
# VS_VERSION=12.0
|
||||
# ifeq "$(VS_VERSION)" "12.0" # This works for VS2013 + Windows 10
|
||||
# VS_HOME=/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 12.0
|
||||
# WINDOWSSDKDIR=/cygdrive/c/Program Files (x86)/Windows Kits/8.1
|
||||
# else # This works for VS2010 + Windows 7
|
||||
# VS_HOME=/cygdrive/C/Program Files (x86)/Microsoft Visual Studio 10.0
|
||||
# WINDOWSSDKDIR=/cygdrive/C/Program Files (x86)/Microsoft SDKs/Windows/v7.0A
|
||||
# endif
|
||||
endif
|
||||
ifeq "$(OS)" "wine"
|
||||
export WINEDEBUG=-all
|
||||
DDSRT = windows
|
||||
RULES = wine
|
||||
GEN = gen.wine
|
||||
CC = wine cl
|
||||
LD = wine link
|
||||
CPPFLAGS = -nologo -W3 -TC -analyze -D_WINNT=0x0604 -Drestrict=
|
||||
CFLAGS += $(CPPFLAGS)
|
||||
LDFLAGS += -nologo -incremental:no -subsystem:console -debug
|
||||
X = .exe
|
||||
O = .obj
|
||||
A = .lib
|
||||
SO = .dll
|
||||
LIBPRE =
|
||||
endif
|
||||
|
||||
# use $(DDSRT) as a proxy for $(CONFIG) not matching anything
|
||||
ifeq "$(DDSRT)" ""
|
||||
$(error "$(CONFIG): unsupported config")
|
||||
endif
|
||||
|
||||
# We're assuming use of cygwin, which means Windows path names can be
|
||||
# obtained using "cygpath". With "-m" we get slashes (rather than
|
||||
# backslashes), which all of MS' tools accept and which are far less
|
||||
# troublesome in make.
|
||||
ifeq "$(CC)" "cl"
|
||||
N_PWD := $(shell cygpath -m '$(PWD)')
|
||||
#N_VS_HOME := $(shell cygpath -m '$(VS_HOME)')
|
||||
#N_WINDOWSSDKDIR := $(shell cygpath -m '$(WINDOWSSDKDIR)')
|
||||
else # not Windows
|
||||
N_PWD := $(PWD)
|
||||
endif
|
||||
|
||||
# More machine- and platform-specific matters.
|
||||
ifeq "$(CC)" "cl" # Windows
|
||||
ifeq "$(PROC)" "x86_64"
|
||||
MACHINE = -machine:X64
|
||||
endif
|
||||
LDFLAGS += $(MACHINE)
|
||||
OBJ_OFLAG = -Fo
|
||||
EXE_OFLAG = -out:
|
||||
SHLIB_OFLAG = -out:
|
||||
CPPFLAGS += -D_CRT_SECURE_NO_WARNINGS
|
||||
# ifeq "$(VS_VERSION)" "12.0" # This works for VS2013 + Windows 10
|
||||
# CPPFLAGS += '-I$(N_VS_HOME)/VC/include' '-I$(N_WINDOWSSDKDIR)/Include/um' '-I$(N_WINDOWSSDKDIR)/Include/shared'
|
||||
# ifeq "$(PROC)" "x86_64"
|
||||
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib/amd64' '-libpath:$(N_WINDOWSSDKDIR)/lib/winv6.3/um/x64'
|
||||
# else
|
||||
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib' '-libpath:$(N_WINDOWSSDKDIR)/lib/winv6.3/um/x86'
|
||||
# endif
|
||||
# else # This works for VS2010 + Windows 7
|
||||
# CPPFLAGS += '-I$(N_VS_HOME)/VC/include' '-I$(N_WINDOWSSDKDIR)/Include'
|
||||
# ifeq "$(PROC)" "x86_64"
|
||||
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib/amd64' '-libpath:$(N_WINDOWSSDKDIR)/lib/x64'
|
||||
# else
|
||||
# LDFLAGS += '-libpath:$(N_VS_HOME)/VC/lib' '-libpath:$(N_WINDOWSSDKDIR)/lib'
|
||||
# endif
|
||||
# endif
|
||||
else
|
||||
ifeq "$(CC)" "wine cl"
|
||||
OBJ_OFLAG =-Fo
|
||||
EXE_OFLAG = -out:
|
||||
SHLIB_OFLAG = -out:
|
||||
CPPFLAGS += -D_CRT_SECURE_NO_WARNINGS
|
||||
else # not Windows (-like)
|
||||
OBJ_OFLAG = -o
|
||||
EXE_OFLAG = -o
|
||||
SHLIB_OFLAG = -o
|
||||
ifeq "$(PROC)" "x86"
|
||||
CFLAGS += -m32
|
||||
LDFLAGS += -m32
|
||||
endif
|
||||
ifeq "$(PROC)" "x86_64"
|
||||
CFLAGS += -m64
|
||||
LDFLAGS += -m64
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq "$(CC)" "cl"
|
||||
LDFLAGS += -libpath:$(N_PWD)/gen
|
||||
LIBDEP_SYS = kernel32 ws2_32
|
||||
else
|
||||
ifeq "$(CC)" "wine cl"
|
||||
else
|
||||
LDFLAGS += -L$(N_PWD)/gen
|
||||
LIBDEP_SYS = kernel32 ws2_32
|
||||
endif
|
||||
endif
|
||||
|
||||
getabspath=$(abspath $1)
|
||||
ifeq "$(RULES)" "darwin"
|
||||
ifneq "$(findstring clang, $(CC))" ""
|
||||
define make_exe
|
||||
$(LD) $(LDFLAGS) $(patsubst -L%, -rpath %, $(filter -L%, $(LDFLAGS))) $(EXE_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_shlib
|
||||
$(LD) $(LDFLAGS) $(patsubst -L%, -rpath %, $(filter -L%, $(LDFLAGS))) -dynamiclib -install_name @rpath/$(notdir $@) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
else # assume gcc
|
||||
comma=,
|
||||
define make_exe
|
||||
$(LD) $(LDFLAGS) $(patsubst -L%, -Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) $(EXE_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_shlib
|
||||
$(LD) $(LDFLAGS) $(patsubst -L%, -Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) -dynamiclib -Wl,-install_name,@rpath/$(notdir $@) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
endif
|
||||
define make_archive
|
||||
ar -ru $@ $?
|
||||
endef
|
||||
define make_dep
|
||||
$(CC) -M $(CPPFLAGS) $< | sed 's|[a-zA-Z0-9_-]*\.o|gen/&|' > $@ || { rm $@ ; exit 1 ; }
|
||||
endef
|
||||
else
|
||||
ifeq "$(RULES)" "unix"
|
||||
LDLIBS += -lpthread
|
||||
comma=,
|
||||
define make_exe
|
||||
$(LD) $(LDFLAGS) $(patsubst -L%,-Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) $(EXE_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_shlib
|
||||
$(LD) $(LDFLAGS) -Wl$(comma)--no-allow-shlib-undefined $(patsubst -L%,-Wl$(comma)-rpath$(comma)%, $(filter -L%, $(LDFLAGS))) -shared $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_archive
|
||||
ar -ru $@ $?
|
||||
endef
|
||||
define make_dep
|
||||
$(CC) -M $(CPPFLAGS) $< | sed 's|[a-zA-Z0-9_-]*\.o|gen/&|' > $@ || { rm $@ ; exit 1 ; }
|
||||
endef
|
||||
else
|
||||
ifeq "$(RULES)" "windows"
|
||||
define make_exe
|
||||
$(LD) $(LDFLAGS) $(EXE_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_shlib
|
||||
$(LD) $(LDFLAGS) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_archive
|
||||
lib $(MACHINE) /out:$@ $^
|
||||
endef
|
||||
define make_dep
|
||||
$(CC) -E $(CPPFLAGS) $(CPPFLAGS) $< | grep "^#line.*\\\\vdds\\\\" | cut -d '"' -f 2 | sort -u | sed -e 's@\([A-Za-z]\)\:@ /cygdrive/\1@' -e 's@\\\\@/@g' -e '$$!s@$$@ \\@' -e '1s@^@$*$O: @' >$@
|
||||
endef
|
||||
else
|
||||
ifeq "$(RULES)" "wine"
|
||||
COMPILE_MANY_ATONCE=true
|
||||
getabspath=$1
|
||||
lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
|
||||
FAKEPWD = $(call lc,z:$(subst /,\\\\,$(PWD)))
|
||||
define make_exe
|
||||
$(LD) $(LDFLAGS) $(EXE_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_shlib
|
||||
$(LD) $(LDFLAGS) $(SHLIB_OFLAG)$@ $^ $(LDLIBS)
|
||||
endef
|
||||
define make_archive
|
||||
lib $(MACHINE) /out:$@ $^
|
||||
endef
|
||||
define make_dep
|
||||
$(CC) -E $(CPPFLAGS) $(CPPFLAGS) $< | grep "^#line.*\\\\vdds\\\\" | cut -d '"' -f 2 | sort -u | sed -e 's@$(FAKEPWD)\(\\\\\)*@ @' -e 's@\\\\@/@g' -e '$$!s@$$@ \\@' -e '1s@^@$*$O: @' >$@
|
||||
endef
|
||||
else
|
||||
$(error "$(OS) not covered by build macros for")
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq "$(GEN)" ""
|
||||
GEN = gen
|
||||
endif
|
||||
|
||||
%$O:
|
||||
%$X:
|
||||
%$(SO):
|
||||
%.d:
|
Loading…
Add table
Add a link
Reference in a new issue