1919# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
2020# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2121# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23+
24+ FILC_OUTPUT_ROOT ?= $(abspath ../pizfix)
25+
26+ FILC_LIB_DIR ?= $(FILC_OUTPUT_ROOT ) /lib
27+ FILC_LIB_TEST_DIR ?= $(FILC_OUTPUT_ROOT ) /lib_test
28+ FILC_LIB_GCVERIFY_DIR ?= $(FILC_OUTPUT_ROOT ) /lib_gcverify
29+ FILC_LIB_TEST_GCVERIFY_DIR ?= $(FILC_OUTPUT_ROOT ) /lib_test_gcverify
30+
31+ FILC_YOLO_INCLUDE ?= $(FILC_OUTPUT_ROOT ) /yolo-include
32+ FILC_OS_INCLUDE ?= $(FILC_OUTPUT_ROOT ) /os-include
33+ FILC_STDFIL_INCLUDE ?= $(FILC_OUTPUT_ROOT ) /stdfil-include
34+ FILC_INCLUDE_DIR ?= $(FILC_OUTPUT_ROOT ) /include
35+ FILC_YOLO_LIB_DIR ?= $(FILC_LIB_DIR )
36+ FILC_DYNAMIC_LINKER ?= $(FILC_YOLO_LIB_DIR ) /ld-yolo-x86_64.so
37+ FILC_RUNTIME_LIBS ?= -lyoloc -lyolom
38+
39+ HOST_CLANG ?= clang
40+ FILC_CLANG ?= ../build/bin/clang
41+ FILC_DRIVER_FLAGS ?=
42+
43+ PASCC = $(HOST_CLANG ) -march=x86-64-v2 -fPIC -pthread -nostdinc \
44+ -isystem $(FILC_YOLO_INCLUDE ) -isystem $(FILC_OS_INCLUDE ) \
45+ -isystem $(FILC_STDFIL_INCLUDE ) \
46+ -isystem ` ./find_clang_include_dir.rb `
47+ PASASM = $(HOST_CLANG ) -march=x86-64-v2 -fPIC
48+ FILCC = $(FILC_CLANG ) $(FILC_DRIVER_FLAGS )
49+ SHLD = $(HOST_CLANG ) -Wl,-dynamic-linker,$(FILC_DYNAMIC_LINKER ) \
50+ -nostdlib -shared $(FILC_YOLO_LIB_DIR ) /crti.o \
51+ ` ./find_system_library_file.rb crtbeginS.o ` -L$(FILC_YOLO_LIB_DIR )
52+ SHLDPOST = ` ./find_system_library_file.rb libgcc.a ` $(FILC_RUNTIME_LIBS ) \
53+ ` ./find_system_library_file.rb crtendS.o ` $(FILC_YOLO_LIB_DIR ) /crtn.o
54+
55+ DIRS_TO_CREATE = \
56+ $(FILC_LIB_DIR ) \
57+ $(FILC_LIB_TEST_DIR ) \
58+ $(FILC_LIB_GCVERIFY_DIR ) \
59+ $(FILC_LIB_TEST_GCVERIFY_DIR )
60+
61+ .PHONY : all clean
2362
2463all : \
25- ../pizfix/lib/libpizlo.so ../pizfix/lib_test/libpizlo.so ../pizfix/lib_gcverify/libpizlo.so \
26- ../pizfix/lib_test_gcverify/libpizlo.so ../pizfix/lib/libpizlo.a \
27- ../pizfix/lib/filc_crt.o ../pizfix/lib/filc_mincrt.o
28-
29- PASCC = clang -march=x86-64-v2 -fPIC -pthread -nostdinc -isystem ../pizfix/yolo-include \
30- -isystem ../pizfix/os-include -isystem ` ./find_clang_include_dir.rb `
31- PASASM = clang -march=x86-64-v2 -fPIC
32- FILCC = ../build/bin/clang
33- SHLD = clang -Wl,-dynamic-linker,$(PWD ) /../pizfix/lib/ld-yolo-x86_64.so \
34- -nostdlib -shared ../pizfix/lib/crti.o \
35- ` ./find_system_library_file.rb crtbeginS.o ` -L../pizfix/lib
36- SHLDPOST = ` ./find_system_library_file.rb libgcc.a ` -lyoloc -lyolom \
37- ` ./find_system_library_file.rb crtendS.o ` ../pizfix/lib/crtn.o
64+ $(FILC_LIB_DIR ) /libpizlo.so $(FILC_LIB_TEST_DIR ) /libpizlo.so \
65+ $(FILC_LIB_GCVERIFY_DIR ) /libpizlo.so $(FILC_LIB_TEST_GCVERIFY_DIR ) /libpizlo.so \
66+ $(FILC_LIB_DIR ) /libpizlo.a \
67+ $(FILC_LIB_DIR ) /filc_crt.o $(FILC_LIB_DIR ) /filc_mincrt.o
68+
69+ $(DIRS_TO_CREATE ) :
70+ mkdir -p $@
3871
3972include common.mk
4073
@@ -81,11 +114,11 @@ clean:
81114 rm -rf build
82115 rm -f src/libpas/filc_native_forwarders.c
83116 rm -f src/libpas/filc_native.h
84- rm -f ../pizfix/lib /filc_crt.o
85- rm -f ../pizfix/lib /filc_mincrt.o
86- rm -f ../pizfix/lib /libpizlo.so
87- rm -f ../pizfix/lib_test /libpizlo.so
88- rm -f ../pizfix/lib /libpizlo.a
117+ rm -f $( FILC_LIB_DIR ) /filc_crt.o
118+ rm -f $( FILC_LIB_DIR ) /filc_mincrt.o
119+ rm -f $( FILC_LIB_DIR ) /libpizlo.so
120+ rm -f $( FILC_LIB_TEST_DIR ) /libpizlo.so
121+ rm -f $( FILC_LIB_DIR ) /libpizlo.a
89122
90123.filc-objs : $(FILPIZLOOBJS )
91124.yoloc-dynamic-objs : $(PASPIZLODYNAMICOBJS )
@@ -94,31 +127,31 @@ clean:
94127.yoloc-test-gcverify-objs : $(PASPIZLOTESTGCVERIFYOBJS )
95128.yoloc-static-objs : $(PASPIZLOSTATICOBJS )
96129
97- ../pizfix/lib/ libpizlo.so : $(PASPIZLODYNAMICOBJS ) $(FILPIZLOOBJS )
98- $(SHLD ) -o ../pizfix/lib/libpizlo.so $(PASPIZLODYNAMICOBJS ) $(FILPIZLOOBJS ) $(SHLDPOST )
130+ $( FILC_LIB_DIR ) / libpizlo.so : $(PASPIZLODYNAMICOBJS ) $(FILPIZLOOBJS ) | $( FILC_LIB_DIR )
131+ $(SHLD ) -o $@ $(PASPIZLODYNAMICOBJS ) $(FILPIZLOOBJS ) $(SHLDPOST )
99132
100- ../pizfix/lib_gcverify/ libpizlo.so : $(PASPIZLODYNAMICGCVERIFYOBJS ) $(FILPIZLOOBJS )
101- $(SHLD ) -o ../pizfix/lib_gcverify/libpizlo.so $(PASPIZLODYNAMICGCVERIFYOBJS ) $(FILPIZLOOBJS ) \
133+ $( FILC_LIB_GCVERIFY_DIR ) / libpizlo.so : $(PASPIZLODYNAMICGCVERIFYOBJS ) $(FILPIZLOOBJS ) | $( FILC_LIB_GCVERIFY_DIR )
134+ $(SHLD ) -o $@ $(PASPIZLODYNAMICGCVERIFYOBJS ) $(FILPIZLOOBJS ) \
102135 $(SHLDPOST )
103136
104- ../pizfix/lib_test/ libpizlo.so : $(PASPIZLOTESTOBJS ) $(FILPIZLOOBJS )
105- $(SHLD ) -o ../pizfix/lib_test/libpizlo.so $(PASPIZLOTESTOBJS ) $(FILPIZLOOBJS ) $(SHLDPOST )
137+ $( FILC_LIB_TEST_DIR ) / libpizlo.so : $(PASPIZLOTESTOBJS ) $(FILPIZLOOBJS ) | $( FILC_LIB_TEST_DIR )
138+ $(SHLD ) -o $@ $(PASPIZLOTESTOBJS ) $(FILPIZLOOBJS ) $(SHLDPOST )
106139
107- ../pizfix/lib_test_gcverify/ libpizlo.so : $(PASPIZLOTESTGCVERIFYOBJS ) $(FILPIZLOOBJS )
108- $(SHLD ) -o ../pizfix/lib_test_gcverify/libpizlo.so $(PASPIZLOTESTGCVERIFYOBJS ) \
140+ $( FILC_LIB_TEST_GCVERIFY_DIR ) / libpizlo.so : $(PASPIZLOTESTGCVERIFYOBJS ) $(FILPIZLOOBJS ) | $( FILC_LIB_TEST_GCVERIFY_DIR )
141+ $(SHLD ) -o $@ $(PASPIZLOTESTGCVERIFYOBJS ) \
109142 $(FILPIZLOOBJS ) $(SHLDPOST )
110143
111- ../pizfix/lib/ libpizlo.a : $(PASPIZLOSTATICOBJS ) $(FILPIZLOOBJS )
112- rm -f ../pizfix/lib/libpizlo.a
113- ar cr ../pizfix/lib/libpizlo.a $(PASPIZLOSTATICOBJS ) $(FILPIZLOOBJS )
144+ $( FILC_LIB_DIR ) / libpizlo.a : $(PASPIZLOSTATICOBJS ) $(FILPIZLOOBJS ) | $( FILC_LIB_DIR )
145+ rm -f $@
146+ ar cr $@ $(PASPIZLOSTATICOBJS ) $(FILPIZLOOBJS )
114147
115148build/pas-pizlo-release-% .o : src/libpas/% .c
116149 $(PASCC ) $(PASCFLAGS ) -c -o $@ $< -DPAS_FILC=1
117150
118151build/pas-pizlo-test-% .o : src/libpas/% .c
119152 $(PASCC ) $(PASCFLAGS ) -c -o $@ $< -DPAS_FILC=1 -DENABLE_PAS_TESTING=1
120153
121- build/fil-pizlo-% .o : ../filc/src/% .c ../build/bin/clang
154+ build/fil-pizlo-% .o : ../filc/src/% .c $( FILC_CLANG )
122155 $(FILCC ) $(FILCFLAGS ) -c -o $@ $<
123156
124157build/pas-pizlo-release-% .o : src/libpas/% .s
@@ -131,15 +164,13 @@ build/pas-pizlo-release-filc_start_program.o: src/libpas/filc_native.h
131164build/pas-pizlo-test-filc_start_program.o : src/libpas/filc_native.h
132165build/pas-test-filc_start_program.o : src/libpas/filc_native.h
133166
134- ../pizfix/lib/ filc_crt.o : $(MAINSRC )
135- $(PASCC ) -c -o ../pizfix/lib/filc_crt.o $(MAINSRC ) $(MAINCFLAGS ) -DUSE_LIBC=1
167+ $( FILC_LIB_DIR ) / filc_crt.o : $(MAINSRC ) | $( FILC_LIB_DIR )
168+ $(PASCC ) -c -o $@ $(MAINSRC ) $(MAINCFLAGS ) -DUSE_LIBC=1
136169
137- ../pizfix/lib/ filc_mincrt.o : $(MAINSRC )
138- $(PASCC ) -c -o ../pizfix/lib/filc_mincrt.o $(MAINSRC ) $(MAINCFLAGS ) -DUSE_LIBC=0
170+ $( FILC_LIB_DIR ) / filc_mincrt.o : $(MAINSRC ) | $( FILC_LIB_DIR )
171+ $(PASCC ) -c -o $@ $(MAINSRC ) $(MAINCFLAGS ) -DUSE_LIBC=0
139172
140173src/libpas/filc_native.h : src/libpas/generate_pizlonated_forwarders.rb
141174 ruby src/libpas/generate_pizlonated_forwarders.rb src/libpas/filc_native.h
142175src/libpas/filc_native_forwarders.c : src/libpas/generate_pizlonated_forwarders.rb
143176 ruby src/libpas/generate_pizlonated_forwarders.rb src/libpas/filc_native_forwarders.c
144-
145-
0 commit comments