diff options
author | Peter Foley <pefoley2@verizon.net> | 2013-03-02 15:28:26 -0500 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2013-03-04 12:52:00 +0000 |
commit | 6398cf9f874cf0879151d70e9f63f7b8d53b30e0 (patch) | |
tree | aeaccb3826d0bb2fd99dd5ec0886b0179d354329 | |
parent | 52db503897de94deae3121e1ce194c88b517f300 (diff) |
do not require cygwin gcc
Change-Id: I29de91f2eeb5c9317271aecf861f64a3c8eff73f
Reviewed-on: https://gerrit.libreoffice.org/2521
Reviewed-by: Michael Meeks <michael.meeks@suse.com>
Reviewed-by: Andras Timar <atimar@suse.com>
Tested-by: Andras Timar <atimar@suse.com>
-rw-r--r-- | configure.ac | 68 | ||||
-rw-r--r-- | liblangtag/ExternalPackage_langtag.mk | 6 | ||||
-rw-r--r-- | liblangtag/ExternalProject_langtag.mk | 8 | ||||
-rw-r--r-- | liblangtag/Module_liblangtag.mk | 14 | ||||
-rw-r--r-- | liblangtag/README | 5 | ||||
-rwxr-xr-x | liblangtag/StaticLibrary_langtag.mk | 73 | ||||
-rw-r--r-- | solenv/CustomTarget_concat-deps.mk | 15 | ||||
-rw-r--r-- | solenv/Package_concat-deps.mk | 2 | ||||
-rw-r--r-- | solenv/bin/concat-deps.c | 24 |
9 files changed, 142 insertions, 73 deletions
diff --git a/configure.ac b/configure.ac index ed90a4b0bac5..abe1ee8d485b 100644 --- a/configure.ac +++ b/configure.ac @@ -2158,20 +2158,6 @@ else SOLARVER=${BUILDDIR}/solver fi -dnl =================================================================== -dnl Extra check for Windows. Cygwin builds need gcc to build concat-deps -dnl although MSVC is used to build other build-time tools and -dnl LibreOffice itself. -dnl =================================================================== -if test "$build_os" = "cygwin"; then - AC_MSG_CHECKING([for Cygwin gcc/g++]) - if which gcc > /dev/null && which g++ > /dev/null; then - AC_MSG_RESULT([found]) - else - AC_MSG_ERROR([Cygwin gcc and g++ are needed, please install them.]) - fi -fi - # remenber SYSBASE value AC_SUBST(SYSBASE) @@ -2242,32 +2228,34 @@ dnl =================================================================== dnl Checks for C compiler, dnl The check for the C++ compiler is later on. dnl =================================================================== -GCC_HOME_SET="true" -AC_MSG_CHECKING([gcc home]) -if test -z "$with_gcc_home"; then - if test "$enable_icecream" = "yes"; then - if test -d "/usr/lib/icecc/bin"; then - GCC_HOME="/usr/lib/icecc/" - else - GCC_HOME="/opt/icecream/" - fi - else - GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,` - GCC_HOME_SET="false" - fi -else - GCC_HOME="$with_gcc_home" -fi -AC_MSG_RESULT($GCC_HOME) -AC_SUBST(GCC_HOME) - -if test "$GCC_HOME_SET" = "true"; then - if test -z "$CC"; then - CC="$GCC_HOME/bin/gcc" - fi - if test -z "$CXX"; then - CXX="$GCC_HOME/bin/g++" - fi +if test "$_os" != "WINNT" -a "$WITH_MINGW" != "yes"; then + GCC_HOME_SET="true" + AC_MSG_CHECKING([gcc home]) + if test -z "$with_gcc_home"; then + if test "$enable_icecream" = "yes"; then + if test -d "/usr/lib/icecc/bin"; then + GCC_HOME="/usr/lib/icecc/" + else + GCC_HOME="/opt/icecream/" + fi + else + GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,` + GCC_HOME_SET="false" + fi + else + GCC_HOME="$with_gcc_home" + fi + AC_MSG_RESULT($GCC_HOME) + AC_SUBST(GCC_HOME) + + if test "$GCC_HOME_SET" = "true"; then + if test -z "$CC"; then + CC="$GCC_HOME/bin/gcc" + fi + if test -z "$CXX"; then + CXX="$GCC_HOME/bin/g++" + fi + fi fi dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32) diff --git a/liblangtag/ExternalPackage_langtag.mk b/liblangtag/ExternalPackage_langtag.mk index 3770a3e7675d..a424f83b2711 100644 --- a/liblangtag/ExternalPackage_langtag.mk +++ b/liblangtag/ExternalPackage_langtag.mk @@ -8,11 +8,9 @@ # $(eval $(call gb_ExternalPackage_ExternalPackage,langtag,langtag)) + $(eval $(call gb_ExternalPackage_use_external_project,langtag,langtag)) -ifeq ($(OS)$(COM),WNTMSC) -$(eval $(call gb_ExternalPackage_add_file,langtag,lib/langtag.lib,liblangtag/.libs/langtag.lib)) -else + $(eval $(call gb_ExternalPackage_add_file,langtag,lib/liblangtag.a,liblangtag/.libs/liblangtag.a)) -endif # vim: set noet sw=4 ts=4: diff --git a/liblangtag/ExternalProject_langtag.mk b/liblangtag/ExternalProject_langtag.mk index 24d4a8c356db..051e0357aaf8 100644 --- a/liblangtag/ExternalProject_langtag.mk +++ b/liblangtag/ExternalProject_langtag.mk @@ -18,16 +18,10 @@ $(eval $(call gb_ExternalProject_register_targets,langtag,\ $(call gb_ExternalProject_get_state_target,langtag,build): $(call gb_ExternalProject_run,build,\ - $(if $(filter MSC,$(COM)), \ - export LIB="$(ILIB)" \ - CC="$(CC) -MD -nologo \ - $(if $(filter TRUE,$(ENABLE_DEBUG)),-Zi) \ - $(SOLARINC)" && ) \ ./configure --disable-modules --disable-test --disable-introspection --disable-shared --enable-static --with-pic \ $(if $(filter TRUE,$(HAVE_GCC_BUILTIN_ATOMIC)),"lt_cv_has_atomic=yes","lt_cv_has_atomic=no") \ $(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ - $(if $(filter NO,$(SYSTEM_LIBXML)),LIBXML2_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,xml2)/include" \ - $(if $(filter MSC,$(COM)),LIBXML2_LIBS="$(OUTDIR)/lib/libxml2.lib",LIBXML2_LIBS="-L$(OUTDIR)/lib -lxml2"),\ + $(if $(filter NO,$(SYSTEM_LIBXML)),LIBXML2_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,xml2)/include",\ $(if $(filter MACOSX,$(OS)),LIBXML2_CFLAGS="$(LIBXML_CFLAGS)" LIBXML2_LIBS="$(LIBXML_LIBS)")) \ $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \ $(if $(filter-out LINUX FREEBSD,$(OS)),,LDFLAGS="-Wl$(COMMA)-z$(COMMA)origin -Wl$(COMMA)-rpath,\\"\$$\$$ORIGIN:'\'\$$\$$ORIGIN/../ure-link/lib) \ diff --git a/liblangtag/Module_liblangtag.mk b/liblangtag/Module_liblangtag.mk index 98c1c3b56279..8d75f2da5b0a 100644 --- a/liblangtag/Module_liblangtag.mk +++ b/liblangtag/Module_liblangtag.mk @@ -11,13 +11,23 @@ $(eval $(call gb_Module_Module,liblangtag)) ifeq ($(ENABLE_LIBLANGTAG),YES) ifeq ($(SYSTEM_LIBLANGTAG),NO) + $(eval $(call gb_Module_add_targets,liblangtag,\ UnpackedTarball_langtag \ - ExternalPackage_langtag \ ExternalPackage_langtag_data \ - ExternalProject_langtag \ Zip_liblangtag_data \ )) + +ifeq ($(COM),MSC) +$(eval $(call gb_Module_add_targets,liblangtag,\ + StaticLibrary_langtag \ +)) +else +$(eval $(call gb_Module_add_targets,liblangtag,\ + ExternalPackage_langtag \ + ExternalProject_langtag \ +)) +endif endif endif diff --git a/liblangtag/README b/liblangtag/README index 78946d5618aa..694daee093e6 100644 --- a/liblangtag/README +++ b/liblangtag/README @@ -1,6 +1 @@ From [http://tagoh.bitbucket.org/liblangtag/]. An interface for BCP47 language tags. - -Note that (as far a I recall) liblangtag is the only "bundled" -(3rd-party) library we have that we configure and build also for MSVC -using an autotools+libtool based mechanism. That is rather fragile and -works maybe mostly by accident. So be careful not to break it. diff --git a/liblangtag/StaticLibrary_langtag.mk b/liblangtag/StaticLibrary_langtag.mk new file mode 100755 index 000000000000..fed7565c3796 --- /dev/null +++ b/liblangtag/StaticLibrary_langtag.mk @@ -0,0 +1,73 @@ +# -*- 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_StaticLibrary_StaticLibrary,langtag)) + +$(eval $(call gb_StaticLibrary_set_warnings_not_errors,langtag)) + +$(eval $(call gb_StaticLibrary_use_unpacked,langtag,langtag)) + +$(eval $(call gb_StaticLibrary_use_external,langtag,libxml2)) + +$(eval $(call gb_StaticLibrary_set_include,langtag,\ + $$(INCLUDE) \ + -I$(call gb_UnpackedTarball_get_dir,langtag) \ + -I$(call gb_UnpackedTarball_get_dir,langtag)/liblangtag \ +)) + +# Hardcoded for MSVC +$(eval $(call gb_StaticLibrary_add_defs,langtag,\ + -D__LANGTAG_COMPILATION \ + -DREGDATADIR \ + -DLT_HAVE___INLINE \ + -DLT_CAN_INLINE \ + -DALIGNOF_VOID_P=4 \ +)) + +$(eval $(call gb_StaticLibrary_add_generated_cobjects,langtag,\ + UnpackedTarball/langtag/liblangtag/lt-database \ + UnpackedTarball/langtag/liblangtag/lt-error \ + UnpackedTarball/langtag/liblangtag/lt-ext-module \ + UnpackedTarball/langtag/liblangtag/lt-ext-module-data \ + UnpackedTarball/langtag/liblangtag/lt-extension \ + UnpackedTarball/langtag/liblangtag/lt-extlang \ + UnpackedTarball/langtag/liblangtag/lt-extlang-db \ + UnpackedTarball/langtag/liblangtag/lt-grandfathered \ + UnpackedTarball/langtag/liblangtag/lt-grandfathered-db \ + UnpackedTarball/langtag/liblangtag/lt-lang \ + UnpackedTarball/langtag/liblangtag/lt-lang-db \ + UnpackedTarball/langtag/liblangtag/lt-list \ + UnpackedTarball/langtag/liblangtag/lt-mem \ + UnpackedTarball/langtag/liblangtag/lt-messages \ + UnpackedTarball/langtag/liblangtag/lt-redundant \ + UnpackedTarball/langtag/liblangtag/lt-redundant-db \ + UnpackedTarball/langtag/liblangtag/lt-region \ + UnpackedTarball/langtag/liblangtag/lt-region-db \ + UnpackedTarball/langtag/liblangtag/lt-script \ + UnpackedTarball/langtag/liblangtag/lt-script-db \ + UnpackedTarball/langtag/liblangtag/lt-string \ + UnpackedTarball/langtag/liblangtag/lt-tag \ + UnpackedTarball/langtag/liblangtag/lt-trie \ + UnpackedTarball/langtag/liblangtag/lt-utils \ + UnpackedTarball/langtag/liblangtag/lt-variant \ + UnpackedTarball/langtag/liblangtag/lt-variant-db \ + UnpackedTarball/langtag/liblangtag/lt-xml \ +)) + +$(eval $(call gb_StaticLibrary_add_generated_cobjects,langtag,\ + UnpackedTarball/langtag/extensions/lt-ext-ldml-t \ + , -DLT_MODULE_PREFIX=lt_module_ext_t \ +)) + +$(eval $(call gb_StaticLibrary_add_generated_cobjects,langtag,\ + UnpackedTarball/langtag/extensions/lt-ext-ldml-u \ + , -DLT_MODULE_PREFIX=lt_module_ext_u \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/solenv/CustomTarget_concat-deps.mk b/solenv/CustomTarget_concat-deps.mk index 1f138c59b8ab..6e8d56a637d8 100644 --- a/solenv/CustomTarget_concat-deps.mk +++ b/solenv/CustomTarget_concat-deps.mk @@ -9,16 +9,15 @@ $(eval $(call gb_CustomTarget_CustomTarget,solenv/concat-deps)) -$(call gb_CustomTarget_get_target,solenv/concat-deps) : \ - $(call gb_CustomTarget_get_workdir,solenv/concat-deps)/concat-deps +$(eval $(call gb_CustomTarget_register_targets,solenv/concat-deps,\ + concat-deps$(gb_Executable_EXT_for_build) \ +)) -$(call gb_CustomTarget_get_workdir,solenv/concat-deps)/concat-deps : \ - $(SRCDIR)/solenv/bin/concat-deps.c \ - | $(call gb_CustomTarget_get_workdir,solenv/concat-deps)/.dir - $(call gb_Output_announce,solenv/concat-deps,$(true),GCC,1) +$(call gb_CustomTarget_get_workdir,solenv/concat-deps)/concat-deps$(gb_Executable_EXT_for_build) : \ + $(SRCDIR)/solenv/bin/concat-deps.c + $(call gb_Output_announce,solenv/concat-deps,$(true),C,1) ifeq ($(COM_FOR_BUILD),MSC) - # on cygwin force the use of gcc - gcc -O2 $< -o $@ + LIB="$(ILIB)" $(CC_FOR_BUILD) -nologo $(SOLARINC) -O2 $< -Fo$(dir $@) -Fe$(dir $@) else $(CC_FOR_BUILD) -O2 $< -o $@ endif diff --git a/solenv/Package_concat-deps.mk b/solenv/Package_concat-deps.mk index 9d6319d18c48..9ede3860aea8 100644 --- a/solenv/Package_concat-deps.mk +++ b/solenv/Package_concat-deps.mk @@ -9,6 +9,6 @@ $(eval $(call gb_Package_Package,solenv_concat-deps,$(call gb_CustomTarget_get_workdir,solenv/concat-deps))) -$(eval $(call gb_Package_add_file,solenv_concat-deps,bin/concat-deps,concat-deps)) +$(eval $(call gb_Package_add_file,solenv_concat-deps,bin/concat-deps$(gb_Executable_EXT_for_build),concat-deps$(gb_Executable_EXT_for_build))) # vim: set noet sw=4 ts=4: diff --git a/solenv/bin/concat-deps.c b/solenv/bin/concat-deps.c index 5b478aa822fa..5782f66e10b2 100644 --- a/solenv/bin/concat-deps.c +++ b/solenv/bin/concat-deps.c @@ -30,12 +30,12 @@ #define USE_MEMORY_ALIGNMENT 4 #endif /* Def _AIX */ -#ifdef __CYGWIN__ +#ifdef _MSC_VER #define __windows #define CORE_BIG_ENDIAN 0 #define CORE_LITTLE_ENDIAN 1 #define USE_MEMORY_ALIGNMENT 64 /* big value -> no alignment */ -#endif /* Def __CYGWIN__ */ +#endif /* Def _MSC_VER */ #if defined(__linux) || defined(__OpenBSD__) || \ defined(__FreeBSD__) || defined(__NetBSD__) || \ @@ -97,7 +97,10 @@ #ifdef __windows #define FILE_O_RDONLY _O_RDONLY #define FILE_O_BINARY _O_BINARY -#define PATHNCMP strncasecmp /* MSVC converts paths to lower-case sometimes? */ +#define PATHNCMP _strnicmp /* MSVC converts paths to lower-case sometimes? */ +#define inline __inline +#define ssize_t long +#define S_ISREG(mode) (((mode) & _S_IFMT) == (_S_IFREG)) /* MSVC does not have this macro */ #else /* not windaube */ #define FILE_O_RDONLY O_RDONLY #define FILE_O_BINARY 0 @@ -775,10 +778,17 @@ static void emit_unpacked_target(char const*const token, char const*const end) { /* is there some obvious way to printf N characters that i'm missing? */ size_t size = end - token + 1; - char tmp[size]; + char* tmp=(char *)malloc(size*sizeof(char)); + #ifdef _MSC_VER + // MSVC _snprintf doesn't null terminate strings + _snprintf(tmp, size, "%s", token); + tmp[size-1]='\0'; + #else snprintf(tmp, size, "%s", token); + #endif fputs(tmp, stdout); fputs(".done ", stdout); + free(tmp); } /* prefix paths to absolute */ @@ -787,6 +797,7 @@ static inline void print_fullpaths(char* line) char* token; char* end; int boost_count = 0; + int token_len; const char * unpacked_end = 0; /* end of UnpackedTarget match (if any) */ /* for UnpackedTarget the target is GenC{,xx}Object, dont mangle! */ int target_seen = 0; @@ -805,7 +816,7 @@ static inline void print_fullpaths(char* line) while (*end && (' ' != *end) && ('\t' != *end) && (':' != *end)) { ++end; } - int token_len = end - token; + token_len = end - token; if (target_seen && elide_dependency(token, token_len, &unpacked_end)) { @@ -855,8 +866,9 @@ static inline void print_fullpaths(char* line) static inline char * eat_space_at_end(char * end) { + char * real_end; assert('\0' == *end); - char * real_end = end - 1; + real_end = end - 1; while (' ' == *real_end || '\t' == *real_end || '\n' == *real_end || ':' == *real_end) { /* eat colon and whitespace at end */ |