11f5207b7SJohn Levon# 21f5207b7SJohn Levon# This file and its contents are supplied under the terms of the 31f5207b7SJohn Levon# Common Development and Distribution License ("CDDL"), version 1.0. 41f5207b7SJohn Levon# You may only use this file in accordance with the terms of version 51f5207b7SJohn Levon# 1.0 of the CDDL. 61f5207b7SJohn Levon# 71f5207b7SJohn Levon# A full copy of the text of the CDDL should have accompanied this 81f5207b7SJohn Levon# source. A copy of the CDDL is also available via the Internet at 91f5207b7SJohn Levon# http://www.illumos.org/license/CDDL. 101f5207b7SJohn Levon# 111f5207b7SJohn Levon# Copyright (c) 2019, Joyent, Inc. 121f5207b7SJohn Levon# 131f5207b7SJohn Levon 141f5207b7SJohn Levon# 151f5207b7SJohn Levon# The src/ sub-directory is un-modified copy of 161f5207b7SJohn Levon# https://github.com/illumos/smatch/tree/0.5.1-il-1 171f5207b7SJohn Levon# 181f5207b7SJohn Levon# This Makefile installs just enough for us to be able to run smatch 191f5207b7SJohn Levon# locally. 201f5207b7SJohn Levon# 211f5207b7SJohn Levon 221f5207b7SJohn LevonPROG = smatch 231f5207b7SJohn LevonSPARSE_VERSION = 0.5.1-il-1 241f5207b7SJohn Levon 251f5207b7SJohn Levoninclude ../Makefile.tools 261f5207b7SJohn Levon 271f5207b7SJohn Levon# We have to build smatch before we can use cw 281f5207b7SJohn Levoni386_CC = $(GNUC_ROOT)/bin/gcc 291f5207b7SJohn Levonsparc_CC = $(GNUC_ROOT)/bin/gcc 301f5207b7SJohn Levon 311f5207b7SJohn LevonCFLAGS = -O -D__sun -Wall -Wno-unknown-pragmas -std=gnu99 -nodefaultlibs 321f5207b7SJohn Levon 331f5207b7SJohn LevonSMATCHDATADIR = $(ROOTONBLDSHARE)/smatch 341f5207b7SJohn Levon 351f5207b7SJohn LevonCFLAGS += -DSMATCHDATADIR='"$(SMATCHDATADIR)"' 361f5207b7SJohn LevonCFLAGS += -DGCC_BASE='"/no/such/dir"' 371f5207b7SJohn LevonCFLAGS += -DMULTIARCH_TRIPLET=NULL 381f5207b7SJohn Levon 391f5207b7SJohn LevonLDLIBS += -lsqlite3 -lcrypto -lm -lgcc -lc 401f5207b7SJohn LevonLDFLAGS = $(MAPFILE.NES:%=-Wl,-M%) 411f5207b7SJohn LevonLDFLAGS += -L$(NATIVE_ADJUNCT)/lib -R$(NATIVE_ADJUNCT)/lib 421f5207b7SJohn Levon 431f5207b7SJohn LevonCPPFLAGS += -nostdinc 441f5207b7SJohn LevonCPPFLAGS += -Isrc/ 451f5207b7SJohn LevonCPPFLAGS += -I$(NATIVE_ADJUNCT)/include 461f5207b7SJohn Levon 471f5207b7SJohn Levon# no install.bin 481f5207b7SJohn LevonINS.file = $(RM) $@; $(CP) $< $(@D); $(CHMOD) $(FILEMODE) $@ 491f5207b7SJohn LevonINS.dir = mkdir -p $@; $(CHMOD) $(DIRMODE) $@ 501f5207b7SJohn Levon 511f5207b7SJohn LevonSMATCH_CHECK_OBJS:sh=ls src/check_*.c | sed -e 's+\.c+.o+;s+src/++;' 521f5207b7SJohn Levon 531f5207b7SJohn LevonOBJS = smatch.o $(SMATCH_CHECK_OBJS) 541f5207b7SJohn Levon 551f5207b7SJohn LevonOBJS += smatch_flow.o smatch_conditions.o smatch_slist.o smatch_states.o \ 561f5207b7SJohn Levon smatch_helper.o smatch_type.o smatch_hooks.o smatch_function_hooks.o \ 571f5207b7SJohn Levon smatch_modification_hooks.o smatch_extra.o smatch_estate.o smatch_math.o \ 581f5207b7SJohn Levon smatch_sval.o smatch_ranges.o smatch_implied.o smatch_ignore.o smatch_project.o \ 591f5207b7SJohn Levon smatch_var_sym.o smatch_tracker.o smatch_files.o smatch_expression_stacks.o \ 601f5207b7SJohn Levon smatch_equiv.o smatch_buf_size.o smatch_strlen.o smatch_capped.o smatch_db.o \ 611f5207b7SJohn Levon smatch_expressions.o smatch_returns.o smatch_parse_call_math.o \ 621f5207b7SJohn Levon smatch_param_limit.o smatch_param_filter.o \ 631f5207b7SJohn Levon smatch_param_set.o smatch_comparison.o smatch_param_compare_limit.o smatch_local_values.o \ 641f5207b7SJohn Levon smatch_function_ptrs.o smatch_annotate.o smatch_string_list.o \ 651f5207b7SJohn Levon smatch_param_cleared.o smatch_start_states.o \ 661f5207b7SJohn Levon smatch_recurse.o smatch_data_source.o smatch_type_val.o \ 671f5207b7SJohn Levon smatch_common_functions.o smatch_struct_assignment.o \ 681f5207b7SJohn Levon smatch_unknown_value.o smatch_stored_conditions.o avl.o \ 691f5207b7SJohn Levon smatch_function_info.o smatch_links.o smatch_auto_copy.o \ 701f5207b7SJohn Levon smatch_type_links.o smatch_untracked_param.o smatch_impossible.o \ 711f5207b7SJohn Levon smatch_strings.o smatch_param_used.o smatch_container_of.o smatch_address.o \ 721f5207b7SJohn Levon smatch_buf_comparison.o smatch_real_absolute.o smatch_scope.o \ 731f5207b7SJohn Levon smatch_imaginary_absolute.o smatch_parameter_names.o \ 741f5207b7SJohn Levon smatch_return_to_param.o smatch_passes_array_size.o \ 751f5207b7SJohn Levon smatch_constraints.o smatch_constraints_required.o \ 761f5207b7SJohn Levon smatch_fn_arg_link.o smatch_about_fn_ptr_arg.o smatch_mtag.o \ 771f5207b7SJohn Levon smatch_mtag_map.o smatch_mtag_data.o \ 781f5207b7SJohn Levon smatch_param_to_mtag_data.o smatch_mem_tracker.o smatch_array_values.o \ 791f5207b7SJohn Levon smatch_nul_terminator.o smatch_assigned_expr.o smatch_kernel_user_data.o \ 801f5207b7SJohn Levon smatch_statement_count.o 811f5207b7SJohn Levon 821f5207b7SJohn LevonOBJS += target.o parse.o tokenize.o pre-process.o symbol.o lib.o scope.o \ 831f5207b7SJohn Levon expression.o show-parse.o evaluate.o expand.o inline.o linearize.o \ 841f5207b7SJohn Levon char.o sort.o allocate.o compat-linux.o ptrlist.o \ 851f5207b7SJohn Levon builtin.o \ 861f5207b7SJohn Levon stats.o \ 871f5207b7SJohn Levon flow.o cse.o simplify.o memops.o liveness.o storage.o unssa.o \ 881f5207b7SJohn Levon dissect.o \ 891f5207b7SJohn Levon macro_table.o token_store.o hashtable.o 901f5207b7SJohn Levon 911f5207b7SJohn LevonSMATCH_DATA = \ 921f5207b7SJohn Levon illumos_kernel.no_return_funcs \ 931f5207b7SJohn Levon illumos_kernel.skipped_functions \ 941f5207b7SJohn Levon illumos_user.no_return_funcs \ 951f5207b7SJohn Levon illumos_user.skipped_functions 961f5207b7SJohn Levon 971f5207b7SJohn LevonSMATCH_DB_DATA = \ 981f5207b7SJohn Levon return_states.schema \ 991f5207b7SJohn Levon call_implies.schema \ 1001f5207b7SJohn Levon type_value.schema \ 1011f5207b7SJohn Levon param_map.schema \ 1021f5207b7SJohn Levon function_type_size.schema \ 1031f5207b7SJohn Levon parameter_name.schema \ 1041f5207b7SJohn Levon fn_ptr_data_link.schema \ 1051f5207b7SJohn Levon constraints.schema \ 1061f5207b7SJohn Levon mtag_about.schema \ 1071f5207b7SJohn Levon type_info.schema \ 1081f5207b7SJohn Levon function_type_info.schema \ 1091f5207b7SJohn Levon caller_info.schema \ 1101f5207b7SJohn Levon function_type_value.schema \ 1111f5207b7SJohn Levon return_implies.schema \ 1121f5207b7SJohn Levon type_size.schema \ 1131f5207b7SJohn Levon constraints_required.schema \ 1141f5207b7SJohn Levon fn_data_link.schema \ 1151f5207b7SJohn Levon mtag_alias.schema \ 1161f5207b7SJohn Levon common_caller_info.schema \ 1171f5207b7SJohn Levon data_info.schema \ 1181f5207b7SJohn Levon function_type.schema \ 1191f5207b7SJohn Levon db.schema \ 1201f5207b7SJohn Levon mtag_data.schema \ 1211f5207b7SJohn Levon function_ptr.schema \ 1221f5207b7SJohn Levon sink_info.schema \ 1231f5207b7SJohn Levon local_values.schema \ 1241f5207b7SJohn Levon mtag_map.schema 1251f5207b7SJohn Levon 1261f5207b7SJohn LevonROOTONBLDDATAFILES = $(SMATCH_DATA:%=$(SMATCHDATADIR)/smatch_data/%) 1271f5207b7SJohn LevonROOTONBLDDATAFILES += $(SMATCH_DB_DATA:%=$(SMATCHDATADIR)/smatch_data/db/%) 1281f5207b7SJohn Levon 1291f5207b7SJohn LevonBUILT_HEADERS = src/version.h src/check_list_local.h 1301f5207b7SJohn Levon 1311f5207b7SJohn Levon.KEEP_STATE: 1321f5207b7SJohn Levon 133*c653bb47SJohn Levon.PARALLEL: $(OBJS) 134*c653bb47SJohn Levon 1351f5207b7SJohn Levonall: $(PROG) 1361f5207b7SJohn Levon 1371f5207b7SJohn Levoninstall: all .WAIT $(ROOTONBLDMACHPROG) $(ROOTONBLDDATAFILES) 1381f5207b7SJohn Levon 1391f5207b7SJohn Levonclean: 1401f5207b7SJohn Levon rm -f $(OBJS) $(BUILT_HEADERS) 1411f5207b7SJohn Levon 1421f5207b7SJohn Levon$(ROOTONBLDDATAFILES): $(SMATCHDATADIR)/smatch_data/db 1431f5207b7SJohn Levon 1441f5207b7SJohn Levon$(SMATCHDATADIR)/smatch_data/%: src/smatch_data/% 1451f5207b7SJohn Levon $(INS.file) 1461f5207b7SJohn Levon 1471f5207b7SJohn Levon$(SMATCHDATADIR)/smatch_data/db: 1481f5207b7SJohn Levon $(INS.dir) 1491f5207b7SJohn Levon 1501f5207b7SJohn Levon$(SMATCHDATADIR)/smatch_data: 1511f5207b7SJohn Levon $(INS.dir) 1521f5207b7SJohn Levon 1531f5207b7SJohn Levon$(PROG): $(OBJS) 1541f5207b7SJohn Levon $(LINK.c) $(OBJS) -o $@ $(LDLIBS) 1551f5207b7SJohn Levon $(POST_PROCESS) 1561f5207b7SJohn Levon 1571f5207b7SJohn Levon%.o: src/%.c $(BUILT_HEADERS) 1581f5207b7SJohn Levon $(COMPILE.c) -o $@ $< 1591f5207b7SJohn Levon 1601f5207b7SJohn Levon%.o: src/cwchash/%.c 1611f5207b7SJohn Levon $(COMPILE.c) -o $@ $< 1621f5207b7SJohn Levon 1631f5207b7SJohn Levonsrc/check_list_local.h: 1641f5207b7SJohn Levon touch src/check_list_local.h 1651f5207b7SJohn Levon 1661f5207b7SJohn Levonsrc/version.h: 1671f5207b7SJohn Levon echo '#define SPARSE_VERSION "$(SPARSE_VERSION)"' > src/version.h 1681f5207b7SJohn Levon 1691f5207b7SJohn Levoninclude ../Makefile.targ 170