File: GNUmakefile

package info (click to toggle)
codelite 17.0.0%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 136,384 kB
  • sloc: cpp: 491,550; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 805; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (87 lines) | stat: -rw-r--r-- 3,646 bytes parent folder | download | duplicates (3)
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
#
# Copyright (c) 2021, Hiroo Hayashi
#
# This source code is released for free distribution under the terms of the
# GNU General Public License version 2 or (at your option) any later version.
#
# Makefile to generate ctags_vs2013.vcxproj and ctags_vs2013.vcxproj.filters
#
#   usage: make [-B]
#
# Restrictions:
#   - Input Files: ctags_vs2013.vcxproj.in and ctags_vs2013.vcxproj.filters.in
#     - The last charactor of the files must be '>'.
#       cf. check_eof_chars_in_vcxproj() in misc/src-check.
#     - Other lines must be end with LF.
#   - GNU make is required.

VCXPROJ = ctags_vs2013.vcxproj
VCXPROJ_FILTERS = ctags_vs2013.vcxproj.filters
SOURCE_MAK = ../source.mak

all: $(VCXPROJ) $(VCXPROJ_FILTERS)

include $(SOURCE_MAK)

# exclude some files for Win32 and replace a slash (/) to a backslash (\)
MVC_SRCS = $(MVC_GNULIB_SRCS) $(CMDLINE_SRCS) $(LIB_SRCS) $(OPTLIB2C_SRCS) $(PARSER_SRCS) $(OPTSCRIPT_DSL_SRCS) $(DEBUG_SRCS) $(WIN32_SRCS)
MVC_SRCS_EXCLUDE = main/mbcs.c main/seccomp.c main/trace.c
MVC_SRCS_CONV = $(sort $(subst /,\\,$(filter-out $(MVC_SRCS_EXCLUDE),$(MVC_SRCS))))

MVC_HEADS = $(MVC_GNULIB_HEADS) $(CMDLINE_HEADS) $(LIB_HEADS) $(OPTLIB2C_HEADS) $(PARSER_HEADS) $(OPTSCRIPT_DSL_HEADS) $(DEBUG_HEADS)  $(WIN32_HEADS)
MVC_HEADS_EXCLUDE = main/interactive_p.h main/mbcs.h main/mbcs_p.h main/trace.h
MVC_HEADS_CONV = $(sort $(subst /,\\,$(filter-out $(MVC_HEADS_EXCLUDE),$(MVC_HEADS))))

MVC_INC_DIRS1 = ..;../main;../gnulib;../parsers;../parsers/cxx;../dsl;
MVC_INC_DIRS2 = ..;../main;../gnulib;../parsers;../parsers/cxx;

# a portable 'echo' which disables the interpretation of escape characters like 'echo -E' on bash
# see https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.70/autoconf.html#Limitations-of-Builtins
ECHO = printf '%s\n'
# escape backslashes and newlines in the replacement pattern for sed
ESCAPE_BACKSLASH = sed -e 's|\\|\\\\|g' -e 's/$$/\\/' | sed -e '$$s/\\$$//'
# insert CR before LF except for the last line
LF2CRLF = sed -e '$$!s/$$/\r/'

$(VCXPROJ): $(VCXPROJ).in $(SOURCE_MAK)
	@echo generating $@ ...
	@# C source files \
	SRCS=$$(for i in $(MVC_SRCS_CONV); do \
		$(ECHO) "    <ClCompile Include=\"..\\$$i\" />"; \
	done); \
	SRCS=$$($(ECHO) "$$SRCS" | $(ESCAPE_BACKSLASH)); \
	# header files \
	HEADS=$$(for i in $(MVC_HEADS_CONV); do \
		$(ECHO) "    <ClInclude Include=\"..\\$$i\" />"; \
	done; \
	$(ECHO) "    <ClInclude Include=\"resource.h\" />"); \
	HEADS=$$($(ECHO) "$$HEADS" | $(ESCAPE_BACKSLASH)); \
	# replace @foo@ in $(VCXPROJ).in \
	sed -e "s![@]SRCS[@]!$$SRCS!" \
	    -e "s![@]HEADS[@]!$$HEADS!" \
	    -e "s|[@]INC_DIRS1[@]|${MVC_INC_DIRS1}|" \
	    -e "s|[@]INC_DIRS2[@]|${MVC_INC_DIRS2}|" $< | $(LF2CRLF) > $@

$(VCXPROJ_FILTERS): $(VCXPROJ_FILTERS).in $(SOURCE_MAK)
	@echo generating $@ ...
	@# C source files \
	SRCS=$$(for i in $(MVC_SRCS_CONV); do \
		dirname=$$($(ECHO) $$i | sed -e 's/\\[a-zA-Z_0-9.-]*$$//'); \
		$(ECHO) "    <ClCompile Include=\"..\\$$i\">"; \
		$(ECHO) "      <Filter>Source Files\\$$dirname</Filter>"; \
		$(ECHO) "    </ClCompile>"; \
	done); \
	SRCS=$$($(ECHO) "$$SRCS" | $(ESCAPE_BACKSLASH)); \
	# header files \
	HEADS=$$(for i in $(MVC_HEADS_CONV); do \
		$(ECHO) "    <ClInclude Include=\"..\\$$i\">"; \
		$(ECHO) "      <Filter>Header Files</Filter>"; \
		$(ECHO) "    </ClInclude>"; \
	done; \
	$(ECHO) "    <ClInclude Include=\"resource.h\">"; \
	$(ECHO) "      <Filter>Header Files</Filter>"; \
	$(ECHO) "    </ClInclude>"); \
	HEADS=$$($(ECHO) "$$HEADS" | $(ESCAPE_BACKSLASH)); \
	# replace @foo@ in $(VCXPROJ_FILTERS).in \
	sed -e "s![@]SRCS[@]!$$SRCS!" \
	    -e "s![@]HEADS[@]!$$HEADS!" $< | $(LF2CRLF) > $@