Repository.mk | 1 libvisio/ExternalPackage_libvisio.mk | 4 +- solenv/Executable_ld-wrapper.mk | 16 ++++++++ solenv/Module_solenv.mk | 1 solenv/gbuild/ExternalProject.mk | 6 ++- solenv/gcc-wrappers/ld.cxx | 14 +++++++ solenv/gcc-wrappers/wrapper.cxx | 64 +++++++++++++++++++++++++---------- 7 files changed, 85 insertions(+), 21 deletions(-)
New commits: commit 74ef002adaf53042c19d7cecef13d835b9c389e7 Author: Peter Foley <pefol...@verizon.net> Date: Fri Mar 8 21:45:16 2013 -0500 fix linking with wpftdraw Change-Id: I9bfea157b68d17e5aa212c34238c27260917192e diff --git a/solenv/gcc-wrappers/wrapper.cxx b/solenv/gcc-wrappers/wrapper.cxx index c994d2e..bb2a154 100644 --- a/solenv/gcc-wrappers/wrapper.cxx +++ b/solenv/gcc-wrappers/wrapper.cxx @@ -69,8 +69,10 @@ string processldargs(vector<string> rawargs) { string processccargs(vector<string> rawargs) { // suppress the msvc banner string args=" -nologo"; - // TODO: should this be enabled globally or just for libvisio? + // TODO: should these options be enabled globally or just for libvisio? args.append(" -EHsc"); + args.append(" -MD"); + for(vector<string>::iterator i = rawargs.begin(); i != rawargs.end(); ++i) { args.append(" "); if(*i == "-o") { commit 5f29ea9a5142e111634a56f70170b62ec0dd8623 Author: Peter Foley <pefol...@verizon.net> Date: Fri Mar 8 21:28:42 2013 -0500 libvisio works now Change-Id: I33b8ca0be6356d7c24f8bb467b4120963f6a5ee6 diff --git a/libvisio/ExternalPackage_libvisio.mk b/libvisio/ExternalPackage_libvisio.mk index 76d573a..5838a13 100644 --- a/libvisio/ExternalPackage_libvisio.mk +++ b/libvisio/ExternalPackage_libvisio.mk @@ -17,8 +17,8 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,libvisio,inc/external/libvis $(eval $(call gb_ExternalPackage_use_external_project,libvisio,libvisio)) -ifeq ($(OS)$(COM),WNTMSC) -$(eval $(call gb_ExternalPackage_add_file,libvisio,lib/visio-0.0.lib,build/win32/Release/lib/libvisio-0.0.lib)) +ifeq ($(COM),MSC) +$(eval $(call gb_ExternalPackage_add_file,libvisio,lib/visio-0.0.lib,src/lib/.libs/libvisio-0.0.lib)) else $(eval $(call gb_ExternalPackage_add_file,libvisio,lib/libvisio-0.0.a,src/lib/.libs/libvisio-0.0.a)) endif diff --git a/solenv/gcc-wrappers/wrapper.cxx b/solenv/gcc-wrappers/wrapper.cxx index 21a4eb1..c994d2e 100644 --- a/solenv/gcc-wrappers/wrapper.cxx +++ b/solenv/gcc-wrappers/wrapper.cxx @@ -69,6 +69,8 @@ string processldargs(vector<string> rawargs) { string processccargs(vector<string> rawargs) { // suppress the msvc banner string args=" -nologo"; + // TODO: should this be enabled globally or just for libvisio? + args.append(" -EHsc"); for(vector<string>::iterator i = rawargs.begin(); i != rawargs.end(); ++i) { args.append(" "); if(*i == "-o") { commit bce8664d62f989dd773237dbc38ead7facc6a329 Author: Peter Foley <pefol...@verizon.net> Date: Fri Mar 8 19:04:19 2013 -0500 add missing files Change-Id: Idd131f7f9c6402295c2d83fac415f010039d654a diff --git a/solenv/Executable_ld-wrapper.mk b/solenv/Executable_ld-wrapper.mk new file mode 100755 index 0000000..86d0758 --- /dev/null +++ b/solenv/Executable_ld-wrapper.mk @@ -0,0 +1,16 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Executable_Executable,ld-wrapper)) + +$(eval $(call gb_Executable_add_exception_objects,ld-wrapper,\ + solenv/gcc-wrappers/ld \ +)) + +# vim:set noet sw=4 ts=4: diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk index b6f66c8..d7dddaa 100644 --- a/solenv/gbuild/ExternalProject.mk +++ b/solenv/gbuild/ExternalProject.mk @@ -207,7 +207,7 @@ AUTOCONF_WRAPPERS := \ define gb_ExternalProject_run $(call gb_Helper_print_on_error,cd $(EXTERNAL_WORKDIR)/$(3) && \ - $(if $(filter MSC,$(COM)),$(AUTOCONF_WRAPPERS)) \ + $(if $(filter MSC,$(COM)),export $(AUTOCONF_WRAPPERS) &&) \ $(2) && touch $@,$(EXTERNAL_WORKDIR)/$(if $(3),$(3)/,)$(if $(4),$(4),$(1).log)) endef diff --git a/solenv/gcc-wrappers/ld.cxx b/solenv/gcc-wrappers/ld.cxx new file mode 100755 index 0000000..25faaa1 --- /dev/null +++ b/solenv/gcc-wrappers/ld.cxx @@ -0,0 +1,14 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* +* This file is part of the LibreOffice project. +* +* This Source Code Form is subject to the terms of the Mozilla Public +* License, v. 2.0. If a copy of the MPL was not distributed with this +* file, You can obtain one at http://mozilla.org/MPL/2.0/. +*/ + +#define REAL_EXE "REAL_LD" + +#include "wrapper.cxx" + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit c3d1cb48f4730c95fa94d0113b87318808183380 Author: Peter Foley <pefol...@verizon.net> Date: Fri Mar 8 18:35:31 2013 -0500 add basic support for ld Change-Id: I8ac529345c6b69ac390c612bf3ee3f4ef9cebf8b diff --git a/Repository.mk b/Repository.mk index d0d1bc8..5050250 100644 --- a/Repository.mk +++ b/Repository.mk @@ -110,6 +110,7 @@ $(eval $(call gb_Helper_register_executables,OOO,\ gengal \ gcc-wrapper \ g++-wrapper \ + ld-wrapper \ guiloader \ guistdio \ langsupport \ diff --git a/solenv/Module_solenv.mk b/solenv/Module_solenv.mk index 40f1580..8791bd5 100644 --- a/solenv/Module_solenv.mk +++ b/solenv/Module_solenv.mk @@ -43,6 +43,7 @@ ifeq ($(COM),MSC) $(eval $(call gb_Module_add_targets,solenv,\ Executable_gcc-wrapper \ Executable_g++-wrapper \ + Executable_ld-wrapper \ )) endif diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk index fb2459f..b6f66c8 100644 --- a/solenv/gbuild/ExternalProject.mk +++ b/solenv/gbuild/ExternalProject.mk @@ -201,7 +201,9 @@ AUTOCONF_WRAPPERS := \ REAL_CC="$(shell cygpath -w $(CC))" \ CC="$(call gb_Executable_get_target,gcc-wrapper)" \ REAL_CXX="$(shell cygpath -w $(CXX))" \ - CXX="$(call gb_Executable_get_target,g++-wrapper)" + CXX="$(call gb_Executable_get_target,g++-wrapper)" \ + LD="$(call gb_Executable_get_target,ld-wrapper)" \ + REAL_LD="$(shell cygpath -w $(COMPATH)/bin/link.exe)" define gb_ExternalProject_run $(call gb_Helper_print_on_error,cd $(EXTERNAL_WORKDIR)/$(3) && \ diff --git a/solenv/gcc-wrappers/wrapper.cxx b/solenv/gcc-wrappers/wrapper.cxx index 89bb565..21a4eb1 100644 --- a/solenv/gcc-wrappers/wrapper.cxx +++ b/solenv/gcc-wrappers/wrapper.cxx @@ -31,7 +31,7 @@ void setupenv() { } // Set-up include path - string includepath="INCLUDE2=.;"; + string includepath="INCLUDE=.;"; char* incbuf; size_t inclen; _dupenv_s(&incbuf,&inclen,"SOLARINC"); @@ -56,8 +56,19 @@ void setupenv() { } } -string processargs(vector<string> rawargs) { - string args; +string processldargs(vector<string> rawargs) { + // suppress the msvc banner + string args=" -nologo"; + for(vector<string>::iterator i = rawargs.begin(); i != rawargs.end(); ++i) { + args.append(" "); + args.append(*i); + } + return args; +} + +string processccargs(vector<string> rawargs) { + // suppress the msvc banner + string args=" -nologo"; for(vector<string>::iterator i = rawargs.begin(); i != rawargs.end(); ++i) { args.append(" "); if(*i == "-o") { @@ -143,17 +154,21 @@ int startprocess(string command, string args) { int main(int argc, char *argv[]) { vector<string> rawargs(argv + 1, argv + argc); - char* ccbuf; - size_t cclen; - _dupenv_s(&ccbuf,&cclen,REAL_EXE); - if(!ccbuf) { + char* cmdbuf; + size_t cmdlen; + _dupenv_s(&cmdbuf,&cmdlen,REAL_EXE); + if(!cmdbuf) { cout << "Error " << REAL_EXE << " not defined. Did you forget to source the enviroment?" << endl; exit(1); } - string command(ccbuf); - free(ccbuf); + string command(cmdbuf); + free(cmdbuf); - string args=processargs(rawargs); + string args; + if(!strcmp(REAL_EXE,"REAL_LD")) + args=processldargs(rawargs); + else + args=processccargs(rawargs); setupenv(); commit 0602308ed744cd8f791b4c6bb61ebb97cb6d5397 Author: Peter Foley <pefol...@verizon.net> Date: Fri Mar 8 18:09:23 2013 -0500 fix error handling Change-Id: Iedb7c74b55bc44dd36ab4abf2a4b9fae738260db diff --git a/solenv/gcc-wrappers/wrapper.cxx b/solenv/gcc-wrappers/wrapper.cxx index 9f4e357..89bb565 100644 --- a/solenv/gcc-wrappers/wrapper.cxx +++ b/solenv/gcc-wrappers/wrapper.cxx @@ -50,7 +50,7 @@ void setupenv() { } pos=incvar.find(" -I",pos+len); } - if(_putenv(incvar.c_str())<0) { + if(_putenv(includepath.c_str())<0) { cerr << "Error: could not export INCLUDE" << endl; exit(1); } @@ -124,12 +124,13 @@ int startprocess(string command, string args) { DWORD readlen, writelen, ret; HANDLE stdouthandle=GetStdHandle(STD_OUTPUT_HANDLE); while(true) { - if(!ReadFile(stdout_read,buffer,buflen,&readlen,NULL)) { + int success=ReadFile(stdout_read,buffer,buflen,&readlen,NULL); + if(GetLastError()==ERROR_BROKEN_PIPE) + break; + if(!success) { cerr << "Error: could not read from subprocess stdout" << endl; exit(1); } - if(GetLastError()==ERROR_BROKEN_PIPE) - break; if(readlen!=0) WriteFile(stdouthandle,buffer,readlen,&writelen,NULL); } @@ -156,7 +157,7 @@ int main(int argc, char *argv[]) { setupenv(); - cerr << "CC=" << command << " ARGS=" << args << endl; + //cerr << "CC=" << command << " ARGS=" << args << endl; int ret=startprocess(command,args); return ret; commit c470c9f532f61d747e0001424f23f93062878de0 Author: Peter Foley <pefol...@verizon.net> Date: Fri Mar 8 17:58:09 2013 -0500 fix hang Change-Id: Iab4f25009fe88b2e23de0af22fca5bee724ade80 diff --git a/solenv/gcc-wrappers/wrapper.cxx b/solenv/gcc-wrappers/wrapper.cxx index e5a6cbb..9f4e357 100644 --- a/solenv/gcc-wrappers/wrapper.cxx +++ b/solenv/gcc-wrappers/wrapper.cxx @@ -25,7 +25,10 @@ void setupenv() { _dupenv_s(&libbuf,&liblen,"ILIB"); libpath.append(libbuf); free(libbuf); - _putenv(libpath.c_str()); + if(_putenv(libpath.c_str())<0) { + cerr << "Error: could not export LIB" << endl; + exit(1); + } // Set-up include path string includepath="INCLUDE2=.;"; @@ -47,7 +50,10 @@ void setupenv() { } pos=incvar.find(" -I",pos+len); } - _putenv(incvar.c_str()); + if(_putenv(incvar.c_str())<0) { + cerr << "Error: could not export INCLUDE" << endl; + exit(1); + } } string processargs(vector<string> rawargs) { @@ -110,19 +116,23 @@ int startprocess(string command, string args) { exit(1); } + // if you don't close this the process will hang + CloseHandle(stdout_write); + // Get Process output char buffer[buflen]; DWORD readlen, writelen, ret; HANDLE stdouthandle=GetStdHandle(STD_OUTPUT_HANDLE); while(true) { - int success=ReadFile(stdout_read,buffer,buflen,&readlen,NULL); - DWORD err=GetLastError(); + if(!ReadFile(stdout_read,buffer,buflen,&readlen,NULL)) { + cerr << "Error: could not read from subprocess stdout" << endl; + exit(1); + } + if(GetLastError()==ERROR_BROKEN_PIPE) + break; if(readlen!=0) WriteFile(stdouthandle,buffer,readlen,&writelen,NULL); - if(err==ERROR_BROKEN_PIPE) - break; } - //WaitForSingleObject(&pi.hProcess, INFINITE); GetExitCodeProcess(pi.hProcess, &ret); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits