musl: build without gnu make
This commit is contained in:
		
							parent
							
								
									1b869812b8
								
							
						
					
					
						commit
						64ec36b51a
					
				
					 7 changed files with 271 additions and 12 deletions
				
			
		
							
								
								
									
										28
									
								
								linux/musl/bits.meson.build
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								linux/musl/bits.meson.build
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | alltypes_h = custom_target( | ||||||
|  |   'alltypes.h', | ||||||
|  |   output : 'alltypes.h', | ||||||
|  |   input : [ | ||||||
|  |     meson.project_source_root() + '/tools/mkalltypes.sed', | ||||||
|  |     meson.project_source_root() + '/arch/'+arch+'/bits/alltypes.h.in', | ||||||
|  |     meson.project_source_root() + '/include/alltypes.h.in' | ||||||
|  |   ], | ||||||
|  |   command : ['sed', '-f', '@INPUT0@', '@INPUT1@', '@INPUT2@'], | ||||||
|  |   capture : true  | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | syscall_h_in = custom_target( | ||||||
|  |   'syscall.in', | ||||||
|  |   output : 'syscall.in', | ||||||
|  |   input : meson.project_source_root() + '/arch/'+arch+'/bits/syscall.h.in', | ||||||
|  |   command : ['sed', '-n', '-e', 's/__NR_/SYS_/p', '@INPUT@'], | ||||||
|  |   capture : true | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | syscall_h = custom_target( | ||||||
|  |   'syscall.h', | ||||||
|  |   output : 'syscall.h', | ||||||
|  |   input : [ meson.project_source_root() + '/arch/'+arch+'/bits/syscall.h.in', syscall_h_in ], | ||||||
|  |   command : ['cat', '@INPUT0@', '@INPUT1@'], | ||||||
|  |   capture : true | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | @ -8,35 +8,47 @@ ext="dev" | ||||||
| fetch() { | fetch() { | ||||||
| 	curl "https://musl.libc.org/releases/$pkgname-$pkgver.tar.gz" -o $pkgname-$pkgver.tar.gz | 	curl "https://musl.libc.org/releases/$pkgname-$pkgver.tar.gz" -o $pkgname-$pkgver.tar.gz | ||||||
| 	tar -xf $pkgname-$pkgver.tar.gz | 	tar -xf $pkgname-$pkgver.tar.gz | ||||||
|  | 	cd $pkgname-$pkgver | ||||||
|  | 	cp ../../meson.build . | ||||||
|  | 	cp ../../glob.sh . | ||||||
|  | 	cp ../../globbits.sh . | ||||||
|  | 	cp ../../version_h.sh . | ||||||
|  | 	cp ../../crt.meson.build crt/meson.build | ||||||
|  | 	mkdir bits | ||||||
|  | 	cp ../../bits.meson.build bits/meson.build | ||||||
|  | 	mkdir build | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| build() { | build() { | ||||||
| 	cd $pkgname-$pkgver | 	cd $pkgname-$pkgver | ||||||
| 	./configure \ | 	cd build | ||||||
| 		--prefix=/usr \ | 	meson .. -Dprefix=/usr | ||||||
| 		--build=$(uname -m)-unknown-linux-musl \ | 
 | ||||||
| 		--host=$(uname -m)-unknown-linux-musl \ | 	samu | ||||||
| 		--enable-wrapper=no |  | ||||||
| 	gmake |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| package() { | package() { | ||||||
| 	cd $pkgname-$pkgver | 	cd $pkgname-$pkgver | ||||||
| 	gmake install DESTDIR=$pkgdir | 	cd build | ||||||
| 	rm -r $pkgdir/usr/include | 	DESTDIR=$pkgdir samu install | ||||||
|  | 
 | ||||||
|  | 	cd .. | ||||||
|  | 
 | ||||||
|  | 	rm -rf $pkgdir/usr/include | ||||||
|  | 
 | ||||||
| 	install -d $pkgdir/usr/bin | 	install -d $pkgdir/usr/bin | ||||||
|  | 	install -d $pkgdir/lib | ||||||
| 
 | 
 | ||||||
| 	rm $pkgdir/lib/ld-musl-$(uname -m).so.1 |  | ||||||
| 	mv $pkgdir/usr/lib/libc.so $pkgdir/lib/ld-musl-$(uname -m).so.1 | 	mv $pkgdir/usr/lib/libc.so $pkgdir/lib/ld-musl-$(uname -m).so.1 | ||||||
| 
 |  | ||||||
| 	ln -sr $pkgdir/lib/ld-musl-$(uname -m).so.1 $pkgdir/usr/lib/libc.so | 	ln -sr $pkgdir/lib/ld-musl-$(uname -m).so.1 $pkgdir/usr/lib/libc.so | ||||||
| 
 |  | ||||||
| 	ln -sr $pkgdir/lib/ld-musl-$(uname -m).so.1 $pkgdir/usr/bin/ldd | 	ln -sr $pkgdir/lib/ld-musl-$(uname -m).so.1 $pkgdir/usr/bin/ldd | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| package_dev() { | package_dev() { | ||||||
| 	cd $pkgname-$pkgver | 	cd $pkgname-$pkgver | ||||||
| 	gmake install DESTDIR=$pkgdir | 	cd build | ||||||
|  | 	DESTDIR=$pkgdir samu install | ||||||
|  | 
 | ||||||
| 	rm $pkgdir/usr/lib/*.so | 	rm $pkgdir/usr/lib/*.so | ||||||
| 	rm -rf $pkgdir/lib | 	rm -rf $pkgdir/lib | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										45
									
								
								linux/musl/crt.meson.build
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								linux/musl/crt.meson.build
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | ||||||
|  | Scrt1 = custom_target('Scrt1.o', | ||||||
|  |   output : 'Scrt1.o', | ||||||
|  |   input : 'Scrt1.c', | ||||||
|  |   command : [ cc.cmd_array(), inc_dir_flags, c_args, '-DCRT', '-c', '-o', '@OUTPUT@', '@INPUT@' ], | ||||||
|  |   depends : [ alltypes_h, syscall_h, version_h ], | ||||||
|  |   install : true, | ||||||
|  |   install_dir: 'lib' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | rcrt1 = custom_target('rcrt1.o', | ||||||
|  |   output : 'rcrt1.o', | ||||||
|  |   input : 'rcrt1.c', | ||||||
|  |   command : [ cc.cmd_array(), inc_dir_flags, c_args, '-DCRT', '-c', '-o', '@OUTPUT@', '@INPUT@' ], | ||||||
|  |   depends : [ alltypes_h, syscall_h, version_h ], | ||||||
|  |   install : true, | ||||||
|  |   install_dir: 'lib' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | crt1 = custom_target('crt1.o', | ||||||
|  |   output : 'crt1.o', | ||||||
|  |   input : 'crt1.c', | ||||||
|  |   command : [ cc.cmd_array(), inc_dir_flags, c_args, '-DCRT', '-c', '-o', '@OUTPUT@', '@INPUT@' ], | ||||||
|  |   depends : [ alltypes_h, syscall_h, version_h ], | ||||||
|  |   install : true, | ||||||
|  |   install_dir: 'lib' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | crti = custom_target('crti.o', | ||||||
|  |   output : 'crti.o', | ||||||
|  |   input : target_machine.cpu_family() + '/crti.s', | ||||||
|  |   command : [ cc.cmd_array(), inc_dir_flags, c_args, '-DCRT', '-c', '-o', '@OUTPUT@', '@INPUT@' ], | ||||||
|  |   depends : [ alltypes_h, syscall_h, version_h ], | ||||||
|  |   install : true, | ||||||
|  |   install_dir: 'lib' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | crtn = custom_target('crtn.o', | ||||||
|  |   output : 'crtn.o', | ||||||
|  |   input : target_machine.cpu_family() + '/crtn.s', | ||||||
|  |   command : [ cc.cmd_array(), inc_dir_flags, c_args, '-DCRT', '-c', '-o', '@OUTPUT@', '@INPUT@' ], | ||||||
|  |   depends : [ alltypes_h, syscall_h, version_h ], | ||||||
|  |   install : true, | ||||||
|  |   install_dir: 'lib' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
							
								
								
									
										23
									
								
								linux/musl/glob.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								linux/musl/glob.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,23 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | ARCH=$1 | ||||||
|  | MALLOC_IMPL=mallocng | ||||||
|  | 
 | ||||||
|  | ARCH_FILES=src/*/x86_64/*.[csS] | ||||||
|  | 
 | ||||||
|  | HAVE=$(echo $ARCH_FILES | tr ' ' '\n' | sed 's|'$ARCH/'||g' | cut -d'.' -f 1) | ||||||
|  | echo $ARCH_FILES | tr ' ' '\n' | ||||||
|  | 
 | ||||||
|  | FILES=$(echo src/*/*.[csS] | tr ' ' '\n') | ||||||
|  | for have in $HAVE; do | ||||||
|  |     FILES=$(echo $FILES | tr ' ' '\n' | grep -v $have'.[csS]') | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | echo $FILES | tr ' ' '\n' | ||||||
|  | 
 | ||||||
|  | echo src/malloc/$MALLOC_IMPL/*.[csS] | tr ' ' '\n' | ||||||
|  | 
 | ||||||
|  | #find src/*/ -maxdepth 1 -name '*.[csS]' | ||||||
|  | 
 | ||||||
|  | #find src/*/$ARCH -maxdepth 1 -name '*.[csS]' | ||||||
|  | 
 | ||||||
							
								
								
									
										13
									
								
								linux/musl/globbits.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								linux/musl/globbits.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | ARCH=$1 | ||||||
|  | 
 | ||||||
|  | ARCH_INC=arch/$ARCH/bits/*.h | ||||||
|  | echo $ARCH_INC | tr ' ' '\n' | ||||||
|  | 
 | ||||||
|  | HAVE=$(echo $ARCH_INC | tr ' ' '\n' | sed 's|'$ARCH'|generic|g') | ||||||
|  | 
 | ||||||
|  | INCLUDES=arch/generic/bits/*.h | ||||||
|  | for inc in $HAVE; do | ||||||
|  |     INCLUDES=$(echo $INCLUDES | tr ' ' '\n' | grep -v $inc) | ||||||
|  | done | ||||||
|  | echo $INCLUDES | tr ' ' '\n' | ||||||
							
								
								
									
										136
									
								
								linux/musl/meson.build
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								linux/musl/meson.build
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,136 @@ | ||||||
|  | project('musl', 'c', version : '1.2.2', license : 'MIT') | ||||||
|  | 
 | ||||||
|  | cc = meson.get_compiler('c') | ||||||
|  | cmd = cc.cmd_array() | ||||||
|  | cmd += '--print-libgcc-file-name' | ||||||
|  | libgcc = run_command(cmd) | ||||||
|  | libgcc = libgcc.stdout().strip() | ||||||
|  | message('libgcc: ', libgcc) | ||||||
|  | 
 | ||||||
|  | globbed_sources = run_command(meson.project_source_root() + '/glob.sh', target_machine.cpu_family()) | ||||||
|  | newline= ''' | ||||||
|  | ''' | ||||||
|  | globbed_sources = globbed_sources.stdout().strip().split(newline) | ||||||
|  | 
 | ||||||
|  | globbed_headers = run_command(meson.project_source_root() + '/globbits.sh', target_machine.cpu_family()) | ||||||
|  | 
 | ||||||
|  | newline= ''' | ||||||
|  | ''' | ||||||
|  | globbed_headers = globbed_headers.stdout().strip().split(newline) | ||||||
|  | 
 | ||||||
|  | install_headers(globbed_headers, subdir: 'bits') | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/', '-name', '*.h').stdout().strip().split(newline) | ||||||
|  | ) | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/net', '-name', '*.h').stdout().strip().split(newline), | ||||||
|  |   subdir: 'net'  | ||||||
|  | ) | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/netpacket', '-name', '*.h').stdout().strip().split(newline), | ||||||
|  |   subdir: 'netpacket'  | ||||||
|  | ) | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/sys', '-name', '*.h').stdout().strip().split(newline), | ||||||
|  |   subdir: 'sys'  | ||||||
|  | ) | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/scsi', '-name', '*.h').stdout().strip().split(newline), | ||||||
|  |   subdir: 'scsi' | ||||||
|  | ) | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/arpa', '-name', '*.h').stdout().strip().split(newline), | ||||||
|  |   subdir: 'arpa' | ||||||
|  | ) | ||||||
|  | install_headers( | ||||||
|  |   run_command('find', meson.project_source_root() + '/include/netinet', '-name', '*.h').stdout().strip().split(newline), | ||||||
|  |   subdir: 'netinet' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | message(globbed_headers) | ||||||
|  | 
 | ||||||
|  | c_args = [ | ||||||
|  |   '-pipe', | ||||||
|  |   '-fomit-frame-pointer', | ||||||
|  |   '-fno-unwind-tables', | ||||||
|  |   '-fno-asynchronous-unwind-tables', | ||||||
|  |   '-ffunction-sections', | ||||||
|  |   '-fdata-sections', | ||||||
|  |   '-std=c99', '-ffreestanding', '-nostdinc', | ||||||
|  |   '-D_XOPEN_SOURCE=700', | ||||||
|  |   '-fno-stack-protector', | ||||||
|  |   '-fPIC' | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | ld_args = [ | ||||||
|  |   '-nostdlib', | ||||||
|  |   '-Wl,--dynamic-list='+meson.project_source_root()+'/dynamic.list', | ||||||
|  |   '-Wl,-e,_dlstart', | ||||||
|  |   libgcc | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | arch = target_machine.cpu() | ||||||
|  | 
 | ||||||
|  | inc_dir_flags = [ | ||||||
|  |   '-I'+meson.project_source_root()+'/arch/' + arch, | ||||||
|  |   '-I'+meson.project_source_root()+'/arch/generic', | ||||||
|  |   '-I'+meson.project_source_root()+'/src/internal', | ||||||
|  |   '-I'+meson.project_source_root()+'/src/include', | ||||||
|  |   '-I'+meson.project_source_root()+'/include', | ||||||
|  |   '-I'+meson.project_build_root() | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | inc_dirs = include_directories( | ||||||
|  |   'arch/' + arch, | ||||||
|  |   'arch/generic', | ||||||
|  |   'src/internal', | ||||||
|  |   'src/include', | ||||||
|  |   'include' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | subdir('bits/') | ||||||
|  | 
 | ||||||
|  | ldso_sources = [ | ||||||
|  |   'ldso/dlstart.c', | ||||||
|  |   'ldso/dynlink.c', | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | version_h = custom_target( | ||||||
|  |   'version.h', | ||||||
|  |   output : 'version.h', | ||||||
|  |   command : [ meson.project_source_root()+'/version_h.sh' ], | ||||||
|  |   capture : true  | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | shared_library('c', | ||||||
|  |   ldso_sources, | ||||||
|  |   globbed_sources, | ||||||
|  |   alltypes_h, | ||||||
|  |   syscall_h, | ||||||
|  |   version_h, | ||||||
|  |   c_args: c_args, link_args: ld_args, | ||||||
|  |   include_directories: inc_dirs, | ||||||
|  |   install: true | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | static_library('c', | ||||||
|  |   ldso_sources, | ||||||
|  |   globbed_sources, | ||||||
|  |   alltypes_h, | ||||||
|  |   syscall_h, | ||||||
|  |   version_h, | ||||||
|  |   c_args: c_args, link_args: ld_args, | ||||||
|  |   include_directories: inc_dirs, | ||||||
|  |   install: true | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | static_library('crypt', install: true) | ||||||
|  | static_library('dl', install: true) | ||||||
|  | static_library('m', install: true) | ||||||
|  | static_library('rt', install: true) | ||||||
|  | static_library('pthread', install: true) | ||||||
|  | static_library('util', install: true) | ||||||
|  | static_library('xnet', install: true) | ||||||
|  | 
 | ||||||
|  | subdir('crt') | ||||||
|  | 
 | ||||||
							
								
								
									
										2
									
								
								linux/musl/version_h.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								linux/musl/version_h.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | printf '#define VERSION "%s"\n' $(sh ./tools/version.sh) | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue