Regen charmonizer for CFC static lib.
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/93ce926d Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/93ce926d Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/93ce926d Branch: refs/heads/go_bindings_2 Commit: 93ce926d51ed6654537a47e8a8fa3fa02f1b328a Parents: 783e852 Author: Marvin Humphrey <[email protected]> Authored: Sat Nov 29 14:07:12 2014 -0800 Committer: Marvin Humphrey <[email protected]> Committed: Sat Nov 29 14:07:54 2014 -0800 ---------------------------------------------------------------------- compiler/common/charmonizer.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/93ce926d/compiler/common/charmonizer.c ---------------------------------------------------------------------- diff --git a/compiler/common/charmonizer.c b/compiler/common/charmonizer.c index 2a24d21..7d0f18c 100644 --- a/compiler/common/charmonizer.c +++ b/compiler/common/charmonizer.c @@ -7706,8 +7706,12 @@ chaz_VariadicMacros_run(void) { typedef struct SourceFileContext { chaz_MakeVar *common_objs; chaz_MakeVar *test_cfc_objs; + chaz_MakeVar *common_test_objs; } SourceFileContext; +static const char cfc_version[] = "0.4.0"; +static const char cfc_major_version[] = "0.4"; + static void S_add_compiler_flags(struct chaz_CLI *cli); @@ -7721,6 +7725,8 @@ int main(int argc, const char **argv) { /* Initialize. */ chaz_CLI *cli = chaz_CLI_new(argv[0], "charmonizer: Probe C build environment"); + chaz_CLI_register(cli, "host", "specify host binding language", + CHAZ_CLI_ARG_REQUIRED); chaz_CLI_set_usage(cli, "Usage: charmonizer [OPTIONS] [-- [CFLAGS]]"); { int result = chaz_Probe_parse_cli_args(argc, argv, cli); @@ -7796,6 +7802,17 @@ S_add_compiler_flags(struct chaz_CLI *cli) { } static void +S_add_staticlib_makefile_target(chaz_MakeFile *makefile) { + chaz_Lib *static_lib = chaz_Lib_new("cfc", chaz_Lib_STATIC, cfc_version, + cfc_major_version); + char *static_lib_filename = chaz_Lib_filename(static_lib); + chaz_MakeFile_add_rule(makefile, "static", static_lib_filename); + chaz_MakeFile_add_static_lib(makefile, static_lib, "$(COMMON_OBJS)"); + free(static_lib_filename); + chaz_Lib_destroy(static_lib); +} + +static void S_write_makefile(struct chaz_CLI *cli) { SourceFileContext sfc; @@ -7859,6 +7876,7 @@ S_write_makefile(struct chaz_CLI *cli) { sfc.common_objs = chaz_MakeFile_add_var(makefile, "COMMON_OBJS", NULL); sfc.test_cfc_objs = chaz_MakeFile_add_var(makefile, "TEST_CFC_OBJS", NULL); + sfc.common_test_objs = chaz_MakeFile_add_var(makefile, "COMMON_TEST_OBJS", NULL); chaz_Make_list_files(src_dir, "c", S_source_file_callback, &sfc); @@ -7877,6 +7895,7 @@ S_write_makefile(struct chaz_CLI *cli) { /* Rules */ chaz_MakeFile_add_rule(makefile, "all", cfc_exe); + S_add_staticlib_makefile_target(makefile); chaz_MakeFile_add_lemon_exe(makefile, lemon_dir); chaz_MakeFile_add_lemon_grammar(makefile, parse_header); @@ -7899,7 +7918,8 @@ S_write_makefile(struct chaz_CLI *cli) { chaz_MakeFile_add_exe(makefile, cfc_exe, "$(COMMON_OBJS) $(CFC_OBJS)", link_flags); chaz_MakeFile_add_exe(makefile, test_cfc_exe, - "$(COMMON_OBJS) $(TEST_CFC_OBJS)", link_flags); + "$(COMMON_OBJS) $(COMMON_TEST_OBJS) $(TEST_CFC_OBJS)", + link_flags); chaz_CFlags_destroy(link_flags); rule = chaz_MakeFile_add_rule(makefile, "test", test_cfc_exe); @@ -7929,6 +7949,7 @@ S_write_makefile(struct chaz_CLI *cli) { clean_rule = chaz_MakeFile_clean_rule(makefile); chaz_MakeRule_add_rm_command(clean_rule, "$(COMMON_OBJS)"); + chaz_MakeRule_add_rm_command(clean_rule, "$(COMMON_TEST_OBJS)"); chaz_MakeRule_add_rm_command(clean_rule, "$(CFC_OBJS)"); chaz_MakeRule_add_rm_command(clean_rule, "$(TEST_CFC_OBJS)"); @@ -7971,7 +7992,7 @@ S_source_file_callback(const char *dir, char *file, void *context) { obj_file = chaz_Util_join("", dir, dir_sep, file, obj_ext, NULL); if (strlen(file) >= 7 && memcmp(file, "CFCTest", 7) == 0) { - chaz_MakeVar_append(sfc->test_cfc_objs, obj_file); + chaz_MakeVar_append(sfc->common_test_objs, obj_file); } else { chaz_MakeVar_append(sfc->common_objs, obj_file);
