Преглед изворни кода

* strip codesignature when comparing compiler binaries on Darwin
o fixes non-converging "make cycle" on macOS/AArch64 with DEBUG=1

git-svn-id: trunk@48518 -

Jonas Maebe пре 4 година
родитељ
комит
91d877919e
2 измењених фајлова са 43 додато и 2 уклоњено
  1. 21 1
      compiler/Makefile
  2. 22 1
      compiler/Makefile.fpc

+ 21 - 1
compiler/Makefile

@@ -4640,6 +4640,9 @@ ifdef CMP
 override DIFF:=$(CMP) -i218
 endif
 endif
+ifeq ($(OS_TARGET), darwin)
+CODESIGN?=$(strip $(wildcard $(addsuffix /codesign,$(SEARCHPATH))))
+endif
 ifneq ($(CYCLELEVEL),1)
 ifndef ALLOW_WARNINGS
 override LOCALOPT+=-Sew
@@ -4941,7 +4944,11 @@ ifdef OLDFPC
 ifneq ($(OS_TARGET),darwin)
 DIFFRESULT:=$(shell $(DIFF) $(OLDFPC) $(FPC))
 else
-DIFFRESULT:=$(shell cp $(OLDFPC) $(OLDFPC).tmp; cp $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; rm $(OLDFPC).tmp $(FPC).tmp)
+ifneq ($(CODESIGN),)
+DIFFRESULT:=$(shell $(COPY) $(OLDFPC) $(OLDFPC).tmp; $(COPY) $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(CODESIGN) --remove-signature $(OLDFPC).tmp; codesign --remove-signature $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; $(RMPROG) $(OLDFPC).tmp $(FPC).tmp)
+else
+DIFFRESULT:=$(shell $(COPY) $(OLDFPC) $(OLDFPC).tmp; $(COPY) $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; $(RMPROG) $(OLDFPC).tmp $(FPC).tmp)
+endif
 endif
 else
 DIFFRESULT=Not equal
@@ -4980,7 +4987,20 @@ endif
 	$(MAKE) tempclean
 	$(MAKE) $(TEMPNAME3)
 	$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3PREFIX)$(TEMPNAME3)' 'OLDFPC=$(BASEDIR)/$(TEMPNAME2)' next CYCLELEVEL=4
+ifneq ($(OS_TARGET), darwin)
 	$(DIFF) $(TEMPNAME3) $(EXENAME)
+else
+	$(COPY) $(TEMPNAME3) $(TEMPNAME3).tmp
+	$(COPY) $(EXENAME) $(EXENAME).tmp
+	strip -no_uuid $(TEMPNAME3).tmp
+	strip -no_uuid $(EXENAME).tmp
+ifneq ($(CODESIGN),)
+	$(CODESIGN) --remove-signature $(TEMPNAME3).tmp
+	$(CODESIGN) --remove-signature $(EXENAME).tmp
+endif
+	$(DIFF) $(TEMPNAME3).tmp $(EXENAME).tmp
+	rm $(TEMPNAME3).tmp $(EXENAME).tmp
+endif
 	$(MAKE) $(addsuffix _all,$(TARGET_DIRS)) 'FPC=$(BASEDIR)/$(EXENAMEPREFIX)$(EXENAME)'
 	$(MAKE) wpocycle
 	$(MAKE) echotime

+ 22 - 1
compiler/Makefile.fpc

@@ -438,6 +438,10 @@ override DIFF:=$(CMP) -i218
 endif
 endif
 
+ifeq ($(OS_TARGET), darwin)
+CODESIGN?=$(strip $(wildcard $(addsuffix /codesign,$(SEARCHPATH))))
+endif
+
 # Use -Sew option by default
 # Allow disabling by setting ALLOW_WARNINGS=1
 ifneq ($(CYCLELEVEL),1)
@@ -878,7 +882,11 @@ ifdef OLDFPC
 ifneq ($(OS_TARGET),darwin)
 DIFFRESULT:=$(shell $(DIFF) $(OLDFPC) $(FPC))
 else
-DIFFRESULT:=$(shell cp $(OLDFPC) $(OLDFPC).tmp; cp $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; rm $(OLDFPC).tmp $(FPC).tmp)
+ifneq ($(CODESIGN),)
+DIFFRESULT:=$(shell $(COPY) $(OLDFPC) $(OLDFPC).tmp; $(COPY) $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(CODESIGN) --remove-signature $(OLDFPC).tmp; codesign --remove-signature $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; $(RMPROG) $(OLDFPC).tmp $(FPC).tmp)
+else
+DIFFRESULT:=$(shell $(COPY) $(OLDFPC) $(OLDFPC).tmp; $(COPY) $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; $(RMPROG) $(OLDFPC).tmp $(FPC).tmp)
+endif
 endif
 else
 DIFFRESULT=Not equal
@@ -922,7 +930,20 @@ endif
         $(MAKE) tempclean
         $(MAKE) $(TEMPNAME3)
         $(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3PREFIX)$(TEMPNAME3)' 'OLDFPC=$(BASEDIR)/$(TEMPNAME2)' next CYCLELEVEL=4
+ifneq ($(OS_TARGET), darwin)
         $(DIFF) $(TEMPNAME3) $(EXENAME)
+else
+        $(COPY) $(TEMPNAME3) $(TEMPNAME3).tmp
+        $(COPY) $(EXENAME) $(EXENAME).tmp
+        strip -no_uuid $(TEMPNAME3).tmp
+        strip -no_uuid $(EXENAME).tmp
+ifneq ($(CODESIGN),)
+        $(CODESIGN) --remove-signature $(TEMPNAME3).tmp
+        $(CODESIGN) --remove-signature $(EXENAME).tmp
+endif
+        $(DIFF) $(TEMPNAME3).tmp $(EXENAME).tmp
+        rm $(TEMPNAME3).tmp $(EXENAME).tmp
+endif
         $(MAKE) $(addsuffix _all,$(TARGET_DIRS)) 'FPC=$(BASEDIR)/$(EXENAMEPREFIX)$(EXENAME)'
         $(MAKE) wpocycle
         $(MAKE) echotime