File: Makefile

package info (click to toggle)
julia 0.4.7-6
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 22,128 kB
  • ctags: 15,440
  • sloc: lisp: 146,606; ansic: 96,638; sh: 12,615; cpp: 11,846; makefile: 3,431; python: 1,005; pascal: 856; xml: 585; f90: 415; java: 343; asm: 86; perl: 77
file content (112 lines) | stat: -rw-r--r-- 3,976 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
JULIAHOME = ..
include ../deps/Versions.make
include ../Make.inc

TAGGED_RELEASE_BANNER = ""

ifneq ($(USEMSVC), 1)
CPP_STDOUT = $(CPP) -P
else
CPP_STDOUT = $(CPP) -E
endif

all: pcre_h.jl errno_h.jl build_h.jl.phony fenv_constants.jl file_constants.jl uv_constants.jl version_git.jl.phony

PCRE_CONST = 0x[0-9a-fA-F]+|[0-9]+
ifeq ($(USE_SYSTEM_PCRE), 1)
  PCRE_INCL_PATH = $(shell $(PCRE_CONFIG) --prefix)/include/pcre2.h
else
  PCRE_INCL_PATH = $(build_includedir)/pcre2.h
endif

pcre_h.jl:
	@$(call PRINT_PERL, $(CPP) -D PCRE2_CODE_UNIT_WIDTH=8 -dM $(PCRE_INCL_PATH) | perl -nle '/^\s*#define\s+PCRE2_(\w*)\s*\(?($(PCRE_CONST))\)?u?\s*$$/ and print "const $$1 = UInt32($$2)"' | LC_ALL=C sort > $@)

errno_h.jl:
	@$(call PRINT_PERL, echo '#include "errno.h"' | $(CPP) -dM - | perl -nle 'print "const $$1 = Int32($$2)" if /^#define\s+(E\w+)\s+(\d+)\s*$$/' | LC_ALL=C sort > $@)

fenv_constants.jl: ../src/fenv_constants.h
	@$(PRINT_PERL) $(CPP_STDOUT) -DJULIA ../src/fenv_constants.h | tail -n 8 | perl -ple 's/\sFE_UN\w+/ 0x10/g; s/\sFE_O\w+/ 0x08/g; s/\sFE_DI\w+/ 0x04/g; s/\sFE_INV\w+/ 0x01/g; s/\sFE_TON\w+/ 0x00/g; s/\sFE_UP\w+/ 0x800/g; s/\sFE_DO\w+/ 0x400/g; s/\sFE_TOW\w+/ 0xc00/g' > $@

file_constants.jl: ../src/file_constants.h
	@$(call PRINT_PERL, $(CPP_STDOUT) -DJULIA ../src/file_constants.h | perl -nle 'print "$$1 0o$$2" if /^(\s*const\s+[A-z_]+\s+=)\s+(0[0-9]*)\s*$$/; print "$$1" if /^\s*(const\s+[A-z_]+\s+=\s+([1-9]|0x)[0-9A-z]*)\s*$$/' > $@)

uv_constants.jl: ../src/uv_constants.h $(build_includedir)/uv-errno.h
	@$(call PRINT_PERL, $(CPP_STDOUT) "-I$(LIBUV_INC)" -DJULIA ../src/uv_constants.h | tail -n 16 > $@)

build_h.jl.phony:
	@echo "# This file is automatically generated in base/Makefile" > $@
	@echo "const ARCH = :$(ARCH)" >> $@
ifeq ($(XC_HOST),)
	@echo "const MACHINE = \"$(BUILD_MACHINE)\"" >> $@
else
	@echo "const MACHINE = \"$(XC_HOST)\"" >> $@
endif
	@echo "const libm_name = \"$(LIBMNAME)\"" >> $@
	@echo "const libblas_name = \"$(LIBBLASNAME)\"" >> $@
	@echo "const liblapack_name = \"$(LIBLAPACKNAME)\"" >> $@
ifeq ($(USE_BLAS64), 1)
	@echo "const USE_BLAS64 = true" >> $@
else
	@echo "const USE_BLAS64 = false" >> $@
endif
ifeq ($(USE_GPL_LIBS), 1)
	@echo "const USE_GPL_LIBS = true" >> $@
else
	@echo "const USE_GPL_LIBS = false" >> $@
endif
	@echo "const libfftw_name = \"$(LIBFFTWNAME)\"" >> $@
	@echo "const libfftwf_name = \"$(LIBFFTWFNAME)\"" >> $@
	@echo "const libllvm_version = \"$(LLVM_VER)\"" >> $@
	@echo "const VERSION_STRING = \"$(JULIA_VERSION)\"" >> $@
	@echo "const TAGGED_RELEASE_BANNER = \"$(TAGGED_RELEASE_BANNER)\"" >> $@
	@echo "const SYSCONFDIR = \"$(sysconfdir_rel)\"" >> $@
	@echo "const DATAROOTDIR = \"$(datarootdir_rel)\"" >> $@
	@echo "const DOCDIR = \"$(docdir_rel)\"" >> $@

	@# This to ensure that we always rebuild this file, but only when it is modified do we touch build_h.jl,
	@# ensuring we rebuild the system image as infrequently as possible
	@if ! cmp -s $@ build_h.jl; then \
		$(call PRINT_PERL,) \
		mv $@ build_h.jl; \
	else \
		rm -f $@; \
	fi

version_git.jl.phony:
ifneq ($(NO_GIT), 1)
	@sh version_git.sh > $@
	@# This to avoid touching git_version.jl when it is not modified,
	@# so that the system image does not need to be rebuilt.
	@if ! cmp -s $@ version_git.jl; then \
	    $(call PRINT_PERL,) \
	    mv $@ version_git.jl; \
	else \
	    rm -f $@; \
	fi
else
ifeq ($(shell [ -f version_git.jl ] && echo "true"), true)
	@# Give warning if boilerplate git is used
	@if grep -q "Default output if git is not available" version_git.jl; then \
	    echo "WARNING: Using boilerplate git version info" >&2; \
	fi
else
	$(warning "WARNING: Generating boilerplate git version info")
	@sh version_git.sh NO_GIT > version_git.jl
endif
endif

.PHONY: build_h.jl.phony version_git.jl.phony



clean:
	rm -f *# *~
	rm -f pcre_h.jl
	rm -f errno_h.jl
	rm -f build_h.jl
	rm -f build_h.jl.phony
	rm -f fenv_constants.jl
	rm -f uv_constants.jl
	rm -f file_constants.jl
	rm -f version_git.jl.phony