Hello,

I've progressed a bit with X11 / cairo less build. Now everything builds but somethings chokes in make dev-install:

http://pastebin.com/qsi0wPFR

Where are these missing files listed? I suppose i have to add some conditionals.

Attached all the changes that i have locally, they are diffed against an old master and i'd like to have a working build before rebasing.

If someone is so keen to take a look at the patches and point out what could be improved, uneeded changes (RepositoryModule_ooo.mk?) it'll be great.

A couple of tests has been disabled because of "no suitable windowing system found, exiting.\n" error from vcl/unx/generic/plugadapt/salplug.cxx::CreateSalInstance(). And i suppose the same error will bite me when i'll try yo run what i have compiled.

thanks in advance

--
Riccardo Magliocchetti
diff --git a/Module_tail_build.mk b/Module_tail_build.mk
index 362434d..eb16dc3 100644
--- a/Module_tail_build.mk
+++ b/Module_tail_build.mk
@@ -25,7 +25,6 @@
 $(eval $(call gb_Module_Module,tail_end))
 
 $(eval $(call gb_Module_add_moduledirs,tail_end,\
-    accessibility \
     animations \
     avmedia \
     basctl \
@@ -53,8 +52,6 @@ $(eval $(call gb_Module_add_moduledirs,tail_end,\
     lingucomponent \
     linguistic \
     lotuswordpro \
-    MathMLDTD \
-    Mesa \
     np_sdk \
     oox \
     package \
@@ -78,7 +75,6 @@ $(eval $(call gb_Module_add_moduledirs,tail_end,\
     unoxml \
     uui \
     vbahelper \
-    wizards \
     writerfilter \
     writerperfect \
     xmerge \
@@ -86,6 +82,15 @@ $(eval $(call gb_Module_add_moduledirs,tail_end,\
     xmlsecurity \
 ))
 
+ifneq ($(GUIBASE),headless)
+$(eval $(call gb_Module_add_targets,tail_end,\
+    accessibility \
+    MathMLDTD \
+    Mesa \
+    wizards \
+))
+endif
+
 ifeq ($(MERGELIBS),TRUE)
 $(eval $(call gb_Module_add_targets,tail_end,\
 	Library_merged \
diff --git a/RepositoryModule_ooo.mk b/RepositoryModule_ooo.mk
index 3f0f023..2285176 100644
--- a/RepositoryModule_ooo.mk
+++ b/RepositoryModule_ooo.mk
@@ -29,8 +29,6 @@
 $(eval $(call gb_Module_Module,ooo))
 
 $(eval $(call gb_Module_add_moduledirs,ooo,\
-    accessibility \
-    animations \
     basctl \
     basebmp \
     basegfx \
@@ -50,7 +48,6 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     dtrans \
     editeng \
     eventattacher \
-	extensions \
     fileaccess \
     filter \
     forms \
@@ -61,25 +58,17 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     i18npool \
     i18nutil \
     idl \
-    lingucomponent \
-    linguistic \
-    lotuswordpro \
-    MathMLDTD \
-    Mesa \
     nlpsolver \
     np_sdk \
     o3tl \
     offapi \
-    oovbaapi \
     oox \
     package \
     padmin \
     psprint_config \
     regexp \
-    reportdesign \
     sal \
     salhelper \
-    sane \
     sax \
     sc \
     scaddins \
@@ -95,21 +84,17 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     svx \
     sw \
     swext \
-    twain \
     toolkit \
     tools \
     ucb \
     ucbhelper \
     udkapi \
-    unixODBC \
     UnoControls \
     unotools \
     unoxml \
     ure \
     uui \
-    vbahelper \
     vcl \
-    wizards \
     writerfilter \
     writerperfect \
     xmerge \
@@ -120,6 +105,26 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
     xmlscript \
 ))
 
+ifneq ($(GUIBASE),headless)
+$(eval $(call gb_Module_add_moduledirs,ooo,\
+    accessibility \
+    animations \
+    extensions \
+    lingucomponent \
+    linguistic \
+    lotuswordpro \
+    MathMLDTD \
+    Mesa \
+    oovbaapi \
+    reportdesign \
+    sane \
+    twain \
+    unixODBC \
+    vbahelper \
+    wizards \
+))
+endif
+
 ifneq ($(SOLAR_JAVA),)
  ifneq "$(OOO_JUNIT_JAR)" ""
 $(eval $(call gb_Module_add_moduledirs,ooo,\
diff --git a/configure.in b/configure.in
index 9a348e3..2e0f393 100644
--- a/configure.in
+++ b/configure.in
@@ -723,6 +723,11 @@ AC_ARG_ENABLE(kde4,
          both KDE3 and KDE4.]),
 ,)
 
+AC_ARG_ENABLE(headless,
+    AS_HELP_STRING([--enable-headless],
+        [Disable building of GUIs to reduce dependencies. Useful for server usage.]),
+,)
+
 AC_ARG_ENABLE(unix-qstart-libpng,
     AS_HELP_STRING([--disable-unix-qstart-libpng],
         [On UNIX systems, we have a faster splash app, that can use libpng to
@@ -2935,6 +2940,10 @@ solaris*)
     ;;
 esac
 
+if test "$enable_headless" = "yes"; then
+    GUIBASE=headless
+fi
+
 INPATH=${OUTPATH}${PROEXT}
 AC_SUBST(COM)
 AC_SUBST(CPU)
@@ -3163,6 +3172,19 @@ else
 fi
 AC_SUBST(DISABLE_STRIP)
 
+if test "$enable_headless" = "yes"; then
+    # be sure to do not mess with uneeded stuff
+    test_randr=no
+    test_xrender=no
+    test_cups=no
+    test_fontconfig=yes
+    test_gtk=no
+    build_gstreamer=no
+    test_kde=no
+    test_kde4=no
+    test_unix_quickstarter=no
+fi
+
 dnl check for cups support
 dnl ===================================================================
 if test "$test_cups" = "yes"; then
@@ -7100,10 +7122,14 @@ AC_SUBST(ENABLE_NSPLUGIN)
 dnl ***************************************
 dnl testing for X libraries and includes...
 dnl ***************************************
+WANT_X11="no"
+if test "$_os" != "WINNT" -a "$_os" != "Android" -a "$_os" != "iOS" -a "$enable_headless" != "yes"; then
+    WANT_X11="yes"
+fi
 if test "$_os" = "Darwin" -a "x$x_includes" = "xno_x_includes"; then
     dnl Mac OS X using Aqua graphics. Don't check for X11.
     :
-elif test "$_os" != "WINNT" -a "$_os" != "Android" -a "$_os" != "iOS"; then
+elif test WANT_X11 = "yes"; then
     AC_PATH_X
     AC_PATH_XTRA
     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
@@ -7150,7 +7176,7 @@ else
 fi
 AC_SUBST(XLIB)
 
-if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$_os" != "Android" -a "$_os" != "iOS"; then
+if test WANT_X11 = "yes" -a "$_os" != "Darwin"; then
     dnl ===================================================================
     dnl Check for Composite.h for Mozilla plugin
     dnl ===================================================================
@@ -7170,7 +7196,7 @@ dnl ===================================================================
 dnl Check for system Xrender
 dnl ===================================================================
 AC_MSG_CHECKING([whether to use Xrender])
-if test "$test_xrender" = "yes"; then
+if test WANT_X11 = "yes" -a  "$test_xrender" = "yes"; then
     AC_MSG_RESULT([yes])
     AC_CHECK_LIB(Xrender, XRenderQueryVersion, [],
       [AC_MSG_ERROR(libXrender not found or functional)], [])
@@ -7188,7 +7214,7 @@ dnl ===================================================================
 dnl Check for XRandr
 dnl ===================================================================
 AC_MSG_CHECKING([whether to enable RandR support])
-if test "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \) ; then
+if test WANT_X11 = "yes" -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \) ; then
     if test -z "$enable_randr_link" -o "$enable_randr_link" = "no"; then
         XRANDR_DLOPEN="TRUE"
         AC_MSG_RESULT([configured to dlopen libXrandr at runtime])
@@ -7801,6 +7827,16 @@ if test "x$enable_kde4" = "xyes"; then
 fi
 AC_SUBST(ENABLE_KDE4)
 
+ENABLE_HEADLESS=""
+if test "x$enable_headless" = "xyes"; then
+    ENABLE_HEADLESS="TRUE"
+    SCPDEFS="$SCPDEFS -DENABLE_HEADLESS"
+    R="headless"
+    # this does not work see hack in Library_vcl.mk
+    AC_DEFINE(HEADLESS)
+fi
+AC_SUBST(ENABLE_HEADLESS)
+
 if test -z "$R"; then
     AC_MSG_RESULT([none])
 else
@@ -9460,7 +9496,7 @@ SYSTEM_CAIRO=""
 
 AC_MSG_CHECKING([whether to use the system cairo])
 
-if test "$with_system_cairo" = "yes"; then
+if test "$enable_cairo_canvas" = "yes" -a "$with_system_cairo" = "yes"; then
     SYSTEM_CAIRO=YES
     AC_MSG_RESULT([yes])
 
@@ -9490,8 +9526,10 @@ else
         if test "$ENABLE_LIBRSVG" != NO -o -z "$ENABLE_DIRECTX"; then
             BUILD_TYPE="$BUILD_TYPE CAIRO"
         fi
-    else
-        BUILD_TYPE="$BUILD_TYPE CAIRO"
+    else 
+        if test "$enable_cairo_canvas" = "yes"; then
+            BUILD_TYPE="$BUILD_TYPE CAIRO"
+        fi
     fi
 fi
 
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
index 2765cc9..c1796ba 100644
--- a/desktop/Module_desktop.mk
+++ b/desktop/Module_desktop.mk
@@ -114,6 +114,8 @@ else ifeq ($(OS),ANDROID)
 
 else ifeq ($(OS),IOS)
 
+else ifeq ($(GUIBASE),headless)
+
 else
 
 $(eval $(call gb_Module_add_targets,desktop,\
diff --git a/hwpfilter/Module_hwpfilter.mk b/hwpfilter/Module_hwpfilter.mk
index 461c017..ff1948e 100644
--- a/hwpfilter/Module_hwpfilter.mk
+++ b/hwpfilter/Module_hwpfilter.mk
@@ -31,8 +31,10 @@ $(eval $(call gb_Module_add_targets,hwpfilter,\
     Library_hwp \
 ))
 
+ifneq ($(GUIBASE),headless)
 $(eval $(call gb_Module_add_check_targets,hwpfilter,\
     CppunitTest_hwpfilter_test_hwpfilter \
 ))
+endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
index 94923a3..9ab503c 100644
--- a/postprocess/packcomponents/makefile.mk
+++ b/postprocess/packcomponents/makefile.mk
@@ -193,7 +193,7 @@ my_components += \
 my_components += pythonloader
 .ENDIF
 
-.IF "$(OS)" != "WNT" && "$(OS)" != "MACOSX" && "$(OS)" != "IOS" && "$(OS)" != "ANDROID"
+.IF "$(OS)" != "WNT" && "$(OS)" != "MACOSX" && "$(OS)" != "IOS" && "$(OS)" != "ANDROID" && "$(GUIBASE)" != "headless"
 my_components += component/desktop/unx/splash/splash
 .ENDIF
 
diff --git a/postprocess/packregistry/makefile.mk b/postprocess/packregistry/makefile.mk
index b542843..843a880 100644
--- a/postprocess/packregistry/makefile.mk
+++ b/postprocess/packregistry/makefile.mk
@@ -312,6 +312,8 @@ MY_FILES_main += \
 # ?
 .ELIF "$(GUIBASE)" == "android"
 # ?
+.ELIF "$(GUIBASE)" == "headless"
+# ?
 .ELSE
 ERROR : unknown-GUIBASE
 .END
diff --git a/toolkit/Library_tk.mk b/toolkit/Library_tk.mk
index 5dee5a9..8dabc0d 100644
--- a/toolkit/Library_tk.mk
+++ b/toolkit/Library_tk.mk
@@ -141,10 +141,12 @@ $(eval $(call gb_Library_add_cxxflags,tk,\
     $(gb_OBJCXXFLAGS)))
 endif
 
+ifneq ($(GUIBASE),headless)
 ifneq (,$(filter LINUX DRAGONFLY OPENBSD FREEBSD NETBSD, $(OS)))
 $(eval $(call gb_Library_add_linked_libs,tk,\
     X11 \
 ))
 endif
+endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index fa6093e..23ebbc9 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -430,6 +430,64 @@ $(eval $(call gb_Library_use_externals,vcl,\
 ))
 endif
 
+ifeq ($(GUIBASE),headless)
+$(eval $(call gb_Library_add_cxxflags,vcl,\
+    $$(FREETYPE_CFLAGS) \
+))
+$(eval $(call gb_Library_add_defs,vcl,\
+    -DHEADLESS \
+    -DSAL_DLLPREFIX=\"$(gb_Library_SYSPRE)\" \
+    -DSAL_DLLPOSTFIX=\"$(gb_Library_OOOEXT)\" \
+    -D_XSALSET_LIBNAME=\"$(call gb_Library_get_runtime_filename,spa)\" \
+))
+$(eval $(call gb_Library_add_exception_objects,vcl,\
+    vcl/generic/app/gensys \
+    vcl/generic/app/geninst \
+    vcl/generic/app/gendisp \
+    vcl/generic/print/bitmap_gfx \
+    vcl/generic/print/common_gfx \
+    vcl/generic/print/glyphset \
+    vcl/generic/print/printerjob \
+    vcl/generic/print/psputil \
+    vcl/generic/print/genpspgraphics \
+    vcl/generic/print/genprnpsp \
+    vcl/generic/print/text_gfx \
+    vcl/generic/fontmanager/fontsubst \
+    vcl/generic/glyphs/gcach_ftyp \
+    vcl/generic/glyphs/gcach_layout \
+    vcl/generic/glyphs/gcach_rbmp \
+    vcl/generic/glyphs/glyphcache \
+    vcl/generic/fontmanager/fontcache \
+    vcl/generic/fontmanager/fontconfig \
+    vcl/generic/fontmanager/fontmanager \
+    vcl/generic/fontmanager/helper \
+    vcl/generic/fontmanager/parseAFM \
+    vcl/unx/generic/printer/jobdata \
+    vcl/unx/generic/printer/ppdparser \
+    vcl/unx/generic/plugadapt/salplug \
+    vcl/null/printerinfomanager \
+    vcl/headless/svpbmp \
+    vcl/headless/svpdummies \
+    vcl/headless/svpelement \
+    vcl/headless/svpframe \
+    vcl/headless/svpgdi \
+    vcl/headless/svpinst \
+    vcl/headless/svpdata \
+    vcl/headless/svpprn \
+    vcl/headless/svptext \
+    vcl/headless/svpvd \
+))
+
+$(eval $(call gb_Library_add_linked_libs,vcl,\
+	basebmp \
+))
+
+$(eval $(call gb_Library_use_externals,vcl,\
+	fontconfig \
+	freetype \
+))
+endif
+
 ifeq ($(GUIBASE),android)
 $(eval $(call gb_Library_add_libs,vcl,\
 	-llog \
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 47da575..aad5157 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -67,6 +67,12 @@ $(eval $(call gb_Module_add_targets,vcl,\
 endif
 endif
 
+ifeq ($(GUIBASE),headless)
+$(eval $(call gb_Module_add_targets,vcl,\
+    Library_vclplug_svp \
+))
+endif
+
 ifeq ($(GUIBASE),aqua)
 $(eval $(call gb_Module_add_targets,vcl,\
     Package_osx \
diff --git a/vcl/inc/unx/saldata.hxx b/vcl/inc/unx/saldata.hxx
index 591f4f6..fbf3251 100644
--- a/vcl/inc/unx/saldata.hxx
+++ b/vcl/inc/unx/saldata.hxx
@@ -29,6 +29,8 @@
 #ifndef _SV_SALDATA_HXX
 #define _SV_SALDATA_HXX
 
+#ifndef HEADLESS
+
 // -=-= includes -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 #include <signal.h>
 #include <unx/salunx.h>
@@ -111,6 +113,8 @@ public:
 
 X11SalData* GetX11SalData();
 
+#endif
+
 #endif // _SV_SALDATA_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/unx/svunx.h b/vcl/inc/unx/svunx.h
index e3ea4cc..36ca677 100644
--- a/vcl/inc/unx/svunx.h
+++ b/vcl/inc/unx/svunx.h
@@ -29,8 +29,10 @@
 #ifndef _SVUNX_H
 #define _SVUNX_H
 
+#ifndef HEADLESS
 #include <tools/prex.h>
 #include <tools/postx.h>
+#endif
 
 #endif
 
diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
index 4449914..f16dfeb 100644
--- a/vcl/unx/generic/plugadapt/salplug.cxx
+++ b/vcl/unx/generic/plugadapt/salplug.cxx
@@ -55,7 +55,7 @@ static oslModule pCloseModule = NULL;
 static SalInstance* tryInstance( const OUString& rModuleBase )
 {
     SalInstance* pInst = NULL;
-#ifndef ANDROID
+#if !defined(ANDROID) || !defined(HEADLESS)
     // Disable gtk3 plugin load except in experimental mode for now.
     if( rModuleBase.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "gtk3" ) ) &&
         !officecfg::Office::Common::Misc::ExperimentalMode::get( comphelper::getProcessComponentContext() ) )
@@ -130,7 +130,7 @@ static SalInstance* tryInstance( const OUString& rModuleBase )
     return pInst;
 }
 
-#ifndef ANDROID
+#if !defined(ANDROID) || !defined(HEADLESS)
 
 static DesktopType get_desktop_environment()
 {
diff --git a/vcl/unx/generic/printer/ppdparser.cxx b/vcl/unx/generic/printer/ppdparser.cxx
index 98bf630..55984b0 100644
--- a/vcl/unx/generic/printer/ppdparser.cxx
+++ b/vcl/unx/generic/printer/ppdparser.cxx
@@ -655,7 +655,7 @@ const PPDParser* PPDParser::getParser( const String& rFile )
         PrinterInfoManager& rMgr = PrinterInfoManager::get();
         if( rMgr.getType() == PrinterInfoManager::CUPS )
         {
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(HEADLESS)
             pNewParser = const_cast<PPDParser*>(static_cast<CUPSManager&>(rMgr).createCUPSParser( aFile ));
 #endif
         }
diff --git a/writerfilter/Module_writerfilter.mk b/writerfilter/Module_writerfilter.mk
index a35daa9..aca8f0f 100644
--- a/writerfilter/Module_writerfilter.mk
+++ b/writerfilter/Module_writerfilter.mk
@@ -37,10 +37,16 @@ $(eval $(call gb_Module_add_targets,writerfilter,\
     Package_writerfilter_generated \
 ))
 
+ifneq ($(GUIBASE),headless)
 $(eval $(call gb_Module_add_check_targets,writerfilter,\
     CppunitTest_writerfilter_doctok \
     CppunitTest_writerfilter_rtftok \
 ))
+else
+$(eval $(call gb_Module_add_check_targets,writerfilter,\
+    CppunitTest_writerfilter_doctok \
+))
+endif
 
 $(eval $(call gb_Module_add_subsequentcheck_targets,writerfilter,\
     JunitTest_writerfilter_complex \
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to