diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 545abfa91f..abb18e55e5 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,39 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-06-04 04:20 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * utils/hbmk2/hbmk2.prg + + Added basic support to recognize headers inside Frameworks + on darwin systems. + + Added basic support to recognize Objective C (.m) input files. + % Optimized to only deal with header exclusion of known + headers if they are specified as "system directories" + (specified as #include <...>) + ! Minor cleanup when adding include dirs after header detection. + + * contrib/hbqt/hbqt_common.hbm + % Cleaned QT autodetection on darwin systems after adding + basic support for Frameworks to hbmk2. + + * contrib/hbqt/hbqtnetwork.hbp + * contrib/hbqt/hbqtgui.hbp + * contrib/hbqt/gtqtc/gtqtc.hbp + % Deleted now unnecessary hacks for darwin. + + * contrib/hbqt/Makefile + * contrib/hbqt/detect.mk + * contrib/hbqt/hbqts/Makefile + * contrib/hbqt/qtgui/Makefile + * contrib/hbqt/qtgui/qtguis/Makefile + * contrib/hbqt/qtnetwork/qtnetworks/Makefile + * contrib/hbqt/qtnetwork/Makefile + * contrib/hbqt/gtqtc/Makefile + * contrib/hbqt/gtqtc/gtqtcs/Makefile + % Deleted extra hacks for darwin regarding header path setup. + + * INSTALL + - Deleted dead link. + 2010-06-03 18:22 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * contrib/hbqt/hbqt_hbqplaintextedit.cpp ! Minor. @@ -31,15 +64,15 @@ * contrib/hbide/idefindreplace.prg * contrib/hbide/idemisc.prg * contrib/hbide/ideprojmanager.prg - + Implemeted: to compile a source, source is not saved + + Implemeted: to compile a source, source is not saved if in modified state. Action was already defined but inactive. - + Implemented: to build a source, current defined environment is + + Implemented: to build a source, current defined environment is used and build process stays in the folder where source resides. Also source is not saved. hbIDE attempts to executable it also. - Action defines a new icon on the top-toolbar and also an entry + Action defines a new icon on the top-toolbar and also an entry into the "Build" menu. - + % Few more fixes in selections and find processes. NOTE: new setup is also uploaded on my site. diff --git a/harbour/INSTALL b/harbour/INSTALL index 507bae7285..80a9767dbc 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -1312,7 +1312,6 @@ HARBOUR http://www.mingw.org/, http://sourceforge.net/projects/mingw/ (official, MSYS home) MinGW x64 [win, *nix, free, open-source] http://mingw-w64.sourceforge.net/, http://sourceforge.net/projects/mingw-w64/ - http://www.cadforte.com/ MinGW CEGCC [win, *nix, free, open-source] http://cegcc.sourceforge.net/ Cygwin [win, free, open-source] diff --git a/harbour/contrib/hbqt/Makefile b/harbour/contrib/hbqt/Makefile index 152143cdec..07016a2f2b 100644 --- a/harbour/contrib/hbqt/Makefile +++ b/harbour/contrib/hbqt/Makefile @@ -11,8 +11,6 @@ LIBNAME := hbqt PRG_HEADERS := \ hbqt.ch \ -_QT_HEADERS = qtgui qtnetwork - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/detect.mk b/harbour/contrib/hbqt/detect.mk index f94459a468..1f26d470e0 100644 --- a/harbour/contrib/hbqt/detect.mk +++ b/harbour/contrib/hbqt/detect.mk @@ -34,13 +34,7 @@ endif ifneq ($(HB_HAS_QT),) ifeq ($(_QT_DARWIN),yes) - HB_CFLAGS += -I/Library/Frameworks/QtCore.framework/Headers - ifneq ($(filter qtgui,$(_QT_HEADERS)),) - HB_CFLAGS += -I/Library/Frameworks/QtGui.framework/Headers - endif - ifneq ($(filter qtnetwork,$(_QT_HEADERS)),) - HB_CFLAGS += -I/Library/Frameworks/QtNetwork.framework/Headers - endif + HB_CFLAGS += -I/Library/Frameworks else HB_CFLAGS += $(foreach d,$(HB_HAS_QT),-I$(d)) endif diff --git a/harbour/contrib/hbqt/gtqtc/Makefile b/harbour/contrib/hbqt/gtqtc/Makefile index e3689b4f3b..d488e2b992 100644 --- a/harbour/contrib/hbqt/gtqtc/Makefile +++ b/harbour/contrib/hbqt/gtqtc/Makefile @@ -17,8 +17,6 @@ CPP_SOURCES := \ PRG_HEADERS := \ hbgtqtc.ch -_QT_HEADERS = qtgui - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/gtqtc/gtqtc.hbp b/harbour/contrib/hbqt/gtqtc/gtqtc.hbp index a3f7ac6e76..dcff88ed29 100644 --- a/harbour/contrib/hbqt/gtqtc/gtqtc.hbp +++ b/harbour/contrib/hbqt/gtqtc/gtqtc.hbp @@ -10,6 +10,3 @@ gtqtc.cpp -pi=gtqtc.h - -{darwin&!HB_WITH_QT}-cflag=-I/Library/Frameworks/QtGui.framework/Headers - diff --git a/harbour/contrib/hbqt/gtqtc/gtqtcs/Makefile b/harbour/contrib/hbqt/gtqtc/gtqtcs/Makefile index 7bd8b129ff..7cce630045 100644 --- a/harbour/contrib/hbqt/gtqtc/gtqtcs/Makefile +++ b/harbour/contrib/hbqt/gtqtc/gtqtcs/Makefile @@ -21,8 +21,6 @@ CPP_SOURCES := \ PRG_HEADERS := \ hbgtqtc.ch -_QT_HEADERS = qtgui - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/hbqt_common.hbm b/harbour/contrib/hbqt/hbqt_common.hbm index dfe0fd6e64..bbb1d606f1 100644 --- a/harbour/contrib/hbqt/hbqt_common.hbm +++ b/harbour/contrib/hbqt/hbqt_common.hbm @@ -18,7 +18,5 @@ {!darwin}-depincpath=qt:/usr/include/qt4 {!darwin}-depincpath=qt:/usr/lib/qt4/include {!darwin}-depincpath=qt:/usr/include -{!darwin}-depincpath=qt:/Developer/qt/include - -{darwin}-depincpath=qt:/Library/Frameworks/QtCore.framework/Headers -{darwin}-cflag=-I/Library/Frameworks/QtCore.framework/Headers +{darwin}-depincpath=qt:/Developer/qt/include +{darwin}-depincpath=qt:/Library/Frameworks diff --git a/harbour/contrib/hbqt/hbqtgui.hbp b/harbour/contrib/hbqt/hbqtgui.hbp index d0af9f5be8..6d59c1b7da 100644 --- a/harbour/contrib/hbqt/hbqtgui.hbp +++ b/harbour/contrib/hbqt/hbqtgui.hbp @@ -11,5 +11,3 @@ qtgui/*.cpp qtgui/*.prg -pi=qtgui/*.h - -{darwin&!HB_WITH_QT}-cflag=-I/Library/Frameworks/QtGui.framework/Headers diff --git a/harbour/contrib/hbqt/hbqtnetwork.hbp b/harbour/contrib/hbqt/hbqtnetwork.hbp index e1031b59e5..42b81dcc5f 100644 --- a/harbour/contrib/hbqt/hbqtnetwork.hbp +++ b/harbour/contrib/hbqt/hbqtnetwork.hbp @@ -11,5 +11,3 @@ qtnetwork/*.cpp qtnetwork/*.prg -pi=qtnetwork/*.h - -{darwin&!HB_WITH_QT}-cflag=-I/Library/Frameworks/QtNetwork.framework/Headers diff --git a/harbour/contrib/hbqt/hbqts/Makefile b/harbour/contrib/hbqt/hbqts/Makefile index 0317cc7ca6..5126a8bf6a 100644 --- a/harbour/contrib/hbqt/hbqts/Makefile +++ b/harbour/contrib/hbqt/hbqts/Makefile @@ -12,8 +12,6 @@ vpath %.prg ../ LIBNAME := hbqts -_QT_HEADERS = qtgui qtnetwork - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/qtgui/Makefile b/harbour/contrib/hbqt/qtgui/Makefile index b65a9bf257..e8eae5cc2d 100644 --- a/harbour/contrib/hbqt/qtgui/Makefile +++ b/harbour/contrib/hbqt/qtgui/Makefile @@ -8,8 +8,6 @@ include $(TOP)$(ROOT)config/global.mk LIBNAME := hbqtgui -_QT_HEADERS = qtgui - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/qtgui/qtguis/Makefile b/harbour/contrib/hbqt/qtgui/qtguis/Makefile index d4e154ce44..0d0598aaaf 100644 --- a/harbour/contrib/hbqt/qtgui/qtguis/Makefile +++ b/harbour/contrib/hbqt/qtgui/qtguis/Makefile @@ -12,8 +12,6 @@ vpath %.prg ../ LIBNAME := hbqtguis -_QT_HEADERS = qtgui - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/qtnetwork/Makefile b/harbour/contrib/hbqt/qtnetwork/Makefile index 035e4c1d20..f71078f336 100644 --- a/harbour/contrib/hbqt/qtnetwork/Makefile +++ b/harbour/contrib/hbqt/qtnetwork/Makefile @@ -8,8 +8,6 @@ include $(TOP)$(ROOT)config/global.mk LIBNAME := hbqtnetwork -_QT_HEADERS = qtnetwork - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/contrib/hbqt/qtnetwork/qtnetworks/Makefile b/harbour/contrib/hbqt/qtnetwork/qtnetworks/Makefile index 2e1b736cd8..cb8d83044f 100644 --- a/harbour/contrib/hbqt/qtnetwork/qtnetworks/Makefile +++ b/harbour/contrib/hbqt/qtnetwork/qtnetworks/Makefile @@ -12,8 +12,6 @@ vpath %.prg ../ LIBNAME := hbqtnetworks -_QT_HEADERS = qtnetwork - include $(TOP)$(ROOT)contrib/hbqt/detect.mk ifneq ($(HB_HAS_QT),) diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index d23d79e5d3..bedc0277b8 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -2281,6 +2281,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) FN_ExtGet( cParamL ) == ".cc" .OR. ; FN_ExtGet( cParamL ) == ".cxx" .OR. ; FN_ExtGet( cParamL ) == ".cx" .OR. ; + FN_ExtGet( cParamL ) == ".m" .OR. ; _EXT_IS_UPPER( cParam, ".C" ) FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) @@ -5544,99 +5545,6 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, lSystemHeader, tT STATIC s_hRegexInclude := NIL STATIC s_hExclStd := NIL - IF s_hExclStd == NIL - s_hExclStd := {; - "assert.h" => NIL ,; /* Standard C */ - "ctype.h" => NIL ,; - "errno.h" => NIL ,; - "float.h" => NIL ,; - "limits.h" => NIL ,; - "locale.h" => NIL ,; - "math.h" => NIL ,; - "setjmp.h" => NIL ,; - "signal.h" => NIL ,; - "stdarg.h" => NIL ,; - "stddef.h" => NIL ,; - "stdio.h" => NIL ,; - "stdlib.h" => NIL ,; - "string.h" => NIL ,; - "time.h" => NIL ,; - "iso646.h" => NIL ,; /* ISO C NA1 */ - "wchar.h" => NIL ,; - "wctype.h" => NIL ,; - "complex.h" => NIL ,; /* ISO C C99 */ - "fenv.h" => NIL ,; - "inttypes.h" => NIL ,; - "stdbool.h" => NIL ,; - "stdint.h" => NIL ,; - "tgmath.h" => NIL ,; - "unistd.h" => NIL ,; /* Standard C POSIX */ - "aio.h" => NIL ,; - "arpa/inet.h" => NIL ,; - "cpio.h" => NIL ,; - "dirent.h" => NIL ,; - "dlfcn.h" => NIL ,; - "fcntl.h" => NIL ,; - "fmtmsg.h" => NIL ,; - "fnmatch.h" => NIL ,; - "ftw.h" => NIL ,; - "glob.h" => NIL ,; - "grp.h" => NIL ,; - "iconv.h" => NIL ,; - "langinfo.h" => NIL ,; - "libgen.h" => NIL ,; - "monetary.h" => NIL ,; - "mqueue.h" => NIL ,; - "ndbm.h" => NIL ,; - "net/if.h" => NIL ,; - "netdb.h" => NIL ,; - "netinet/in.h" => NIL ,; - "netinet/tcp.h" => NIL ,; - "nl_types.h" => NIL ,; - "poll.h" => NIL ,; - "pthread.h" => NIL ,; - "pwd.h" => NIL ,; - "regex.h" => NIL ,; - "sched.h" => NIL ,; - "search.h" => NIL ,; - "semaphore.h" => NIL ,; - "spawn.h" => NIL ,; - "strings.h" => NIL ,; - "stropts.h" => NIL ,; - "sys/ipc.h" => NIL ,; - "sys/mman.h" => NIL ,; - "sys/msg.h" => NIL ,; - "sys/resource.h" => NIL ,; - "sys/select.h" => NIL ,; - "sys/sem.h" => NIL ,; - "sys/shm.h" => NIL ,; - "sys/socket.h" => NIL ,; - "sys/stat.h" => NIL ,; - "sys/statvfs.h" => NIL ,; - "sys/time.h" => NIL ,; - "sys/times.h" => NIL ,; - "sys/types.h" => NIL ,; - "sys/uio.h" => NIL ,; - "sys/un.h" => NIL ,; - "sys/utsname.h" => NIL ,; - "sys/wait.h" => NIL ,; - "syslog.h" => NIL ,; - "tar.h" => NIL ,; - "termios.h" => NIL ,; - "trace.h" => NIL ,; - "ulimit.h" => NIL ,; - "unistd.h" => NIL ,; - "utime.h" => NIL ,; - "utmpx.h" => NIL ,; - "wordexp.h" => NIL ,; - "windows.h" => NIL ,; /* OS (win) */ - "winspool.h" => NIL ,; - "shellapi.h" => NIL ,; - "ole2.h" => NIL ,; - "dos.h" => NIL ,; /* OS (dos) */ - "os2.h" => NIL } /* OS (os2) */ - ENDIF - DEFAULT nNestingLevel TO 1 DEFAULT cParentDir TO FN_DirGet( cFileName ) @@ -5654,9 +5562,105 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, lSystemHeader, tT RETURN .F. ENDIF - /* Don't spend time on known headers */ - IF StrTran( Lower( cFileName ), "\", "/" ) $ s_hExclStd - RETURN .F. + /* Don't spend time on known system headers */ + IF lSystemHeader + + IF s_hExclStd == NIL + s_hExclStd := {; + "assert.h" => NIL ,; /* Standard C */ + "ctype.h" => NIL ,; + "errno.h" => NIL ,; + "float.h" => NIL ,; + "limits.h" => NIL ,; + "locale.h" => NIL ,; + "math.h" => NIL ,; + "setjmp.h" => NIL ,; + "signal.h" => NIL ,; + "stdarg.h" => NIL ,; + "stddef.h" => NIL ,; + "stdio.h" => NIL ,; + "stdlib.h" => NIL ,; + "string.h" => NIL ,; + "time.h" => NIL ,; + "iso646.h" => NIL ,; /* ISO C NA1 */ + "wchar.h" => NIL ,; + "wctype.h" => NIL ,; + "complex.h" => NIL ,; /* ISO C C99 */ + "fenv.h" => NIL ,; + "inttypes.h" => NIL ,; + "stdbool.h" => NIL ,; + "stdint.h" => NIL ,; + "tgmath.h" => NIL ,; + "unistd.h" => NIL ,; /* Standard C POSIX */ + "aio.h" => NIL ,; + "arpa/inet.h" => NIL ,; + "cpio.h" => NIL ,; + "dirent.h" => NIL ,; + "dlfcn.h" => NIL ,; + "fcntl.h" => NIL ,; + "fmtmsg.h" => NIL ,; + "fnmatch.h" => NIL ,; + "ftw.h" => NIL ,; + "glob.h" => NIL ,; + "grp.h" => NIL ,; + "iconv.h" => NIL ,; + "langinfo.h" => NIL ,; + "libgen.h" => NIL ,; + "monetary.h" => NIL ,; + "mqueue.h" => NIL ,; + "ndbm.h" => NIL ,; + "net/if.h" => NIL ,; + "netdb.h" => NIL ,; + "netinet/in.h" => NIL ,; + "netinet/tcp.h" => NIL ,; + "nl_types.h" => NIL ,; + "poll.h" => NIL ,; + "pthread.h" => NIL ,; + "pwd.h" => NIL ,; + "regex.h" => NIL ,; + "sched.h" => NIL ,; + "search.h" => NIL ,; + "semaphore.h" => NIL ,; + "spawn.h" => NIL ,; + "strings.h" => NIL ,; + "stropts.h" => NIL ,; + "sys/ipc.h" => NIL ,; + "sys/mman.h" => NIL ,; + "sys/msg.h" => NIL ,; + "sys/resource.h" => NIL ,; + "sys/select.h" => NIL ,; + "sys/sem.h" => NIL ,; + "sys/shm.h" => NIL ,; + "sys/socket.h" => NIL ,; + "sys/stat.h" => NIL ,; + "sys/statvfs.h" => NIL ,; + "sys/time.h" => NIL ,; + "sys/times.h" => NIL ,; + "sys/types.h" => NIL ,; + "sys/uio.h" => NIL ,; + "sys/un.h" => NIL ,; + "sys/utsname.h" => NIL ,; + "sys/wait.h" => NIL ,; + "syslog.h" => NIL ,; + "tar.h" => NIL ,; + "termios.h" => NIL ,; + "trace.h" => NIL ,; + "ulimit.h" => NIL ,; + "unistd.h" => NIL ,; + "utime.h" => NIL ,; + "utmpx.h" => NIL ,; + "wordexp.h" => NIL ,; + "windows.h" => NIL ,; /* OS (win) */ + "winspool.h" => NIL ,; + "shellapi.h" => NIL ,; + "ole2.h" => NIL ,; + "dos.h" => NIL ,; /* OS (dos) */ + "os2.h" => NIL } /* OS (os2) */ + ENDIF + + IF StrTran( Lower( cFileName ), "\", "/" ) $ s_hExclStd + RETURN .F. + ENDIF ENDIF IF nNestingLevel > 1 @@ -5817,6 +5821,7 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, lSystemHeader, tT http://en.wikipedia.org/wiki/PCRE http://www.pcre.org/pcre.txt */ + /* TODO: Add support for #import directive of Objective C */ DEFAULT s_hRegexInclude TO hb_regexComp( '^[ \t]*#[ \t]*include[ \t]*(\".+?\"|<.+?>)', .F. /* lCaseSensitive */, .T. /* lNewLine */ ) aMatch := hb_regexAll( s_hRegexInclude, cFile, NIL /* lCaseSensitive */, NIL /* lNewLine */, NIL, NIL /* nGetMatch */, .T. /* lOnlyMatch */ ) @@ -6219,17 +6224,15 @@ STATIC FUNCTION FindHeader( hbmk, cFileName, cParentDir, lIncTry, lSystemHeader FOR EACH aINCPATH IN { dep[ _HBMKDEP_aINCPATH ],; dep[ _HBMKDEP_aINCPATHLOCAL ] } FOR EACH cDir IN aINCPATH - tmp := DirAddPathSep( PathSepToSelf( cDir ) ) + PathSepToSelf( cFileName ) - IF hb_FileExists( tmp ) + tmp := HeaderExists( cDir, cFileName ) + IF tmp != NIL dep[ _HBMKDEP_cFound ] := DirDelPathSep( PathSepToSelf( cDir ) ) dep[ _HBMKDEP_lFound ] := .T. dep[ _HBMKDEP_lFoundLOCAL ] := ( aINCPATH:__enumIndex() == 2 ) IF hbmk[ _HBMK_lDEBUGDEPD ] hbmk_OutStd( hbmk, hb_StrFormat( "debugdepd: REQ %1$s: found by %2$s header at %3$s %4$s", dep[ _HBMKDEP_cName ], PathSepToSelf( cFileName ), dep[ _HBMKDEP_cFound ], iif( dep[ _HBMKDEP_lFoundLOCAL ], "(local)", "" ) ) ) ENDIF - IF AScan( hbmk[ _HBMK_aINCPATH ], { |tmp| tmp == cDir } ) == 0 - AAdd( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathSepToSelf( cDir ) ) ) - ENDIF + AAddNew( hbmk[ _HBMK_aINCPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( cDir ) ) ) ) AAdd( hbmk[ _HBMK_aOPTC ], "-D" + _HBMK_HAS_PREF + StrToDefine( dep[ _HBMKDEP_cName ] ) ) FOR EACH cFileName IN hbmk[ _HBMK_hDEP ][ dep[ _HBMKDEP_cName ] ][ _HBMKDEP_aKeyHeader ] hb_HDel( hbmk[ _HBMK_hDEPBYHEADER ], cFileName ) @@ -6244,6 +6247,20 @@ STATIC FUNCTION FindHeader( hbmk, cFileName, cParentDir, lIncTry, lSystemHeader RETURN NIL +STATIC FUNCTION HeaderExists( cDir, cFileName ) + LOCAL tmp +#if defined( __PLATFORM__DARWIN ) + LOCAL nPos + IF ( nPos := At( "/", cFileName ) ) > 0 + tmp := DirAddPathSep( PathSepToSelf( cDir ) ) + Left( cFileName, nPos - 1 ) + ".framework" + hb_osPathSeparator() + "Headers" + hb_osPathSeparator() + SubStr( cFileName, nPos + 1 ) + IF hb_FileExists( tmp ) + RETURN tmp + ENDIF + ENDIF +#endif + tmp := DirAddPathSep( PathSepToSelf( cDir ) ) + PathSepToSelf( cFileName ) + RETURN iif( hb_FileExists( tmp ), tmp, NIL ) + /* Replicating logic used by compilers. */ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibPrefix, cLibExt ) @@ -7398,6 +7415,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) FN_ExtGet( cItemL ) == ".cc" .OR. ; FN_ExtGet( cItemL ) == ".cxx" .OR. ; FN_ExtGet( cItemL ) == ".cx" .OR. ; + FN_ExtGet( cItemL ) == ".m" .OR. ; _EXT_IS_UPPER( cItem, ".C" ) AAddNew( hbmk[ _HBMK_aCPP ], PathSepToTarget( hbmk, cItem ) ) CASE FN_ExtGet( cItemL ) == ".c" @@ -8076,6 +8094,7 @@ STATIC FUNCTION getFirstFunc( hbmk, cFile ) Lower( cExt ) == ".cc" .OR. ; Lower( cExt ) == ".cxx" .OR. ; Lower( cExt ) == ".cx" .OR. ; + Lower( cExt ) == ".m" .OR. ; _EXT_IS_UPPER( cExt, ".C" ) /* do nothing */ ELSEIF ! Empty( cExecNM := FindInPath( hbmk[ _HBMK_cCCPREFIX ] + "nm" ) )