* src/SDCCmain.c (linkEdit): don't suppress crt0 if --nostdlib is used
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 11 Nov 2004 12:10:48 +0000 (12:10 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 11 Nov 2004 12:10:48 +0000 (12:10 +0000)
  and search crt0.o in all library paths,
  (setIncludePath): proper handling of --nostdinc,
  (setLibPath): proper handling of --nostdlib
* support/regression/Makefile,
* support/regression/ports/ds390/spec.mk,
* support/regression/ports/gbz80/spec.mk,
* support/regression/ports/hc08/spec.mk,
* support/regression/ports/mcs51/spec.mk,
* support/regression/ports/mcs51-large/spec.mk,
* support/regression/ports/mcs51-stack-auto/spec.mk,
* support/regression/ports/z80/spec.mk: use include and lib files from
  built version of sdcc instead of installed version
* doc/sdccman.lyx: fixed typo in --nostdinc

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3572 4a8a32a2-be11-0410-ad9d-d568d2c75423

12 files changed:
ChangeLog
doc/sdccman.lyx
src/SDCCmain.c
support/regression/Makefile
support/regression/ports/ds390/spec.mk
support/regression/ports/gbz80/spec.mk
support/regression/ports/hc08/spec.mk
support/regression/ports/host/spec.mk
support/regression/ports/mcs51-large/spec.mk
support/regression/ports/mcs51-stack-auto/spec.mk
support/regression/ports/mcs51/spec.mk
support/regression/ports/z80/spec.mk

index c9184b5484abcbd34c1c994b07ce3383d1b42d5b..c3797aa5a914c7697c5568f3fa51fcf186b2d3fb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2004-11-11 Maarten Brock <sourceforge.brock AT dse.nl>
+       * src/SDCCmain.c (linkEdit): don't suppress crt0 if --nostdlib is used
+         and search crt0.o in all library paths,
+         (setIncludePath): proper handling of --nostdinc,
+         (setLibPath): proper handling of --nostdlib
+       * support/regression/Makefile,
+       * support/regression/ports/ds390/spec.mk,
+       * support/regression/ports/gbz80/spec.mk,
+       * support/regression/ports/hc08/spec.mk,
+       * support/regression/ports/mcs51/spec.mk,
+       * support/regression/ports/mcs51-large/spec.mk,
+       * support/regression/ports/mcs51-stack-auto/spec.mk,
+       * support/regression/ports/z80/spec.mk: use include and lib files from
+         built version of sdcc instead of installed version
+       * doc/sdccman.lyx: fixed typo in --nostdinc
+
 2004-11-10 Slade Rich <slade_rich AT users.sourceforge.net>
 
        * src/pic/pcode.c,
@@ -29,6 +45,7 @@
        * support/regression/ports/mcs51/support.c: reload T1 asap
        * doc/sdccman.lyx: updated for options --pack-iram and --no-pack-iram,
          pdata use and clear idata startup behaviour
+       * support/regression/tests/bug1057979.c: added
 
 2004-11-04 Maarten Brock <sourceforge.brock AT dse.nl>
 
index 6a3972f42081a68a25485db7ec6b9ee5100ba7b1..384f1e9c8329f95fe0d8c4f9baa84a06c5c7eb9c 100644 (file)
@@ -7211,8 +7211,8 @@ status Collapsed
 /
 \end_inset 
 
--nostdincl
-\begin_inset LatexCommand \index{-\/-nostdincl}
+-nostdinc
+\begin_inset LatexCommand \index{-\/-nostdinc}
 
 \end_inset 
 
index 75dbcf8c5e0ebedbf3feb5a6f16bbf3dc5a9eac1..0821587592b8d2ef24bb6eceb3191bb08680a834 100644 (file)
@@ -1617,14 +1617,20 @@ linkEdit (char **envp)
       It is very important for this file to be first on the linking proccess
       so the areas are set in the correct order, expecially _GSINIT*/
       if ((TARGET_IS_Z80 || TARGET_IS_GBZ80) &&
-        !options.no_std_crt0 && !options.nostdlib) /*For the z80, gbz80*/
+        !options.no_std_crt0) /*For the z80, gbz80*/
         {
           char crt0path[PATH_MAX];
           FILE * crt0fp;
-          for (s = setFirstItem(libDirsSet); s != NULL; s = setNextItem(libDirsSet))
+          set *tempSet=NULL;
+
+          tempSet = appendStrSet(libDirsSet, NULL, DIR_SEPARATOR_STRING);
+          tempSet = appendStrSet(libDirsSet, NULL, c);
+          mergeSets(&tempSet, libPathsSet);
+
+          for (s = setFirstItem(tempSet); s != NULL; s = setNextItem(tempSet))
             {
-              sprintf (crt0path, "%s%s%s%scrt0.o",
-                s, DIR_SEPARATOR_STRING, c, DIR_SEPARATOR_STRING);
+              sprintf (crt0path, "%s%scrt0.o",
+                s, DIR_SEPARATOR_STRING);
 
               crt0fp=fopen(crt0path, "r");
               if(crt0fp!=NULL)/*Found it!*/
@@ -2014,6 +2020,9 @@ setIncludePath(void)
    * 4. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix)
    */
 
+  if (options.nostdinc)
+      return;
+
   includeDirsSet = appendStrSet(dataDirsSet, NULL, INCLUDE_DIR_SUFFIX);
 
   if ((p = getenv(SDCC_INCLUDE_NAME)) != NULL)
@@ -2042,6 +2051,9 @@ setLibPath(void)
    * 4. - DATADIR/LIB_DIR_SUFFIX/<model> (only on *nix)
    */
 
+  if (options.nostdlib)
+      return;
+
   libDirsSet = appendStrSet(dataDirsSet, NULL, LIB_DIR_SUFFIX);
 
   if ((p = getenv(SDCC_LIB_NAME)) != NULL)
index a9c09980c705ae5052ac79068e1587f7ec9f6468..26c118b0f2810f5222b8cc2f1286075870cc0741 100644 (file)
@@ -82,8 +82,10 @@ test-gbz80:
 # Helper rule for testing the mcs51 port only
 test-mcs51:
        $(MAKE) test-port PORT=mcs51
+
 test-mcs51-large:
        $(MAKE) test-port PORT=mcs51-large
+
 test-mcs51-stack-auto:
        $(MAKE) make-library test-port PORT=mcs51-stack-auto
 
@@ -122,7 +124,7 @@ PORT_RESULTS = $(ALL_TESTS:$(TESTS_DIR)/%.c=$(PORT_RESULTS_DIR)/%.out)
 
 SDCC_DIR = ../..
 SDCC_EXTRA_DIR = ../../../sdcc-extra
-
+INC_DIR = $(SDCC_DIR)/device/include
 
 # Defaults.  Override in spec.mk if required.
 # Path to SDCC
@@ -141,7 +143,7 @@ ifdef PORT
 include $(PORTS_DIR)/$(PORT)/spec.mk
 endif
 
-SDCCFLAGS += -Ifwk/include -Itests
+SDCCFLAGS += -Ifwk/include -Itests -I$(INC_DIR)
 
 # List of intermediate files to keep.  Pretty much keep everything as
 # disk space is free.
index 7a8442ca50750ef598dc37fd57df6eef0338d4a9..c231a12bbeebe7af16c18c03c3b90f2d9cba25f4 100644 (file)
@@ -6,7 +6,10 @@ S51B = $(SDCC_DIR)/bin/s51
 
 S51 = $(shell if [ -f $(S51A) ]; then echo $(S51A); else echo $(S51B); fi)
 
-SDCCFLAGS +=-mds390 --less-pedantic -DREENTRANT=reentrant -Wl-r
+SDCCFLAGS +=-mds390 --nostdinc --less-pedantic -DREENTRANT=reentrant -Wl-r
+LINKFLAGS = --nostdlib
+LINKFLAGS += libds390.lib libsdcc.lib liblong.lib libint.lib libfloat.lib
+LIBDIR = $(SDCC_DIR)/device/lib/build/ds390
 
 OBJEXT = .rel
 EXEEXT = .ihx
@@ -15,7 +18,7 @@ EXTRAS = $(PORTS_DIR)/$(PORT)/testfwk$(OBJEXT) $(PORTS_DIR)/$(PORT)/support$(OBJ
 
 # Rule to link into .ihx
 %$(EXEEXT): %$(OBJEXT) $(EXTRAS)
-       $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@
+       $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@
 
 %$(OBJEXT): %.c
        $(SDCC) $(SDCCFLAGS) -c $< -o $@
index 6f558212819925e804d28a4c85c6832f8e3de7a9..ef48258249b054cba364a19fc5273c8c71ee2d36 100644 (file)
@@ -2,7 +2,10 @@
 
 EMU = $(SDCC_EXTRA_DIR)/emu/rrgb/rrgb
 
-SDCCFLAGS +=-mgbz80 --less-pedantic -DREENTRANT=
+SDCCFLAGS +=-mgbz80 --nostdinc --less-pedantic -DREENTRANT=
+LINKFLAGS = --nostdlib
+LINKFLAGS += gbz80.lib
+LIBDIR = $(SDCC_DIR)/device/lib/build/gbz80
 
 EXEEXT = .gb
 
@@ -11,7 +14,7 @@ EXTRAS = ports/$(PORT)/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT)
 
 # Rule to link into .ihx
 %.gb: %.c $(EXTRAS)
-       $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@
+       $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@
 
 %$(OBJEXT): %.asm
        ../../bin/as-gbz80 -plosgff $@ $<
index b4d6032a152cc65c9f9203091b9dd89cf62a8e6b..1c1c8931b7832098ff6062956835ed780c43580c 100644 (file)
@@ -4,8 +4,10 @@ UCHC08B = $(SDCC_DIR)/bin/shc08
 
 UCHC08 = $(shell if [ -f $(UCHC08A) ]; then echo $(UCHC08A); else echo $(UCHC08B); fi)
 
-SDCCFLAGS +=-mhc08 --less-pedantic --out-fmt-ihx -DREENTRANT=reentrant
-#SDCCFLAGS +=--less-pedantic -DREENTRANT=reentrant
+SDCCFLAGS +=-mhc08 --nostdinc --less-pedantic --out-fmt-ihx -DREENTRANT=reentrant
+LINKFLAGS = --nostdlib
+LINKFLAGS += hc08.lib
+LIBDIR = $(SDCC_DIR)/device/lib/build/hc08
 
 OBJEXT = .rel
 EXEEXT = .ihx
@@ -16,7 +18,7 @@ EXTRAS = $(PORTS_DIR)/$(PORT)/testfwk$(OBJEXT) $(PORTS_DIR)/$(PORT)/support$(OBJ
 #%$(EXEEXT): %$(OBJEXT) $(EXTRAS)
 
 %$(EXEEXT): %.c $(EXTRAS)
-       $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@
+       $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@
 
 %$(OBJEXT): %.asm
        $(SDCC_DIR)/bin/as-hc08 -plosgff $<
index 75151ebe2e11499ca3280e1d9a87787e8f603491..5d243c81d3c44fe715e5508a2a422020f810f8db 100644 (file)
@@ -4,6 +4,7 @@ SDCCFLAGS = -DPORT_HOST=1 -Wall -fsigned-char -fpack-struct -DREENTRANT=
 
 EXEEXT = .bin
 OBJEXT = .o
+INC_DIR = .
 
 # otherwise `make` deletes it and `make -j`will fail
 .PRECIOUS: ports/$(PORT)/testfwk$(OBJEXT)
@@ -14,7 +15,7 @@ EXTRAS = ports/$(PORT)/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT)
 %.out: %$(EXEEXT)
        mkdir -p `dirname $@`
        -$< > $@
-       -grep -n FAIL $@ /dev/null || true      
+       -grep -n FAIL $@ /dev/null || true
 
 %$(EXEEXT): %$(OBJEXT) $(EXTRAS)
        $(SDCC) $(SDCCFLAGS) -o $@ $< $(EXTRAS) -lm
index 11f70759971d8c0db3a3072042883e231f097d3b..339fb86dcb299606e453b7f2b73da4f2356db7d4 100644 (file)
@@ -9,3 +9,5 @@ $(PORTS_DIR)/$(PORT)/%.c: $(PORTS_DIR)/mcs51/%.c
        cp $< $@
 
 include $(PORTS_DIR)/mcs51/spec.mk
+
+LIBDIR = $(SDCC_DIR)/device/lib/build/large
index cbf31b843a42f454f35c5846f6877026b6b456fb..831f05549be65477934c05f696af2f6926cda1bf 100644 (file)
@@ -2,19 +2,18 @@
 #
 # model small stack-auto
 
+include $(PORTS_DIR)/mcs51/spec.mk
+
 LIBSRCDIR = ../../device/lib
 LIBDIR    = gen/$(PORT)/lib
 
-LIBSDCCFLAGS+=--stack-auto --int-long-reent --float-reent
-SDCCFLAGS   +=$(LIBSDCCFLAGS) --nostdlib -L$(LIBDIR) -llibsdcc -llibint \
-              -lliblong -llibfloat -lmcs51
+LIBSDCCFLAGS+=--stack-auto
+SDCCFLAGS   +=$(LIBSDCCFLAGS)
 
 # copy support.c
 $(PORTS_DIR)/$(PORT)/%.c: $(PORTS_DIR)/mcs51/%.c
        cp $< $@
 
-include $(PORTS_DIR)/mcs51/spec.mk
-
 SOURCES = _atoi.c _atol.c _autobaud.c _bp.c _schar2fs.c \
           _decdptr.c _divsint.c _divslong.c _divuint.c \
           _divulong.c _fs2schar.c _fs2sint.c _fs2slong.c \
index d55eb32b3e605792a36820f148e82df3427f76ef..d686dc4658a65734972d2736a6b93b1a1b87bbf6 100644 (file)
@@ -8,7 +8,10 @@ S51B = $(SDCC_DIR)/bin/s51
 
 S51 = $(shell if [ -f $(S51A) ]; then echo $(S51A); else echo $(S51B); fi)
 
-SDCCFLAGS +=--less-pedantic -DREENTRANT=reentrant
+SDCCFLAGS +=--nostdinc --less-pedantic -DREENTRANT=reentrant
+LINKFLAGS = --nostdlib
+LINKFLAGS += mcs51.lib libsdcc.lib liblong.lib libint.lib libfloat.lib
+LIBDIR = $(SDCC_DIR)/device/lib/build/small
 
 OBJEXT = .rel
 EXEEXT = .ihx
@@ -17,7 +20,7 @@ EXTRAS = $(PORTS_DIR)/$(PORT)/testfwk$(OBJEXT) $(PORTS_DIR)/$(PORT)/support$(OBJ
 
 # Rule to link into .ihx
 %$(EXEEXT): %$(OBJEXT) $(EXTRAS)
-       $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@
+       $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@
 
 %$(OBJEXT): %.c
        $(SDCC) $(SDCCFLAGS) -c $< -o $@
index 19f3bcf3cde81105ef43aa27c22a4a4a6fabaacf..2a568d9d3d8767e24ca8ce18bae2294e24fe99d3 100644 (file)
@@ -3,7 +3,10 @@
 
 RRZ80 = $(SDCC_EXTRA_DIR)/emu/rrz80/rrz80
 
-SDCCFLAGS +=-mz80 --less-pedantic --profile -DREENTRANT=
+SDCCFLAGS +=-mz80 --nostdinc --less-pedantic --profile -DREENTRANT=
+LINKFLAGS = --nostdlib
+LINKFLAGS += z80.lib
+LIBDIR = $(SDCC_DIR)/device/lib/build/z80
 
 EXEEXT = .bin
 
@@ -16,7 +19,7 @@ EXTRAS = ports/$(PORT)/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT)
 
 # Rule to link into .ihx
 %.ihx: %.c $(EXTRAS)
-       $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@
+       $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@
 
 %$(OBJEXT): %.asm
        $(SDCC_DIR)/bin/as-z80 -plosgff $@ $<