mirror of
https://github.com/reactos/reactos.git
synced 2024-09-22 02:30:33 +00:00
4efda499f7
Jerome Gardou: - Add STLport 5.2.1 (yes, STLport, the c++ stl implementation) to build. For now, it works only in user mode. - Link some c++ executables to it - sol.exe : one step towards a complete and modern OS. - Dedicated to Amine for his patience and his help. - Might Break Things! (tm) svn path=/branches/cmake-bringup/; revision=49046
231 lines
6.7 KiB
Makefile
231 lines
6.7 KiB
Makefile
# -*- Makefile -*- Time-stamp: <08/06/12 16:03:31 ptr>
|
|
#
|
|
# Copyright (c) 1997-1999, 2002, 2003, 2005-2007
|
|
# Petr Ovtchenkov
|
|
#
|
|
# Portion Copyright (c) 1999-2001
|
|
# Parallel Graphics Ltd.
|
|
#
|
|
# Licensed under the Academic Free License version 3.0
|
|
#
|
|
|
|
ifndef NOT_USE_NOSTDLIB
|
|
|
|
ifeq ($(CXX_VERSION_MAJOR),2)
|
|
# i.e. gcc before 3.x.x: 2.95, etc.
|
|
# gcc before 3.x don't had libsupc++.a and libgcc_s.so
|
|
# exceptions and operators new are in libgcc.a
|
|
# Unfortunatly gcc before 3.x has a buggy C++ language support outside stdc++, so definition of STDLIB below is commented
|
|
NOT_USE_NOSTDLIB := 1
|
|
#STDLIBS := $(shell ${CXX} -print-file-name=libgcc.a) -lpthread -lc -lm
|
|
endif
|
|
|
|
ifeq ($(CXX_VERSION_MAJOR),3)
|
|
# gcc before 3.3 (i.e. 3.0.x, 3.1.x, 3.2.x) has buggy libsupc++, so we should link with libstdc++ to avoid one
|
|
ifeq ($(CXX_VERSION_MINOR),0)
|
|
NOT_USE_NOSTDLIB := 1
|
|
endif
|
|
ifeq ($(CXX_VERSION_MINOR),1)
|
|
NOT_USE_NOSTDLIB := 1
|
|
endif
|
|
ifeq ($(CXX_VERSION_MINOR),2)
|
|
NOT_USE_NOSTDLIB := 1
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
ifndef NOT_USE_NOSTDLIB
|
|
ifeq ($(OSNAME),linux)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
|
|
ifeq ($(OSNAME),openbsd)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
|
|
ifeq ($(OSNAME),freebsd)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
|
|
ifeq ($(OSNAME),netbsd)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
|
|
ifeq ($(OSNAME),sunos)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
|
|
ifeq ($(OSNAME),darwin)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
|
|
ifeq ($(OSNAME),cygming)
|
|
_USE_NOSTDLIB := 1
|
|
endif
|
|
endif
|
|
|
|
ifndef WITHOUT_STLPORT
|
|
ifeq (${STLPORT_LIB_DIR},)
|
|
ifneq ($(OSNAME),cygming)
|
|
release-shared: STLPORT_LIB = -lstlport
|
|
release-static: STLPORT_LIB = -Wl,-Bstatic -lstlport -Wl,-Bdynamic
|
|
dbg-shared: STLPORT_LIB = -lstlportg
|
|
dbg-static: STLPORT_LIB = -Wl,-Bstatic -lstlportg -Wl,-Bdynamic
|
|
stldbg-shared: STLPORT_LIB = -lstlportstlg
|
|
stldbg-static: STLPORT_LIB = -Wl,-Bstatic -lstlportstlg -Wl,-Bdynamic
|
|
else
|
|
LIB_VERSION = ${LIBMAJOR}.${LIBMINOR}
|
|
release-shared : STLPORT_LIB = -lstlport.${LIB_VERSION}
|
|
dbg-shared : STLPORT_LIB = -lstlportg.${LIB_VERSION}
|
|
stldbg-shared : STLPORT_LIB = -lstlportstlg.${LIB_VERSION}
|
|
endif
|
|
else
|
|
# STLPORT_LIB_DIR not empty
|
|
ifneq ($(OSNAME),cygming)
|
|
release-shared: STLPORT_LIB = -L${STLPORT_LIB_DIR} -lstlport
|
|
release-static: STLPORT_LIB = -L${STLPORT_LIB_DIR} -Wl,-Bstatic -lstlport -Wl,-Bdynamic
|
|
dbg-shared: STLPORT_LIB = -L${STLPORT_LIB_DIR} -lstlportg
|
|
dbg-static: STLPORT_LIB = -L${STLPORT_LIB_DIR} -Wl,-Bstatic -lstlportg -Wl,-Bdynamic
|
|
stldbg-shared: STLPORT_LIB = -L${STLPORT_LIB_DIR} -lstlportstlg
|
|
stldbg-static: STLPORT_LIB = -L${STLPORT_LIB_DIR} -Wl,-Bstatic -lstlportstlg -Wl,-Bdynamic
|
|
else
|
|
LIB_VERSION = ${LIBMAJOR}.${LIBMINOR}
|
|
release-shared : STLPORT_LIB = -L${BASE_INSTALL_DIR}/lib -lstlport.${LIB_VERSION}
|
|
dbg-shared : STLPORT_LIB = -L${BASE_INSTALL_DIR}/lib -lstlportg.${LIB_VERSION}
|
|
stldbg-shared : STLPORT_LIB = -L${BASE_INSTALL_DIR}/lib -lstlportstlg.${LIB_VERSION}
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
ifdef _USE_NOSTDLIB
|
|
|
|
# Check whether gcc builded with --disable-shared
|
|
ifeq ($(shell ${CXX} ${CXXFLAGS} -print-file-name=libgcc_eh.a),libgcc_eh.a)
|
|
# gcc builded with --disable-shared, (no library libgcc_eh.a); all exception support in libgcc.a
|
|
_LGCC_EH :=
|
|
_LGCC_S := -lgcc
|
|
else
|
|
# gcc builded with --enable-shared (default)
|
|
ifdef USE_STATIC_LIBGCC
|
|
# if force usage of static libgcc, then exceptions support should be taken from libgcc_eh
|
|
_LGCC_EH := -lgcc_eh
|
|
_LGCC_S := -lgcc
|
|
else
|
|
# otherwise, exceptions support is in libgcc_s.so
|
|
_LGCC_EH :=
|
|
ifneq ($(OSNAME),darwin)
|
|
_LGCC_S := -lgcc_s
|
|
else
|
|
ifdef GCC_APPLE_CC
|
|
ifeq ($(MACOSX_TEN_FIVE),true)
|
|
_LGCC_S := -lgcc_s.10.5
|
|
else
|
|
_LGCC_S := -lgcc_s.10.4
|
|
endif
|
|
else
|
|
_LGCC_S := -lgcc_s
|
|
# end of GCC_APPLE_CC
|
|
endif
|
|
# end of Darwin
|
|
endif
|
|
# end of !USE_STATIC_LIBGCC
|
|
endif
|
|
# end of present libgcc_eh.a
|
|
endif
|
|
|
|
# ifeq ($(CXX_VERSION_MAJOR),3)
|
|
ifeq ($(OSNAME),linux)
|
|
START_OBJ := $(shell for o in crt1.o crti.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm
|
|
endif
|
|
|
|
ifeq ($(OSNAME),openbsd)
|
|
START_OBJ := $(shell for o in crt0.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
END_OBJ := $(shell for o in crtend.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm
|
|
endif
|
|
|
|
ifeq ($(OSNAME),freebsd)
|
|
# FreeBSD < 5.3 should use -lc_r, while FreeBSD >= 5.3 use -lpthread
|
|
PTHR := $(shell if [ ${OSREL_MAJOR} -gt 5 ] ; then echo "pthread" ; else if [ ${OSREL_MAJOR} -lt 5 ] ; then echo "c_r" ; else if [ ${OSREL_MINOR} -lt 3 ] ; then echo "c_r" ; else echo "pthread"; fi ; fi ; fi)
|
|
START_OBJ := $(shell for o in crt1.o crti.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -l${PTHR} -lc -lm
|
|
endif
|
|
|
|
ifeq ($(OSNAME),netbsd)
|
|
START_OBJ := $(shell for o in crt1.o crti.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm
|
|
endif
|
|
|
|
ifeq ($(OSNAME),sunos)
|
|
START_OBJ := $(shell for o in crt1.o crti.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm
|
|
endif
|
|
|
|
ifeq ($(OSNAME),darwin)
|
|
# sometimes crt3.o will required: it has __cxa_at_exit, but the same defined in libc.dyn
|
|
# at least in Mac OS X 10.4.10 (8R2218)
|
|
ifeq ($(CXX_VERSION_MAJOR),3)
|
|
# i.e. gcc 3.3
|
|
START_OBJ := $(shell for o in crt1.o crt2.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
|
|
else
|
|
START_OBJ := -lcrt1.o
|
|
endif
|
|
END_OBJ :=
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm -lsupc++ ${_LGCC_EH}
|
|
#LDFLAGS += -dynamic
|
|
endif
|
|
|
|
ifeq ($(OSNAME),cygming)
|
|
LDFLAGS += -nodefaultlibs
|
|
ifndef USE_STATIC_LIBGCC
|
|
ifeq ($(shell ${CXX} ${CXXFLAGS} -print-file-name=libgcc_s.a),libgcc_s.a)
|
|
_LGCC_S := -lgcc
|
|
else
|
|
_LGCC_S := -lgcc_s
|
|
endif
|
|
else
|
|
_LGCC_S := -lgcc
|
|
endif
|
|
ifeq ($(OSREALNAME),mingw)
|
|
STDLIBS = ${STLPORT_LIB} -lsupc++ ${_LGCC_S} -lmingw32 -lmingwex -lmsvcrt -lm -lmoldname -lcoldname -lkernel32
|
|
else
|
|
LDFLAGS += -Wl,-enable-auto-import
|
|
ifneq (,$(findstring no-cygwin,$(EXTRA_CXXFLAGS)))
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lmingw32 -lmingwex -lmsvcrt -lm -lmoldname -lcoldname -lkernel32
|
|
else
|
|
STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lm -lc -lpthread -lkernel32
|
|
endif
|
|
endif
|
|
else
|
|
LDFLAGS += -nostdlib
|
|
endif
|
|
|
|
# endif
|
|
# _USE_NOSTDLIB
|
|
else
|
|
ifndef USE_STATIC_LIBGCC
|
|
release-shared : LDFLAGS += -shared-libgcc
|
|
dbg-shared : LDFLAGS += -shared-libgcc
|
|
stldbg-shared : LDFLAGS += -shared-libgcc
|
|
endif
|
|
ifndef WITHOUT_STLPORT
|
|
STDLIBS = ${STLPORT_LIB}
|
|
else
|
|
STDLIBS =
|
|
endif
|
|
endif
|
|
|
|
# workaround for gcc 2.95.x bug:
|
|
ifeq ($(CXX_VERSION_MAJOR),2)
|
|
ifneq ($(OSNAME),cygming)
|
|
OPT += -fPIC
|
|
endif
|
|
endif
|