# Copyright (c) 1990-2004 by Wayne C. Gramlich. # All rights reserved. .PHONY: all everything clean ROOT := ../.. include $(ROOT)/Makefile_common.mk include $(ROOT)/Makefile_private.mk COPTS := -g # Some Macros: LIBUTIL_DIRECTORY := $(ROOT)/libutil LIBUTIL := $(LIBUTIL_DIRECTORY)/$(PLATFORM)/libutil.a XLIBUTIL := $(LIBUTIL_DIRECTORY)/$(XPLATFORM)/libutil.a CFLAGS := ${COPTS} -I$(LIBUTIL_DIRECTORY) -I. -DLINUX WINDOWS_CFLAGS := ${COPTS} -I$(LIBUTIL_DIRECTORY) -I. -DWINDOWS LIBSTIPPLE_DIRECTORY := ../libstipple LIBSTIPPLE_PLATFORM_DIRECTORY := $(LIBSTIPPLE_DIRECTORY)/$(PLATFORM) LIBSTIPPLE_XPLATFORM_DIRECTORY := $(LIBSTIPPLE_DIRECTORY)/$(XPLATFORM) # All headers for all programs: HEADERS := \ call_defs.h \ call_exports.h \ call_types.h \ exp_defs.h \ exp_exports.h \ exp_types.h \ flags_defs.h \ flags_exports.h \ flags_types.h \ gen_defs.h \ gen_exports.h \ gen_types.h \ generate_defs.h \ generate_exports.h \ generate_types.h \ keyword_defs.h \ keyword_exports.h \ keyword_types.h \ module_defs.h \ module_exports.h \ module_types.h \ msg_defs.h \ msg_exports.h \ msg_types.h \ need_defs.h \ need_exports.h \ need_types.h \ object_defs.h \ object_exports.h \ object_types.h \ out_exports.h \ parser_defs.h \ parser_exports.h \ parser_types.h \ routine_defs.h \ routine_exports.h \ routine_info_defs.h \ routine_info_exports.h \ routine_info_types.h \ routine_types.h \ run_time_defs.h \ run_time_exports.h \ run_time_types.h \ statement_defs.h \ statement_exports.h \ statement_types.h \ token_defs.h \ token_exports.h \ token_types.h \ type_defs.h \ type_exports.h \ type_types.h \ var_defs.h \ var_exports.h \ var_types.h COMPILER_SOURCES := \ call_create.c \ call_gen.c \ call_exp_convert.c \ call_print.c \ exp_parse.c \ exp_print.c \ flags.c \ gen.c \ generate_convert.c \ generate_gen.c \ generate_parse.c \ generate_routine.c \ keyword.c \ module_convert.c \ module_gen.c \ module_parse.c \ module_print.c \ module_rw.c \ msg.c \ need_table.c \ object.c \ out.c \ parser.c \ routine_convert.c \ routine_entry.c \ routine_gen.c \ routine_parse.c \ routine_print.c \ routine_ref.c \ routine_table.c \ run_time_headers.c \ stc.c \ statement_convert.c \ statement_gen.c \ statement_parse.c \ statement_print.c \ token.c \ type_convert.c \ type_def.c \ type_gen.c \ type_parse.c \ type_proto.c \ type_ref.c \ var.c COMPILER_OBJECTS := ${COMPILER_SOURCES:%.c=$(PLATFORM)/%.o} COMPILER := $(PLATFORM)/stc DEBUGGER_SOURCES := \ std.c \ routine_info.c \ run_time_cmds.c \ run_time_loop.c \ run_time_util.c DEBUGGER_OBJECTS := ${DEBUGGER_SOURCES:%.c=$(PLATFORM)/%.o} WINDOWS_DEBUGGER_OBJECTS := ${DEBUGGER_SOURCES:%.c=$(WINDOWS_PLATFORM)/%.o} #DEBUGGER := $(PLATFORM)/std LINKER_ONLY_SOURCES := \ stl.c LINKER_SOURCES := \ ${LINKER_ONLY_SOURCES} \ run_time_headers.c LINKER_OBJECTS := ${LINKER_SOURCES:%.c=$(PLATFORM)/%.o} LINKER := $(PLATFORM)/stl STHEADERS_ONLY_SOURCES := \ stheaders.c STHEADERS_SOURCES := \ ${STHEADERS_ONLY_SOURCES} \ run_time_headers.c STHEADERS_OBJECTS := ${STHEADERS_SOURCES:%.c=$(PLATFORM)/%.o} STHEADERS := $(PLATFORM)/stheaders # Some additional macros: SOURCES := \ ${COMPILER_SOURCES} \ ${LINKER_ONLY_SOURCES} \ ${DEBUGGER_SOURCES} \ ${STHEADERS_ONLY_SOURCES} SOURCES_AND_HEADERS := \ ${SOURCES} \ ${HEADERS} \ index.html OBJECTS := \ ${COMPILER_OBJECTS} \ ${LINKER_OBJECTS} \ ${DEBUGGER_OBJECTS} \ ${STHEADERS_OBJECTS} PROGRAMS := \ $(COMPILER) \ $(LINKER) # $(DEBUGGER) #EXTRA_BASES := \ # strt0.o \ # libutil.a \ # libstipple.a #EXTRA_FILES := ${EXTRA_BASES:%=$(PLATFORM)/%} #XEXTRA_FILES := ${EXTRA_BASES:%=$(XPLATFORM)/%} # Some targets: .PHONY: all clean copy deep deep2 spell all: ${PLATFORMS} $(WAIT) \ ${SOURCES_AND_HEADERS} $(WAIT) \ ${PROGRAMS} $(WAIT) \ ${DEBUGGER_OBJECTS} \ ${WINDOWS_DEBUGGER_OBJECTS} deep: deep2 $(WAIT) all deep2: cd $(LIBUTIL_DIRECTORY); $(MAKE) $(COMPILER): stheaders.h $(WAIT) ${COMPILER_OBJECTS} rm -f $@ $(CC) -o $@ ${COMPILER_OBJECTS} $(LIBUTIL) #$(DEBUGGER): stheaders.h $(WAIT) ${DEBUGGER_OBJECTS} # rm -f $@ # $(CC) -o $@ ${DEBUGGER_OBJECTS} $(LIBUTIL) $(LINKER): ${LINKER_OBJECTS} rm -f $@ $(CC) -o $@ ${LINKER_OBJECTS} $(LIBUTIL) $(STHEADERS): ${STHEADERS_OBJECTS} rm -f $@ $(CC) -o $@ ${STHEADERS_OBJECTS} $(LIBUTIL) $(PLATFORM)/strt0.o: $(LIBSTIPPLE_PLATFORM_DIRECTORY)/strt0.o rm -f $@ ln $(LIBSTIPPLE_PLATFORM_DIRECTORY)/strt0.o $@ $(PLATFORM)/libutil.a: $(LIBUTIL) rm -f $@ ln $(LIBUTIL) $@ $(PLATFORM)/libstipple.a: $(LIBSTIPPLE_PLATFORM_DIRECTORY)/libstipple.a rm -f $@ ln $(LIBSTIPPLE_PLATFORM_DIRECTORY)/libstipple.a $@ $(XPLATFORM)/strt0.o: $(LIBSTIPPLE_XPLATFORM_DIRECTORY)/strt0.o rm -f $@ ln $(LIBSTIPPLE_XPLATFORM_DIRECTORY)/strt0.o $@ $(XPLATFORM)/libutil.a: $(XLIBUTIL) rm -f $@ ln $(XLIBUTIL) $@ $(XPLATFORM)/libstipple.a: $(LIBSTIPPLE_XPLATFORM_DIRECTORY)/libstipple.a rm -f $@ ln $(LIBSTIPPLE_XPLATFORM_DIRECTORY)/libstipple.a $@ stheaders.h: $(PLATFORM)/stheaders # Generate stheaders.h: $(PLATFORM)/stheaders clean: rm -rf ${PLATFORMS} stheaders.h $(CLEAN)