Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
asn1c
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
asn1c
Commits
8a85b36d
Commit
8a85b36d
authored
Sep 26, 2017
by
Lev Walkin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
split Makefile.am.sample into Makefile.am.example and Makefile.am.libasncodecs
parent
478819d6
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
160 additions
and
107 deletions
+160
-107
.gitignore
.gitignore
+2
-0
examples/sample.makefile.regen
examples/sample.makefile.regen
+13
-16
libasn1compiler/asn1c_fdeps.c
libasn1compiler/asn1c_fdeps.c
+4
-6
libasn1compiler/asn1c_fdeps.h
libasn1compiler/asn1c_fdeps.h
+1
-1
libasn1compiler/asn1c_save.c
libasn1compiler/asn1c_save.c
+140
-84
No files found.
.gitignore
View file @
8a85b36d
...
...
@@ -60,7 +60,9 @@ doc/docsrc/*.xdv
/examples/*/*.c
/examples/*/*.h
/examples/*/*dump
/examples/*/lib*.a
/examples/*/.tmp.*
/examples/*/Makefile.am.libasncodec
!/examples/*/Makefile
!/examples/*/config.h
...
...
examples/sample.makefile.regen
View file @
8a85b36d
#!/bin/sh
#
# This script attempts to compile the given ASN.1 specification and then
# transforms the resulting Makefile.am.
s
ample tailored to that specification
# transforms the resulting Makefile.am.
ex
ample tailored to that specification
# into a customized Makefile.
#
# The information which is necessary for this script is passed from the
# Makefile which is going to be replaced with an updated Makefile.
# This is called "boot-strapping" and is frequently the source of inside jokes.
#
# $Id$
#
if
test
-z
"
$ASN1PDU
"
\
...
...
@@ -33,20 +30,21 @@ else
asn1c
${
CMDOPTS
}
||
exit
$?
fi
if
test
!
-f
Makefile.am.
s
ample
;
then
echo
"Makefile.am.
s
ample is missing"
if
test
!
-f
Makefile.am.
ex
ample
;
then
echo
"Makefile.am.
ex
ample is missing"
exit
1
fi
EXTRA_C
PPFLAGS
=
"-DJUNKTEST -D_DEFAULT_SOURCE
${
CPPFLAGS
}
"
test
-f
config.h
&&
EXTRA_C
PPFLAGS
=
"-DHAVE_CONFIG_H
${
EXTRA_CPP
FLAGS
}
"
test
-n
"
$TITLE
"
&&
EXTRA_C
PPFLAGS
=
"-DASN_CONVERTER_TITLE=
\"
$TITLE
\"
${
EXTRA_CPP
FLAGS
}
"
EXTRA_C
FLAGS
=
"-DJUNKTEST -D_DEFAULT_SOURCE
"
test
-f
config.h
&&
EXTRA_C
FLAGS
=
"-DHAVE_CONFIG_H
${
EXTRA_C
FLAGS
}
"
test
-n
"
$TITLE
"
&&
EXTRA_C
FLAGS
=
"-DASN_CONVERTER_TITLE=
\"
$TITLE
\"
${
EXTRA_C
FLAGS
}
"
set
-x
cat
Makefile.am.sample
\
|
sed
-e
"s/^CPPFLAGS += /CPPFLAGS +=
${
EXTRA_CPPFLAGS
}
/"
\
cat
Makefile.am.example
\
|
sed
-e
"s/^include /-include /"
\
|
sed
-e
"s/^TARGET = converter-example/TARGET =
${
PROGNAME
}
/"
\
|
sed
-e
"s/^CFLAGS += /CFLAGS +=
${
EXTRA_CFLAGS
}
/"
\
|
sed
-e
"s/^all: /all: maybe-wip-pause
${
ASN1PDU
}
.c /"
\
|
sed
-e
"s/progname/
${
PROGNAME
}
/"
\
>
Makefile.
$$
set
+x
...
...
@@ -62,7 +60,6 @@ set +x
echo
" ASN1MODULES=
\"
${
ASN1MODULES
}
\"
\\
"
echo
" ASN1PDU=
${
ASN1PDU
}
\\
"
echo
" PROGNAME=
${
PROGNAME
}
\\
"
echo
" CPPFLAGS=
\"
${
CPPFLAGS
}
\"
\\
"
echo
"
$0
"
echo
echo
'check: ${TARGET} check-ber check-xer check-oer check-per'
...
...
@@ -152,12 +149,12 @@ set +x
echo
' rm -f $(ASN_MODULE_SOURCES)'
echo
' rm -f $(ASN_MODULE_HEADERS)'
echo
' rm -f $(ASN_CONVERTER_SOURCES) $(ASN_CONVERTER_HEADERS)'
echo
" rm -f Makefile.am.
s
ample"
echo
" rm -f Makefile.am.
ex
ample"
)
>>
Makefile.
$$
set
-x
mv
Makefile.
$$
Makefile
||
exit
$?
rm
Makefile.am.
s
ample
||
exit
$?
rm
Makefile.am.
ex
ample
||
exit
$?
set
+x
echo
...
...
libasn1compiler/asn1c_fdeps.c
View file @
8a85b36d
...
...
@@ -178,10 +178,9 @@ asn1c_dep_add(asn1c_fdeps_t *deps, asn1c_fdeps_t *d) {
}
asn1c_fdeps_t
*
asn1c_deps_
makelist
(
asn1c_fdeps_t
*
deps
)
{
asn1c_deps_
flatten
(
const
asn1c_fdeps_t
*
deps
)
{
asn1c_fdeps_t
*
dlist
;
asn1c_fdeps_t
*
d
;
int
i
;
if
(
!
deps
)
{
errno
=
EINVAL
;
...
...
@@ -198,11 +197,10 @@ asn1c_deps_makelist(asn1c_fdeps_t *deps) {
}
}
for
(
i
=
0
;
i
<
deps
->
el_count
;
i
++
)
{
int
j
;
d
=
asn1c_deps_makelist
(
deps
->
elements
[
i
]);
for
(
int
i
=
0
;
i
<
deps
->
el_count
;
i
++
)
{
d
=
asn1c_deps_flatten
(
deps
->
elements
[
i
]);
assert
(
!
d
->
filename
);
for
(
j
=
0
;
j
<
d
->
el_count
;
j
++
)
{
for
(
int
j
=
0
;
j
<
d
->
el_count
;
j
++
)
{
if
(
asn1c_dep_add
(
dlist
,
d
->
elements
[
j
]))
{
d
->
elements
[
j
]
=
0
;
}
...
...
libasn1compiler/asn1c_fdeps.h
View file @
8a85b36d
...
...
@@ -25,7 +25,7 @@ asn1c_fdeps_t *asn1c_read_file_dependencies(arg_t *arg, const char *datadir);
int
asn1c_activate_dependency
(
asn1c_fdeps_t
*
deps
,
asn1c_fdeps_t
*
cur
,
const
char
*
data
);
asn1c_fdeps_t
*
asn1c_deps_
makelist
(
asn1c_fdeps_t
*
deps
);
asn1c_fdeps_t
*
asn1c_deps_
flatten
(
const
asn1c_fdeps_t
*
deps
);
void
asn1c_deps_freelist
(
asn1c_fdeps_t
*
deps
);
#endif
/* ASN1C_FDEPS_H */
libasn1compiler/asn1c_save.c
View file @
8a85b36d
...
...
@@ -45,42 +45,15 @@ static void pdu_collection_print_unused_types(arg_t *arg);
static
const
char
*
generate_pdu_C_definition
(
void
);
static
void
asn1c__cleanup_pdu_type
(
void
);
int
asn1c_save_compiled_output
(
arg_t
*
arg
,
const
char
*
datadir
,
int
argc
,
int
optc
,
char
**
argv
)
{
asn1c_fdeps_t
*
deps
=
0
;
static
int
asn1c__save_library_makefile
(
arg_t
*
arg
,
const
asn1c_fdeps_t
*
deps
,
const
char
*
datadir
,
const
char
*
makefile_name
)
{
asn1c_fdeps_t
*
dlist
;
asn1p_module_t
*
mod
;
FILE
*
mkf
;
/* Makefile.am.sample */
int
i
;
deps
=
asn1c_read_file_dependencies
(
arg
,
datadir
);
if
(
!
deps
&&
datadir
)
{
WARNING
(
"Cannot read file-dependencies information "
"from %s
\n
"
,
datadir
);
}
TQ_FOR
(
mod
,
&
(
arg
->
asn
->
modules
),
mod_next
)
{
TQ_FOR
(
arg
->
expr
,
&
(
mod
->
members
),
next
)
{
if
(
asn1_lang_map
[
arg
->
expr
->
meta_type
]
[
arg
->
expr
->
expr_type
].
type_cb
)
{
if
(
asn1c_dump_streams
(
arg
,
deps
,
optc
,
argv
))
return
-
1
;
}
}
}
/*
* Dump out the Makefile template and the rest of the support code.
*/
if
((
arg
->
flags
&
A1C_PRINT_COMPILED
)
||
(
arg
->
flags
&
A1C_OMIT_SUPPORT_CODE
))
{
return
0
;
/* Finished */
}
FILE
*
mkf
;
mkf
=
asn1c_open_file
(
"Makefile.am"
,
".sample
"
,
0
);
mkf
=
asn1c_open_file
(
makefile_name
,
"
"
,
0
);
if
(
mkf
==
NULL
)
{
perror
(
"Makefile.am.sample"
);
perror
(
makefile_name
);
return
-
1
;
}
...
...
@@ -107,9 +80,9 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
safe_fprintf
(
mkf
,
"
\n\n
"
);
/*
* Move necessary skeleton files and add them to Makefile.am.
sample
.
* Move necessary skeleton files and add them to Makefile.am.
targets
.
*/
dlist
=
asn1c_deps_
makelist
(
deps
);
dlist
=
asn1c_deps_
flatten
(
deps
);
if
(
dlist
)
{
char
buf
[
8129
];
char
*
dir_end
;
...
...
@@ -120,8 +93,7 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
dir_end
=
buf
+
dlen
;
*
dir_end
++
=
'/'
;
for
(
i
=
0
;
i
<
dlist
->
el_count
;
i
++
)
{
char
*
what_class
;
/* MODULE or CONVERTER */
for
(
int
i
=
0
;
i
<
dlist
->
el_count
;
i
++
)
{
char
*
what_kind
;
/* HEADERS or SOURCES */
char
*
fname
=
dlist
->
elements
[
i
]
->
filename
;
char
*
dotH
;
...
...
@@ -135,73 +107,157 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
return
-
1
;
}
/* MODULE data versus CONVERTER data */
switch
(
dlist
->
elements
[
i
]
->
usage
)
{
case
FDEP_CONVERTER
:
what_class
=
"CONVERTER"
;
break
;
default:
what_class
=
"MODULE"
;
break
;
}
/* no CONVERTER data in Makefile.am.targets */
if
(
dlist
->
elements
[
i
]
->
usage
!=
FDEP_CONVERTER
)
{
/* HEADERS versus SOURCES */
dotH
=
strrchr
(
fname
,
'h'
);
if
(
dotH
&&
fname
<
dotH
&&
dotH
[
-
1
]
==
'.'
&&
!
dotH
[
1
])
what_kind
=
"HEADERS"
;
else
what_kind
=
"SOURCES"
;
safe_fprintf
(
mkf
,
"ASN_%s_%s+=%s
\n
"
,
what_class
,
what_kind
,
fname
);
safe_fprintf
(
mkf
,
"ASN_MODULE_%s+=%s
\n
"
,
what_kind
,
fname
);
}
}
asn1c_deps_freelist
(
deps
);
asn1c_deps_freelist
(
dlist
);
}
safe_fprintf
(
mkf
,
"
\n
"
"ASN_MODULE_CFLAGS=%s%s"
,
(
arg
->
flags
&
A1C_GEN_OER
)
?
""
:
"-DASN_DISABLE_OER_SUPPORT "
,
(
arg
->
flags
&
A1C_GEN_PER
)
?
""
:
"-DASN_DISABLE_PER_SUPPORT "
);
safe_fprintf
(
mkf
,
"
\n\n
"
"lib_LTLIBRARIES=libasncodec.la
\n
"
"libasncodec_la_SOURCES="
"$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)
\n
"
"libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
\n
"
);
fclose
(
mkf
);
safe_fprintf
(
stderr
,
"Generated Makefile.am.targets
\n
"
);
return
0
;
}
static
int
asn1c__save_example_makefile
(
arg_t
*
arg
,
const
asn1c_fdeps_t
*
deps
,
const
char
*
makefile_name
,
const
char
*
library_makefile_name
,
int
argc
,
char
**
argv
)
{
asn1c_fdeps_t
*
dlist
;
FILE
*
mkf
;
mkf
=
asn1c_open_file
(
makefile_name
,
""
,
0
);
if
(
mkf
==
NULL
)
{
perror
(
makefile_name
);
return
-
1
;
}
safe_fprintf
(
mkf
,
"include %s
\n\n
"
"TARGET = converter-example
\n
"
"ASN_LIBRARY=libasncodec.a
\n
"
"LIBS += -lm
\n
"
"CFLAGS += $(ASN_MODULE_CFLAGS) %s%s-I.
\n
"
"ASN_CONVERTER_SOURCES = "
,
library_makefile_name
,
(
arg
->
flags
&
A1C_PDU_TYPE
)
?
generate_pdu_C_definition
()
:
""
,
need_to_generate_pdu_collection
(
arg
)
?
"-DASN_PDU_COLLECTION "
:
""
);
dlist
=
asn1c_deps_flatten
(
deps
);
if
(
dlist
)
{
/* only CONVERTER data in the makefile */
for
(
int
i
=
0
;
i
<
dlist
->
el_count
;
i
++
)
{
if
(
dlist
->
elements
[
i
]
->
usage
==
FDEP_CONVERTER
)
{
safe_fprintf
(
mkf
,
"
\\\n\t
%s"
,
dlist
->
elements
[
i
]
->
filename
);
}
}
asn1c_deps_freelist
(
dlist
);
}
if
(
need_to_generate_pdu_collection
(
arg
))
{
safe_fprintf
(
mkf
,
"
ASN_CONVERTER_SOURCES+=pdu_collection.c
\n
"
);
safe_fprintf
(
mkf
,
"
\\\n\t
pdu_collection.c
"
);
if
(
generate_pdu_collection_file
(
arg
))
return
-
1
;
}
safe_fprintf
(
mkf
,
"
\n\n
"
"lib_LTLIBRARIES=libsomething.la
\n
"
"libsomething_la_SOURCES="
"$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)
\n
"
"
\n
"
"# This file may be used as an input for make(3)
\n
"
"# Remove the lines below to convert it into a pure .am file
\n
"
"TARGET = progname
\n
"
"LIBS += -lm
\n
"
"CPPFLAGS += %s%s%s%s-I.
\n
"
"OBJS=${ASN_MODULE_SOURCES:.c=.o}"
" ${ASN_CONVERTER_SOURCES:.c=.o}
\n
"
"
\n
all: $(TARGET)
\n
"
"
\n
$(TARGET): ${OBJS}"
"
\n\t
$(CC) $(CFLAGS) $(CPPFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS)
\n
"
"
\n\n
all: $(TARGET)
\n
"
"
\n
$(TARGET): $(ASN_LIBRARY) $(ASN_CONVERTER_SOURCES:.c=.o)"
"
\n\t
$(CC) $(CFLAGS) $(CPPFLAGS) -o $(TARGET) $(ASN_CONVERTER_SOURCES:.c=.o) $(LDFLAGS) $(ASN_LIBRARY) $(LIBS)
\n
"
"
\n
$(ASN_LIBRARY): $(ASN_MODULE_SOURCES:.c=.o)"
"
\n\t
$(AR) rcs $@ $^
\n
"
"
\n
.SUFFIXES:"
"
\n
.SUFFIXES: .c .o
\n
"
"
\n
.c.o:"
"
\n\t
$(CC) $(CFLAGS) $(CPP
FLAGS) -o $@ -c $<
\n
"
"
\n\t
$(CC) $(C
FLAGS) -o $@ -c $<
\n
"
"
\n
clean:"
"
\n\t
rm -f $(TARGET
)"
"
\n\t
rm -f $(OBJS
)
\n
"
"
\n\t
rm -f $(TARGET) $(ASN_LIBRARY
)"
"
\n\t
rm -f $(ASN_MODULE_SOURCES:.c=.o) $(ASN_CONVERTER_SOURCES:.c=.o
)
\n
"
"
\n
regen: regenerate-from-asn1-source
\n
"
"
\n
regenerate-from-asn1-source:
\n\t
"
,
(
arg
->
flags
&
A1C_GEN_OER
)
?
""
:
"-DASN_DISABLE_OER_SUPPORT "
,
(
arg
->
flags
&
A1C_GEN_PER
)
?
""
:
"-DASN_DISABLE_PER_SUPPORT "
,
(
arg
->
flags
&
A1C_PDU_TYPE
)
?
generate_pdu_C_definition
()
:
""
,
need_to_generate_pdu_collection
(
arg
)
?
"-DASN_PDU_COLLECTION "
:
""
);
"
\n
regenerate-from-asn1-source:
\n\t
"
);
for
(
i
=
0
;
i
<
argc
;
i
++
)
for
(
int
i
=
0
;
i
<
argc
;
i
++
)
safe_fprintf
(
mkf
,
"%s%s"
,
i
?
" "
:
""
,
argv
[
i
]);
safe_fprintf
(
mkf
,
"
\n\n
"
);
fclose
(
mkf
);
safe_fprintf
(
stderr
,
"Generated Makefile.am.sample
\n
"
);
safe_fprintf
(
stderr
,
"Generated %s
\n
"
,
makefile_name
);
return
0
;
}
int
asn1c_save_compiled_output
(
arg_t
*
arg
,
const
char
*
datadir
,
int
argc
,
int
optc
,
char
**
argv
)
{
asn1c_fdeps_t
*
deps
=
0
;
int
ret
=
-
1
;
do
{
asn1p_module_t
*
mod
;
deps
=
asn1c_read_file_dependencies
(
arg
,
datadir
);
if
(
!
deps
&&
datadir
)
{
WARNING
(
"Cannot read file-dependencies information "
"from %s
\n
"
,
datadir
);
}
TQ_FOR
(
mod
,
&
(
arg
->
asn
->
modules
),
mod_next
)
{
TQ_FOR
(
arg
->
expr
,
&
(
mod
->
members
),
next
)
{
if
(
asn1_lang_map
[
arg
->
expr
->
meta_type
][
arg
->
expr
->
expr_type
]
.
type_cb
)
{
if
(
asn1c_dump_streams
(
arg
,
deps
,
optc
,
argv
))
break
;
}
}
}
/*
* Dump out the Makefile template and the rest of the support code.
*/
if
((
arg
->
flags
&
A1C_PRINT_COMPILED
)
||
(
arg
->
flags
&
A1C_OMIT_SUPPORT_CODE
))
{
ret
=
0
;
/* Success */
break
;
}
ret
=
asn1c__save_library_makefile
(
arg
,
deps
,
datadir
,
"Makefile.am.libasncodec"
);
if
(
ret
)
break
;
ret
=
asn1c__save_example_makefile
(
arg
,
deps
,
"Makefile.am.example"
,
"Makefile.am.libasncodec"
,
argc
,
argv
);
if
(
ret
)
break
;
}
while
(
0
);
asn1c_deps_freelist
(
deps
);
asn1c__cleanup_pdu_type
();
return
0
;
return
ret
;
}
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment