(→Macros) |
|||
Line 39: | Line 39: | ||
=== Macros === | === Macros === | ||
All D package need ldc for build and macro file is in ldc package, every package must have ldc in BuildRequire | All D package need ldc for build and macro file is in ldc package, every package must have ldc in BuildRequire | ||
==== Compiler options ==== | ==== Compiler options ==== | ||
Line 50: | Line 46: | ||
-w ''enable warnings''<BR> | -w ''enable warnings''<BR> | ||
-g ''generate debug information''<BR> | -g ''generate debug information''<BR> | ||
==== Include directories ==== | |||
%{_d_includedir} need be used for devel file<BR> | |||
%{_d_includedir} define ''/usr/include/d/'' directory | |||
==== Lib directories ==== | |||
%{_d_libdir} lib directory path used for static library (and later i hope shared library) | |||
%{_d_libdir} define ''/usr/lib64/d'' directory | |||
== SPEC template == | == SPEC template == |
Revision as of 13:36, 29 July 2010
Revision: 0.1
Last Revised: Wednesday Jul 28, 2010
Packaging Tips
File Locations
Libraries
D packages must install assemblies to %{_libdir} rather than /usr/lib or %{_datadir}.
Header
D package must install header file like .d or .di to %{_d_includedir}/%{name}
Libraries
At this time in D programming only OS X support shared lirbraries. So wait this feature or help ldc project. Feel free.
For build static librarie in D you need use ar and ranlib tools. ldc compiler support GNU strip.
short example from makefile:
DC=ldc HD=-Hd $(IMPORT_DEST) DFLAGS_REQ=-c -I ../DerelictUtil AL_SRC= \ derelict/openal/al.d \ derelict/openal/alfuncs.d \ derelict/openal/altypes.d PACKAGE_PATH=derelict/openal all : DerelictAL $(LIB_PRE)DerelictAL.$(LIB_EXT) : $(DC) $(DFLAGS) $(DFLAGS_REQ) $(AL_SRC) $(HD)/$(PACKAGE_PATH) $(AR) rcs $@ $^ $(RANLIB) $@ $(CP) $@ $(LIB_DEST) $(RM) $@
Macros
All D package need ldc for build and macro file is in ldc package, every package must have ldc in BuildRequire
Compiler options
%{_d_optflags} need be used for ldc options
%{_d_optflags} define options -release -w -g
-release disables asserts, invariants, contracts and boundscheck
-w enable warnings
-g generate debug information
Include directories
%{_d_includedir} need be used for devel file
%{_d_includedir} define /usr/include/d/ directory
Lib directories
%{_d_libdir} lib directory path used for static library (and later i hope shared library) %{_d_libdir} define /usr/lib64/d directory
SPEC template
here an template for D package with static libraries
Name: Version: Release: 1%{?dist} Summary: Development/Libraries Group: License: URL: Source0: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ldc Requires: tango %description %package devel Provides: %{name}-static = %{version}-%{release} Summary: Support for developing D application Group: Development/Libraries %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} %clean rm -rf %{buildroot} %files devel %defattr(-,root,root,-) %doc README.txt LICENSE.txt %{_d_includedir}/%{name} %{_libdir}/%{name}/<static-libraries.a> %changelog