Kaydet (Commit) a5dd1ead authored tarafından Mathias Bauer's avatar Mathias Bauer

CWS gnumake2: new gbuild system

üst aefefb30
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2009 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
include ./solenv/inc/gbuild.mk
include $(foreach module,\
framework \
sfx2 \
svl \
svtools \
xmloff \
sw \
toolkit \
tools \
,$(SRCDIR)/$(module)/prj/target_module_$(module).mk)
all : $(foreach module,$(gb_Module_ALLMODULES),$(call gb_Module_get_target,$(module)))
$(call gb_Helper_announce,Completed all modules.)
clean : $(foreach module,$(gb_Module_ALLMODULES),$(call gb_Module_get_clean_target,$(module)))
$(call gb_Helper_announce,all modules cleaned.)
.DEFAULT_GOAL := all
# vim: set noet sw=4 ts=4:
#!/bin/sh
cd tools
../solenv/bin/build.pl -P4 -- -P4
../solenv/bin/deliver.pl
cd -
cd framework
../solenv/bin/build.pl -P4 -- -P4
../solenv/bin/deliver.pl
cd -
cd toolkit
../solenv/bin/build.pl -P4 -- -P4
../solenv/bin/deliver.pl
cd -
cd sw
../solenv/bin/build.pl -P4 -- -P4
../solenv/bin/deliver.pl
cd -
#!/usr/bin/env python
import sys
import os
class CxxTarget:
def __init__(self, line):
self.directory = ''
self.outputfile = ''
self.includeflags = []
self.cxxflags = []
self.inputfiles = []
self.nolink = False
options = line[:-1].split(' ')
self.directory = options.pop(0)
parsing_outputfile = False
for option in options:
if parsing_outputfile:
self.outputfile = option
parsing_outputfile = False
elif option == '-o':
parsing_outputfile = True
elif option == '-c':
self.nolink = True
elif option.startswith('-I'):
self.includeflags.append(CxxFlag(option))
elif option.startswith('-'):
self.cxxflags.append(CxxFlag(option))
else:
self.inputfiles.append(option)
self.cxxflags.sort()
self.includeflags.sort()
cxxflags_tmp = dict()
for flag in self.cxxflags:
cxxflags_tmp[flag.name] = flag
self.cxxflags = cxxflags_tmp.values()
includeflags_tmp = dict()
for flag in self.includeflags:
includeflags_tmp[flag.name] = flag
self.includeflags = includeflags_tmp.values()
CxxTargets.by_name[self.getFullOutputname()] = self
def __str__(self):
return '%s' % (self.getFullOutputname())
def getFullOutputname(self):
return self.directory + '/' + self.outputfile
def __cmp__(self, other):
return cmp(self.getFullOutputname(), other.getFullOutputname())
class CxxFlag:
def __init__(self, name):
self.name = name
CxxFlags.by_name[self.name] = self
def __str__(self):
return 'Flag %s' % (self.name)
def __cmp__(self, other):
return cmp(self.name, other.name)
class CxxFlags:
by_name = dict()
class CxxTargets:
by_name = dict()
if __name__ == '__main__':
[CxxTarget(line) for line in sys.stdin.readlines()]
compile_targets = [target for target in CxxTargets.by_name.values() if target.nolink]
link_targets = [target for target in CxxTargets.by_name.values() if not target.nolink]
common_compile_flags = []
for flag in CxxFlags.by_name.values():
if sum((flag in target.cxxflags for target in compile_targets)) == len(compile_targets):
common_compile_flags.append(flag)
common_link_flags = []
for flag in CxxFlags.by_name.values():
if sum((flag in target.cxxflags for target in compile_targets)) == len(compile_targets):
common_link_flags.append(flag)
for target in compile_targets:
target.cxxflags = [flag for flag in target.cxxflags if flag not in common_compile_flags]
target.cxxflags.sort()
for target in link_targets:
target.cxxflags = [flag for flag in target.cxxflags if flag not in common_link_flags]
target.cxxflags.sort()
common_compile_flags.sort()
common_link_flags.sort()
print 'common compile flags: %s' % (' '.join(flag.name for flag in common_compile_flags))
print 'common link flags: %s' % (' '.join(flag.name for flag in common_link_flags))
by_flagset = dict()
for target in CxxTargets.by_name.values():
flagset = ' '.join((flag.name for flag in target.cxxflags))
if flagset not in by_flagset:
by_flagset[flagset] = list()
by_flagset[flagset].append(target)
for targetlist in by_flagset.values():
targetlist.sort()
flagsets = by_flagset.keys()
flagsets.sort()
print '%d compilerflag groups:' % (len(flagsets))
for flagset in flagsets:
print flagset
for target in by_flagset[flagset]:
print '%s' % (target)
print
by_flagset = dict()
for target in CxxTargets.by_name.values():
flagset = ' '.join((flag.name for flag in target.includeflags))
if flagset not in by_flagset:
by_flagset[flagset] = list()
by_flagset[flagset].append(target)
for targetlist in by_flagset.values():
targetlist.sort()
flagsets = by_flagset.keys()
flagsets.sort()
print '%d include flag groups:' % (len(flagsets))
for flagset in flagsets:
print flagset
for target in by_flagset[flagset]:
print '%s' % (target)
print
print 'sources:'
by_name = dict()
for target in CxxTargets.by_name.values():
by_name[os.path.basename(target.outputfile)] = target
names = by_name.keys()
names.sort()
for target in CxxTargets.by_name.values():
if len(target.inputfiles) > 1:
objects = [os.path.basename(object) for object in target.inputfiles]
sources = list()
for object in objects:
if object in by_name:
sources.append(by_name[object].inputfiles[0])
else:
sources.append('!!!!' + object)
sources.sort()
print '%s %s' % (target.getFullOutputname(), ' '.join(sources))
......@@ -610,6 +610,7 @@ unxlngi6
common1
{
COMPATH %SOLAR_ENV_ROOT%$/gcc_4.2.3_linux_libc2.32
GXX_INCLUDE_PATH %SOLAR_ENV_ROOT%$/gcc_4.2.3_linux_libc2.32/include/c++/4.2.3
DEVROOT %SOLAR_ENV_ROOT%
LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PERL %SOLAR_ENV_ROOT%/bt_linux_libc2.32/%WORK_STAMP%/bin/perl
......
......@@ -30,6 +30,7 @@ common
BIG_SVX
BIG_TOOLS
BISON_HAIRY
BISON_PKGDATADIR
BISON_SIMPLE
BMP_WRITES_FLAG
bndchk
......@@ -43,6 +44,7 @@ common
BUILD_TOOLS
BUILD_TYPE
BUILD_SPECIAL
BUILD_X64
CLASSPATH
CALL_CDECL
COMEX
......@@ -69,6 +71,7 @@ common
DIC_ALL
DPKG
DYLD_LIBRARY_PATH
LD_LIBRARY_PATH
DMAKE_INC
DMAKE
DRIVE_O
......@@ -90,7 +93,7 @@ common
ENABLE_PASF
ENABLE_RANDR
ENABLE_REPORTBUILDER
ENABLE_REPORTDESIGN
ENABLE_REPORTDESIGN
ENABLE_SVCTAGS
ENABLE_VBA
FORCE2ARCHIVE
......@@ -117,6 +120,7 @@ common
GCRINC
GCRLIB
GCRPATH
GLIBC
GNUCOPY
GXX_INCLUDE_PATH
HBTOOLKIT
......@@ -211,11 +215,13 @@ common
SOLARUPD
SOLARVERSION
SOURCE_ROOT_USED
SOURCE_ROOT_DIR
STAR_REGISTRY
STAR_RESOURCEPATH
STLPORT4
STLPORT_VER
SYSPATH
TARFILE_LOCATION
TF_CAPELLA
TF_CFG
TF_CFGDATA
......@@ -247,6 +253,7 @@ common
XAU_LIBS
WINDOWS_VISTA_PSDK
WITH_LDAP
WITH_VC_REDIST
WST
XCLASSPATH
XSLTPROC
......@@ -270,6 +277,8 @@ common
NO_HIDS
PAM_LINK
PAM
PSPRINT
PYTHONHOME
PYTHONPATH
SOLAR_PLUGIN
URE_BOOTSTRAP
......
This diff is collapsed.
namespace types
{
/// A plain old string.
class String {};
/// A partial, relative or absolute filesystem path.
class Path {};
/// A target represented by an absolute filesystem path.
class Target {};
/// A partial or complete shell-command.
class Command {};
/// A library name as used on in the linking step.
class Linkname {};
/// A integer number.
class Integer {};
/// A boolean value.
/// There are const boolean values true and false for
/// comparisons (written as $(true) and $(false) in makefiles.
class Bool {};
/// A language (for localisation)
/// A language represented by its ISO 639-1:2002 code.
class Language {};
/// A List of objects.
/// A List of objects represented by a whitespace separated list
/// in makefiles.
template <typename T>
class List<T> {};
};
using namespace types;
namespace gb
{
class Library;
class OOoLibrary;
class RtLibrary;
class Executable;
class Module;
class AllLangResTarget;
class SystemLibrary {};
class Helper
{
public:
static Command announce(Target target);
static Command abbreviate_dirs(Command command);
};
class StaticLibrary
{
public:
StaticLibrary(String name);
Target get_target();
};
class Objectfile
{
public:
Objectfile(String name);
Target get_target();
Target get_dep_filename();
Target get_cxx_source_filename();
};
enum LinkTargetType {
LIB,
EXE
};
class LinkTarget
{
private:
friend class Library;
friend class Executable;
LinkTarget(LinkTargetType type, String name, Target target);
Target get_target();
Target get_headers_target();
Target get_dep_filename();
void set_cxxflags(String cxxflags);
void set_visibility_hidden(Bool visibility_hidden);
void set_include(String include);
void set_ldflags(String ldflags);
void set_library_path_flags(String library_path_flags);
void add_linked_libs(List<Library> linked_libraries);
void add_object(Objectfile objectfile);
void add_noexception_object(Objectfile objectfile);
void add_exception_object(Objectfile objectfile);
void add_noexception_objects(List<Objectfile> objectfiles);
void add_exception_objects(List<Objectfile> objectfiles);
List<String> DEFS;
List<String> CXXFLAGS;
List<String> INCLUDE;
String VISIBILITY;
List<String> LDFLAGS;
List<String> LIBRARY_PATH_FLAGS;
List<Linkname> LINKED_LIBS;
List<Linkname> LINKED_SYS_LIBS;
List<Objectfile> OBJECTS;
List<String> TARGETTYPE_LINK_FLAGS;
};
class Library
{
protected:
Library(String name, Target target);
public:
Target get_target();
Target get_headers_target();
Target get_dep_filename();
void set_cxxflags(String cxxflags);
void set_visibility_hidden(Bool visibility_hidden);
void set_include(String include);
void set_ldflags(String ldflags);
void set_library_path_flags(String library_path_flags);
void add_linked_libs(List<Library> linked_libraries);
void add_linked_system_libs(List<SystemLibrary> linked_system_libraries);
void add_object(Objectfile objectfile);
void add_noexception_object(Objectfile objectfile);
void add_exception_object(Objectfile objectfile);
void add_noexception_objects(List<Objectfile> objectfiles);
void add_exception_objects(List<Objectfile> objectfiles);
};
class OOoLibrary : public Library
{
public:
OOoLibrary(String name);
Target get_target();
Target get_headers_target();
Target get_dep_filename();
Linkname get_linkname();
static List<Linkname> get_linknames(List<OOoLibrary> ooolibraries);
};
class RtLibrary : public Library
{
public:
RtLibrary(String name);
Target get_target();
Target get_headers_target();
Target get_dep_filename();
Linkname get_linkname();
static List<Linkname> get_linknames(List<RtLibrary> ooolibraries);
};
class Executable
{
public:
Executable(String name);
Target get_target();
void set_cxxflags(List<String> cxxflags);
void set_visibility_hidden(Bool visibility_hidden);
void set_include(List<String> include);
void set_ldflags(List<String> ldflags);
void set_library_path_flags(List<String> library_path_flags);
void add_linked_libs(List<Library> linked_libraries);
void add_linked_system_libs(List<SystemLibrary> linked_system_libraries);
void add_object(Objectfile objectfile);
void add_noexception_object(Objectfile objectfile);
void add_exception_object(Objectfile objectfile);
void add_noexception_objects(List<Objectfile> objectfiles);
void add_exception_objects(List<Objectfile> objectfiles);
};
class SdiTarget
{
private:
List<String> INCLUDE;
public:
SdiTarget(String name);
Target get_target();
void set_include(List<String> include);
};
class SrsTarget
{
private:
List<String> DEFS;
List<String> INCLUDE;
public:
SrsTarget(String name);
Target get_target();
void set_defs(List<String> defs);
void set_include(List<String> include);
};
class ResTarget
{
private:
friend class AllLangResTarget;
ResTarget(String name, Language language);
public:
Target get_target();
void add_file(SrsTarget srstarget);
void add_files(List<SrsTarget> srstargets);
};
class AllLangResTarget
{
public:
AllLangResTarget(String name);
void add_file(SrsTarget srstarget);
void add_files(List<SrsTarget> srstargets);
};
class Package
{
public:
Package(String name, Path sourcedir);
void add_file(Target destination, Path source);
Path SOURCEDIR;
};
class Module
{
public:
Module(String name);
Target get_target();
void make_global_targets();
void read_includes(List<String> includes);
};
};
static String GUI;
static String COM;
static Path INPATH;
static Path SRCDIR;
static Path OUTDIR;
static Path WORKDIR;
static bool FULL_DEPENDENCIES;
static List<gb::Module> ALL_MODULES;
static Command SHELL;
static Path CXX;
static Path GCCP;
static Target SVIDLTARGET;
static Command SVIDLCOMMAND;
static Target RSCTARGET;
static Command RSCCOMMAND;
static List<String> GLOBALDEFS;
static List<String> CFLAGSCXX;
static List<String> EXCEPTIONFLAGS;
static List<String> NOEXCEPTIONFLAGS;
static List<String> LDFLAGS;
static Integer OSL_DEBUG_LEVEL;
/* vim: set filetype=cpp : */
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2009 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
define NEWLINE
endef
COMMA :=,
gb_Helper_NULLFILE := /dev/null
gb_Helper_MISC := $(WORKDIR)/Misc
gb_Helper_PHONY := $(gb_Helper_MISC)/PHONY
gb_Helper_MISCDUMMY := $(gb_Helper_MISC)/DUMMY
.PHONY : $(WORKDIR)/Misc/PHONY
$(gb_Helper_MISCDUMMY) :
@mkdir -p $(dir $@) && touch $@
define gb_Helper_announce
$(info $(1))
endef
define gb_Helper_abbreviate_dirs
S=$(SRCDIR) && \
$(subst $(SRCDIR)/,$$S/,W=$(WORKDIR) && O=$(OUTDIR)) && \
$(subst $(SRCDIR)/,$$S/,$(subst $(WORKDIR)/,$$W/,$(subst $(OUTDIR)/,$$O/,$(1))))
endef
define gb_Helper_make_clean_target
gb_$(1)_get_clean_target = $(WORKDIR)/Clean/$(1)/$$(1)
endef
define gb_Helper_make_outdir_clean_target
gb_$(1)_get_clean_target = $$(subst $(OUTDIR)/,$(WORKDIR)/Clean/OutDir/,$$(call gb_$(1)_get_target,$$(1)))
endef
define gb_Helper_make_dep_target
gb_$(1)_get_dep_target = $(WORKDIR)/Dep/$(1)/$$(1).d
endef
define gb_Helper_make_clean_targets
$(foreach targettype,$(1),\
$(call gb_Helper_make_clean_target,$(targettype)))
endef
define gb_Helper_make_outdir_clean_targets
$(foreach targettype,$(1),\
$(call gb_Helper_make_outdir_clean_target,$(targettype)))
endef
define gb_Helper_make_dep_targets
$(foreach targettype,$(1),\
$(call gb_Helper_make_dep_target,$(targettype)))
endef
define gb_Helper_get_outdir_clean_target
$$(subst $(OUTDIR)/,$(WORKDIR)/Clean/OutDir/,$(1))
endef
# vim: set noet sw=4 ts=4:
This diff is collapsed.
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2009 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
gb_Library_NAMESCHEMES := OOO PLAIN RT RTVER STL UNO UNOVER
gb_Library_OOOLIBS :=\
avmedia \
basegfx \
cui \
drawinglayer \
fwe \
fwi \
fwk \
fwl \
fwm \
go \
lng \
msfilter \
msword \
sax \
sb \
sfx \
sot \
svl \
svt \
svx \
svxcore \
sw \
swd \
swui \
textconversiondlgs \
tk \
tl \
utl \
vbahelper \
vcl \
xo \
xof \
gb_Library_PLAINLIBS :=\
icuuc \
xml2 \
gb_Library_RTLIBS :=\
comphelper \
i18nisolang1 \
i18nutil \
ucbhelper \
vos3 \
gb_Library_RTVERLIBS :=\
cppuhelper \
salhelper \
gb_Library_STLLIBS :=\
stl \
gb_Library_UNOLIBS :=\
fsstorage \
hatchwindowfactory \
passwordcontainer \
productregistration \
vbaswobj \
gb_Library_UNOVERLIBS :=\
jvmfwk \
cppu \
sal \
gb_StaticLibrary_NAMESCHEMES := PLAIN
gb_StaticLibrary_PLAINLIBS :=\
salcpprt \
jpeglib \
zlib \
# vim: set noet sw=4 ts=4:
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2009 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
GUI := unx
COM := gcc
gb_CC := gcc
gb_CXX := g++
gb_GCCP := gcc
gb_OSDEFS := \
-DLINUX \
-D_PTHREADS \
-DUNIX \
-DUNX \
$(PTHREAD_CFLAGS) \
gb_COMPILERDEFS := \
-DGCC \
-D$(CVER) \
-DCVER=$(CVER) \
-DGLIBC=2 \
-DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \
-DHAVE_GCC_VISIBILITY_FEATURE \
-DCPPU_ENV=gcc3 \
ifeq ($(CPUNAME),X86_64)
gb_CPUDEFS := -D$(CPUNAME)
else
gb_CPUDEFS := -DX86
endif
gb_CFLAGS := \
-isystem $(SYSBASE)/usr/include \
-Wall \
-Wendif-labels \
-Wextra \
-fmessage-length=0 \
-fno-strict-aliasing \
-fpic \
-fvisibility=hidden \
-pipe \
gb_CXXFLAGS := \
-isystem $(SYSBASE)/usr/include \
-Wall \
-Wendif-labels \
-Wextra \
-Wno-ctor-dtor-privacy \
-Wno-non-virtual-dtor \
-Wreturn-type \
-Wshadow \
-Wuninitialized \
-fmessage-length=0 \
-fno-strict-aliasing \
-fno-use-cxa-atexit \
-fpic \
-fvisibility=hidden \
-fvisibility-inlines-hidden \
-pipe \
gb_LinkTarget_EXCEPTIONFLAGS := \
-DEXCEPTIONS_ON \
-fexceptions \
-fno-enforce-eh-specs \
gb_LinkTarget_NOEXCEPTIONFLAGS := \
-DEXCEPTIONS_OFF \
-fno-exceptions \
gb_LinkTarget_LDFLAGS := \
-Wl,--dynamic-list-cpp-new \
-Wl,--dynamic-list-cpp-typeinfo \
-Wl,--hash-style=both \
-Wl,-Bsymbolic-functions \
-Wl,-rpath,$(OUTDIR)/lib \
-Wl,-rpath-link,$(OUTDIR)/lib \
-Wl,-z,combreloc \
-Wl,-z,defs \
$(subst -L../lib , ,$(SOLARLIB)) \
ifeq ($(gb_DEBUGLEVEL),2)
gb_GCCOPTFLAGS := -O0
else
gb_GCCOPTFLAGS := -Os
endif
# Helper class
gb_Helper_abbreviate_dirs_native = $(gb_Helper_abbreviate_dirs)
# CObject class
define gb_CObject_command
$(call gb_Helper_announce,Compiling $(2) (plain C) ...)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
mkdir -p $(dir $(call gb_CObject_get_dep_target,$(2))) && \
$(gb_CC) \
-c $(3) \
-o $(1) \
-MMD -MT $(call gb_CObject_get_target,$(2)) \
-MF $(call gb_CObject_get_dep_target,$(2)) \
$(4) $(5) \
-I$(dir $(3)) \
$(6))
endef
define gb_CObject_command_dep
mkdir -p $(dir $(1)) && \
echo '$(call gb_CObject_get_target,$(2)) : $$(gb_Helper_PHONY)' > $(1)
endef
# CxxObject class
define gb_CxxObject_command
$(call gb_Helper_announce,Compiling $(2) ...)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
mkdir -p $(dir $(call gb_CxxObject_get_dep_target,$(2))) && \
$(gb_CXX) \
-c $(3) \
-o $(1) \
-MMD -MT $(call gb_CxxObject_get_target,$(2)) \
-MF $(call gb_CxxObject_get_dep_target,$(2)) \
$(4) $(5) \
-I$(dir $(3)) \
$(6))
endef
define gb_CxxObject_command_dep
mkdir -p $(dir $(1)) && \
echo '$(call gb_CxxObject_get_target,$(2)) : $$(gb_Helper_PHONY)' > $(1)
endef
# LinkTarget class
gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_GCCOPTFLAGS)
gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_GCCOPTFLAGS)
ifeq ($(gb_DEBUGLEVEL),2)
gb_LinkTarget_CXXFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
gb_LinkTarget_CFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
endif
gb_LinkTarget_INCLUDE := $(subst -I. , ,$(SOLARINC))
define gb_LinkTarget_command
$(call gb_Helper_announce,Linking $(2) ...)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(3) \
$(patsubst lib%.so,-l%,$(foreach lib,$(4),$(call gb_Library_get_filename,$(lib)))) \
$(foreach object,$(6),$(call gb_CxxObject_get_target,$(object))) \
$(foreach object,$(7),$(call gb_CObject_get_target,$(object))) \
-Wl$(COMMA)--start-group $(foreach lib,$(5),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
-o $(1))
endef
# Library class
gb_Library_DEFS := -DSHAREDLIB -D_DLL_
gb_Library_TARGETTYPEFLAGS := -shared -Wl,-z,noexecstack
gb_Library_SYSPRE := lib
gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
gb_Library_PLAINEXT := .so
gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
ifeq ($(gb_PRODUCT),$(true))
gb_Library_STLEXT := port_gcc$(gb_Library_PLAINEXT)
else
gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_PLAINEXT)
endif
ifeq ($(CPUNAME),X86_64)
gb_Library_OOOEXT := lx$(gb_Library_PLAINEXT)
gb_Library_UNOEXT := lx.uno$(gb_Library_PLAINEXT)
else
gb_Library_OOOEXT := li$(gb_Library_PLAINEXT)
gb_Library_UNOEXT := li.uno$(gb_Library_PLAINEXT)
endif
gb_Library_PLAINLIBS += \
dl \
jpeg \
m \
pthread \
X11 \
z
gb_Library_FILENAMES := \
$(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
$(foreach lib,$(gb_Library_PLAINLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
$(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
$(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
$(foreach lib,$(gb_Library_STLLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_STLEXT)) \
$(foreach lib,$(gb_Library_UNOLIBS),$(lib):$(lib)$(gb_Library_UNOEXT)) \
$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
# HACKS
gb_Library_FILENAMES := $(patsubst comphelper:libcomphelper%,comphelper:libcomphelp4%,$(gb_Library_FILENAMES))
gb_Library_FILENAMES := $(patsubst cppuhelper:libcppuhelper%,cppuhelper:libuno_cppuhelper%,$(gb_Library_FILENAMES))
gb_Library_FILENAMES := $(patsubst ucbhelper:libucbhelper%,ucbhelper:libucbhelper4%,$(gb_Library_FILENAMES))
gb_Library_FILENAMES := $(patsubst jvmfwk:libuno_jvmfwk%,jvmfwk:libjvmfwk%,$(gb_Library_FILENAMES))
gb_Library_FILENAMES := $(patsubst salhelper:libsalhelper%,salhelper:libuno_salhelper%,$(gb_Library_FILENAMES))
ifeq ($(USE_SYSTEM_STL),YES)
gb_Library_FILENAMES := $(patsubst stl:%,stl:libstdc++.so,$(gb_Library_FILENAMES))
gb_Library_TARGETS := $(filter-out stl,$(gb_Library_TARGETS))
endif
gb_Library_Library_platform =
# StaticLibrary class
gb_StaticLibrary_DEFS :=
gb_StaticLibrary_TARGETTYPEFLAGS := -Wl,-z,noexecstack
gb_StaticLibrary_SYSPRE := lib
gb_StaticLibrary_PLAINEXT := .a
gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)
gb_StaticLibrary_FILENAMES := \
$(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
$(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
# Executable class
gb_Executable_EXT :=
gb_Executable_TARGETTYPEFLAGS :=
gb_Executable_Executable_platform =
# SdiTarget class
gb_SdiTarget_SVIDLPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
# SrsPartTarget class
gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc
gb_SrsPartTarget_RSCCOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)
define gb_SrsPartTarget_command_dep
$(call gb_Helper_abbreviate_dirs,\
$(gb_GCCP) \
-MM -MT $(call gb_SrsPartTarget_get_target,$(1)) \
$(3) \
$(4) \
-c -x c++-header $(2) \
-o $(call gb_SrsPartTarget_get_dep_target,$(1)))
endef
# vim: set noet sw=4 ts=4:
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment