Reorganize HelenOS specific files for MSIM
[helenos.git] / uspace / app / msim / Makefile
blob412d93e0b140a1501a01f71e0fe3521a1feddaf8
2 # Copyright (c) 2012 Vojtech Horky
3 # All rights reserved.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
9 # - Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 # - Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the distribution.
14 # - The name of the author may not be used to endorse or promote products
15 # derived from this software without specific prior written permission.
17 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 USPACE_PREFIX = ../..
30 BINARY = msim
32 MSIM_VERSION = 1.3.8.1
33 MSIM_DIST = msim-$(MSIM_VERSION)
34 MSIM_TARBALL = $(MSIM_DIST).tar.bz2
35 MSIM_MIRROR = http://d3s.mff.cuni.cz/~holub/sw/msim/
37 MSIM_HELENOS_MAKEFILE = Makefile.msim.src
38 MSIM_HELENOS_PLATFORM_FILES = misc.c input.c
39 MSIM_HELENOS_ARCH_DIR = arch/helenos
40 MSIM_PATCHED_FILES = \
41 $(MSIM_DIST)/config.h \
42 $(MSIM_DIST)/src/$(MSIM_HELENOS_MAKEFILE) \
43 $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)/helenos.h \
44 $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)/misc.c \
45 $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)/input.c
47 MSIM_EXTRA_SOURCES := $(addprefix $(MSIM_HELENOS_ARCH_DIR)/,$(MSIM_HELENOS_PLATFORM_FILES))
49 CP = /bin/cp -f
51 all: $(BINARY)
53 .PHONY: all clean unpack-tarball
55 clean:
56 rm -rf msim Makefile.depend* *.map *.disasm $(MSIM_TARBALL) $(MSIM_DIST)
58 $(BINARY): $(MSIM_DIST)/src/msim
59 $(CP) $< $@
61 # Run make in MSIM src directory
62 $(MSIM_DIST)/src/msim: $(MSIM_PATCHED_FILES) $(MSIM_DIST)/src/Makefile.sources Makefile
63 cd $(MSIM_DIST)/src; make -f $(MSIM_HELENOS_MAKEFILE) USPACE_PREFIX=../../$(USPACE_PREFIX)
65 # Copy HelenOS specific files
66 $(MSIM_DIST)/config.h: config.h.msim | unpack-tarball
67 $(CP) $< $@
69 $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)/helenos.h: arch_helenos/helenos.h | unpack-tarball
70 $(CP) $< $@
72 $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)/misc.c: arch_helenos/misc.c | unpack-tarball
73 $(CP) $< $@
75 $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)/input.c: arch_helenos/input.c | unpack-tarball
76 $(CP) $< $@
78 $(MSIM_DIST)/src/$(MSIM_HELENOS_MAKEFILE): $(MSIM_HELENOS_MAKEFILE) | unpack-tarball
79 $(CP) $< $@
81 # Extract list of sources, remove POSIX/Linux specific
82 $(MSIM_DIST)/src/Makefile.sources: | unpack-tarball
83 cd $(MSIM_DIST)/src; ( \
84 echo 'all__:'; \
85 echo -e '\t@echo SOURCES = $$(SOURCES)'; cat Makefile.in \
86 ) | make -f - | grep 'SOURCES' >Makefile.sources
87 sed \
88 -e 's:io/input.c:$(MSIM_EXTRA_SOURCES):' \
89 -e 's:debug/gdb.c::' \
90 -e 's:arch/posix/stdin.c::' \
91 -i $(MSIM_DIST)/src/Makefile.sources
93 # Download tarball
94 $(MSIM_TARBALL):
95 wget "$(MSIM_MIRROR)$(MSIM_TARBALL)" -O $(MSIM_TARBALL)
97 unpack-tarball: $(MSIM_TARBALL)
98 tar xjf $(MSIM_TARBALL)
99 mkdir -p $(MSIM_DIST)/src/$(MSIM_HELENOS_ARCH_DIR)