(svn r23438) -Fix [FS#4867]: perform checks for nforenum/grfcodec in configure, including a version check so a proper error can be given when a too old grfcodec or nforenum is used
This commit is contained in:
		| @@ -34,11 +34,8 @@ else | |||||||
| 	E = @echo | 	E = @echo | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # Some configurational settings for your environment. | GRFCODEC := !!GRFCODEC!! | ||||||
| # If GRFCodec doesn't know a command, it'll exit with a non-zero exit code. | NFORENUM := !!NFORENUM!! | ||||||
| GRFCODEC := $(shell grfcodec -s -v >/dev/null 2>/dev/null && echo "grfcodec -s" || echo "grfcodec") |  | ||||||
| # Old NFORenums don't give an error code when a parameter isn't known, so we have to work around that. |  | ||||||
| NFORENUM := $(shell [ `nforenum -s -v 2>/dev/null | wc -l ` -eq 1 ] && echo "nforenum -s" || echo "nforenum") |  | ||||||
| MD5SUM   := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum") | MD5SUM   := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum") | ||||||
|  |  | ||||||
| # Some "should not be changed" settings. | # Some "should not be changed" settings. | ||||||
| @@ -46,28 +43,30 @@ NFO_FILES    := $(GRF_DIR)/*.nfo $(GRF_DIR)/rivers/*.nfo | |||||||
| PNG_FILES    := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png | PNG_FILES    := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png | ||||||
|  |  | ||||||
| # Build the GRF. | # Build the GRF. | ||||||
|  | ifdef GRFCODEC | ||||||
| all: $(BIN_DIR)/openttd.grf | all: $(BIN_DIR)/openttd.grf | ||||||
|  | else | ||||||
|  | all: | ||||||
|  | endif | ||||||
|  |  | ||||||
| # Make sure the sprites directory exists. | # Make sure the sprites directory exists. | ||||||
| $(OBJS_DIR)/sprites: | $(OBJS_DIR)/sprites: | ||||||
| 	$(Q)-mkdir "$@" | 	$(Q)-mkdir "$@" | ||||||
|  |  | ||||||
| # Generic | # Generic | ||||||
| $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites | $(BIN_DIR)/openttd.grf: $(OBJS_DIR)/openttd.grf | ||||||
| 	@# Only try; if nforenum isn't available, just retouch the file as they likely didn't need it anyway. | 	$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf | ||||||
| 	$(Q) ($(NFORENUM) --help > /dev/null 2>&1 && $(MAKE) $(OBJS_DIR)/openttd.grf && cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf) || ([ -e $(BIN_DIR)/openttd.grf ] && touch $(BIN_DIR)/openttd.grf && echo "no NFORenum and GRFCodec found, skipping rebuild of openttd.grf...") || (echo "no NFORenum and GRFCodec found, but no openttd.grf either. Install NFORenum and GRFCodec." && exit 1) | 	$(E) '$(STAGE) Updating base graphics sets' | ||||||
|  | 	$(Q) for grf in $(BIN_DIR)/orig*.obg; do sed 's/^OPENTTD.GRF  = [0-9a-f]*$$/OPENTTD.GRF  = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done | ||||||
|  |  | ||||||
| # Yeah, we'd like to use -i in the sed, but Mac OS X's sed and GNU sed just can't agree on the usage of -i. In any case either one of them fails. | # Yeah, we'd like to use -i in the sed, but Mac OS X's sed and GNU sed just can't agree on the usage of -i. In any case either one of them fails. | ||||||
| $(OBJS_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites | $(OBJS_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites | ||||||
| 	$(E) '$(STAGE) Assembling openttd.nfo' | 	$(E) '$(STAGE) Assembling openttd.nfo' | ||||||
| 	$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null | 	$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null | ||||||
| 	$(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo | 	$(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo | ||||||
| 	$(Q) $(NFORENUM) $(OBJS_DIR)/sprites/openttd.nfo | 	$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo | ||||||
| 	$(E) '$(STAGE) Compiling openttd.grf' | 	$(E) '$(STAGE) Compiling openttd.grf' | ||||||
| 	$(Q) $(GRFCODEC) -e -p1 $(OBJS_DIR)/openttd.grf | 	$(Q) $(GRFCODEC) -s -e -p1 $(OBJS_DIR)/openttd.grf | ||||||
| 	$(Q) cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf |  | ||||||
| 	$(E) '$(STAGE) Updating base graphics sets' |  | ||||||
| 	$(Q) for grf in $(BIN_DIR)/orig*.obg; do sed 's/^OPENTTD.GRF  = [0-9a-f]*$$/OPENTTD.GRF  = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done |  | ||||||
|  |  | ||||||
| # Clean up temporary files. | # Clean up temporary files. | ||||||
| clean: | clean: | ||||||
|   | |||||||
							
								
								
									
										113
									
								
								config.lib
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								config.lib
									
									
									
									
									
								
							| @@ -90,6 +90,8 @@ set_default() { | |||||||
| 	with_threads="1" | 	with_threads="1" | ||||||
| 	with_distcc="1" | 	with_distcc="1" | ||||||
| 	with_ccache="1" | 	with_ccache="1" | ||||||
|  | 	with_nforenum="1" | ||||||
|  | 	with_grfcodec="1" | ||||||
|  |  | ||||||
| 	save_params_array=" | 	save_params_array=" | ||||||
| 		build | 		build | ||||||
| @@ -162,6 +164,8 @@ set_default() { | |||||||
| 		with_threads | 		with_threads | ||||||
| 		with_distcc | 		with_distcc | ||||||
| 		with_ccache | 		with_ccache | ||||||
|  | 		with_grfcodec | ||||||
|  | 		with_nforenum | ||||||
| 	CC CXX CFLAGS CXXFLAGS LDFLAGS" | 	CC CXX CFLAGS CXXFLAGS LDFLAGS" | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -417,6 +421,14 @@ detect_params() { | |||||||
| 			--with-ccache)                with_ccache="2";; | 			--with-ccache)                with_ccache="2";; | ||||||
| 			--with-ccache=*)              with_ccache="$optarg";; | 			--with-ccache=*)              with_ccache="$optarg";; | ||||||
|  |  | ||||||
|  | 			--without-nforenum)           with_nforenum="0";; | ||||||
|  | 			--with-nforenum)              with_nforenum="2";; | ||||||
|  | 			--with-nforenum=*)            with_nforenum="$optarg";; | ||||||
|  |  | ||||||
|  | 			--without-grfcodec)           with_grfcodec="0";; | ||||||
|  | 			--with-grfcodec)              with_grfcodec="2";; | ||||||
|  | 			--with-grfcodec=*)            with_grfcodec="$optarg";; | ||||||
|  |  | ||||||
| 			--without-osx-sysroot)        with_osx_sysroot="0";; | 			--without-osx-sysroot)        with_osx_sysroot="0";; | ||||||
| 			--with-osx-sysroot)           with_osx_sysroot="2";; | 			--with-osx-sysroot)           with_osx_sysroot="2";; | ||||||
| 			--with-osx-sysroot=*)         with_osx_sysroot="$optarg";; | 			--with-osx-sysroot=*)         with_osx_sysroot="$optarg";; | ||||||
| @@ -926,6 +938,21 @@ check_params() { | |||||||
| 		log 1 "checking ccache... $ccache" | 		log 1 "checking ccache... $ccache" | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  | 	detect_grfcodec | ||||||
|  | 	detect_nforenum | ||||||
|  |  | ||||||
|  | 	if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then | ||||||
|  | 		log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum" | ||||||
|  | 		nforenum="" | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then | ||||||
|  | 		log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec" | ||||||
|  | 		grfcodec="" | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	if [ "$os" = "DOS" ]; then | 	if [ "$os" = "DOS" ]; then | ||||||
| 		with_threads="0" | 		with_threads="0" | ||||||
| 	fi | 	fi | ||||||
| @@ -3042,6 +3069,90 @@ detect_sort() { | |||||||
| 	fi | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | detect_grfcodec() { | ||||||
|  | 	# 0 means no, 1 is auto-detect, 2 is force | ||||||
|  | 	if [ "$with_grfcodec" = "0" ]; then | ||||||
|  | 		log 1 "checking grfcodec... disabled" | ||||||
|  |  | ||||||
|  | 		grfcodec="" | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then | ||||||
|  | 		grfcodec="grfcodec" | ||||||
|  | 	else | ||||||
|  | 		grfcodec="$with_grfcodec" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	version=`$grfcodec -v | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/' 2>/dev/null` | ||||||
|  | 	ret=$? | ||||||
|  | 	log 2 "executing grfcodec -v" | ||||||
|  | 	log 2 "  returned $version" | ||||||
|  | 	log 2 "  exit code $ret" | ||||||
|  |  | ||||||
|  | 	if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "846" ]; then | ||||||
|  | 		if [ -n "$version" ] && [ "$version" -lt "846" ]; then | ||||||
|  | 			log 1 "checking grfcodec... needs at least version 5.1.3 (r846), disabled" | ||||||
|  | 		else | ||||||
|  | 			log 1 "checking grfcodec... not found" | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		# It was forced, so it should be found. | ||||||
|  | 		if [ "$with_grfcodec" != "1" ]; then | ||||||
|  | 			log 1 "configure: error: grfcodec couldn't be found" | ||||||
|  | 			log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid" | ||||||
|  | 			exit 1 | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		grfcodec="" | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	log 1 "checking grfcodec... found" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | detect_nforenum() { | ||||||
|  | 	# 0 means no, 1 is auto-detect, 2 is force | ||||||
|  | 	if [ "$with_nforenum" = "0" ]; then | ||||||
|  | 		log 1 "checking nforenum... disabled" | ||||||
|  |  | ||||||
|  | 		nforenum="" | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then | ||||||
|  | 		nforenum="nforenum" | ||||||
|  | 	else | ||||||
|  | 		nforenum="$with_nforenum" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	version=`$nforenum -v | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/' 2>/dev/null` | ||||||
|  | 	ret=$? | ||||||
|  | 	log 2 "executing nforenum -v" | ||||||
|  | 	log 2 "  returned $version" | ||||||
|  | 	log 2 "  exit code $ret" | ||||||
|  |  | ||||||
|  | 	if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "846" ]; then | ||||||
|  | 		if [ -n "$version" ] && [ "$version" -lt "846" ]; then | ||||||
|  | 			log 1 "checking nforenum... needs at least version 5.1.3 (r846), disabled" | ||||||
|  | 		else | ||||||
|  | 			log 1 "checking nforenum... not found" | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		# It was forced, so it should be found. | ||||||
|  | 		if [ "$with_nforenum" != "1" ]; then | ||||||
|  | 			log 1 "configure: error: nforenum couldn't be found" | ||||||
|  | 			log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid" | ||||||
|  | 			exit 1 | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		nforenum="" | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	log 1 "checking nforenum... found" | ||||||
|  | } | ||||||
|  |  | ||||||
| detect_cputype() { | detect_cputype() { | ||||||
| 	if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then | 	if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then | ||||||
| 		log 1 "forcing cpu-type... $cpu_type bits" | 		log 1 "forcing cpu-type... $cpu_type bits" | ||||||
| @@ -3139,6 +3250,8 @@ make_sed() { | |||||||
| 		s@!!REVISION!!@$revision@g; | 		s@!!REVISION!!@$revision@g; | ||||||
| 		s@!!AWK!!@$awk@g; | 		s@!!AWK!!@$awk@g; | ||||||
| 		s@!!DISTCC!!@$distcc@g; | 		s@!!DISTCC!!@$distcc@g; | ||||||
|  | 		s@!!NFORENUM!!@$nforenum@g; | ||||||
|  | 		s@!!GRFCODEC!!@$grfcodec@g; | ||||||
| 	" | 	" | ||||||
|  |  | ||||||
| 	if [ "$icon_theme_dir" != "" ]; then | 	if [ "$icon_theme_dir" != "" ]; then | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 rubidium
					rubidium