From: Michal H. <ms...@gm...> - 2007-11-28 15:24:38
|
Hi. I was just working on the fix for bug #178. I have found some configure scripts for proper boost checking (it is in CVS now). However, I was not able to cleanly integrate this into our configure/build process. I am not able to get test macros results (BOOST_CXXFLAGS resp. BOOST_LDFLAGS) into the CXXFLAGS resp. LDFLAGS (seems that qmake makes its own). Nevertheless, whole this process is rather obscure and complicated. Are we able to make it simpler? Here are my comments: Why do we use qmake also for non qt parts (like kernel, while utils has its own static Makefile)? Can we get rid of that? I would propose to keep qmake only for gui and qsa parts. Can we integrate our flags to xpdf configure process? I mean, if we do ./configure --disable-release, xpdf is still compiled with -O2 which is rather annoying because we usually want to debug in such case. Can we get rid of ./src/xpdf/configure and use static Makefile with our flags? Why do we have two ./Makefile.flags ./src/Makefile.flags files. It seems to be messy (something is including only one, some both): src> grep "Makefile\.flags" -R * gui/pdfedit.pro:include(../../Makefile.flags) Makefile:include Makefile.flags qsa/configure:E_RELEASE=`grep E_RELEASE= <../Makefile.flags |sed s/[^=]*=//` qsa/configure:QMAKE=`grep QMAKE= <../Makefile.flags |sed s/[^=]*=//` qsa-qt4/configure:E_RELEASE=`grep E_RELEASE= <../Makefile.flags |sed s/[^=]*=//` qsa-qt4/configure:QMAKE=`grep QMAKE= <../Makefile.flags |sed s/[^=]*=//` utils/Makefile:include ../Makefile.flags utils/Makefile:include ../../Makefile.flags Why don't we check for libkernel.a changes when gui/pdfedit is compiled (same for header files like qobject.h etc.)? This can be really dangerous, because we use a lot of template constructions there! If you have some notes or other problems, please put them in this thread so we can discuss them. Best regards -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 16:59:57
Attachments:
unified_makefiles_v1.tar.gz
|
Hi. As I have stated in the first email in this thread I don't like our current configuration scripts and make files very much. Here is the first version of rework. Please try it and give me your feedback. This version is not finished yet, because I wasn't able to finish gui/qsa part - maybe Martin can help me to finish that. Changes: ======== - xpdf configuration was merged with the main configuration - new Makefile.flags file which contains common logic for compilation (all makefiles from subdirectories include this file and provide only subdirectory specific stuff) - no hacks for freetype2 detection - checks for CPPUNIT and boost libraries - possibility to configure-out whole gui (only xpdf, kernel libraries are created - for future pdfedit-devel package purposes) --disable-gui - qmake detection directly in configure - --enable-kernel-tests option for configure - creates also kernel tests - --enable-debug-info option added for configure - this is checked only if we have --enable-relase and want to have binaries also with debug information - --enable-qt3 option added for configure - use Qt4 for --disable-qt3 Tar ball is in attachment. All separate patches will come in separate emails under this thread. Best regards -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:07:59
Attachments:
autoconf_macros.patch
|
* cppunit.m4 - CPP Unit detection macros * freetype2.m4 - FreeType2 detection macros (taken from OpenSuse 10.3 and version check removed - this needs to be figure out - I had problems with original code) * xpdf.m4 - extracted from src/xpdf/aclocal.m4 I am prety sure, that almost nothing is used from here - TODO for clean up -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:12:37
Attachments:
bad_includes_fix.patch
|
Small fixes for includes. We shouldn't include with relative paths and also shouldn't depend on -Ifor_all_our_directories and rather keep that explicit (like #include"kernel/cpage.h" rather than #include"cpage.h"). Maybe we should update also all includes in src/xpdf where this is used wildly and so we have to do terrible -Ixpdf -Ixpdf/goo -Ixpdf/fofi... What about to do it for (maybe) next version of this patch set. This patch can be applied also without the rest of patches and I strongly recommend it. -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:28:29
Attachments:
base_configuration.patch
|
This patch updates configure template. It adds new configuration options and merge with xpdf configure specific stuff. * New features: - --enable-debug-info option added - this is checked only if --enable-release is specified, - DEBUG, OPTIM and E_RELEASE are set according to the release - EXTRA_{C,CXX}FLAGS replaced by OBSERVER_{C,CXX}FLAGS. EXTRA_*FLAGS are defined in Makefile.flags.in for kernel, utils separately - checks properly for freetype2 (meaning that both flags and libs are set) - --enable-gui option added (turned on by default). Only kernel, utils and xpdf are compiled if --disable-gui is specified - QTDIR and QMAKESPEC are checked only if --enable-gui - detects qmake only if gui is build - --enable-kernel-tests option added (turned off by default). If enabled, also kernel tests are build * xpdf configuration stuff - eliminated options which are not used at the moment - like X libraries and so on - needs some more cleanup - I think that there are more things which can be removed * Makefile.flags.in - defines common compilation logic: flags, libraries, includes, default rules for compilation - still lot of TODOs mainly for variables setting from configuration environment (which I don't know how to set) - we have very complicated includes from different directories (especially from xpdf code base) so I have used absolute paths to refer them. This is not very nice, however it is the simplest way how to create reasonable makefiles for deeper subdirectories like kernel/tests (we don't want to -I../../../xpdf/goo....) * post_configure - I don't like idea behind this script, but it seems to be necessary for gui part. Maybe we should discuss with Martin how to get rid it once and for all. I have removed src/Makefile.flags (not needed) and qmake (set from configure) detection parts. -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:32:04
Attachments:
configure.patch
|
Configure patch. This one is not necessary, because configure script can be created by autoconf. -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:34:05
Attachments:
kernel_makefiles.patch
|
Qmake stuff removed and replaced by static Makefile. -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-16 15:28:39
Attachments:
kernel_makefiles.patch
|
Qmake stuff removed and replaced by static Makefile. Changelog v1 -> v2: Changelog v2 -> v3: - sync with changes (Makefile.rules, MANDATORY_INCPATH) -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:35:47
Attachments:
kernel_tests_makefiles.patch
|
Qmake stuff removed from kernel test building. It was replaced by static makefile in kernel/tests directory. Also testing program is created there. -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:37:51
Attachments:
qsa_configure.patch
|
Small fix for qsa configure script. This is just to show, that we shoudn't grep for those things in generated files (problems with spaces, tabs and what so ever). -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-16 15:31:40
Attachments:
qsa_configure.patch
|
Small fix for qsa configure script. This is just to show, that we shoudn't grep for those things in generated files (problems with spaces, tabs and what so ever). Changelog v1 -> v2: Changelog v2 -> v3: * configure - all unsed stuff was removed - accepts 2 parameters (hardcoded at the moment) - values are no longer obtained from the config pro - qmake to be used - release string (yes, if we are doing release) -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:41:06
Attachments:
src_makefile.patch
|
* src main makefile adopted to the common Makefile.flags. * The main target depends on values set during configuration * qt3/qt4 qsa stuff unified (needs review) * config_xpdf_variables still needs some clean up (better after discussion with Martin) -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:42:25
Attachments:
utils_makefile.patch
|
Makefile adopted to the new Makefile.flags -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-10 17:43:56
Attachments:
xpdf_makefiles.patch
|
* XPdf tree makefiles adopted to the new Makefile.flags * patch doesn't remove configure and template from the tree, we can do it after review -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:15:31
Attachments:
unified_makefiles_v2.tar.gz
|
This is updated version of unified makefiles and configuration patch set (v2). Features: ========= - xpdf configuration was merged with the main configuration - new Makefile.flags file which contains common logic for compilation (all makefiles from subdirectories include this file and provide only subdirectory specific stuff) - no hacks for freetype2 detection - checks for CPPUNIT and boost libraries - possibility to configure-out whole gui (only xpdf, kernel libraries are created - for future pdfedit-devel package purposes) --disable-gui - qmake detection directly in configure - --enable-kernel-tests option for configure - creates also kernel tests - --enable-debug-info option added for configure - this is checked only if we have --enable-relase and want to have binaries also with debug information - --enable-qt3 option added for configure - use Qt4 for --disable-qt3 - --enable-doxygen-doc added for configure - generates doxygen documentation only if required (turned on by default) - checks for doxygen binary if turned on --- Changelog v1 -> v2 - small fixes - see detailed info in patch specific emails - doc_makefiles.patch added for doc subdirectories - just doc top level Makfile finished yet. Still many TODOs (e. g. we don't check for docbook2html and others, we should split to core doc - man pages - user doc and program. doc) - xpdf_makefiles.patch removes all unused xpdf scripts -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:31:03
Attachments:
base_configuration.patch
|
This patch updates configure template. It adds new configuration options and merge with xpdf configure specific stuff. * New features: - --enable-debug-info option added - this is checked only if --enable-release is specified, - DEBUG, OPTIM and E_RELEASE are set according to the release - EXTRA_{C,CXX}FLAGS replaced by OBSERVER_{C,CXX}FLAGS. EXTRA_*FLAGS are defined in Makefile.flags.in for kernel, utils separately - checks properly for freetype2 (meaning that both flags and libs are set) - --enable-gui option added (turned on by default). Only kernel, utils and xpdf are compiled if --disable-gui is specified - QTDIR and QMAKESPEC are checked only if --enable-gui - detects qmake only if gui is build - --enable-kernel-tests option added (turned off by default). If enabled, also kernel tests are build - --enable-doxygen-doc option added (turned on by default). If enabled, also doxygen documentation is generated. It also searches for doxygen binary (if enabled) and configure fails if not found (sets DOXYGEN_BIN output variable). * xpdf configuration stuff - eliminated options which are not used at the moment - like X libraries and so on - needs some more cleanup - I think that there are more things which can be removed * Makefile.flags.in - defines common compilation logic: flags, libraries, includes, default rules for compilation - still lot of TODOs mainly for variables setting from configuration environment (which I don't know how to set) - we have very complicated includes from different directories (especially from xpdf code base) so I have used absolute paths to refer them. This is not very nice, however it is the simplest way how to create reasonable makefiles for deeper subdirectories like kernel/tests (we don't want to -I../../../xpdf/goo....) * post_configure - I don't like idea behind this script, but it seems to be necessary for gui part. Maybe we should discuss with Martin how to get rid it once and for all. I have removed src/Makefile.flags (not needed) and qmake (set from configure) detection parts. --- Changelog v1 -> v2 * configure.in - fix for src/xpdf/aconf.h generation. We can't use AC_CONFIG_HEADER for 2 files and rather use AC_CONFIG_HEADERS instead. Nevertheless we should check whether src/utils/aconf.h is needed (seems that it is *not*) - fix for invalid QSAROOT if --disable-gui is specified when we don't set this variable which leads to QSAROOT = SRCROOT (and this ends in endless loop when trying to do make clean) - new --enable-doxygen-doc option (sets DOXYGEN_BIN and DOXYGEN_TARGET variables) * Makefile.flags.in - DEL_DIR is initialized to rm -rf rather than rmdir which requires an empty directory - DOXYGEN_BIN and DOXYGEN_TARGET initialized by configure added - DOC_TARGET added - for future purposes (--enable-doc) - typo fix for TESTS_TARGET name (was TESTS_TARGER) - DOCROOT added - EXTRA_*FLAGS are not initialized with OBSERVER_*FLAGS value and it is used as stand-alone. EXTRA_*FLAGS are planned for future or user specific * Makefile.in - make -> $(MAKE) - we use AC_COMMAND_SET_MAKE so can safely use it -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:31:58
Attachments:
configure.patch
|
Configure patch. This one is not necessary, because configure script can be created by autoconf. -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:33:35
Attachments:
src_makefile.patch
|
* src main makefile adopted to the common Makefile.flags. * The main target depends on values set during configuration * qt3/qt4 qsa stuff unified (needs review) * config_xpdf_variables still needs some clean up (better after discussion with Martin) Chanlog v1 -> v2: * config_xpdf_variables removed * make -> $(MAKE) -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:34:49
Attachments:
utils_makefile.patch
|
Makefile adopted to the new Makefile.flags Changlog v1 -> v2: ================== - minor cleanups -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-16 15:36:48
Attachments:
utils_makefile.patch
|
Makefile adopted to the new Makefile.flags Changlog v1 -> v2: ================== - minor cleanups Changelog v2 -> v3: =================== - sync with changes (Makefile.rules) -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:39:34
Attachments:
doc_makefile.patch
|
* includes ../Makefile.flags for general definitions * doxygen_doc is created only if DOXYGEN_TARGET is defined (set by configure and stored in Makefile.flags * gmake || make replaced by $(MAKE) Changelog v1 -> v2: =================== wasn't in version 1 -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2008-01-14 13:12:12
Attachments:
doc_makefile.patch
|
* includes ../Makefile.flags for general definitions * doxygen_doc is created only if DOXYGEN_TARGET is defined (set by configure and stored in Makefile.flags * gmake || make replaced by $(MAKE) Changelog v1 -> v2: =================== wasn't in version 1 Changelog v2 -> v4: =================== - installation targets added (depends on configuration) - only man page is created by default - doc installation logic from src/gui moved here (except for online help which is separated now) - general cleanup - -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-11 17:36:06
Attachments:
xpdf_makefiles.patch
|
* XPdf tree makefiles adopted to the new Makefile.flags Changelog v1 -> v2: =================== - configure stuff removed - helper scripts for installation removed -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-16 15:16:58
Attachments:
unified_makefiles_v3.tar.gz
|
On Tue, Dec 11, 2007 at 06:29:33PM +0100, Michal Hocko wrote: This is updated version of unified makefiles and configuration patch set (v3). Features: ========= - xpdf configuration was merged with the main configuration - new Makefile.flags file which contains common logic for compilation (all makefiles from subdirectories include this file and provide only subdirectory specific stuff) - no hacks for freetype2 detection - checks for CPPUNIT and boost libraries - possibility to configure-out whole gui (only xpdf, kernel libraries are created - for future pdfedit-devel package purposes) --disable-gui - qmake detection directly in configure - --enable-kernel-tests option for configure - creates also kernel tests - --enable-debug-info option added for configure - this is checked only if we have --enable-relase and want to have binaries also with debug information - --enable-qt3 option added for configure - use Qt4 for --disable-qt3 - --enable-doxygen-doc added for configure - generates doxygen documentation only if required (turned on by default) - checks for doxygen binary if turned on --- Changelog v1 -> v2 - small fixes - see detailed info in patch specific emails - doc_makefiles.patch added for doc subdirectories - just doc top level Makfile finished yet. Still many TODOs (e. g. we don't check for docbook2html and others, we should split to core doc - man pages - user doc and program. doc) - xpdf_makefiles.patch removes all unused xpdf scripts Changelog v2 -> v3 - whole project (also with Gui part) is compileable now - T1 library is now detected during configuration - all includes from gui directory were corrected to properly - small fixes - see detailed info in patch specific emails - Makefile.flags split into 2 files (Makefile.flags, Makefile.rules) -- Michal Hocko |
From: Michal H. <ms...@gm...> - 2007-12-16 15:20:45
Attachments:
bad_includes_fix.patch
|
Small fixes for includes. We shouldn't include with relative paths and also shouldn't depend on -Ifor_all_our_directories and rather keep that explicit (like #include"kernel/cpage.h" rather than #include"cpage.h"). Maybe we should update also all includes in src/xpdf where this is used wildly and so we have to do terrible -Ixpdf -Ixpdf/goo -Ixpdf/fofi... What about to do it for (maybe) next version of this patch set. This patch can be applied also without the rest of patches and I strongly recommend it. --- Changelog v1 -> v2: Changelog v2 -> v3: - all includes from gui to the kernel/utils corrected -- Michal Hocko |