build: Compile and install '.go' files.
* configure.ac: Set and substitute 'mcronmoduledir'. Check for 'guild' which requires Guile >= 2.0.7. Use 'AC_CANONICAL_HOST'. * scm/mcron/makefile.am (.scm.go): New target. (MODULES, GEN_MODULES, GOBJECTS, CLEANFILES, SUFFIXES) (dist_mcronmodule_DATA, mcronmodule_DATA): New variables. (pkgdata_DATA, EXTRA_DIST): Remove variables. * .gitignore: Adjust accordingly.
This commit is contained in:
		
					parent
					
						
							
								3c903bfc80
							
						
					
				
			
			
				commit
				
					
						3221c05720
					
				
			
		
					 4 changed files with 58 additions and 7 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -1,9 +1,12 @@ | |||
| *~ | ||||
| *.go | ||||
| .deps | ||||
| INSTALL | ||||
| aclocal.m4 | ||||
| autom4te.cache | ||||
| /build-aux/compile | ||||
| /build-aux/config.guess | ||||
| /build-aux/config.sub | ||||
| /build-aux/depcomp | ||||
| /build-aux/install-sh | ||||
| /build-aux/mdate-sh | ||||
|  |  | |||
							
								
								
									
										12
									
								
								configure.ac
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								configure.ac
									
										
									
									
									
								
							|  | @ -26,6 +26,8 @@ AC_INIT([GNU Mcron], [1.0.8], [bug-mcron@gnu.org]) | |||
| AC_CONFIG_AUX_DIR([build-aux]) | ||||
| AM_INIT_AUTOMAKE | ||||
| 
 | ||||
| mcronmoduledir="${datarootdir}/guile/site/2.0/mcron" | ||||
| AC_SUBST([mcronmoduledir]) | ||||
| 
 | ||||
| AC_MSG_CHECKING([whether debugging is requested]) | ||||
| AC_ARG_ENABLE(debug, | ||||
|  | @ -45,12 +47,18 @@ AC_SUBST(CONFIG_DEBUG) | |||
| # We have no interest (hence a no-op), but Debian wants this. | ||||
| AC_ARG_ENABLE(maintainer-mode) | ||||
| 
 | ||||
| 
 | ||||
| AC_CANONICAL_HOST | ||||
| AC_PROG_AWK | ||||
| AC_PROG_EGREP | ||||
| AM_PROG_CC_C_O | ||||
| 
 | ||||
| PKG_CHECK_MODULES(GUILE, guile-2.0) | ||||
| PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.7]) | ||||
| AC_PATH_PROG([GUILE], [guile]) | ||||
| 
 | ||||
| # search guild | ||||
| AC_PATH_PROG([GUILD], [guild]) | ||||
| AS_IF([test -z "$ac_cv_path_GUILD"], | ||||
|   [AC_MSG_ERROR(['guild' program cannot be found.])]) | ||||
| 
 | ||||
| # Checks for programs. | ||||
|    | ||||
|  |  | |||
|  | @ -343,6 +343,8 @@ comes in on the above socket." | |||
|     (unless (option-ref options 'schedule #f) | ||||
|       (with-output-to-file config-pid-file noop)) | ||||
|     (setenv "MAILTO" #f) | ||||
|     ;; XXX: At compile time, this yields a "possibly unbound variable" | ||||
|     ;; warning, but this is OK since it is bound in the C wrapper. | ||||
|     (c-set-cron-signals)) | ||||
| 
 | ||||
|   ;; Now we have the procedures in place for dealing with the contents of | ||||
|  |  | |||
|  | @ -1,10 +1,48 @@ | |||
| EXTRA_DIST = main.scm mcron-core.scm vixie-specification.scm \ | ||||
|              crontab.scm environment.scm job-specifier.scm redirect.scm \ | ||||
|              vixie-time.scm | ||||
| MODULES =				\ | ||||
|   environment.scm			\ | ||||
|   job-specifier.scm			\ | ||||
|   main.scm				\ | ||||
|   redirect.scm				\ | ||||
|   vixie-specification.scm		\ | ||||
|   vixie-time.scm | ||||
| 
 | ||||
| pkgdata_DATA = core.scm environment.scm job-specifier.scm redirect.scm \ | ||||
|                vixie-time.scm vixie-specification.scm config.scm | ||||
| GEN_MODULES =				\ | ||||
|   config.scm				\ | ||||
|   core.scm | ||||
| 
 | ||||
| GOBJECTS =				\ | ||||
|   $(GEN_MODULES:%.scm=%.go)		\ | ||||
|   $(MODULES:%.scm=%.go) | ||||
| 
 | ||||
| mcronmodule_DATA =			\ | ||||
|   $(GOBJECTS)				\ | ||||
|   $(GEN_MODULES) | ||||
| 
 | ||||
| dist_mcronmodule_DATA = 		\ | ||||
|   $(MODULES)				\ | ||||
|   crontab.scm				\ | ||||
|   mcron-core.scm | ||||
| 
 | ||||
| # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling.  Otherwise, if | ||||
| # $GUILE_LOAD_COMPILED_PATH contains $(mcronmoduledir), we may find .go files | ||||
| # in there that are newer than the local .scm files (for instance because the | ||||
| # user ran 'make install' recently).  When that happens, we end up loading | ||||
| # those previously-installed .go files, which may be stale, thereby breaking | ||||
| # the whole thing. | ||||
| # | ||||
| # XXX: Use the C locale for when Guile lacks | ||||
| # <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>. | ||||
| .scm.go: | ||||
| 	unset GUILE_LOAD_COMPILED_PATH ;				\ | ||||
| 	LC_ALL=C							\ | ||||
| 	$(GUILD) compile						\ | ||||
| 	  --load-path="$(top_builddir)/scm"				\ | ||||
| 	  --load-path="$(top_srcdir)/scm"				\ | ||||
| 	  --warn=format --warn=unbound-variable --warn=arity-mismatch	\ | ||||
| 	  --target="$(host)" --output="$@" "$<" | ||||
| 
 | ||||
| SUFFIXES = .go | ||||
| CLEANFILES = $(GOBJECTS) | ||||
| 
 | ||||
| # If you're wondering, the configure script keeps deleting all files with a name | ||||
| # like core.*, so we have to keep re-making it (I lost a good day's work because | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Mathieu Lirzin
				Mathieu Lirzin