mirror of
https://github.com/reactos/reactos.git
synced 2024-11-10 16:48:16 +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
333 lines
No EOL
10 KiB
Bash
333 lines
No EOL
10 KiB
Bash
#!/bin/sh
|
|
|
|
# Time-stamp: <08/06/07 15:22:19 yeti>
|
|
|
|
base=`cd \`dirname $0\`; echo $PWD`
|
|
|
|
configmak=$base/build/Makefiles/gmake/config.mak
|
|
|
|
write_option() {
|
|
target=`echo $1 | sed -e 's/^[^=]*=//'`
|
|
echo $2 := $3$target >> ${configmak}
|
|
}
|
|
|
|
write_over_option() {
|
|
target=`echo $1 | sed -e 's/^[^=]*=//'`
|
|
echo $2 ?= $target >> ${configmak}
|
|
}
|
|
|
|
print_help() {
|
|
cat <<EOF
|
|
Configuration utility.
|
|
|
|
Usage:
|
|
|
|
configure [options]
|
|
|
|
Available options:
|
|
|
|
--prefix=<dir> base install path (/usr/local/)
|
|
--bindir=<dir> install path for executables (PREFIX/bin)
|
|
--libdir=<dir> install path for libraries (PREFIX/lib)
|
|
--includedir=<dir> install path for headers (PREFIX/include)
|
|
|
|
--target=<target> target platform (cross-compiling)
|
|
|
|
--help print this help message and exit
|
|
|
|
--with-stlport=<dir> use STLport in catalog <dir>
|
|
--without-stlport compile without STLport
|
|
--with-boost=<dir> use boost headers in catalog <dir>
|
|
--with-system-boost use boost installed on this system
|
|
--with-msvc=<dir> use MS VC from this catalog
|
|
--with-mssdk=<dir> use MS SDK from this catalog
|
|
--with-extra-cxxflags=<options>
|
|
pass extra options to C++ compiler
|
|
--with-extra-cflags=<options>
|
|
pass extra options to C compiler
|
|
--with-extra-ldflags=<options>
|
|
pass extra options to linker (via C/C++)
|
|
--use-static-gcc use static gcc libs instead of shared libgcc_s (useful for gcc compiler,
|
|
that was builded with --enable-shared [default]; if compiler was builded
|
|
with --disable-shared, static libraries will be used in any case)
|
|
--clean remove custom settings (file ${configmak})
|
|
and use default values
|
|
--with-cxx=<name> use <name> as C++ compiler (use --target= for cross-compilation)
|
|
--with-cc=<name> use <name> as C compiler (use --target= for cross-compilation)
|
|
--use-compiler-family=<name> use compiler family; one of:
|
|
gcc GNU compilers (default)
|
|
icc Intel compilers
|
|
aCC HP's aCC compilers
|
|
CC SunPro's CC compilers
|
|
bcc Borland's compilers
|
|
--without-debug don't build debug variant
|
|
--without-stldebug don't build STLport's STLP_DEBUG mode
|
|
--enable-static build static
|
|
--disable-shared don't build shared
|
|
--with-lib-motif=<motif>
|
|
Use this option to customize the generated library name.
|
|
The motif will be used in the last place before version information,
|
|
separated by an underscore, ex:
|
|
stlportd_MOTIF.5.0.lib
|
|
stlportstld_static_MOTIF.5.1.lib
|
|
--without-thread Per default STLport libraries are built in order to be usable
|
|
in a multithreaded context. If you don't need this you can ask
|
|
for a not thread safe version with this option.
|
|
--without-rtti Disable RTTI when building libraries.
|
|
--with-static-rtl
|
|
--with-dynamic-rtl
|
|
Enables usage of static (libc.lib family) or dynamic (msvcrt.lib family)
|
|
C/C++ runtime library when linking with STLport. If you want your appli/dll
|
|
to link statically with STLport but using the dynamic C runtime use
|
|
--with-dynamic-rtl; if you want to link dynamicaly with STLport but using the
|
|
static C runtime use --with-static-rtl. See README.options for details.
|
|
Don't forget to signal the link method when building your appli or dll, in
|
|
stlport/stl/config/host.h set the following macro depending on the configure
|
|
option:
|
|
--with-static-rtl -> _STLP_USE_DYNAMIC_LIB"
|
|
--with-dynamic-rtl -> _STLP_USE_STATIC_LIB"
|
|
--windows-platform=<name>
|
|
Targetted OS when building for Windows; one of:
|
|
win95 Windows 95
|
|
win98 Windows 98
|
|
winxp Windows XP and later (default)
|
|
|
|
Environment variables:
|
|
|
|
\$CXX C++ compiler name (use --target= for cross-compilation)
|
|
\$CC C compiler name (use --target= for cross-compilation)
|
|
\$CXXFLAGS pass extra options to C++ compiler
|
|
\$CFLAGS pass extra options to C compiler
|
|
\$LDFLAGS pass extra options to linker (via C/C++)
|
|
|
|
Options has preference over environment variables.
|
|
|
|
EOF
|
|
}
|
|
|
|
default_settings () {
|
|
# if [ "$boost_set" = "" ]; then
|
|
# write_option "${PWD}/external/boost" BOOST_DIR
|
|
# fi
|
|
|
|
# if [ -z "${stlport_set}" ]; then
|
|
# write_over_option "$base" STLPORT_DIR
|
|
# fi
|
|
|
|
# Set in Makefiles/gmake/top.mak
|
|
if [ -z "${compiler_family_set}" ]; then
|
|
# write_option gcc COMPILER_NAME
|
|
echo include gcc.mak > ${base}/build/lib/Makefile
|
|
echo include gcc.mak > ${base}/build/test/unit/Makefile
|
|
echo include gcc.mak > ${base}/build/test/eh/Makefile
|
|
fi
|
|
|
|
# Set in Makefiles/gmake/targetdirs.mak
|
|
# if [ -z "${prefix_set}" ]; then
|
|
# write_option "/usr/local" BASE_INSTALL_DIR '${DESTDIR}'
|
|
# fi
|
|
}
|
|
|
|
[ $# -eq 0 ] && { >${configmak}; default_settings; exit 0; }
|
|
|
|
for a in $@ ; do
|
|
case $a in
|
|
--help)
|
|
print_help
|
|
exit 0
|
|
;;
|
|
--clean)
|
|
rm -f ${configmak}
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
>${configmak}
|
|
|
|
while :
|
|
do
|
|
case $# in
|
|
0)
|
|
break
|
|
;;
|
|
esac
|
|
option="$1"
|
|
shift
|
|
case $option in
|
|
--target=*)
|
|
write_option "$option" TARGET_OS
|
|
target_set=y
|
|
;;
|
|
--with-stlport=*)
|
|
write_option "$option" STLPORT_DIR
|
|
stlport_set=y
|
|
;;
|
|
--without-stlport)
|
|
write_option 1 WITHOUT_STLPORT
|
|
stlport_set=y
|
|
;;
|
|
--with-boost=*)
|
|
write_option "$option" BOOST_DIR
|
|
;;
|
|
--with-system-boost)
|
|
write_option 1 USE_SYSTEM_BOOST
|
|
;;
|
|
--with-msvc=*)
|
|
write_option "$option" MSVC_DIR
|
|
;;
|
|
--with-mssdk=*)
|
|
write_option "$option" MSSDK_DIR
|
|
;;
|
|
--with-extra-cxxflags=*)
|
|
write_option "$option" EXTRA_CXXFLAGS
|
|
cxxflags_set=y
|
|
;;
|
|
--with-extra-cflags=*)
|
|
write_option "$option" EXTRA_CFLAGS
|
|
cflags_set=y
|
|
;;
|
|
--with-extra-ldflags=*)
|
|
write_option "$option" EXTRA_LDFLAGS
|
|
ldflags_set=y
|
|
;;
|
|
--with-lib-motif=*)
|
|
echo "Using $option in generated library names"
|
|
write_option "$option" LIB_MOTIF
|
|
;;
|
|
--without-thread)
|
|
write_option 1 WITHOUT_THREAD
|
|
;;
|
|
--without-rtti)
|
|
write_option 1 WITHOUT_RTTI
|
|
;;
|
|
--with-dynamic-rtl)
|
|
write_option 1 WITH_DYNAMIC_RTL
|
|
;;
|
|
--with-static-rtl)
|
|
write_option 1 WITH_STATIC_RTL
|
|
;;
|
|
--use-static-gcc)
|
|
write_option 1 USE_STATIC_LIBGCC
|
|
;;
|
|
--without-debug)
|
|
write_option 1 _NO_DBG_BUILD
|
|
;;
|
|
--without-stldebug)
|
|
write_option 1 _NO_STLDBG_BUILD
|
|
;;
|
|
--enable-static)
|
|
write_option 1 _STATIC_BUILD
|
|
;;
|
|
--disable-shared)
|
|
write_option 1 _NO_SHARED_BUILD
|
|
;;
|
|
--with-cxx=*)
|
|
write_option "$option" _FORCE_CXX
|
|
cxx_set=y
|
|
;;
|
|
--with-cc=*)
|
|
write_option "$option" _FORCE_CC
|
|
cc_set=y
|
|
;;
|
|
--use-compiler-family=*)
|
|
case `echo $option | sed -e 's/^[^=]*=//'` in
|
|
gcc|icc|aCC|CC|bcc|dmc)
|
|
target=`echo $option | sed -e 's/^[^=]*=//'`
|
|
echo COMPILER_NAME := $target >> ${configmak}
|
|
echo include $target.mak > ${base}/build/lib/Makefile
|
|
echo include $target.mak > ${base}/build/test/unit/Makefile
|
|
echo include $target.mak > ${base}/build/test/eh/Makefile
|
|
;;
|
|
*)
|
|
echo "Not supported compilers family"
|
|
exit -1
|
|
;;
|
|
esac
|
|
compiler_family_set=y
|
|
;;
|
|
--prefix=*)
|
|
write_option "$option" BASE_INSTALL_DIR '${DESTDIR}'
|
|
prefix_set=y
|
|
;;
|
|
--bindir=*)
|
|
write_option "$option" INSTALL_BIN_DIR '${DESTDIR}'
|
|
;;
|
|
--libdir=*)
|
|
write_option "$option" INSTALL_LIB_DIR '${DESTDIR}'
|
|
;;
|
|
--includedir=*)
|
|
write_option "$option" INSTALL_HDR_DIR '${DESTDIR}'
|
|
;;
|
|
--windows-platform=*)
|
|
case `echo $option | sed -e 's/^[^=]*=//'` in
|
|
win95)
|
|
write_option 0x0400 WINVER
|
|
;;
|
|
win98)
|
|
write_option 0x0410 WINVER
|
|
;;
|
|
winxp)
|
|
write_option 0x0501 WINVER
|
|
;;
|
|
*)
|
|
echo "Not supported windows platform"
|
|
exit -1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "Unknown configuration option '$option'"
|
|
exit -1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -n "${CXX}" ]; then
|
|
if [ -n "${cxx_set}" ]; then
|
|
echo "Both --with-cxx and \$CXX set, using the first"
|
|
elif [ -z "${target_set}" ]; then
|
|
write_option "${CXX}" _FORCE_CXX
|
|
else
|
|
echo "For cross-compilation with gcc use --target option only"
|
|
fi
|
|
if [ -z "${CC}" -a -z "${cc_set}" ]; then
|
|
echo "\$CXX set, but I don't see \$CC!"
|
|
fi
|
|
fi
|
|
|
|
if [ -n "${CC}" ]; then
|
|
if [ -n "${cxx_set}" ]; then
|
|
echo "Both --with-cc and \$CC set, using the first"
|
|
else
|
|
write_option "${CC}" _FORCE_CC
|
|
fi
|
|
fi
|
|
|
|
if [ -n "${CXXFLAGS}" ]; then
|
|
if [ -z "${cxxflags_set}" ]; then
|
|
write_option "${CXXFLAGS}" EXTRA_CXXFLAGS
|
|
else
|
|
echo "Both --with-extra-cxxflags and \$CXXFLAGS set, using the first"
|
|
fi
|
|
fi
|
|
|
|
if [ -n "${CFLAGS}" ]; then
|
|
if [ -z "${cflags_set}" ]; then
|
|
write_option "${CFLAGS}" EXTRA_CFLAGS
|
|
else
|
|
echo "Both --with-extra-cflags and \$CFLAGS set, using the first"
|
|
fi
|
|
fi
|
|
|
|
if [ -n "${LDFLAGS}" ]; then
|
|
if [ -z "${ldflags_set}" ]; then
|
|
write_option "${LDFLAGS}" EXTRA_LDFLAGS
|
|
else
|
|
echo "Both --with-extra-ldflags and \$LDFLAGS set, using the first"
|
|
fi
|
|
fi
|
|
|
|
# default settings
|
|
|
|
default_settings |