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 15:06:49 +0900

Hi,

Checking the manual of bcc32 carefully,
I found that the option "-o" should not be used
to specify the location of executable.
It specifies the pathname for the object file, 
thus, the command

        bcc32 -oobjs\apinames.exe src\tools\apinames.c

generates .\objs\apinames.exe, and .\apinames.exe.
The former is an object file that cannot be executed.
The latter is the executable, and does not crash.

# I remember you mentioned about the current directory,
# >>>> >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 ?
# Did you mean such? I'm sorry for missing that.
# I haven't used bcc32 at that time.

I think APINAMES_EXE target in exports.mk is
too simplified (and assumes Unix-like compiler
options). It should be improved to set appropriate
CCexe_CFLAGS etc for non-Unix compilers.
I will work that, please wait.

Regards,
mpsuzuki

On Tue, 14 Jul 2009 14:21:29 +0900
address@hidden wrote:

>Hi,
>
>Just I've installed MinGW 5.1.4 and Borland C++ 5.5
>onto my Windows PC and reproduced that the building
>process of FT2 does not finish. I thank Mirco.
>
>I could compile apinames.exe with bcc32 by single
>command, aslike:
>
>       bcc32 -oobjs\apinames.exe src\tools\apinames.c
>
>But running apinames.exe makes mingw32-make.exe crashed.
>If I execute apinames.exe directly from MS-DOS command
>line, I got attached dialog (sorry for Japanese message),
>the process is crashed.
>
>I will check why apinames.exe built by bcc32 is crashed
>(nothing to say, "Hello World" built by bcc32 works 
> correctly), but the quickest fix would be setting CCraw
> to gcc. If I couldn't provide a fix making apinames.exe
>built by bcc32 work correctly, I will modify bcc.mk
>setting CCraw to gcc.
>
>Regards,
>mpsuzuki
>
>On Tue, 14 Jul 2009 01:51:30 +0900
>address@hidden wrote:
>
>>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
>>>> >>> >> >>
>>>> >>> >> >
>>>> >>> >>
>>>> >>> >>
>>>> >>> >
>>>> >>>
>>>> >>
>>>> >>
>>>> >
>>>>
>>>
>>
>>
>>_______________________________________________
>>Freetype mailing list
>>address@hidden
>>http://lists.nongnu.org/mailman/listinfo/freetype
>
>
>_______________________________________________
>Freetype mailing list
>address@hidden
>http://lists.nongnu.org/mailman/listinfo/freetype




reply via email to

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