Skip to contentSkip to conversation

Proposed change to arch/parisc/Makefile and generation of offset.h

parisc-linux Randolph Chung 2 participants 4 messages Feb 2, 2002

lore
Share & tools
lore
#0 lore raw

I'd like to check this change in to change how we clean up and regenerate include/asm-parisc/offset.h. This will let us ship a working offset.h in our kernel-headers package to be used by glibc builds, and will also allow things like gdb to build.

(basically, the problem right now is that offset.h is removed after a 'make clean')

With this change, 'make dep' will regenerate the offset.h and allow the kernel dependency mechanism to kick in. 'make mrproper' will remove the offset.h file, but 'make clean' will not.

comments?

randolph

Index: arch/parisc/Makefile
===================================================================
RCS file: /var/cvs/linux/arch/parisc/Makefile,v
retrieving revision 1.28

parisc/Makefile +10 -3
diff -u -p -r1.28 Makefile
@@ -32,6 +32,7 @@ CROSS_COMPILE := hppa-linux-
 endif
 endif
 
+OFFSET_H := $(TOPDIR)/include/asm-parisc/offset.h
 FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align 
 
 CPP=$(CC) -E
@@ -79,7 +80,7 @@ SUBDIRS := $(SUBDIRS) $(addprefix arch/p
 CORE_FILES :=  $(addprefix arch/parisc/, kernel/pdc_cons.o kernel/process.o \
 	lib/lib.a mm/mm.o kernel/kernel.o hpux/hpux.o) \
 	$(CORE_FILES) arch/parisc/kernel/init_task.o
-CLEAN_FILES := $(CLEAN_FILES) arch/parisc/tools/offset.[hs] include/asm-parisc/offset.h*
+CLEAN_FILES := $(CLEAN_FILES) arch/parisc/tools/offset.[hs] 
 
 ifdef CONFIG_PARISC64
 HEAD := arch/parisc/kernel/head64.o
@@ -122,8 +123,14 @@ compressed: zImage
 
 install: 
 
+archmrproper:
+	rm -f $(OFFSET_H)
+
 archclean:
 
-archmrproper:
+archdep: $(OFFSET_H)
+
+$(OFFSET_H): include/linux/version.h
+	$(MAKE) -C $(TOPDIR)/arch/$(ARCH)/tools all
 
-archdep:
+.PHONY: archdep $(OFFSET_H)
Signature · 4 lines
   @..@                                         http://www.TauSq.org/
  (----)
 ( >__< )
 ^^ ~~ ^^
#1 lore raw
Quoted 5 lines · Randolph Chung

I'd like to check this change in to change how we clean up and regenerate include/asm-parisc/offset.h. This will let us ship a working offset.h in our kernel-headers package to be used by glibc builds, and will also allow things like gdb to build.

Quoted 8 lines

(basically, the problem right now is that offset.h is removed after a 'make clean')

With this change, 'make dep' will regenerate the offset.h and allow the kernel dependency mechanism to kick in. 'make mrproper' will remove the offset.h file, but 'make clean' will not.

comments?

Sounds like a reasonable compromise to me. Only snag is that if you build a 32 bit kernel, make clean, change config for a 64 bit kernel, then make again, you will build a 64 bit kernel with the wrong offset.h.

Would be nice if 'make' could verify that the offset.h ifile was correct, without changing it (and so triggering dependencies). If it could do that, it could regenerate it only if it was wrong.

Richard

#2 lore raw
Quoted 7 lines

Sounds like a reasonable compromise to me. Only snag is that if you build a 32 bit kernel, make clean, change config for a 64 bit kernel, then make again, you will build a 64 bit kernel with the wrong offset.h.

Would be nice if 'make' could verify that the offset.h ifile was correct, without changing it (and so triggering dependencies). If it could do that, it could regenerate it only if it was wrong.

I think it's reasonable to expect people to manually do a full 'make dep' when switching. I'm not sure offset.h is the only thing that'll break if they don't.

With that said, sanity checking offset.h is never a bad thing. How about if I also add this so that the build will complain loudly if you used the wrong one?

Index: arch/parisc/tools/offset.c
===================================================================
RCS file: /var/cvs/linux/arch/parisc/tools/offset.c,v retrieving revision 1.16

parisc/tools/offset.c +9 -0
diff -u -p -r1.16 offset.c
@@ -39,6 +39,15 @@ linefeed;
 text("#ifndef _PARISC_OFFSET_H");
 text("#define _PARISC_OFFSET_H");
 linefeed;
+#ifdef __LP64__
+text("#ifndef __LP64__");
+text("#error offset.h was generated for 64-bit build; did you do 'make dep'?");
+#else
+text("#ifdef __LP64__");
+text("#error offset.h was generated for 32-bit build; did you do 'make dep'?");
+#endif
+text("#endif");
+linefeed;
 
 void output_task_ptreg_defines(void)
 {

randolph

Signature · 4 lines
   @..@                                         http://www.TauSq.org/
  (----)
 ( >__< )
 ^^ ~~ ^^
#3 lore raw
Quoted 3 lines · Randolph Chung

With that said, sanity checking offset.h is never a bad thing. How about if I also add this so that the build will complain loudly if you used the wrong one?

Looks good to me.

Richard