@ECHO OFF REM ************************************************************************** REM * REM * configure.bat for setting up compiling STLport under Windows REM * to see available options, call with option --help REM * REM * Copyright (C) 2004,2005 Michael Fink REM * REM ************************************************************************** REM Attention! Batch file labels only have 8 significant characters! echo STLport Configuration Tool for Windows echo. REM no options at all? if NOT "%1xyz123" == "xyz123" goto init echo Please specify at least the compiler you are going to use, echo use "configure --help" to see the available ones. goto skp_comp :init REM initially create/overwrite config.mak echo # STLport Configuration Tool for Windows > build\Makefiles\nmake\config.mak echo # >> build\Makefiles\nmake\config.mak echo # config.mak generated with command line: >> build\Makefiles\nmake\config.mak echo # configure %1 %2 %3 %4 %5 %6 %7 %8 %9 >> build\Makefiles\nmake\config.mak echo # >> build\Makefiles\nmake\config.mak REM First parameter can only be help or compiler REM help option if "%1" == "-?" goto opt_help if "%1" == "-h" goto opt_help if "%1" == "/?" goto opt_help if "%1" == "/h" goto opt_help if "%1" == "--help" goto opt_help REM This is necessarily a compiler goto opt_comp REM REM option loop REM :loop REM platform option if "%1" == "-p" goto opt_plat if "%1" == "/p" goto opt_plat if "%1" == "--platform" goto opt_plat REM cross compiling if "%1" == "-x" goto opt_x if "%1" == "/x" goto opt_x if "%1" == "--cross" goto opt_x REM C runtime library if "%1" == "--with-static-rtl" goto opt_srtl if "%1" == "--with-dynamic-rtl" goto opt_drtl if "%1" == "--rtl-static" goto opt_srtl if "%1" == "--rtl-dynamic" goto opt_drtl REM boost support if "%1" == "--use-boost" goto opt_bst REM multithreading support if "%1" == "--not-thread-safe" goto opt_st if "%1" == "--without-thread" goto opt_st REM rtti support if "%1" == "--no-rtti" goto opt_rtti if "%1" == "--without-rtti" goto opt_rtti REM additional compiler options if "%1" == "--extra-cxxflag" goto opt_xtra REM library name customization if "%1" == "--lib-motif" goto opt_motf if "%1" == "--with-lib-motif" goto opt_motf REM build without STLport if "%1" == "--without-stlport" goto no_sport REM clean rule if "%1" == "--clean" goto opt_cln echo Unknown option: %1 :cont_lp echo. shift REM no more options? if "%1xyz123" == "xyz123" goto end_loop goto loop REM ************************************************************************** REM * REM * Help REM * REM ************************************************************************** :opt_help echo The first parameter must be the compiler name, here are the available echo keywords: echo. echo msvc6 Microsoft Visual C++ 6.0 echo msvc7 Microsoft Visual C++ .NET 2002 echo msvc71 Microsoft Visual C++ .NET 2003 echo msvc8 Microsoft Visual C++ 2005 echo msvc9 Microsoft Visual C++ 2008 echo icl Intel C++ Compiler echo evc3 Microsoft eMbedded Visual C++ 3 (*) echo evc4 Microsoft eMbedded Visual C++ .NET (*) echo evc8 Microsoft Visual C++ 2005 compiling for CE echo evc9 Microsoft Visual C++ 2008 compiling for CE echo. echo (*) For these compilers the target processor is determined automatically. echo You must run the WCE*.BAT file you wish to build STLport for before echo running configure. echo. echo Then the following options are available: echo. echo "-p " or "--platform " echo Build STLport for the specified platform. Not all existing platforms are echo available, only the ones that make a difference when building STLport are. echo The following keywords are available: echo win95 Windows 95 compatible echo win98 Windows 98 and up to Windows XP excluded echo winxp Windows XP or later (default) echo. echo "-x" echo Enables cross-compiling; the result is that all built files that are echo normally put under "bin" and "lib" get extra subfolders depending on echo the compiler name. echo. echo "--with-static-rtl" echo "--with-dynamic-rtl" echo Enables usage of static (libc.lib family) or dynamic (msvcrt.lib family) echo C/C++ runtime library when linking with STLport. If you want your appli/dll echo to link statically with STLport but using the dynamic C runtime use echo --with-dynamic-rtl; if you want to link dynamicaly with STLport but using the echo static C runtime use --with-static-rtl. See README.options for details. echo Don't forget to signal the link method when building your appli or dll, in echo stlport/stl/config/host.h set the following macro depending on the configure echo option: echo "--with-static-rtl -> _STLP_USE_DYNAMIC_LIB" echo "--with-dynamic-rtl -> _STLP_USE_STATIC_LIB" echo. echo "--use-boost " echo Request use of boost support (www.boost.org). For the moment only the boost echo type_traits library is used to get type information and to implement some echo specific workaround not directly implemented by STLport. To use the same echo support when using STLport for your application don't forget to define echo _STLP_USE_BOOST_SUPPORT in stlport/stl/config/user_config.h file. echo. echo "--without-thread" echo Per default STLport libraries are built in order to be usable in a multithreaded echo context. If you don't need this you can ask for a not thread safe version with echo this option. echo. echo "--without-rtti" echo Remove rtti (run time type information) support if available. echo. echo "--extra-cxxflag " echo Use this option to add any compilation flag to the build system. For instance echo it can be used to activate a specific processor optimization depending on your echo processor. For Visual C++ .Net 2003, to activate pentium 3 optim you will use: echo --extra-cxxflag /G7 echo If you have several options use several --extra-cxxflag options. For instance echo to also force use of wchar_t as an intrinsic type: echo --extra-cxxflag /G7 --extra-cxxflag /Zc:wchar_t echo. echo "--with-lib-motif " echo Use this option to customize the generated library name. The motif will be used echo in the last place before version information, separated by an underscore, ex: echo stlportd_MOTIF.5.0.lib echo stlportstld_static_MOTIF.5.1.lib echo Do not forget to define _STLP_LIB_NAME_MOTIF macro in STLport configuration file echo to the same value if you want to keep the auto link feature supported by some echo compilers. echo. echo "--without-stlport" echo Option specially targetting build of the unit tests project without STLport. This echo is a good way to challenge the C++ Standard library implementation comming with echo your compiler with STLport. echo. echo "--clean" echo Removes the build configuration file. goto skp_comp REM ************************************************************************** REM * REM * Compiler configuration REM * REM ************************************************************************** :opt_comp if "%1" == "msvc6" goto oc_msvc6 if "%1" == "msvc71" goto oc_msv71 if "%1" == "msvc7" goto oc_msvc7 if "%1" == "msvc8" goto oc_msvc8 if "%1" == "msvc9" goto oc_msvc9 if "%1" == "icl" goto oc_icl if "%1" == "evc3" goto oc_evc3 if "%1" == "evc4" goto oc_evc4 if "%1" == "evc8" goto oc_evc8 if "%1" == "evc9" goto oc_evc9 if "%1" == "watcom" goto oc_wtm echo Unknown compiler: %1 goto oc_end :oc_msvc6 :oc_wtm echo Setting compiler: Microsoft Visual C++ 6.0 echo COMPILER_NAME=vc6 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=60 goto oc_msvc :oc_msvc7 echo Setting compiler: Microsoft Visual C++ .NET 2002 echo COMPILER_NAME=vc70 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=70 goto oc_msvc :oc_msv71 echo Setting compiler: Microsoft Visual C++ .NET 2003 echo COMPILER_NAME=vc71 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=71 goto oc_msvc :oc_msvc8 echo Setting compiler: Microsoft Visual C++ 2005 echo COMPILER_NAME=vc8 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=80 goto oc_msvc :oc_msvc9 echo Setting compiler: Microsoft Visual C++ 2008 echo COMPILER_NAME=vc9 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=90 goto oc_msvc :oc_msvc echo TARGET_OS=x86 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER=msvc echo !include msvc.mak > .\build\lib\Makefile echo !include msvc.mak > .\build\test\unit\Makefile echo !include msvc.mak > .\build\test\eh\Makefile goto oc_end :oc_icl echo Setting compiler: Intel C++ Compiler echo COMPILER_NAME=icl >> build\Makefiles\nmake\config.mak echo TARGET_OS=x86 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER=icl echo !include icl.mak > .\build\lib\Makefile echo !include icl.mak > .\build\test\unit\Makefile echo !include icl.mak > .\build\test\eh\Makefile goto oc_end :oc_evc3 echo Setting compiler: Microsoft eMbedded Visual C++ 3 echo COMPILER_NAME=evc3 >> build\Makefiles\nmake\config.mak rem TODO: branch on OSVERSION like below? echo CEVERSION=300 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=3 goto oc_evc :oc_evc4 echo Setting compiler: Microsoft eMbedded Visual C++ .NET echo COMPILER_NAME=evc4 >> build\Makefiles\nmake\config.mak if "%OSVERSION%"=="" ( echo OSVERSION not set, assuming target is CE 4.2 echo CEVERSION=420 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE400" ( echo CEVERSION=400 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE420" ( echo CEVERSION=420 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE500" ( echo CEVERSION=500 >> build\Makefiles\nmake\config.mak ) else ( echo Unknown value for OSVERSION. exit /b 1 ) set SELECTED_COMPILER_VERSION=4 goto oc_evc :oc_evc8 echo Setting compiler: Microsoft Visual C++ .NET 2005 for Windows CE echo COMPILER_NAME=evc8 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=80 if "%OSVERSION%"=="" ( echo OSVERSION not set, assuming target is CE 5.0 echo CEVERSION=500 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE400" ( echo CEVERSION=400 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE420" ( echo CEVERSION=420 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE500" ( echo CEVERSION=500 >> build\Makefiles\nmake\config.mak ) else ( echo Unknown value for OSVERSION. exit /b 1 ) set PLATFORM_SPECIFIED=1 set SELECTED_COMPILER=msvc echo !include evc.mak > .\build\lib\Makefile echo !include evc.mak > .\build\test\unit\Makefile echo !include evc.mak > .\build\test\eh\Makefile goto proc :oc_evc9 echo Setting compiler: Microsoft Visual C++ .NET 2008 for Windows CE echo COMPILER_NAME=evc9 >> build\Makefiles\nmake\config.mak set SELECTED_COMPILER_VERSION=90 if "%OSVERSION%"=="" ( echo OSVERSION not set, assuming target is CE 5.0 echo CEVERSION=500 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE400" ( echo CEVERSION=400 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE420" ( echo CEVERSION=420 >> build\Makefiles\nmake\config.mak ) else if "%OSVERSION%"=="WCE500" ( echo CEVERSION=500 >> build\Makefiles\nmake\config.mak ) else ( echo Unknown value for OSVERSION. exit /b 1 ) set PLATFORM_SPECIFIED=1 set SELECTED_COMPILER=msvc echo !include evc.mak > .\build\lib\Makefile echo !include evc.mak > .\build\test\unit\Makefile echo !include evc.mak > .\build\test\eh\Makefile goto proc :oc_evc set PLATFORM_SPECIFIED=1 set SELECTED_COMPILER=evc echo !include evc.mak > .\build\lib\Makefile echo !include evc.mak > .\build\test\unit\Makefile echo !include evc.mak > .\build\test\eh\Makefile goto proc :oc_end goto cont_lp REM ************************************************************************** REM * REM * Target processor configuration (automatic) REM * REM ************************************************************************** :proc if "%TARGETCPU%" == "ARM" goto pr_arm if "%TARGETCPU%" == "ARMV4" goto pr_arm if "%TARGETCPU%" == "ARMV4I" goto pr_arm if "%TARGETCPU%" == "ARMV4T" goto pr_arm if "%TARGETCPU%" == "X86" goto pr_x86 REM Type from evc3 and/or PocketPC 2002 SDK reported here REM to correctly check the platform: if "%TARGETCPU%" == "X86EMnset CFG=none" goto pr_emul if "%TARGETCPU%" == "x86" goto pr_x86 if "%TARGETCPU%" == "emulator" goto pr_emul if "%TARGETCPU%" == "R4100" goto pr_mips if "%TARGETCPU%" == "R4111" goto pr_mips if "%TARGETCPU%" == "R4300" goto pr_mips if "%TARGETCPU%" == "MIPS16" goto pr_mips if "%TARGETCPU%" == "MIPSII" goto pr_mips if "%TARGETCPU%" == "MIPSII_FP" goto pr_mips if "%TARGETCPU%" == "MIPSIV" goto pr_mips if "%TARGETCPU%" == "MIPSIV_FP" goto pr_mips if "%TARGETCPU%" == "SH3" goto pr_sh3 if "%TARGETCPU%" == "SH4" goto pr_sh4 :pr_err echo Unknown target CPU: %TARGETCPU% goto pr_end :pr_arm echo Target processor: ARM echo TARGET_PROC=arm >> build\Makefiles\nmake\config.mak echo TARGET_PROC_SUBTYPE=%TARGETCPU% >> build\Makefiles\nmake\config.mak goto pr_end :pr_x86 echo Target processor: x86 echo TARGET_PROC=x86 >> build\Makefiles\nmake\config.mak goto pr_end :pr_emul echo Target processor: Emulator echo TARGET_PROC=x86 >> build\Makefiles\nmake\config.mak echo TARGET_PROC_SUBTYPE=emulator >> build\Makefiles\nmake\config.mak goto pr_end :pr_mips echo Target processor: MIPS echo TARGET_PROC=mips >> build\Makefiles\nmake\config.mak echo TARGET_PROC_SUBTYPE=%TARGETCPU% >> build\Makefiles\nmake\config.mak goto pr_end :pr_sh3 echo Target processor: %TARGETCPU% echo TARGET_PROC=sh3 >> build\Makefiles\nmake\config.mak goto pr_end :pr_sh4 echo Target processor: %TARGETCPU% echo TARGET_PROC=sh4 >> build\Makefiles\nmake\config.mak goto pr_end :pr_end goto oc_end REM ************************************************************************** REM * REM * Platform configuration REM * REM ************************************************************************** :opt_plat if "%2" == "win95" goto op_win95 if "%2" == "win98" goto op_win98 if "%2" == "winxp" goto op_winxp echo Unknown platform: %2 goto op_end :op_win95 echo Setting platform: Windows 95 echo WINVER=0x0400 >> build\Makefiles\nmake\config.mak set PLATFORM_SPECIFIED=1 goto op_end :op_win98 echo Setting platform: Windows 98 echo WINVER=0x0410 >> build\Makefiles\nmake\config.mak set PLATFORM_SPECIFIED=1 goto op_end :op_winxp echo Setting platform: Windows XP echo WINVER=0x0501 >> build\Makefiles\nmake\config.mak set PLATFORM_SPECIFIED=1 goto op_end :op_end shift goto cont_lp REM ************************************************************************** REM * REM * Cross Compiling option REM * REM ************************************************************************** :opt_x echo Setting up for cross compiling. echo CROSS_COMPILING=1 >> build\Makefiles\nmake\config.mak goto cont_lp REM ************************************************************************** REM * REM * C runtime library selection REM * REM ************************************************************************** :opt_srtl if "%SELECTED_COMPILER%" == "msvc" goto or_sok goto or_err :opt_drtl if "%SELECTED_COMPILER%" == "msvc" goto or_dok goto or_err :or_err echo Error: Setting C runtime library for compiler other than microsoft ones! goto or_end :or_sok echo Selecting static C runtime library for STLport echo WITH_STATIC_RTL=1 >> build\Makefiles\nmake\config.mak goto or_end :or_dok echo Selecting dynamic C runtime library for STLport echo WITH_DYNAMIC_RTL=1 >> build\Makefiles\nmake\config.mak goto or_end :or_end goto cont_lp REM ************************************************************************** REM * REM * boost support REM * REM ************************************************************************** :opt_bst REM if (Exists("%2")) goto ob_ok REM if !("%2" == "") goto ob_ok goto ob_ok echo Error: Invalid boost intallation folder ("%2"). goto ob_end :ob_ok echo Activating boost support using "%2" path echo STLP_BUILD_BOOST_PATH="%2" >> build\Makefiles\nmake\config.mak :ob_end shift goto cont_lp REM ************************************************************************** REM * REM * Multithreading support REM * REM ************************************************************************** :opt_st echo Removing thread safety support echo WITHOUT_THREAD=1 >> build\Makefiles\nmake\config.mak goto cont_lp REM ************************************************************************** REM * REM * rtti support REM * REM ************************************************************************** :opt_rtti echo Removing rtti support echo WITHOUT_RTTI=1 >> build\Makefiles\nmake\config.mak goto cont_lp REM ************************************************************************** REM * REM * Extra compilation flags REM * REM ************************************************************************** :opt_xtra echo Adding '%2' compilation option if "%ONE_OPTION_ADDED%" == "1" goto ox_n echo DEFS = %2 >> build\Makefiles\nmake\config.mak set ONE_OPTION_ADDED=1 goto ox_end :ox_n echo DEFS = $(DEFS) %2 >> build\Makefiles\nmake\config.mak :ox_end shift goto cont_lp REM ************************************************************************** REM * REM * Library name configuration REM * REM ************************************************************************** :opt_motf echo Using '%2' in generated library names echo LIB_MOTIF = %2 >> build\Makefiles\nmake\config.mak shift goto cont_lp REM ************************************************************************** REM * REM * Build without STLport REM * REM ************************************************************************** :no_sport echo Configured to build without STLport echo WITHOUT_STLPORT=1 >> build\Makefiles\nmake\config.mak shift goto cont_lp REM ************************************************************************** REM * REM * Clean REM * REM ************************************************************************** :opt_cln del build\Makefiles\nmake\config.mak echo STLport configuration file removed. goto skp_comp REM ************************************************************************** REM * REM * End loop REM * REM ************************************************************************** :end_loop if "%PLATFORM_SPECIFIED%" == "1" goto comp echo Setting platform: Windows XP echo. echo WINVER=0x0501 >> build\Makefiles\nmake\config.mak :comp echo Done configuring STLport. echo. echo Go to build/lib folder and type "nmake clean install" to build and echo install STLport to the "lib" and "bin" folders. echo Go to build/test/unit folder and type nmake clean install to echo build unit tests and install them in bin folder. echo. :skp_comp set SELECTED_COMPILER= set SELECTED_COMPILER_VERSION= set ONE_OPTION_ADDED= set PLATFORM_SPECIFIED=