diff --git a/xmpsdk/buildXMPsdk.cmd b/xmpsdk/buildXMPsdk.cmd index fdc06b90..43f4b6f5 100644 --- a/xmpsdk/buildXMPsdk.cmd +++ b/xmpsdk/buildXMPsdk.cmd @@ -1,14 +1,17 @@ @echo off -REM buildXMPsdk.cmd +rem ---- +rem buildXMPsdk.cmd setlocal enableextensions +set "_THIS_=%0%" GOTO main :help -echo Options: --help ^| --2016 ^| --2014 ^| --2013 ^| --64 ^| --32 +echo %_THIS_% [Options] +echo Options: --help ^| --2016 ^| --2014 ^| --2013 ^| --64 ^| --32 ^| --rebuild exit /b 0 :main -REM +rem ---- rem always run this script in /xmpsdk cd %~dp0 @@ -30,8 +33,9 @@ if /I "%1" == "32" set "_BIT_=32" if /I "%1" == "64" set "_BIT_=64" if /I "%1" == "--verbose" echo on - +if /I "%1" == "--silent" set _SILENT_=1 if /I "%1" == "--help" call:help && goto end +if /I "%1" == "--rebuild" set _REBUILD_=1 shift if not (%1) EQU () goto GETOPTS @@ -39,24 +43,32 @@ if not (%1) EQU () goto GETOPTS if /I "%_SDK_%" == "2013" ( set "_SDK_=XMP-Toolkit-SDK-CC201306" set "_ZIP_=XMP-Toolkit-SDK-CC-201306" + set "_VC_=vc10" ) if /I "%_SDK_%" == "2014" ( set "_SDK_=XMP-Toolkit-SDK-CC201412" set "_ZIP_=XMP-Toolkit-SDK-CC201412" + set "_VC_=vc11" ) if /I "%_SDK_%" == "2016" ( set "_SDK_=XMP-Toolkit-SDK-CC201607" set "_ZIP_=XMP-Toolkit-SDK-CC201607" + set "_VC_=vc14" ) -REM +if DEFINED _REBUILD_ if EXIST Adobe\%_SDK_% rmdir/s/q Adobe\%_SDK_% + +rem ---- rem if it's already built, we're done -if EXIST Adobe\%_SDK_%\libXMPCore.lib ( - dir Adobe\%_SDK_%\libXMPCore.lib - exit /b 0 +set "_TARGET_=Adobe\%_SDK_%\public\doesntexist +if /I %_BIT_% == 64 set "_TARGET_=Adobe\%_SDK_%\public\libraries\windows_x64\Release\XMPCoreStatic.lib" +if /I %_BIT_% == 32 set "_TARGET_=Adobe\%_SDK_%\public\libraries\windows\Release\XMPCoreStatic.lib" +if EXIST %_TARGET_% ( + dir %_TARGET_% + GOTO end ) -REM +rem ---- rem Test the VC Environment IF NOT DEFINED VSINSTALLDIR ( echo "VSINSTALLDIR not set. Run vcvars32.bat or vcvarsall.bat or vcvars.bat ***" @@ -67,9 +79,35 @@ IF NOT EXIST "%VSINSTALLDIR%" ( GOTO error_end ) +rem ---- +call:echo testing 7z is on path +7z > NUL +IF ERRORLEVEL 1 ( + echo "*** please ensure 7z.exe is on the PATH ***" + GOTO error_end +) + +rem ---- +call:echo testing curl is on path +curl --version > NUL +IF ERRORLEVEL 1 ( + echo "*** please ensure cmake.exe is on the PATH ***" + GOTO error_end +) + +rem ---- +call:echo testing my_echo is on path +if NOT EXIST my_echo.exe cl my_echo.cpp /o my_echo.exe + +my_echo --version > NUL +IF ERRORLEVEL 1 ( + echo "*** please ensure my_echo.exe is on the PATH ***" + GOTO error_end +) + call:report -REM +rem ---- rem Download the code from Adobe if NOT EXIST Adobe\%_SDK_% ( if NOT EXIST Adobe mkdir Adobe @@ -81,52 +119,81 @@ if NOT EXIST Adobe\%_SDK_% ( ) if NOT EXIST Adobe\%_SDK_% ( - echo *** ERROR SDK = Adobe\%_SDK_% not found" >2 + echo *** ERROR SDK = Adobe\%_SDK_% not found" GOTO error_end ) -REM +rem ---- rem Copy in the third-party files xcopy/yesihq third-party\zlib Adobe\%_SDK_%\third-party\zlib xcopy/yesihq third-party\expat\lib Adobe\%_SDK_%\third-party\expat\lib xcopy/yesihq third-party\zuid\interfaces Adobe\%_SDK_%\third-party\zuid\interfaces -REM -rem generate the build the SDK +rem ---- +rem generate and build the SDK cd Adobe\%_SDK_%\build -dir -c:\cygwin64\bin\echo -n 5 | call GenerateXMPToolkitSDK_win.bat -cd .. -REM -rem build it! -echo --------------------------------------- -echo devenv XMPCore\build\vc14\static\windows_x64\XMPCore64.sln /Build "Release|x64" -echo --------------------------------------- - devenv XMPCore\build\vc14\static\windows_x64\XMPCore64.sln /Build "Release|x64" -dir/s *.lib - - -REM +set + +if /I %_BIT_% == 64 ( + %_BUILDDIR_%\my_echo 5 | call GenerateXMPToolkitSDK_win.bat + devenv %_VC_%\static\windows_x64\XMPToolkitSDK64.sln /Build "Release|x64" /ProjectConfig XMPCoreStatic +) + +if /I %_BIT_% == 32 ( + %_BUILDDIR_%\my_echo 3 | call GenerateXMPToolkitSDK_win.bat + devenv %_VC_%\static\windows\XMPToolkitSDK.sln /Build "Release|Win32" /ProjectConfig XMPCoreStatic +) +cd ..\..\.. + +rem ------------------------------------------------------------------------------ +rem The Adobe script GeneratXMPToolkitSDK_win.bat +rem use the CMake Generators "Visual Studio 14 2015 Win64" and "Visual Studio 14 2015" +rem CMake provides more generators +rem Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. +rem Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. +rem Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. +rem Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. +rem Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files. +rem Visual Studio 8 2005 [arch] = Generates Visual Studio 2005 project files. +rem Adobe generate the Visual Studio Solution with the CMake command: +rem cmake ../../../. ^ +rem -G"Visual Studio 14 2015 Win64" ^ or -G"Visual Studio 14 2015 Win64" +rem -DXMP_CMAKEFOLDER_NAME="vc14/static/windows_x64" ^ +rem -DCMAKE_CL_64=ON ^ +rem -DCMAKE_ARCH=x64 ^ or -DCMAKE_ARCH=x64=x86 +rem -DXMP_BUILD_WARNING_AS_ERROR=ON ^ +rem -DXMP_BUILD_STATIC=ON +rem -DCMAKE_BUILD_TYPE=Release +rem I believe it's possible to build for other versions of Visual Studio +rem However I have never been tested this +rem ------------------------------------------------------------------------------ + +cd "%_BUILDDIR_%" +dir/s XMPCoreStatic.lib +GOTO end + +rem ----------------------------------------- +rem Functions + +rem ---- rem normal end :end endlocal exit /b 0 -REM ----------------------------------------- -rem Functions -REM +rem ---- rem echo (or don't if --silent). syntax: call:echo args ... :echo if NOT DEFINED _SILENT_ echo %*% exit /b 0 -REM +rem ---- rem end with an error syntax: call:error_end :error_end endlocal exit /b 1 -REM +rem ---- rem report settings :report echo.sdk = %_SDK_% @@ -138,4 +205,4 @@ echo ---------------------------------- exit /b 0 rem That's all Folks! -REM +rem ---- diff --git a/xmpsdk/my_echo.cpp b/xmpsdk/my_echo.cpp new file mode 100644 index 00000000..98930558 --- /dev/null +++ b/xmpsdk/my_echo.cpp @@ -0,0 +1,10 @@ +#include +int main(int argc,const char** argv) +{ + int args = argc; + while ( --argc ) { + printf("%s",argv[args-argc]); + if ( argc > 1 ) printf(" "); + } + return 0; +} \ No newline at end of file