From 1e3d9b9e5dd03e5b5547585cf757044bb828334a Mon Sep 17 00:00:00 2001 From: James Zern Date: Mon, 2 Jun 2014 15:58:32 -0700 Subject: [PATCH 1/3] build/msvs: fix builds in source dirs with spaces ...when configured below the path containing spaces. configuring outside the path containing spaces still won't work due to issues with the makefiles, e.g., /path with spaces/git /path with spaces/build1 /build2 configure/make in build1 will work, build2 will not Change-Id: Ie4a1f313596d7457cadd67476ac1dbd3273ad46e --- build/arm-msvs/obj_int_extract.bat | 4 ++-- build/make/gen_msvs_proj.sh | 6 +++--- build/make/gen_msvs_vcxproj.sh | 6 +++--- build/x86-msvs/obj_int_extract.bat | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/build/arm-msvs/obj_int_extract.bat b/build/arm-msvs/obj_int_extract.bat index 267ed61d5..c0987bcf7 100644 --- a/build/arm-msvs/obj_int_extract.bat +++ b/build/arm-msvs/obj_int_extract.bat @@ -11,8 +11,8 @@ REM Arguments: REM %1 - Relative path to the directory containing the vp8 and vpx_scale REM source directories. REM %2 - Path to obj_int_extract.exe. -cl /I "./" /I "%1" /nologo /c /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP "%1/vp8/encoder/vp8_asm_enc_offsets.c" +cl /I. /I%1 /nologo /c /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP "%~1/vp8/encoder/vp8_asm_enc_offsets.c" %2\obj_int_extract.exe rvds "vp8_asm_enc_offsets.obj" > "vp8_asm_enc_offsets.asm" -cl /I "./" /I "%1" /nologo /c /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP "%1/vpx_scale/vpx_scale_asm_offsets.c" +cl /I. /I%1 /nologo /c /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP "%~1/vpx_scale/vpx_scale_asm_offsets.c" %2\obj_int_extract.exe rvds "vpx_scale_asm_offsets.obj" > "vpx_scale_asm_offsets.asm" diff --git a/build/make/gen_msvs_proj.sh b/build/make/gen_msvs_proj.sh index 4e803b81e..c6fef0d99 100755 --- a/build/make/gen_msvs_proj.sh +++ b/build/make/gen_msvs_proj.sh @@ -67,7 +67,7 @@ generate_filter() { if [ "${f##*.}" == "$pat" ]; then unset file_list[i] - objf=$(echo ${f%.*}.obj | sed -e 's/^[\./]\+//g' -e 's,[:/],_,g') + objf=$(echo ${f%.*}.obj | sed -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') open_tag File RelativePath="$f" if [ "$pat" == "asm" ] && $asm_use_custom_step; then @@ -153,7 +153,7 @@ for opt in "$@"; do opt=${opt##-I} opt=$(fix_path "$opt") incs="${incs}${incs:+;}"${opt}"" - yasmincs="${yasmincs} -I${opt}" + yasmincs="${yasmincs} -I"${opt}"" ;; -D*) defines="${defines}${defines:+;}${opt##-D}" ;; @@ -300,7 +300,7 @@ generate_vcproj() { vpx) tag Tool \ Name="VCPreBuildEventTool" \ - CommandLine="call obj_int_extract.bat $src_path_bare $plat_no_ws\\\$(ConfigurationName)" \ + CommandLine="call obj_int_extract.bat "$src_path_bare" $plat_no_ws\\\$(ConfigurationName)" \ tag Tool \ Name="VCCLCompilerTool" \ diff --git a/build/make/gen_msvs_vcxproj.sh b/build/make/gen_msvs_vcxproj.sh index 8529eed24..60a56c95e 100755 --- a/build/make/gen_msvs_vcxproj.sh +++ b/build/make/gen_msvs_vcxproj.sh @@ -78,7 +78,7 @@ generate_filter() { if [ "${f##*.}" == "$pat" ]; then unset file_list[i] - objf=$(echo ${f%.*}.obj | sed -e 's/^[\./]\+//g' -e 's,[:/],_,g') + objf=$(echo ${f%.*}.obj | sed -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') if ([ "$pat" == "asm" ] || [ "$pat" == "s" ]) && $asm_use_custom_step; then # Avoid object file name collisions, i.e. vpx_config.c and @@ -175,7 +175,7 @@ for opt in "$@"; do opt=${opt##-I} opt=$(fix_path "$opt") incs="${incs}${incs:+;}"${opt}"" - yasmincs="${yasmincs} -I${opt}" + yasmincs="${yasmincs} -I"${opt}"" ;; -D*) defines="${defines}${defines:+;}${opt##-D}" ;; @@ -392,7 +392,7 @@ generate_vcxproj() { hostplat=Win32 fi open_tag PreBuildEvent - tag_content Command "call obj_int_extract.bat $src_path_bare $hostplat\\\$(Configuration)" + tag_content Command "call obj_int_extract.bat "$src_path_bare" $hostplat\\\$(Configuration)" close_tag PreBuildEvent fi open_tag ClCompile diff --git a/build/x86-msvs/obj_int_extract.bat b/build/x86-msvs/obj_int_extract.bat index 44d095dc9..dfa3b9083 100644 --- a/build/x86-msvs/obj_int_extract.bat +++ b/build/x86-msvs/obj_int_extract.bat @@ -10,6 +10,6 @@ echo on REM Arguments: REM %1 - Relative path to the directory containing the vp8 source directory. REM %2 - Path to obj_int_extract.exe. -cl /I "./" /I "%1" /nologo /c "%1/vp8/encoder/vp8_asm_enc_offsets.c" +cl /I. /I%1 /nologo /c "%~1/vp8/encoder/vp8_asm_enc_offsets.c" %2\obj_int_extract.exe rvds "vp8_asm_enc_offsets.obj" > "vp8_asm_enc_offsets.asm" From f66590cd7cf07da4346bb51b37316f6cda110920 Mon Sep 17 00:00:00 2001 From: James Zern Date: Mon, 2 Jun 2014 16:42:14 -0700 Subject: [PATCH 2/3] *.mk: pass SRC_PATH_BARE to all GEN_VCPROJ invocations this will enable stripping of the path from the object file name Change-Id: Ia5ff575cfa4fe946200878b0aded05832609f316 --- examples.mk | 1 + libs.mk | 3 +++ 2 files changed, 4 insertions(+) diff --git a/examples.mk b/examples.mk index 946c030cb..ce833fcf0 100644 --- a/examples.mk +++ b/examples.mk @@ -306,6 +306,7 @@ $(1): $($(1:.$(VCPROJ_SFX)=).SRCS) vpx.$(VCPROJ_SFX) --name=$$(@:.$(VCPROJ_SFX)=)\ --ver=$$(CONFIG_VS_VERSION)\ --proj-guid=$$($$(@:.$(VCPROJ_SFX)=).GUID)\ + --src-path-bare="$(SRC_PATH_BARE)" \ $$(if $$(CONFIG_STATIC_MSVCRT),--static-crt) \ --out=$$@ $$(INTERNAL_CFLAGS) $$(CFLAGS) \ $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -l$$(CODEC_LIB) $$^ diff --git a/libs.mk b/libs.mk index d02e9bcac..2b072b66e 100644 --- a/libs.mk +++ b/libs.mk @@ -222,6 +222,7 @@ obj_int_extract.$(VCPROJ_SFX): $(SRC_PATH_BARE)/build/make/obj_int_extract.c --name=obj_int_extract \ --ver=$(CONFIG_VS_VERSION) \ --proj-guid=E1360C65-D375-4335-8057-7ED99CC3F9B2 \ + --src-path-bare="$(SRC_PATH_BARE)" \ $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \ --out=$@ $^ \ -I. \ @@ -253,6 +254,7 @@ vpx.$(VCPROJ_SFX): $(CODEC_SRCS) vpx.def obj_int_extract.$(VCPROJ_SFX) --proj-guid=DCE19DAF-69AC-46DB-B14A-39F0FAA5DB74 \ --module-def=vpx.def \ --ver=$(CONFIG_VS_VERSION) \ + --src-path-bare="$(SRC_PATH_BARE)" \ --out=$@ $(CFLAGS) \ $(filter-out $(addprefix %, $(ASM_INCLUDES)), $^) \ --src-path-bare="$(SRC_PATH_BARE)" \ @@ -447,6 +449,7 @@ test_libvpx.$(VCPROJ_SFX): $(LIBVPX_TEST_SRCS) vpx.$(VCPROJ_SFX) gtest.$(VCPROJ_ -D_VARIADIC_MAX=10 \ --proj-guid=CD837F5F-52D8-4314-A370-895D614166A7 \ --ver=$(CONFIG_VS_VERSION) \ + --src-path-bare="$(SRC_PATH_BARE)" \ $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \ --out=$@ $(INTERNAL_CFLAGS) $(CFLAGS) \ -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" \ From e0f416ce23a899055bf23cd81435f08aed83a8a4 Mon Sep 17 00:00:00 2001 From: James Zern Date: Mon, 2 Jun 2014 17:07:13 -0700 Subject: [PATCH 3/3] gen_msvs_*proj.sh: strip SRC_PATH_BARE from obj names reduces the risk of exceeding msbuild command line length limits Change-Id: I0e4d807f42c090a709a3dc365a02b929a3071688 --- build/make/gen_msvs_proj.sh | 4 +++- build/make/gen_msvs_vcxproj.sh | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build/make/gen_msvs_proj.sh b/build/make/gen_msvs_proj.sh index c6fef0d99..660436d3a 100755 --- a/build/make/gen_msvs_proj.sh +++ b/build/make/gen_msvs_proj.sh @@ -67,7 +67,9 @@ generate_filter() { if [ "${f##*.}" == "$pat" ]; then unset file_list[i] - objf=$(echo ${f%.*}.obj | sed -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') + objf=$(echo ${f%.*}.obj \ + | sed -e "s,$src_path_bare,," \ + -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') open_tag File RelativePath="$f" if [ "$pat" == "asm" ] && $asm_use_custom_step; then diff --git a/build/make/gen_msvs_vcxproj.sh b/build/make/gen_msvs_vcxproj.sh index 60a56c95e..4ae511e54 100755 --- a/build/make/gen_msvs_vcxproj.sh +++ b/build/make/gen_msvs_vcxproj.sh @@ -78,7 +78,9 @@ generate_filter() { if [ "${f##*.}" == "$pat" ]; then unset file_list[i] - objf=$(echo ${f%.*}.obj | sed -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') + objf=$(echo ${f%.*}.obj \ + | sed -e "s,$src_path_bare,," \ + -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') if ([ "$pat" == "asm" ] || [ "$pat" == "s" ]) && $asm_use_custom_step; then # Avoid object file name collisions, i.e. vpx_config.c and