freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] Compiling freetype 2.3.9 with bcc fails


From: mpsuzuki
Subject: Re: [ft] Compiling freetype 2.3.9 with bcc fails
Date: Tue, 14 Jul 2009 01:51:30 +0900

Hi,

I overlooked a possibility that your modification of
Makefile caused the failure to generate objs/freetype.def.

You wrote:
>I commented out the build APINAMES.EXE in export.mk to see if the library is
>build fine.

I guess you removed (or commented out) a line defining
apinames.exe

  APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)

instead of the line building apinames.exe

  $(APINAMES_EXE): $(APINAMES_SRC)
          $(CCexe) $(CCexe_CFLAGS) $(CCexe_LDFLAGS) $(TE)$@ $<

If my guessing is right, you cleared APINAMES_EXE by
yourself and caused endless loop. If you place
apinames.exe at right place, the latter target
is automatically skipped. You don't have to remove
the line.

If you read exports.mk carefully:

  APINAMES_SRC := $(TOP_DIR)/src/tools/apinames.c
  APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)

  $(APINAMES_EXE): $(APINAMES_SRC)
          $(CCexe) $(CCexe_CFLAGS) $(CCexe_LDFLAGS) $(TE)$@ $<

  .PHONY: symbols_list

  symbols_list: $(EXPORTS_LIST)

  # We manually add TT_New_Context and TT_RunIns, which are needed by TT
  # debuggers, to the EXPORTS_LIST.
  #
  $(EXPORTS_LIST): $(APINAMES_EXE) $(PUBLIC_HEADERS)
          $(subst /,$(SEP),$(APINAMES_EXE)) -o$@ $(APINAMES_OPTIONS) 
$(PUBLIC_HEADERS)
          @echo TT_New_Context >> $(EXPORTS_LIST)
          @echo TT_RunIns >> $(EXPORTS_LIST)

  $(PROJECT_LIBRARY): $(EXPORTS_LIST)

you will find following dependency chain.

A. libfreetype (referred by $(PROJECT_LIBRARY)) requires $(EXPORTS_LIST)
B. $(EXPORTS_LIST) requires $(APINAMES_EXE) and $(PUBLIC_HEADERS)
C. $(APINAMES_EXE) requires $(APINAMES_SRC)

So clearing APINAMES_EXE or simply-skipping APINAMES_EXE
target is bad idea. It breaks the chain of dependency.

On Mon, 13 Jul 2009 10:44:43 +0200
Mirco Babin <address@hidden> wrote:

>Hi,
>
>I think I made an error during the testing. Now the -L switch does not work
>when I'm testing with the command prompt. I think I had an apinames.obj in
>the basedirectory. I'm sorry about the -L switch, it was a waste of time.
>
>But the following sequence does work (first compile to the OBJ, then link):
>bcc32 -c -oobjs\apinames.obj src/tools/apinames.c
>bcc32 -oobjs/apinames.exe objs/apinames.obj
>I commented out the build APINAMES.EXE in export.mk to see if the library is
>build fine. It does not, in the end I get:
>
>bcc32 -A  -I.\objs -I.\builds\win32 -I.\include -c -q -y -d -v -Od -w-par
>-w-ccc -w-rch -w-pro -w-aus -DFT2_BUILD_LIBRARY
>-DFT_CONFIG_MODULES_H="<ftmodule.h>"  -I.\src\psnames -oobjs\psnames.obj
>.\src\psnames\psmodule.c
>.\src\psnames\psmodule.c:
>oobjs/freetype.def -dfreetype.dll -wB ./include/freetype/freetype.h
>./include/freetype/ftadvanc.h ./include/freetype/ftbbox.h
>./include/freetype/ftbdf.h ./include/freetype/ftbitmap.h
>./include/freetype/ftcache.h ./include/freetype/ftchapters.h
>./include/freetype/ftcid.h ./include/freetype/fterrdef.h
>./include/freetype/fterrors.h ./include/freetype/ftgasp.h
>./include/freetype/ftglyph.h ./include/freetype/ftgxval.h
>./include/freetype/ftgzip.h ./include/freetype/ftimage.h
>./include/freetype/ftincrem.h ./include/freetype/ftlcdfil.h
>./include/freetype/ftlist.h ./include/freetype/ftlzw.h
>./include/freetype/ftmac.h ./include/freetype/ftmm.h
>./include/freetype/ftmodapi.h ./include/freetype/ftmoderr.h
>./include/freetype/ftotval.h ./include/freetype/ftoutln.h
>./include/freetype/ftpfr.h ./include/freetype/ftrender.h
>./include/freetype/ftsizes.h ./include/freetype/ftsnames.h
>./include/freetype/ftstroke.h ./include/freetype/ftsynth.h
>./include/freetype/ftsystem.h ./include/freetype/fttrigon.h
>./include/freetype/fttypes.h ./include/freetype/ftwinfnt.h
>./include/freetype/ftxf86.h ./include/freetype/t1tables.h
>./include/freetype/ttnameid.h ./include/freetype/tttables.h
>./include/freetype/tttags.h ./include/freetype/ttunpat.h
>process_begin: CreateProcess(NULL, oobjs/freetype.def -dfreetype.dll -wB
>./include/freetype/freetype.h ./include/freetype/ftadvanc.h
>./include/freetype/ftbbox.h ./include/freetype/ftbdf.h
>./include/freetype/ftbitmap.h ./include/freetype/ftcache.h
>./include/freetype/ftchapters.h ./include/freetype/ftcid.h
>./include/freetype/fterrdef.h ./include/freetype/fterrors.h
>./include/freetype/ftgasp.h ./include/freetype/ftglyph.h
>./include/freetype/ftgxval.h ./include/freetype/ftgzip.h
>./include/freetype/ftimage.h ./include/freetype/ftincrem.h
>./include/freetype/ftlcdfil.h ./include/freetype/ftlist.h
>./include/freetype/ftlzw.h ./include/freetype/ftmac.h
>./include/freetype/ftmm.h ./include/freetype/ftmodapi.h
>./include/freetype/ftmoderr.h ./include/freetype/ftotval.h
>./include/freetype/ftoutln.h ./include/freetype/ftpfr.h
>./include/freetype/ftrender.h ./include/freetype/ftsizes.h
>./include/freetype/ftsnames.h ./include/freetype/ftstroke.h
>./include/freetype/ftsynth.h ./include/freetype/ftsystem.h
>./include/freetype/fttrigon.h ./include/freetype/fttypes.h
>./include/freetype/ftwinfnt.h ./include/freetype/ftxf86.h
>./include/freetype/t1tables.h ./include/freetype/ttnameid.h
>./include/freetype/tttables.h ./include/freetype/tttags.h
>./include/freetype/ttunpat.h, ...) failed.
>make (e=2): Het systeem kan het opgegeven bestand niet vinden.
>mingw32-make.exe: [objs/freetype.def] Error 2 (ignored)
>del .\objs\freetype.lib 2> nul
>tlib /u objs\freetype.lib +.\objs\ftsystem.obj +.\objs\ftdebug.obj
>+.\objs\ftinit.obj +.\objs\ftbase.obj +.\objs\ftbbox.obj +.\objs\ftbdf.obj
>+.\objs\ftbitmap.obj +.\objs\ftcid.obj +.\objs\ftfstype.obj
>+.\objs\ftgasp.obj +.\objs\ftglyph.obj +.\objs\ftgxval.obj
>+.\objs\ftlcdfil.obj +.\objs\ftmm.obj +.\objs\ftotval.obj
>+.\objs\ftpatent.obj +.\objs\ftpfr.obj +.\objs\ftstroke.obj
>+.\objs\ftsynth.obj +.\objs\fttype1.obj +.\objs\ftwinfnt.obj
>+.\objs\ftxf86.obj +.\objs\truetype.obj +.\objs\type1.obj +.\objs\cff.obj
>+.\objs\type1cid.obj +.\objs\pfr.obj +.\objs\type42.obj +.\objs\winfnt.obj
>+.\objs\pcf.obj +.\objs\bdf.obj +.\objs\sfnt.obj +.\objs\autofit.obj
>+.\objs\pshinter.obj +.\objs\raster.obj +.\objs\smooth.obj
>+.\objs\ftcache.obj +.\objs\ftgzip.obj +.\objs\ftlzw.obj +.\objs\psaux.obj
>+.\objs\psnames.obj
>TLIB 5.1 Copyright (c) 1987-2007 CodeGear
>Warning: invalid page size value ignored
>Warning: invalid page size value ignored
>
>The "Warning: invalid page size value ignored" is repeated infinitly. I had
>to abort the compile with CTRL-C.
>
>Regards,
>Mirco
>
>
>2009/7/13 <address@hidden>
>
>> Hi,
>>
>> Considering the fact that "-L./objs" does not work,
>> I guess bcc32 cannot recognize "/" as valid pathname
>> separator. If my guessing is right, the expected
>> might be:
>>
>>        bcc32 -Lobjs -oobjs\apinames.exe src\tools\apinames.c
>>
>> You've ever written that you tried
>>
>>        bcc32 -Lobjs -oobjs/apinames.exe src/tools/apinames.c
>>
>> and it successfully finihsed - the pathname separator
>> in your experiment was really "/", not "\"?
>>
>> Regards,
>> mpsuzuki
>>
>>
>> On Mon, 13 Jul 2009 08:50:59 +0200
>>  Mirco Babin <address@hidden> wrote:
>>
>> >Hi,
>> >
>> >Update, I manually changed the bcc.mk to CCexe_LDFLAGS := -Lobjs
>> >It still results in the same error. I don't get it, it seems like the
>> >current directory is changed ?
>> >
>> >bcc32 -A  -I.\objs -I.\builds\win32 -I.\include -c -q -y -d -v -Od -w-par
>> >-w-ccc -w-rch -w-pro -w-aus -DFT2_BUILD_LIBRARY
>> >-DFT_CONFIG_MODULES_H="<ftmodule.h>"  -I.\src\psnames -oobjs\psnames.obj
>> >.\src\psnames\psmodule.c
>> >.\src\psnames\psmodule.c:
>> >bcc32  -Lobjs -oobjs/apinames.exe src/tools/apinames.c
>> >CodeGear C++ 5.93 for Win32 Copyright (c) 1993, 2007 CodeGear
>> >src/tools/apinames.c:
>> >Turbo Incremental Link 5.81 Copyright (c) 1997-2008 CodeGear
>> >Fatal: Unable to open file 'APINAMES.OBJ'
>> >mingw32-make: *** [objs/apinames.exe] Error 1
>> >Regards,
>> >Mirco
>> >
>> >2009/7/13 Mirco Babin <address@hidden>
>> >
>> >> Hi,
>> >>
>> >> I applied your patch and compiled.
>> >> I see the -L now, but it still results in an error. I believe the
>> -L./objs
>> >> should be replaced with -Lobjs
>> >>
>> >>  bcc32 -A  -I.\objs -I.\builds\win32 -I.\include -c -q -y -d -v -Od
>> -w-par
>> >> -w-ccc -w-rch -w-pro -w-aus -DFT2_BUILD_LIBRARY
>> >> -DFT_CONFIG_MODULES_H="<ftmodule.h>"  -I.\src\psnames -oobjs\psnames.obj
>> >> .\src\psnames\psmodule.c
>> >> .\src\psnames\psmodule.c:
>> >> bcc32  -L./objs -oobjs/apinames.exe src/tools/apinames.c
>> >> CodeGear C++ 5.93 for Win32 Copyright (c) 1993, 2007 CodeGear
>> >> src/tools/apinames.c:
>> >> Turbo Incremental Link 5.81 Copyright (c) 1997-2008 CodeGear
>> >> Fatal: Unable to open file 'APINAMES.OBJ'
>> >> mingw32-make: *** [objs/apinames.exe] Error 1
>> >>
>> >> Regards,
>> >> Mirco
>> >>
>> >> 2009/7/10 <address@hidden>
>> >>
>> >> Hi,
>> >>>
>> >>> Could you try following patch? It fixes:
>> >>>
>> >>> * declare the suffix ".exe" to be added to "apinames".
>> >>> * prepare CCexe_CFLAGS & CCexe_LDFLAGS.
>> >>> * put "-Lobj" to CCexe_LDFLAGS when we use bcc.
>> >>>
>> >>> Regards,
>> >>> mpsuzuki
>> >>>
>> >>> diff --git a/builds/win32/win32-def.mk b/builds/win32/win32-def.mk
>> >>> index a82b146..e6ae31c 100644
>> >>> --- a/builds/win32/win32-def.mk
>> >>> +++ b/builds/win32/win32-def.mk
>> >>> @@ -22,6 +22,7 @@ PLATFORM  := win32
>> >>>  # The executable file extension (for tools). NOTE: WE INCLUDE THE DOT
>> >>> HERE !!
>> >>>  #
>> >>>  E := .exe
>> >>> +E_BUILD := .exe
>> >>>
>> >>>
>> >>>  # The directory where all library files are placed.
>> >>>
>> >>>
>> >>> diff --git a/builds/exports.mk b/builds/exports.mk
>> >>> index 5452b35..d84a4c2 100644
>> >>> --- a/builds/exports.mk
>> >>> +++ b/builds/exports.mk
>> >>> @@ -51,7 +51,7 @@ ifneq ($(EXPORTS_LIST),)
>> >>>   APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)
>> >>>
>> >>>   $(APINAMES_EXE): $(APINAMES_SRC)
>> >>> -         $(CCexe) $(TE)$@ $<
>> >>> +         $(CCexe) $(CCexe_CFLAGS) $(CCexe_LDFLAGS) $(TE)$@ $<
>> >>>
>> >>>   .PHONY: symbols_list
>> >>>
>> >>> diff --git a/builds/compiler/bcc.mk b/builds/compiler/bcc.mk
>> >>> index 509cb72..c28359a 100644
>> >>> --- a/builds/compiler/bcc.mk
>> >>> +++ b/builds/compiler/bcc.mk
>> >>> @@ -75,4 +75,8 @@ CLEAN_LIBRARY ?= $(DELETE) $(subst
>> >>> /,$(SEP),$(PROJECT_LIBRARY))
>> >>>  LINK_LIBRARY   = tlib /u $(subst /,$(COMPILER_SEP),$@
>> >>> $(OBJECTS_LIST:%=+%))
>> >>>
>> >>>
>> >>> +# apinames linking
>> >>> +#
>> >>> +CCexe_LDFLAGS := -L$(OBJ_DIR)
>> >>> +
>> >>>  # EOF
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> On Fri, 10 Jul 2009 15:44:56 +0200
>> >>> Mirco Babin <address@hidden> wrote:
>> >>>
>> >>> >Hi,
>> >>> >
>> >>> >The problem is that the linker can't find the OBJ file.
>> >>> >The current directory is .
>> >>> >The obj files are compiled into .\objs
>> >>> >From the current directory a link is performed, but the .\objs
>> directory
>> >>> is
>> >>> >not set as a path.
>> >>> >
>> >>> >Indeed apinames.exe is just one obj.
>> >>> >
>> >>> >I'm looking forward to your solution, thanks in advance !
>> >>> >
>> >>> >Regards,
>> >>> >Mirco
>> >>> >
>> >>> >2009/7/10 suzuki toshiya <address@hidden>
>> >>> >
>> >>> >> Hi,
>> >>> >>
>> >>> >> Mirco Babin wrote (2009/07/10 21:53):
>> >>> >> > Well,
>> >>> >> >
>> >>> >> > I tried the following and it does not produce errors:
>> >>> >> > bcc32 -Lobjs -oobjs/apinames.exe src/tools/apinames.c
>> >>> >> >
>> >>> >> > The -L switch is to provide a library search path (where to find
>> OBJ
>> >>> and
>> >>> >> LIB
>> >>> >> > files).
>> >>> >>
>> >>> >> Interesting. apinames.exe requires only apinames.c,
>> >>> >> no need to link other libraries and objects, so
>> >>> >> the requirement of "-Lobjs" is not easy to understand.
>> >>> >> Maybe we have to care the single command executing
>> >>> >> compilation and linking.
>> >>> >>
>> >>> >> > But I don't known what should be adjusted in the makefiles. They
>> are
>> >>> >> really
>> >>> >> > complex.
>> >>> >>
>> >>> >> OK, I will take a look. Please wait 24 hours.
>> >>> >>
>> >>> >> Regards,
>> >>> >> mpsuzuki
>> >>> >>
>> >>> >> > Regards,
>> >>> >> > Mirco
>> >>> >> > 2009/7/10 suzuki toshiya <address@hidden>
>> >>> >> >
>> >>> >> >> Hi,
>> >>> >> >>
>> >>> >> >> Mirco Babin wrote (2009/07/10 20:24):
>> >>> >> >>
>> >>> >> >>> bcc32 -oobjs/apinames src/tools/apinames.c
>> >>> >> >>> CodeGear C++ 5.93 for Win32 Copyright (c) 1993, 2007 CodeGear
>> >>> >> >>> src/tools/apinames.c:
>> >>> >> >>> Turbo Incremental Link 5.81 Copyright (c) 1997-2008 CodeGear
>> >>> >> >>> Fatal: Unable to open file 'APINAMES.OBJ'
>> >>> >> >>> mingw32-make: *** [objs/apinames] Error 1
>> >>> >> >>>
>> >>> >> >> I'm unfamiliar with bcc32 commandline syntax.
>> >>> >> >> How we can build "Hello World"-like program
>> >>> >> >> by bcc32? I think the author of the Makefile
>> >>> >> >> assumed that "bcc32 -ohello hello.c" is OK.
>> >>> >> >> Please let me know how to build hello world
>> >>> >> >> by bcc32.
>> >>> >> >>
>> >>> >> >> The command
>> >>> >> >>
>> >>> >> >> bcc32 -oobjs/apinames.exe src/tools/apinames.c
>> >>> >> >>
>> >>> >> >> can compile & link working executabe "apinames.exe"?
>> >>> >> >>
>> >>> >> >> Regards,
>> >>> >> >> mpsuzuki
>> >>> >> >>
>> >>> >> >
>> >>> >>
>> >>> >>
>> >>> >
>> >>>
>> >>
>> >>
>> >
>>
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]