diff --git a/libtcc.c b/libtcc.c index 9bc6597..1e9dd97 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1742,14 +1742,13 @@ reparse: tcc_set_lib_path(s, optarg); break; case TCC_OPTION_l: -add_lib: args_parser_add_file(s, optarg, AFF_TYPE_LIB); s->nb_libraries++; break; case TCC_OPTION_pthread: parse_option_D(s, "_REENTRANT"); - optarg = "pthread"; - goto add_lib; + s->option_pthread = 1; + break; case TCC_OPTION_bench: s->do_bench = 1; break; diff --git a/tcc.c b/tcc.c index 4cc0657..cd887d1 100644 --- a/tcc.c +++ b/tcc.c @@ -297,6 +297,9 @@ redo: tcc_error("cannot specify libraries with -c"); if (n > 1 && s->outfile) tcc_error("cannot specify output file with -c many files"); + } else { + if (s->option_pthread) + tcc_set_options(s, "-lpthread"); } if (s->do_bench) diff --git a/tcc.h b/tcc.h index e5366cb..cd67973 100644 --- a/tcc.h +++ b/tcc.h @@ -817,6 +817,7 @@ struct TCCState { int do_bench; /* option -bench */ int gen_deps; /* option -MD */ char *deps_outfile; /* option -MF */ + int option_pthread; /* -pthread option */ int argc; char **argv; };